<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

帶你深入了解FPGA開發流程

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

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

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

開發流程

設計輸入

1. 設計輸入方式

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

原理圖輸入

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

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

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

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

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

HDL輸入

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

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

前面提到HDL語言具有不同層次上的抽象,這些抽象層有開關級、邏輯門級、RTL級、行為級和系統級,如圖3。其中開關級、邏輯門級又叫結構級,直接反映的是結構上的特性,大量的使用原語調用,很類似最開始原理圖轉成門級網表。RTL級又可稱為功能級。

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

IP(Intellectual Property)核

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

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

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

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

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

2. 輸入方式使用探討

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

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

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

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

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

綜合

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

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

Synthesis

1. 編譯

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

2. 映射

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

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

原文標題:帶你深入了解FPGA開發設計之設計輸入&綜合

文章出處:【微信公眾號:FPGA技術支持】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1608

    文章

    21367

    瀏覽量

    594696
  • asic
    +關注

    關注

    34

    文章

    1163

    瀏覽量

    119535
  • HDL
    HDL
    +關注

    關注

    8

    文章

    324

    瀏覽量

    47133

原文標題:帶你深入了解FPGA開發設計之設計輸入&綜合

文章出處:【微信號:HK-FPGA_Dep,微信公眾號:FPGA技術支持】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    深入了解影響ZR執行器性能的關鍵因素

    深入了解影響ZR執行器性能的關鍵因素-速程精密 在工業自動化領域,ZR執行器作為關鍵的終端設備,其性能的穩定性對于整個自動化系統的運行至關重要。了解影響ZR執行器性能的因素有助于更好地維護和優化
    的頭像 發表于 03-20 15:04 ?258次閱讀
    <b class='flag-5'>深入了解</b>影響ZR執行器性能的關鍵因素

    fpga原型驗證流程

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

    fpga設計流程

    首先,根據功能需求選擇合適的FPGA型號和開發板,并進行硬件資源評估、時序分析等,以確定芯片的工作頻率和性能參數。同時,深入研究所選芯片的特點、布局、電氣參數等,為后續設計做好知識儲備。
    的頭像 發表于 03-14 15:45 ?214次閱讀

    S參數:深入了解與實際應用

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

    深入了解RAG技術

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

    FPGA基本開發設計流程

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

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

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

    深入了解 GaN 技術

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

    覽邦WACH MAX-A90智能手表:它的優勢到底在哪?一文帶你深入了解

    ,尤其是HAMI丨Android OS 10.0雙系統運行流暢穩定。以及突破現有藍牙芯片升級MT2822低功耗芯片技術屏障,高速6G運行和128G大容量內存,可以輕松應對各種復雜任務。帶給用戶前所未有的極致用機體驗。那么,它的優勢到底在哪?本文將帶您深入了解這款智能手表,探尋其獨特的魅力。 01、繆
    的頭像 發表于 08-10 23:07 ?471次閱讀

    孔環是什么?深入了解孔環有助于實現PCB設計

    本文將探討孔環,因為更深入了解孔環有助于確保成功地實現PCB設計。
    的頭像 發表于 07-19 10:21 ?3088次閱讀
    孔環是什么?<b class='flag-5'>深入了解</b>孔環有助于實現PCB設計

    Intel FPGA開發流程指南

    開發FPGA設計,最終的產品是要落在使用FPGA芯片完成某種功能。所以我們首先需要一個帶有Intel FPGA芯片的開發板。
    的頭像 發表于 07-14 09:42 ?2499次閱讀
    Intel <b class='flag-5'>FPGA</b><b class='flag-5'>開發</b><b class='flag-5'>流程</b>指南

    FPGA的詳細開發流程

    ??FPGA 的詳細開發流程就是利用 EDA 開發工具對 FPGA 芯片進行開發的過程,所以
    的頭像 發表于 07-04 14:37 ?3414次閱讀
    <b class='flag-5'>FPGA</b>的詳細<b class='flag-5'>開發</b><b class='flag-5'>流程</b>

    FPGA設計流程

    FPGA的設計流程主要包括HDL代碼編寫、RTL綜合、布局布線、靜態時序分析、生成下載文件。下面將逐一介紹各部分。下面是FPGA設計的流程圖。
    的頭像 發表于 07-04 12:06 ?1019次閱讀
    <b class='flag-5'>FPGA</b>設計<b class='flag-5'>流程</b>

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發表于 06-25 13:53 ?839次閱讀
    <b class='flag-5'>深入了解</b>安全光柵
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>