FPGA開發(fā)設(shè)計流程和功能實現(xiàn)_第1頁
FPGA開發(fā)設(shè)計流程和功能實現(xiàn)_第2頁
FPGA開發(fā)設(shè)計流程和功能實現(xiàn)_第3頁
FPGA開發(fā)設(shè)計流程和功能實現(xiàn)_第4頁
FPGA開發(fā)設(shè)計流程和功能實現(xiàn)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、FPG般計流程與功能實現(xiàn)、兒、4刖百本部門所承擔的FPGA設(shè)計任務(wù)主要是兩方面的作用:系統(tǒng)的原型實現(xiàn)和ASIC的原型驗證。編寫本流程的目的是:在于規(guī)范整個設(shè)計流程,實現(xiàn)開發(fā)的合理性、一致性、高效性。形成風格良好和完整的文檔。實現(xiàn)在FPGA不同廠家之間以及從FPGA到ASIC的順利移植。便于新員工快速掌握本部門FPGA的設(shè)計流程。由于目前所用到的FPGA器件以Altera的為主,所以下面的例子也以Altera為例,工具組合為modelsim+LeonardoSpectrum/FPGACompilerll+Quartus,但原則和方法對于其他廠家和工具也是基本適用的。1 .基于HDL的FPGA設(shè)計

2、流程概述11.1 設(shè)計流程圖11.2 關(guān)鍵步驟的實現(xiàn)21.2.1 功能仿真21.2.2 邏輯綜合21.2.3 前仿真31.2.4 布局布線31.2.5 后仿真(時序仿真)42 .VerilogHDL設(shè)計42.1 編程風格CCodingStyle)要求42.1.1 文件42.1.2 大小寫52.1.3 標識符52.1.4 參數(shù)化設(shè)計52.1.5 空行和空格52.1.6 對齊和縮進52.1.7 注釋52.1.8 參考C語言的資料52.1.9 可視化設(shè)計方法62.2 可綜合設(shè)計62.3 設(shè)計目錄63 .邏輯仿真63.1 測試程序(testbench)73.2 使用預編譯庫74 .邏輯綜合84.1 邏

3、輯綜合的一些原則84.1.1 關(guān)于LeonardoSpectrum84.1.2 大規(guī)模設(shè)計的綜合84.1.3 必須重視工具產(chǎn)生的警告信息84.2 調(diào)用模塊的黑盒子(Blackbox)方法8參考10修訂紀錄101 .基于HDL的FPGA設(shè)計流程概述1.1 設(shè)計流程圖(1)設(shè)計定義1F(2)HDL實現(xiàn)(3)功能仿真邏輯仿真器(5)前仿真1邏輯仿真器(6)布局布線*FPGA廠家工具(8)靜態(tài)時序分析(7)后仿真邏輯仿真器說明:邏輯仿真器主要指邏輯綜合器主要指(9)在系統(tǒng)測試modelsim,Verilog-XL等。LeonardoSpectrum、Synplify、FPGAExpress/FPGAC

4、ompiler等。FPGA廠家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation>Alliance、ISE4.1等。1.2關(guān)鍵步驟的實現(xiàn)1.2.1 功能仿真說明:“調(diào)用模塊的行為仿真模型”指的是RTL代碼中引用的由廠家提供的宏模塊/IP,如Altera提供的LPM庫中的乘法器、存儲器等部件的行為模型。1.2.2 邏輯綜合說明:“調(diào)用模塊的黑盒子接口”的導入,是由于RTL代碼調(diào)用了一些外部模塊,而這些外部模塊不能被綜合或無需綜合,但邏輯綜合器需要其接口的定義來檢查邏輯并保留這些模塊的接口。1.2.3前仿真般來說,對FPGA設(shè)計這一步可以跳

5、過不做,但可用于debug綜合有無問題。1.2.4布局布線EDIF網(wǎng)表調(diào)用模塊的(netlist)綜合模型SDF文件(標準延時格式)1.2.5后仿真(時序仿真)邏輯仿真器2. VerilogHDL設(shè)計基于將來設(shè)計轉(zhuǎn)向ASIC的方便,本部門的設(shè)計統(tǒng)一采用VerilogHDL,但針對混合設(shè)計和混合仿真的趨勢,所有開發(fā)人員也應能讀懂VHDL。VerilogHDL的學習可參考12。2.1 編程風格(CodingStyle)要求2.1.1 文件(1) 每個模塊(module)一般應存在于單獨的源文件中,通常源文件名與所包含模塊名相同。(2) 每個設(shè)計文件開頭應包含如下注釋內(nèi)容:年份及公司名稱。作者。文件

6、名。所屬項目。頂層模塊。模塊名稱及其描述。修改紀錄。請參考標準示例程序3。2.1.2 大小寫(1) 如無特別需要,模塊名和信號名一律采用小寫字母。(2) 為醒目起見,常數(shù)('define定義)/參數(shù)(parameter定義)采用大寫字母。2.1.3 標識符(1) 標識符采用傳統(tǒng)C語言的命名方法,即在單詞之間以"_”分開,如:max_delay、data_size等等。(2) 采用有意義的、能反映對象特征、作用和性質(zhì)的單詞命名標識符,以增強程序的可讀性。(3) 為避免標識符過于冗長,對較長單詞的應當采用適當?shù)目s寫形式,如用'buff'代替'buffer&

7、#39;,'ena'代替'enable',addr'代替'address'等。2.1.4 參數(shù)化設(shè)計為了源代碼的可讀性和可移植性起見,不要在程序中直接寫特定數(shù)值,盡可能采用'define語句或paramater語句定義常數(shù)或參數(shù)。2.1.5 空行和空格(1) 適當?shù)卦诖a的不同部分中插入空行,避免因程序擁擠不利閱讀。(2) 在表達式中插入空格,避免代碼擁擠,包括:賦值符號兩邊要有空格;雙目運算符兩邊要有空格;單目運算符和操作數(shù)之間可沒有空格,示例如下:a<=b;c<=a+b;if(a=b)then.a<=-a&a

8、mp;c;2.1.6 對齊和縮進(1) 不要使用連續(xù)的空格來進行語句的對齊。(2) 采用制表符Tab對語句對齊和縮進,Tab鍵采用4個字符寬度,可在編輯器中設(shè)置。(3) 各種嵌套語句尤其是if.else語句,必須嚴格的逐層縮進對齊。2.1.7 注釋必須加入詳細、清晰的注釋行以增強代碼的可讀性和可移植性,注釋內(nèi)容占代碼篇幅不應少于30%。2.1.8 參考C語言的資料要形成良好的編程風格,有許多細節(jié)需要注意,可以參考資料4,雖然它是針對C語言的討論,但由于VerilogHDL和C語言的形式非常近似,所以里面提到的很多原則都是可以借鑒的。2.1.9可視化設(shè)計方法為提高設(shè)計效率和適應協(xié)同設(shè)計的方式,可

9、采用可視化的設(shè)計方法,的Renoir軟件提供了非常好的設(shè)計模式。2.2 可綜合設(shè)計用HDL實現(xiàn)電路,設(shè)計人員對可綜合風格的RTL描述的掌握不僅會影響到仿真和綜合的一致性,也是邏輯綜合后電路可靠性和質(zhì)量好壞最主要的因素,對此應當予以充分的重視。學習可綜合的HDL請參考567。學習設(shè)計的模塊劃分請參考8。2.3 設(shè)計目錄采用合理、條理清晰的設(shè)計目錄結(jié)構(gòu)有助于提高設(shè)計的效率、可維護性。建議采用類似下面的目錄結(jié)構(gòu):(1)MentorGrahpicssrcsyn(源代碼)(綜合ver1srcsynsim(源代碼)(綜合)(仿真)3.邏輯仿真考慮到性能和易用性,首選的邏輯仿真simpar一)(仿真)(布局

10、布線)designver2(布局布線)(源代碼)(綜合)(仿真)(布局布線)MentorGraphics的modelsim。designDelaySelectiont叩-1AdditionalSearchLibraries::OtherOptionsPulseOptionsDisable三I四回回m搜尋電)二i-UserDefir取消Library|D:workalterj_$imlibapeK20ke1D.加o(k*Lee癡部20k.eRejectiErrorLi二I/i亞可口wdlJapexSOkeasynchlcellStltctLibrfcry二圓3apexZO口apexZO;apex

11、ZO3.1 測試程序(testbench)測試程序?qū)τ谠O(shè)計功能和時序的驗證有著舉足輕重的影響,測試激勵的完備性和真實性是關(guān)鍵所在,有以下原則須遵循:(1) 測試激勵輸入和響應輸出采集的時序應當兼顧功能仿真(無延時)和時序仿真(有延時)的情況。(2) 對于周期較多的測試,為提高效率,盡可能采用程序語句來判斷響應與標準結(jié)果是否一致,給出成功或出錯標志,而不是通過觀察波形來判斷。(3) 采用基于文件的測試是很好的辦法,即由matlab或spw等系統(tǒng)工具產(chǎn)生測試數(shù)據(jù),測試程序?qū)⑵渥x入產(chǎn)生激勵,再把響應結(jié)果寫入到文件,再交給上述工具進行處理或分析。(4) 仿真器支持幾乎所有的VerilogHDL語法,而

12、不僅僅是常用的RTL的描述,應當利用這一點使測試程序盡可能簡潔、清楚,篇幅長的要盡量采用task來描述。3.2 使用預編譯庫在進行功能仿真和后仿真時都需要某些模塊的行為仿真模型和門級仿真模型,如AlteraQuartus里的220model.v(LPM模塊行為仿真模型)和apex20ke_atoms.v(20KE系列門級仿真模型),為避免在不同的設(shè)計目錄中多次編譯這些模型,應當采用一次編譯,多次使用的方法。具體做法如下(以20KE門級庫為例):1:在某個工作目錄下新建一庫名apex20ke,將apex20ke_atoms.v編譯到其中。2:在圖形界面中的LoadDesign對話框中裝入仿真設(shè)計

13、時,在Verilog標簽下指定預編譯庫的完整路徑。(見下圖)¥»rilc*cI工IapeKZOke_asynch_memlaptermapeic20ke_cam口apex20ke_cceXIapexZOkedpr4.邏輯綜合目前可用的FPGA綜合工具有MentorGraphics的LeonardoSpectrum,Synplicity的Synplify和Synopsys的FPGACompilerII/FPGAExpress,LeonardoSpectrum由于性能和速度最好,成為我們首選的綜合器,F(xiàn)PGACompilerII/FPGAExpress由于可以和DesignCo

14、mpiler代碼兼容也可用。見參考94.1 邏輯綜合的一些原則HDL代碼綜合后電路質(zhì)量的好壞主要取決于三個方面:RTL實現(xiàn)是否合理、對廠家器件特點的理解和對綜合器掌握的程度。參考10中有比較全面的討論。4.1.1 關(guān)于LeonardoSpectrumLeonardoSpectrum對綜合的控制能力比較強,但使用也略為復雜,故需要在使用前盡量熟悉其功能,才能取得較好的綜合結(jié)果。當出現(xiàn)綜合結(jié)果不能滿足約束條件時,不要急于修改設(shè)計源文件,應當通過綜合器提供的時序和面積分析命令找出關(guān)鍵所在,然后更改綜合控制或修改代碼。在LeonardoSpectrum2000.1b以前的版本輸出的.v網(wǎng)表都不能用于仿

15、真。4.1.2 大規(guī)模設(shè)計的綜合分塊綜合當設(shè)計規(guī)模很大時,綜合也會耗費很多時間。如果設(shè)計只更改某個模塊時,可以分塊綜合。如有設(shè)計top.v包含a.v和b.v兩個模塊,當只修改a.v的話,可以先單獨綜合b.v,輸出其網(wǎng)表b.edf,編寫一個b模塊的黑盒子接口b_syn.v,每次修改a.v后只綜合top.v、a.v、b_syn.v,將綜合后的網(wǎng)表和b.edf送去布線,可以節(jié)約綜合b模塊的時間。采用腳本命令當設(shè)計規(guī)模比較大時,綜合控制也許會比較復雜,可以考慮采用腳本控制文件的方式進行綜合控制,modelsim、LeonardoSpectrum和Quartus都支持TCL(ToolCommandLan

16、guage)語言,采用腳本控制可以提供比圖形界面更靈活和更方便的控制手段。4.1.3 必須重視工具產(chǎn)生的警告信息綜合工具對設(shè)計進行處理可能會產(chǎn)生各種警告信息,有些是可以忽略的,但設(shè)計者應該盡量去除,不去除必須確認每條警告的含義,避免因此使設(shè)計的實現(xiàn)產(chǎn)生隱患。這個原則對仿真和布局布線同樣適用。4.2 調(diào)用模塊的黑盒子(Blackbox)方法使用黑盒子方法的原因主要有兩點:一是HDL代碼中調(diào)用了一些FPGA廠家提供的模塊(如Altera的LPM模塊)或第三方提供的IP,這些模塊不需要綜合,而且有些綜合器也不能綜合(如FPGACompilerII/FPGAExpress可以綜合包含LPM的代碼而Le

17、onardoSpectrum不能)。因此須提供一個黑盒子接口給綜合器,所調(diào)用的模塊到布局布線時才進行連接。二是方便代碼的移植,由于廠家提供的模塊或第三方提供的IP通常都是與工藝有關(guān)的,直接在代碼中調(diào)用的話將不利于修改,影響代碼移植。下面以調(diào)用Altera的LPM庫中的乘法器為例來說明。調(diào)用這樣一個模塊需要這樣一個文件:mult8x8.v(可由Quartus的MegaWizerPlug-inManager產(chǎn)生),代碼如下:/mult8x8.vmodulemult8x8(dataa,datab,result);input7:0dataa;input7:0datab;output15:0result

18、;/exemplartranslate_off/synopsystranslate_offlpm_multlpm_mult_component(.dataa(dataa),.datab(datab),.aclr(1'b0),.clock(1'b0),.clken(1'b0),.sum(1'b0),.result(result);defparamlpm_mult_component.lpm_widtha=8,lpm_mult_component.lpm_widthb=8,lpm_mult_component.lpm_widths=16,lpm_mult_component.lpm_widthp=16,lpm_mult_component.lpm_representation="SIGNED",/exemplartransla

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論