0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶你深入了解FPGA開發(fā)流程

電子工程師 ? 來源:FPGA技術(shù)支持 ? 作者:FPGA技術(shù)支持 ? 2020-10-25 10:05 ? 次閱讀

FPGA的開發(fā)流程是遵循著ASIC的開發(fā)流程發(fā)展的,發(fā)展到目前為止,F(xiàn)PGA的開發(fā)流程總體按照下圖進行,有些步驟可能由于其在當(dāng)前項目中的條件的寬度的允許,可以免去,比如靜態(tài)仿真過程,這樣來達到項目時間上的優(yōu)勢。但是,大部分的流程步驟還是需要我們循規(guī)蹈矩的去做,因為這些步驟的輸入是上一個步驟的結(jié)果,輸出是下一個步驟的輸入的關(guān)系,這樣的步驟就必不可少了。

FPGA開發(fā)的具體難度,與軟件開發(fā)有輸入、編譯、鏈接、執(zhí)行步驟對應(yīng)的就是設(shè)計輸入、綜合、布局布線、下載燒寫,F(xiàn)PGA開發(fā)只是為了確保這核心實現(xiàn)主干路每一個環(huán)節(jié)的成功性加了其他的修飾(約束)和驗證而已。下面將以核心主干路為路線,介紹每個環(huán)節(jié)的物理含義和實現(xiàn)目標(biāo)。

開發(fā)流程

設(shè)計輸入

1. 設(shè)計輸入方式

從FPGA開發(fā)流程圖中的主干線上分離出第一步設(shè)計輸入橫向環(huán)節(jié),并做了進一步的細節(jié)的處理,如圖2,從圖上看到,設(shè)計輸入方式有三種形式,有IP核、原理圖、HDL,由此展開設(shè)計輸入方式的探討。

原理圖輸入

原始的數(shù)字系統(tǒng)電路的設(shè)計可能大家還不可能想象,是用筆和紙一個個邏輯門電路甚至晶體管搭建起來的,這樣的方式我們稱作原理圖的輸入方式。那個時候,硬件工程師們會圍繞的坐在一塊,拿著圖紙來討論電路。幸虧那時候的數(shù)字電路的還不是很復(fù)雜,要是放到今天,稍微大一點的系統(tǒng),也算得上是浩大工程,稍微有點電路要修改的話,這個時候你要是一個沒耐心或是一個急性子的人可能就就會喪失對這個領(lǐng)域的興趣。話說回來,那個年代出來的老工程師們,電路基礎(chǔ)功夫確實很扎實。

事情總是朝著好的方向發(fā)展的,后來出現(xiàn)了大型計算機,工程師們開始將最原始的打孔的編程方式運用到數(shù)字電路設(shè)計當(dāng)中,來記錄我們手工繪畫的電路設(shè)計,后來存儲設(shè)備也開始用上了,從卡片過度到了存儲文本文件了,那個時候網(wǎng)表文件大致是起于那個時候。

需要注意的問題是原理圖和網(wǎng)表文件的關(guān)系,原理圖是我們最開始方便我們設(shè)計的一個輸入方式,而網(wǎng)表文件是計算機傳遞原理圖信息給下一道流程或是給仿真平臺進行原理圖描述仿真用的。設(shè)計輸入方式不一樣,但是對于功能仿真來講,最終進度到仿真核心的應(yīng)該是同一個文件,那么這個文件就是網(wǎng)表文件了。

有了計算機的輔助,數(shù)字電路設(shè)計起來可以說進步了一大截,但是如果依然全部是基于邏輯門晶體管的話,還是比較繁瑣。于是后來出現(xiàn)了符號庫,庫里包含一些常用的具有通行的器件,比如D觸發(fā)器類的等等,并隨著需求的發(fā)展,這些符號庫不斷的在豐富。與在原理圖里利用這些符號庫構(gòu)建電路對應(yīng)的是,由原理圖得到的這個網(wǎng)表文件的描述方式也相應(yīng)的得到擴展,那么這里網(wǎng)表文件里對電路符號的描述就是最開始的原語了。

作為最原始的數(shù)字電路ASIC設(shè)計輸入的方式,并從ASIC設(shè)計流程延續(xù)到FPGA的設(shè)計流程,有著它與生俱來的優(yōu)點,就是直觀性、簡潔性,以致目前依然還在使用。但是需要注意的是,這也是相對的,具體討論見下一小節(jié)。

HDL輸入

HDL全稱是硬件描述語言Hardware Description Language,這種輸入方式要追溯的話得到20世紀(jì)90年代初了。當(dāng)時的數(shù)字電路的規(guī)模已足以讓按照當(dāng)時的輸入方式進行門級抽象設(shè)計顧左顧不了右了,一不小心很容易出錯,而且得進行多層次的原理圖切割,最為關(guān)鍵的是如何能做到在更抽象的層次上描述數(shù)字電路。

于是一些EDA開始提供一種文本形式的,非常嚴謹,不易出錯的HDL輸入方式開始提供了。特別是在1980年的時候,美國軍方發(fā)起來超高速集成電路(Very-High-Speed Integrated Circuit)計劃,就是為了在部隊中裝備中大規(guī)模需求的數(shù)字電路的設(shè)計開發(fā)效率,那么這個VHSIC硬件描述語言就是我們現(xiàn)在的VHDL語言,它也是最早成為硬件描述語言的標(biāo)準(zhǔn)的。與之相對的是晚些時間民間發(fā)起的Verilog, 后來到1995年的時候,它的第一個版本的IEEE標(biāo)準(zhǔn)才出臺,但是沿用至今。

前面提到HDL語言具有不同層次上的抽象,這些抽象層有開關(guān)級、邏輯門級、RTL級、行為級和系統(tǒng)級,如圖3。其中開關(guān)級、邏輯門級又叫結(jié)構(gòu)級,直接反映的是結(jié)構(gòu)上的特性,大量的使用原語調(diào)用,很類似最開始原理圖轉(zhuǎn)成門級網(wǎng)表。RTL級又可稱為功能級。

HDL語言除了前面提到的兩種外,歷史上也出現(xiàn)了其他的HDL語言,有ABEL、AHDL、硬件C語言(System C語言、Handle-C)、System verilog等。其中ABEL和AHDL算是早期的語言,因為相比前面兩種語言來講,或多或少都有些致命的缺陷而在小范圍內(nèi)使用或者直接淘汰掉了。而因為VHDL和Verilog在仿真方面具有仿真時間長的缺陷,System verilog和硬件C語言產(chǎn)生了,從圖3看,System Verilog是在系統(tǒng)級和行為級上為Verilog做補充,同時硬件C語言產(chǎn)生的原因還有就是有種想把軟件和硬件設(shè)計整合到一個平臺下的思想。

IP(Intellectual Property)核

什么是IP核?任何實現(xiàn)一定功能的模塊叫做IP(Intellectual Property)。這里把IP核作為一種輸入方式單獨列出來,主要考慮到完全用IP核確實是可以形成一個項目。它的產(chǎn)生可以說是這樣的一個逆過程。

在隨著數(shù)字電路的規(guī)模不斷擴大的時候,面對一個超級大的工程,工程師們可能是達到一種共識,將這規(guī)模巨大而且復(fù)雜的設(shè)計經(jīng)常用到的具有一定通用性的功能給獨立出來,可以用來其他設(shè)計。當(dāng)下一次設(shè)計的時候,發(fā)現(xiàn)這些組裝好的具有一定功能的模塊確實挺好用的,于是越來越多的這種具有一定功能的模塊被提取出來,甚至工程師之間用來交換,慢慢大家注意到它的知識產(chǎn)權(quán),于是一種叫做IP知識產(chǎn)權(quán)的東西出來了,于是集成電路一個全新領(lǐng)域(IP設(shè)計)產(chǎn)生了。

IP按照來源的不同可以分為三類,第一種是來自前一個設(shè)計的內(nèi)部創(chuàng)建模塊,第二種是FPGA廠家,第三種就是來自IP廠商;后面兩種是我們關(guān)注的,這是我們進行零開發(fā)時考慮的現(xiàn)有資源問題,先撇開成本問題,IP方式的開發(fā)對項目周期非常有益的,這也是在FPGA應(yīng)用領(lǐng)域章節(jié)陳列相關(guān)FPGA廠家IP資源的原因。

FPGA廠家和IP廠商可以在FPGA開發(fā)的不同時期提供給我們的IP。我們暫且知道他們分別是未加密的RTL級IP、加密的RTL級IP、未經(jīng)布局布線的網(wǎng)表級IP、布局布線后的網(wǎng)表級IP。他們的含義在后面陸續(xù)介紹FPGA的開發(fā)步驟的時候,相信大家能夠恍然大悟。需要說明的是,越是FPGA靠前端步驟的時候提供的IP,他的二次開發(fā)性就越好,但是它的性能可能是個反的過程,同時也越貴,畢竟任何一個提供者也不想將自己的源碼程序提供給他者,但是為了不讓客戶走向其他商家,只能提高價賣了,同時加上一些法律上的協(xié)議保護。那么越朝FPGA開發(fā)步驟的后端,情況就相反了,越是后端,IP核就會進一步做優(yōu)化,性能就越好,但是一些客戶不要的功能就不好去了。

FPGA廠商提供一般常用的IP核,畢竟為了讓大家用他們家的芯片,但是一些特殊需要的IP核還是需要付費的。當(dāng)然這里需要說明的是FPGA廠商的IP是很少可以交叉用的,這一點很容易想,對廠家來講不會做這種給競爭者提供服務(wù)事情的。IP廠商一般會高價的提供未加密的RTL級源碼,有時FPGA廠商為了擴大芯片市場占有率,會購買第三方的IP做進一步的處理后免費提給該FPGA芯片使用者的。

2. 輸入方式使用探討

在上面我們介紹了三種輸入方式,有些地方會講到第四種輸入方式,就是門級網(wǎng)表文件輸入的形式,我們這里并沒有把它歸為一種輸入方式,原因在于,本身這些門級網(wǎng)表文件的產(chǎn)生還是源于介紹的三種輸入方式中的一種或是幾種混合的方式。所以這里沒有把它歸為一類。

好了,在上面三種輸入方式介紹的基礎(chǔ)上,我們來探討一下這令人眼花繚亂的輸入方式,探討的目的就是為了讓我們更好的使用他們。

首先,來總結(jié)一下三者的優(yōu)缺點,其實是兩種,因為IP核不管是哪個層次,或者在原理圖中被以符號的形式被例化,或者在HDL中被模塊例化。所以這里集中探討的是原理圖和HDL的優(yōu)缺點。原理圖的優(yōu)點就是結(jié)構(gòu)直觀性,HDL的優(yōu)點是嚴密性、支持甚寬的抽象描述層次、易于移植、方便仿真調(diào)試等等,缺點就是不具備對方的優(yōu)點。當(dāng)時出現(xiàn)HDL的時候,人們確實是想著原理圖該退出歷史舞臺了,但是到現(xiàn)在它還依然存在著。存在即是有道理的,存在就得用它,但是又得使用HDL,于是存在一種混合編程的形式。除了頂層模塊用原理圖之外,其他的內(nèi)部子模塊全部使用HDL來描述,HDL描述的模塊可以通過工具轉(zhuǎn)換成符號,然后在頂層模塊中引用這些符號,這就完成混合編程。

在接觸的很多FPGA的初學(xué)者很容易被原理圖的輸入方式給迷惑,甚至愛的深沉,加上本身其他輸入方式的繁瑣的輸入的厭惡,更是愛的無法自拔。當(dāng)開始強制性要求開始時養(yǎng)成多用HDL輸入的習(xí)慣的時候,有些甚至有著痛心疾首般的痛苦,但是隨著學(xué)習(xí)的深入,做的東西越來越大,嘗到HDL輸入方式帶來的甜頭的時候,就會覺得那個苦沒有白吃。 我覺得原理圖輸入方式從現(xiàn)在的一些線索看來,在今后的某一天將會終結(jié)。首先是找到了原理圖自身帶有優(yōu)勢的替代品,那就是主流FPGA集成環(huán)境中的綜合器和第三方綜合器都具有RTL視圖生成功能,這個視圖完全展示了項目的結(jié)構(gòu)組成,可以上下分層,最大的好處就是可以檢查核實寫的RTL級代碼的綜合后電路情況。

還有一條線索是,大家用的仿真軟件Modelsim并沒有提供原理圖輸入的支持,是原理圖的設(shè)計必須在集成環(huán)境成轉(zhuǎn)換成RTL級代碼或是綜合成網(wǎng)表形式來做仿真,也是一件繁瑣的事。原理圖的離開只是時間問題。 至于目前HDL選擇哪一種比較好,這個問題放到開始將HDL基礎(chǔ)語法知識的地方進行探討。這里要說明的是,并不是我們這里講Verilog使用就否定其他的HDL語言。各種HDL的爭端從未停止過,現(xiàn)在還是依然存在四種開發(fā)人,第一種是使用Verilog/System Verilog的人,第二種是使用VHDL的人,第三種就是使用System C的人,第四種是混合型的人,到底哪種好,也有也許是時間問題吧,時間證明一切。

綜合

不管是采用單一的輸入方式,還是采用的是混合編程(這種在很多跨公司合作項目中會碰見,也許A公司用的是VHDL,B公司用的是Verilog,那這個項目中很大可能采用混合型),我們統(tǒng)稱得到設(shè)計輸入后,都得把設(shè)計輸入得到一個可以和FPGA硬件資源相匹配的一個描述。假設(shè)FPGA是基于LUT結(jié)構(gòu)的,那么我們就得到一個基于LUT結(jié)構(gòu)門級網(wǎng)表。在這個過程中,又可以分為如圖兩個步驟

需要說明的是在Altera的開發(fā)流程中,將編譯、映射過程按照我們敘述的合稱綜合,而在Xilinx開發(fā)流程中,由設(shè)計輸入得到門級網(wǎng)表的過程叫做綜合,而映射過程歸結(jié)到其叫做實現(xiàn)的某一子步驟中。但是整體的流程還是遵循這個順序的,只是叫法一些外表性的不一樣而已。

Synthesis

1. 編譯

原理圖、HDL、IP核這些都將通過編譯后生成門級的網(wǎng)表,這里生成門級網(wǎng)表的過程其實是早期ASIC的步驟,直接生成門電路網(wǎng)表。這個時候的網(wǎng)表文件和具體的器件無關(guān),也就是說,生成的門電路網(wǎng)表也是一種平臺移植的媒質(zhì)。

2. 映射

我們通過編譯得到一張門級網(wǎng)表之后,與早先ASIC開發(fā)流程中在這個門級網(wǎng)表布線后去做掩膜不同,接下來就得考慮如何與我們選擇的硬件平臺結(jié)合起來,畢竟我們使用的硬件平臺是由一個一個的LUT(假設(shè)這類FPGA)組成的。那么這個結(jié)合的過程就是映射過程。 這個過程其實很復(fù)雜,首先需要把形成的網(wǎng)表邏輯門給規(guī)劃成一些小的組合,然后再去映射到LUT中,這個過程中規(guī)劃按照一定的算法和章程進行。不同的算法和章程就會得到不同的映射,不同的映射就會為后面的過程提供不同的選擇,最終生成性能不一樣的電路了。 我們把講基于SRAM技術(shù)的FPGA的二選一多路器拿出來舉個例子,如下圖,可以按照紅色線將二選一多路器完全劈成兩邊,原來的一個表就可以規(guī)劃到其他兩個表或表內(nèi)容中,因為被劈成的兩部分可單獨成表,也可以被規(guī)劃到其他電路形成的表里。

映射的工程比較復(fù)雜,運算量也很大,也是為什么FPGA開發(fā)過程中,一直存在的一個問題,形成最終的可配置二進制文件的時間非常長,特別是一些大一點的項目,時間消耗比較長的一個點就是映射了,至于具體的映射算法就超出了書的范圍了。再強調(diào)的是,映射是和器件有關(guān)的,即使是同一個系列,不同型號的FPGA內(nèi)部就夠也是有區(qū)別的,好比從外觀看都是一個單元樓內(nèi)的單元房,但是每個單元房內(nèi)裝修、家具擺設(shè)等都是不一樣的。

原文標(biāo)題:帶你深入了解FPGA開發(fā)設(shè)計之設(shè)計輸入&綜合

文章出處:【微信公眾號:FPGA技術(shù)支持】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600458
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1176

    瀏覽量

    120138
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    324

    瀏覽量

    47282

原文標(biāo)題:帶你深入了解FPGA開發(fā)設(shè)計之設(shè)計輸入&綜合

文章出處:【微信號:HK-FPGA_Dep,微信公眾號:FPGA技術(shù)支持】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入了解PCI轉(zhuǎn)XMC載板轉(zhuǎn)接卡

    電子發(fā)燒友網(wǎng)站提供《深入了解PCI轉(zhuǎn)XMC載板轉(zhuǎn)接卡.docx》資料免費下載
    發(fā)表于 09-06 14:35 ?0次下載

    深入了解 MEMS 振蕩器 溫度補償 MEMS 振蕩器 TC-MO

    深入了解 MEMS 振蕩器/溫度補償 MEMS 振蕩器(TC-MO)-μPower MO1534/MO1569/MO1576/MO8021
    的頭像 發(fā)表于 07-30 16:38 ?279次閱讀
    <b class='flag-5'>深入了解</b> MEMS 振蕩器 溫度補償 MEMS 振蕩器 TC-MO

    深入了解表面貼裝晶體諧振器DSX1210A

    深入了解表面貼裝晶體諧振器DSX1210A
    的頭像 發(fā)表于 07-25 14:27 ?278次閱讀
    <b class='flag-5'>深入了解</b>表面貼裝晶體諧振器DSX1210A

    深入了解恒溫晶體振蕩器DC5032AS

    深入了解恒溫晶體振蕩器DC5032AS
    的頭像 發(fā)表于 07-25 10:37 ?215次閱讀
    <b class='flag-5'>深入了解</b>恒溫晶體振蕩器DC5032AS

    FPGA的學(xué)習(xí)筆記---FPGA開發(fā)流程

    與通常的單片機應(yīng)用開發(fā)不同,FPGA有自己的開發(fā)流程。但具體上怎樣操作,作為初學(xué)者,沒有一點經(jīng)驗。網(wǎng)站獎勵的清華FPGA需要的
    發(fā)表于 06-23 14:47

    小熊派官網(wǎng)正式上線 可深入了解小熊派的各款開發(fā)套件

    我們?yōu)槊恳豢?b class='flag-5'>開發(fā)板打造一個開源社區(qū),讓每一位開發(fā)者都能在這里找到歸屬感和靈感。通過官網(wǎng)對硬件、軟件、案例和教程的開源,大家可以深入了解小熊派的各款開發(fā)套件。
    的頭像 發(fā)表于 06-13 08:42 ?695次閱讀
    小熊派官網(wǎng)正式上線 可<b class='flag-5'>深入了解</b>小熊派的各款<b class='flag-5'>開發(fā)</b>套件

    深入了解IEEE協(xié)會:設(shè)備MAC地址申請指南

    在數(shù)字化浪潮中,設(shè)備之間的通信變得日益頻繁和重要。而在這個通信網(wǎng)絡(luò)中,每一臺設(shè)備都需要一個獨特的身份標(biāo)識來幫助大家有效識別設(shè)備信息,那就是MAC地址。本篇內(nèi)容,英利檢測將帶大家深入了解IEEE協(xié)會
    的頭像 發(fā)表于 05-09 17:20 ?448次閱讀
    <b class='flag-5'>深入了解</b>IEEE協(xié)會:設(shè)備MAC地址申請指南

    拆解FPGA芯片,帶你深入了解其原理

    拆解FPGA芯片,帶你深入了解其原理 現(xiàn)場可編程門陣列(FPGA)可以實現(xiàn)任意數(shù)字邏輯,從微處理器到視頻生成器或加密礦機,一應(yīng)俱全。FPGA
    發(fā)表于 04-17 11:07

    深入了解影響ZR執(zhí)行器性能的關(guān)鍵因素

    深入了解影響ZR執(zhí)行器性能的關(guān)鍵因素-速程精密 在工業(yè)自動化領(lǐng)域,ZR執(zhí)行器作為關(guān)鍵的終端設(shè)備,其性能的穩(wěn)定性對于整個自動化系統(tǒng)的運行至關(guān)重要。了解影響ZR執(zhí)行器性能的因素有助于更好地維護和優(yōu)化其
    的頭像 發(fā)表于 03-20 15:04 ?461次閱讀
    <b class='flag-5'>深入了解</b>影響ZR執(zhí)行器性能的關(guān)鍵因素

    fpga原型驗證流程

    FPGA原型驗證流程是確保FPGA(現(xiàn)場可編程門陣列)設(shè)計正確性和功能性的關(guān)鍵步驟。它涵蓋了從設(shè)計實現(xiàn)到功能驗證的整個過程,是FPGA開發(fā)
    的頭像 發(fā)表于 03-15 15:05 ?1276次閱讀

    S參數(shù):深入了解與實際應(yīng)用

    以一個無源二端口網(wǎng)絡(luò)為例,深入介紹S參數(shù)。信號在傳輸過程中會產(chǎn)生入射波和反射波,既有進入端口的信號也有從端口中出來的信號。
    的頭像 發(fā)表于 01-23 11:20 ?774次閱讀
    S參數(shù):<b class='flag-5'>深入了解</b>與實際應(yīng)用

    深入了解RAG技術(shù)

    這是任何RAG流程的最后一步——基于我們仔細檢索的所有上下文和初始用戶查詢生成答案。最簡單的方法可能是將所有獲取到的上下文(超過某個相關(guān)性閾值的)連同查詢一起一次性輸入給LLM。
    的頭像 發(fā)表于 01-17 11:36 ?2652次閱讀
    <b class='flag-5'>深入了解</b>RAG技術(shù)

    FPGA基本開發(fā)設(shè)計流程

    FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。FPGA
    發(fā)表于 12-31 21:15

    深入了解Linux中vi命令的使用

    深入了解Linux中vi命令的使用 VI是一款在Linux系統(tǒng)中使用的文本編輯器,它是一款功能強大、靈活性高的編輯器。VI編輯器具有非常高效的命令行操作方式,并且在各個版本的Linux中都得到了廣泛
    的頭像 發(fā)表于 12-25 11:15 ?389次閱讀

    深入了解 GaN 技術(shù)

    深入了解 GaN 技術(shù)
    的頭像 發(fā)表于 12-06 17:28 ?5971次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術(shù)