<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > FPGA入門者必讀寶典:詳述開發(fā)流程每一環(huán)節(jié)的物理含義和實現(xiàn)目標

          FPGA入門者必讀寶典:詳述開發(fā)流程每一環(huán)節(jié)的物理含義和實現(xiàn)目標

          作者: 時間:2015-08-27 來源:網絡 收藏

            在接觸的很多的初學者很容易被原理圖的輸入方式給迷惑,甚至愛的深沉,加上本身其他輸入方式的繁瑣的輸入的厭惡,更是愛的無法自拔。當開始強制性要求開始時養(yǎng)成多用HDL輸入的習慣的時候,有些甚至有著痛心疾首般的痛苦,但是隨著學習的深入,做的東西越來越大,嘗到HDL輸入方式帶來的甜頭的時候,就會覺得那個苦沒有白吃。

          本文引用地址:http://www.ex-cimer.com/article/279347.htm

            我覺得原理圖輸入方式從現(xiàn)在的一些線索看來,在今后的某一天將會服役終結。首先是找到了原理圖自身帶有優(yōu)勢的替代品,那就是主流集成環(huán)境中的綜合器和第三方綜合器都具有視圖生成功能,這個視圖完全展示了項目的結構組成,可以上下分層,最大的好處就是可以檢查核實寫的級代碼的綜合后電路情況。還有一條線索是,大家用的仿真軟件Modelsim并沒有提供原理圖輸入的支持,是原理圖的設計必須在集成環(huán)境成轉換成級代碼或是綜合成網表形式來做仿真,也是一件繁瑣的事。原理圖的離開只是時間問題。

            至于目前HDL選擇哪一種比較好,這個問題放到開始將HDL基礎語法知識的地方進行探討。這里要說明的是,并不是我們這里講Verilog使用就否定其他的HDL語言。各種HDL的爭端從未停止過,現(xiàn)在還是依然存在四種開發(fā)人,第一種是使用Verilog/System Verilog的人,第二種是使用VHDL的人,第三種就是使用System C的人,第四種是混合型的人,到底哪種好,也有也許是時間問題吧,時間證明一切。

            5.2綜合

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

            

           

            圖5

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

            5.2.1編譯

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

            5.2.2映射

            我們通過編譯得到一張門級網表之后,與早先ASIC開發(fā)流程中在這個門級網表布線后去做掩膜不同,接下來就得考慮如何與我們選擇的硬件平臺結合起來,畢竟我們使用的硬件平臺是由一個一個的LUT(假設這類FPGA)組成的。那么這個結合的過程就是映射過程。

            這個過程其實很復雜,首先需要把形成的網表邏輯門給規(guī)劃成一些小的組合,然后再去映射到LUT中,這個過程中規(guī)劃按照一定的算法和章程進行。不同的算法和章程就會得到不同的映射,不同的映射就會為后面的過程提供不同的選擇,最終生成性能不一樣的電路了。

            我們把講基于SRAM技術的FPGA的二選一多路器拿出來舉個例子,如圖6,可以按照紅色線將二選一多路器完全劈成兩邊,原來的一個表就可以規(guī)劃到其他兩個表或表內容中,因為被劈成的兩部分可單獨成表,也可以被規(guī)劃到其他電路形成的表里。

            

           

            圖6

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

            5.3布局布線

            5.3.1布局

            講到這一塊,正好有這么一個例子來講解這個概念。近來報道朝鮮希望在俄羅斯遠東地區(qū)租用數十萬公頃的土地用來培育農產品。咱先撇開今后的購買的成功與否,假設成功了,并且有了這個詳細的希望培育的農作物的品種及數量,有各式各樣的蔬菜、主糧、禽類畜養(yǎng)場、果樹等等。我們前面做的那些流程得到的LUT門級網表就好比這樣的清單。

            得到這樣的清單之后,我們再假設在這十萬公頃的土地上,陽光、水資源、溫差都有一定的分布。大家知道農作物的的成長和高量產或者與陽關有關,或者與水資源有關,或者與溫差有關,并且禽類的畜養(yǎng)材料與農作物的副產有關。所以接下來要做的事情就是根據現(xiàn)有的自然條件和農產品的所需環(huán)境特點合理布局,哪些地適合做什么。

            緊接著我們回到FPGA開發(fā)中來,我們通過前面的步驟得到的清單就是LUT門級網表。網表里提供的僅僅是從邏輯關系上一些LUT結構的連接。我們需要將這些LUT結構配置到FPGA具體的哪個位置。需要說明的是,F(xiàn)PGA里任何硬件結構都是按照橫縱坐標進行標定的,圖中選中的是一個SLICE,SLICE里面存放著表和其他結構,它的位置在X50Y112上。不同的資源的坐標不一樣,但是坐標的零點是公用的。

            

           

            圖7

            在FPGA里布局需要考慮的問題是,如何將這些已有的邏輯上連接的LUT及其它元素合理的放到現(xiàn)有的FPGA里,達到功能要求的時候保證質量。具體點就比如,乘法器這樣的電路適合放在RAM附近,當然,硬件乘法器的硬件布局一般也是在存儲器附近,有利于縮短乘法的延時時間,什么樣的電路需要配置高速等等。

            十萬公頃的地布局規(guī)劃好了,農產品就會有很好的豐收,同樣FPGA開發(fā)布局布好了,由FPGA搭建起來的電路就會更加穩(wěn)定和擴展性。

            5.3.2布線

            上小節(jié)中,我們把十萬公頃的地給安排好了,哪些地該種什么。具體實施之前還有一些是必須做的,比如農作物的澆灌,沒有一個很好的灌溉系統(tǒng)是一個問題;再比如豐收了得采摘吧,這個時候,能夠讓大卡車到達每一塊農地的公路樞紐也是需要解決的問題。將每一塊或者相關的田地連接的灌水系統(tǒng)和公路的建設,就好比我們這個布線的過程。

            我們在FPGA內通過布局,知道那些LUT具體分布到哪個SLICE,但是一方面如何讓這些SLICE連接起來,二方面如何讓輸入的信號到達相應的開始處理點和如何讓輸出到達輸出IO上,并且連接的電路整體性能好,這就是布線這個環(huán)節(jié)需要完成的內容。要達到布線最優(yōu)話,當然這里面設計到布線算法和很多細節(jié)問題,比如涉及到布線資源、PLL資源分布。但是這些對我們理解布線這個概念沒有很多益處,暫且不深入,本質上就是一個線路求最優(yōu)的問題。

            5.4約束

            約束,在圖1上看到,在綜合和布局布線這兩個流程環(huán)節(jié)里都出現(xiàn)了,我們暫且規(guī)定其為約束一和約束二,或者說綜合約束和布局布線約束,布局布線約束又可以分為位置約束、時序約束。約束,就是對這些環(huán)節(jié)操作定制規(guī)則。一般開發(fā)環(huán)境會對這些約束有個默認,這些默認的設置對大部分情況下還是適用的,但是通常布局布線約束中的I/O約束是我們每一個工程都必須給定的。同時開發(fā)工具開放其他約束接口,允許我們設置這些規(guī)則,具體的有哪些約束怎么去做在后面介紹工具使用的時候進行討論,這里先明白這些約束的基本概念。

            綜合約束

            相信大家已經下意識的將綜合約束和綜合過程掛在一起了,沒錯,綜合約束確實是在綜合過程中做的,用來指導綜合過程,包括編譯和映射。我們已經知道綜合過程是將RTL級電路描述轉換到FPGA上的硬件單元(LUT)中,形成以FPGA存在的硬件單元構成的電路。

            我們還是拿前面有過的例子來說明,不同的約束將導致生成性能不同的電路。綜合這么一個完成式***能的電路,沒有加資源共享得到的電路如圖8左邊所示的電路,而加了資源共享的約束后,得到的電路結構如圖8右邊的電路。

            

           

            圖8

            通過之前的分析,得到左邊的電路結構資源消耗多但是速度快,而右邊的結構消耗資源少,但是速度慢,乘法器需要分時復用。

            當然這只是一個例子,但是足以說明,不同的綜合指導原則也就是綜合約束,將會產生不同的電路。當得到的電路性能不能滿足需求的時候,適當考慮綜合約束,來達到一個速度和面積的轉換的效果,實現(xiàn)性能的提升。電路實現(xiàn)的速度和消耗的面積是貫穿在FPGA開發(fā)過程中兩個矛盾的問題,綜合約束是其中一種小范圍內實現(xiàn)速度和面見平衡點移動的方式。

            位置約束

            沒錯,你又想對了,位置約束和我們布局有關系,它就是指布局的策略。根據所選擇的FPGA平臺現(xiàn)有硬件資源分布來決定我們布局。

            其中最典型的位置約束就是I/O約束。一個典型的系統(tǒng)是既有輸入也有輸出的,而不管是輸入還是輸出,都是從I/O上為端點的。輸入從哪個端點進來,輸出從哪個端點出去,輸入是需要支持什么樣的電氣特性的端點,輸出又是需要支持什么樣的電氣特定的端點。這些都是I/O約束做的事情。任何一個工程,都必須有這么一個約束。

            還有一種典型的位置約束是在增量編譯里涉及的物理界定。增量編譯的出現(xiàn)就是因為在FPGA開發(fā)過程中綜合和布局布線的長耗時性而提出的。思想就是把FPGA切成很多個小塊的FPGA,然后約定具體哪塊小FPGA放置什么模塊,實現(xiàn)什么樣的功能,從物理上進行界定。當修改工程后,開發(fā)平臺就會檢測哪些小FPGA內沒有進行修改,哪些進行了修改,然后將修改過的部分重新進行綜合布局布線步驟。這樣一來,相比原來修改一點,全工程重新經過那些過程來講,時間節(jié)省下來了。

            時序約束

            估計沒有多少懸念了,時序約束很大程度上和布線有關。為什么要做這個約束?

            由于一方面信號在芯片內傳遞是需要消耗時間的,另一方面大量存在的寄存器有反應時間,而我們開發(fā)的最開始的時候這些時間都是理想化的。但是考慮到真實情況下,如果跑的速度比較高,達到了200M這么個速度,當然這個高速和具體的芯片有關,高性能的芯片本身跑的速度可以達到很高,200M相對來說就不是高速,對一些低性能芯片還可能達不到200M.這個時候,這些時間達到了同樣一個系統(tǒng)時間數量級的時候,很可能影響電路的性能了。某一刻,該來的信號沒有來,默認的話就會采集錯誤信號了。

            為了讓這些硬件本身帶來的延時時間更理想化,我們就要對這些決定時間延時的因素優(yōu)化來減少時間延時。對于寄存器本身的反應時間這個因素我們開發(fā)者是無能為力的,我們要做的優(yōu)化就是布線了。是走直線還是走其他,不僅僅決定于自身這條路徑,還和整個系統(tǒng)布線有關,好比水桶原理,系統(tǒng)性能決定于最差路徑延時。

            時序約束做的就是這些事情,但是時序約束并不是指具體去連接每一條線,這個工作就像前面那些流程一樣都是由軟件去實現(xiàn)的,先用軟件自己默認原則布線,然后對其結果分析,不滿足時序要求的,我們再對具體的問題路徑做一些指導約束。時序約束的添加,主要包括周期約束、輸入偏移約束和輸出偏移約束。具體的過程在后面章節(jié)介紹工具使用時會有具體動手的指導。

            5.5 FPGA開發(fā)仿真

            在經過上面從設計輸入到綜合再到布局布線過程的介紹后,我們來集中探討一下,在這些過程中涉及到的相應的仿真。

            仿真,字面上講就是模擬真實狀況。我們FPGA設計里面的仿真,就是模擬真實電路的狀況,查看電路是不是我們需要的電路。如果我們把FPGA開發(fā)形成電路當作一個產品的生產過程,那么在FPGA開發(fā)流程中含有的三種仿真(RTL級仿真、靜態(tài)仿真和時序仿真)就好比產品線中的三道檢測站。如圖9,這三道工序任何一道出了問題,修改設計后都得重新走這三道卡,所以盡量在把問題發(fā)現(xiàn)在源頭。

            

           

            圖9

          fpga相關文章:fpga是什么




          關鍵詞: FPGA RTL

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();