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

下載本文檔

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

文檔簡(jiǎn)介

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

目錄TOC\o"1-3"\h\z1.基于HDL的FPGA設(shè)計(jì)流程概述 11.1設(shè)計(jì)流程圖 11.2關(guān)鍵環(huán)節(jié)的實(shí)現(xiàn) 21.2.1功能仿真 21.2.2邏輯綜合 21.2.3前仿真 31.2.4布局布線 31.2.5后仿真(時(shí)序仿真) 42.VerilogHDL設(shè)計(jì) 42.1編程風(fēng)格(CodingStyle)規(guī)定 42.1.1文獻(xiàn) 42.1.2大小寫 52.1.3標(biāo)記符 52.1.4參數(shù)化設(shè)計(jì) 52.1.5空行和空格 52.1.6對(duì)齊和縮進(jìn) 52.1.7注釋 52.1.8參考C語(yǔ)言的資料 52.1.9可視化設(shè)計(jì)方法 62.2可綜合設(shè)計(jì) 62.3設(shè)計(jì)目錄 63.邏輯仿真 63.1測(cè)試程序(testbench) 73.2使用預(yù)編譯庫(kù) 74.邏輯綜合 84.1邏輯綜合的一些原則 84.1.1關(guān)于LeonardoSpectrum 84.1.1大規(guī)模設(shè)計(jì)的綜合 84.1.3必須重視工具產(chǎn)生的警告信息 84.2調(diào)用模塊的黑盒子(Blackbox)方法 8參考 10修訂紀(jì)錄 101.基于HDL的FPGA設(shè)計(jì)流程概述1.1設(shè)計(jì)流程圖(1)設(shè)計(jì)定義(1)設(shè)計(jì)定義(2)HDL實(shí)現(xiàn)(2)HDL實(shí)現(xiàn)邏輯仿真器(3)功能仿真邏輯仿真器(3)功能仿真邏輯綜合器(4)邏輯綜合邏輯綜合器(4)邏輯綜合邏輯仿真器(5)前仿真邏輯仿真器(5)前仿真FPGA廠家工具(6)布局布線FPGA廠家工具(6)布局布線(8)靜態(tài)時(shí)序分析邏輯仿真器(7)后仿真(8)靜態(tài)時(shí)序分析邏輯仿真器(7)后仿真(9)在系統(tǒng)測(cè)試(9)在系統(tǒng)測(cè)試說(shuō)明:邏輯仿真器重要指modelsim,Verilog-XL等。邏輯綜合器重要指LeonardoSpectrum、Synplify、FPGAExpress/FPGACompiler等。FPGA廠家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、Alliance、ISE4.1等。1.2關(guān)鍵環(huán)節(jié)的實(shí)現(xiàn)1.2.1功能仿真RTL代碼調(diào)用模塊的行為仿真模型測(cè)試程序RTL代碼調(diào)用模塊的行為仿真模型測(cè)試程序(testbench)測(cè)試數(shù)據(jù)邏輯仿真器邏輯仿真器說(shuō)明: “調(diào)用模塊的行為仿真模型”指的是RTL代碼中引用的由廠家提供的宏模塊/IP,如Altera提供的LPM庫(kù)中的乘法器、存儲(chǔ)器等部件的行為模型。1.2.2邏輯綜合設(shè)立綜合目的和約束條件調(diào)用模塊的黑盒子接口設(shè)立綜合目的和約束條件調(diào)用模塊的黑盒子接口RTL代碼邏輯綜合器邏輯綜合器HDL網(wǎng)表(netlist)HDL網(wǎng)表(netlist)EDIF網(wǎng)表(netlist)說(shuō)明:“調(diào)用模塊的黑盒子接口”的導(dǎo)入,是由于RTL代碼調(diào)用了一些外部模塊,而這些外部模塊不能被綜合或無(wú)需綜合,但邏輯綜合器需要其接口的定義來(lái)檢查邏輯并保存這些模塊的接口。1.2.3前仿真邏輯綜合器調(diào)用模塊的行為仿真模型測(cè)試數(shù)據(jù)測(cè)試程序(testbench)HDL網(wǎng)表(netlist)邏輯仿真器邏輯綜合器調(diào)用模塊的行為仿真模型測(cè)試數(shù)據(jù)測(cè)試程序(testbench)HDL網(wǎng)表(netlist)邏輯仿真器說(shuō)明: 一般來(lái)說(shuō),對(duì)FPGA設(shè)計(jì)這一步可以跳過(guò)不做,但可用于debug綜合有無(wú)問題。1.2.4布局布線邏輯綜合器邏輯綜合器設(shè)立布局布線約束條件設(shè)立布局布線約束條件FPGA廠家工具EDIF網(wǎng)表(netlist)調(diào)用模塊的綜合模型FPGA廠家工具EDIF網(wǎng)表(netlist)調(diào)用模塊的綜合模型SDF文獻(xiàn)(標(biāo)準(zhǔn)延時(shí)格式)SDF文獻(xiàn)(標(biāo)準(zhǔn)延時(shí)格式)HDL網(wǎng)表(netlist)下載/編程文獻(xiàn)下載/編程文獻(xiàn)1.2.5后仿真(時(shí)序仿真)測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)SDF文獻(xiàn)(標(biāo)準(zhǔn)延時(shí)格式)FPGA基本單元仿真模型測(cè)試程序(testbench)FPGA廠家工具HDL網(wǎng)表SDF文獻(xiàn)(標(biāo)準(zhǔn)延時(shí)格式)FPGA基本單元仿真模型測(cè)試程序(testbench)FPGA廠家工具HDL網(wǎng)表(netlist)邏輯仿真器邏輯仿真器2.VerilogHDL設(shè)計(jì) 基于將來(lái)設(shè)計(jì)轉(zhuǎn)向ASIC的方便,本部門的設(shè)計(jì)統(tǒng)一采用VerilogHDL,但針對(duì)混合設(shè)計(jì)和混合仿真的趨勢(shì),所有開發(fā)人員也應(yīng)能讀懂VHDL。VerilogHDL的學(xué)習(xí)可參考[1][2]。2.1編程風(fēng)格(CodingStyle)規(guī)定2.1.1文獻(xiàn)每個(gè)模塊(module)一般應(yīng)存在于單獨(dú)的源文獻(xiàn)中,通常源文獻(xiàn)名與所包含模塊名相同。每個(gè)設(shè)計(jì)文獻(xiàn)開頭應(yīng)包含如下注釋內(nèi)容:年份及公司名稱。作者。文獻(xiàn)名。所屬項(xiàng)目。頂層模塊。模塊名稱及其描述。修改紀(jì)錄。請(qǐng)參考標(biāo)準(zhǔn)示例程序[3]。2.1.2大小寫如無(wú)特別需要,模塊名和信號(hào)名一律采用小寫字母。為醒目起見,常數(shù)(`define定義)/參數(shù)(parameter定義)采用大寫字母。2.1.3標(biāo)記符標(biāo)記符采用傳統(tǒng)C語(yǔ)言的命名方法,即在單詞之間以“_”分開,如:max_delay、data_size等等。采用故意義的、能反映對(duì)象特性、作用和性質(zhì)的單詞命名標(biāo)記符,以增強(qiáng)程序的可讀性。為避免標(biāo)記符過(guò)于冗長(zhǎng),對(duì)較長(zhǎng)單詞的應(yīng)當(dāng)采用適當(dāng)?shù)目s寫形式,如用‘buff’代替‘buffer’,‘ena’代替‘enable’,‘a(chǎn)ddr’代替‘a(chǎn)ddress’等。2.1.4參數(shù)化設(shè)計(jì) 為了源代碼的可讀性和可移植性起見,不要在程序中直接寫特定數(shù)值,盡也許采用`define語(yǔ)句或paramater語(yǔ)句定義常數(shù)或參數(shù)。2.1.5空行和空格適本地在代碼的不同部分中插入空行,避免因程序擁擠不利閱讀。在表達(dá)式中插入空格,避免代碼擁擠,涉及:賦值符號(hào)兩邊要有空格;雙目運(yùn)算符兩邊要有空格;單目運(yùn)算符和操作數(shù)之間可沒有空格,示例如下:a<=b;c<=a+b;if(a==b)then...a<=~a&c;2.1.6對(duì)齊和縮進(jìn)不要使用連續(xù)的空格來(lái)進(jìn)行語(yǔ)句的對(duì)齊。采用制表符Tab對(duì)語(yǔ)句對(duì)齊和縮進(jìn),Tab鍵采用4個(gè)字符寬度,可在編輯器中設(shè)立。各種嵌套語(yǔ)句特別是if...else語(yǔ)句,必須嚴(yán)格的逐層縮進(jìn)對(duì)齊。2.1.7注釋必須加入具體、清楚的注釋行以增強(qiáng)代碼的可讀性和可移植性,注釋內(nèi)容占代碼篇幅不應(yīng)少于30%。2.1.8參考C語(yǔ)言的資料 要形成良好的編程風(fēng)格,有許多細(xì)節(jié)需要注意,可以參考資料[4],雖然它是針對(duì)C語(yǔ)言的討論,但由于VerilogHDL和C語(yǔ)言的形式非常近似,所以里面提到的很多原則都是可以借鑒的。2.1.9可視化設(shè)計(jì)方法 為提高設(shè)計(jì)效率和適應(yīng)協(xié)同設(shè)計(jì)的方式,可采用可視化的設(shè)計(jì)方法,MentorGrahpics的Renoir軟件提供了非常好的設(shè)計(jì)模式。2.2可綜合設(shè)計(jì) 用HDL實(shí)現(xiàn)電路,設(shè)計(jì)人員對(duì)可綜合風(fēng)格的RTL描述的掌握不僅會(huì)影響到仿真和綜合的一致性,也是邏輯綜合后電路可靠性和質(zhì)量好壞最重要的因素,對(duì)此應(yīng)當(dāng)予以充足的重視。 學(xué)習(xí)可綜合的HDL請(qǐng)參考[5][6][7]。 學(xué)習(xí)設(shè)計(jì)的模塊劃分請(qǐng)參考[8]。2.3設(shè)計(jì)目錄 采用合理、條理清楚的設(shè)計(jì)目錄結(jié)構(gòu)有助于提高設(shè)計(jì)的效率、可維護(hù)性。建議采用類似下面的目錄結(jié)構(gòu):(1)designdesignsrc(源代碼)syn(綜合)sim(仿真)par(布局布線)(2)designdesignver1ver2src(源代碼)syn(綜合)sim(仿真)par(布局布線)src(源代碼)syn(綜合)sim(仿真)par(布局布線)3.邏輯仿真 考慮到性能和易用性,首選的邏輯仿真器是MentorGraphics的modelsim。3.1測(cè)試程序(testbench) 測(cè)試程序?qū)τ谠O(shè)計(jì)功能和時(shí)序的驗(yàn)證有著舉足輕重的影響,測(cè)試激勵(lì)的完備性和真實(shí)性是關(guān)鍵所在,有以下原則須遵循:測(cè)試激勵(lì)輸入和響應(yīng)輸出采集的時(shí)序應(yīng)當(dāng)兼顧功能仿真(無(wú)延時(shí))和時(shí)序仿真(有延時(shí))的情況。對(duì)于周期較多的測(cè)試,為提高效率,盡也許采用程序語(yǔ)句來(lái)判斷響應(yīng)與標(biāo)準(zhǔn)結(jié)果是否一致,給出成功或犯錯(cuò)標(biāo)志,而不是通過(guò)觀測(cè)波形來(lái)判斷。采用基于文獻(xiàn)的測(cè)試是很好的辦法,即由matlab或spw等系統(tǒng)工具產(chǎn)生測(cè)試數(shù)據(jù),測(cè)試程序?qū)⑵渥x入產(chǎn)生激勵(lì),再把響應(yīng)結(jié)果寫入到文獻(xiàn),再交給上述工具進(jìn)行解決或分析。仿真器支持幾乎所有的VerilogHDL語(yǔ)法,而不僅僅是常用的RTL的描述,應(yīng)當(dāng)運(yùn)用這一點(diǎn)使測(cè)試程序盡也許簡(jiǎn)潔、清楚,篇幅長(zhǎng)的要盡量采用task來(lái)描述。3.2使用預(yù)編譯庫(kù) 在進(jìn)行功能仿真和后仿真時(shí)都需要某些模塊的行為仿真模型和門級(jí)仿真模型,如AlteraQuartus里的220model.v(LPM模塊行為仿真模型)和apex20ke_atoms.v(20KE系列門級(jí)仿真模型),為避免在不同的設(shè)計(jì)目錄中多次編譯這些模型,應(yīng)當(dāng)采用一次編譯,多次使用的方法。具體做法如下(以20KE門級(jí)庫(kù)為例): 1:在某個(gè)工作目錄下新建一庫(kù)名apex20ke,將apex20ke_atoms.v編譯到其中。 2:在圖形界面中的LoadDesign對(duì)話框中裝入仿真設(shè)計(jì)時(shí),在Verilog標(biāo)簽下指定預(yù)編譯庫(kù)的完整途徑。(見下圖) 4.邏輯綜合 目前可用的FPGA綜合工具有MentorGraphics的LeonardoSpectrum,Synplicity的Synplify和Synopsys的FPGACompilerII/FPGAExpress,LeonardoSpectrum由于性能和速度最佳,成為我們首選的綜合器,F(xiàn)PGACompilerII/FPGAExpress由于可以和DesignCompiler代碼兼容也可用。見參考[9]4.1邏輯綜合的一些原則 HDL代碼綜合后電路質(zhì)量的好壞重要取決于三個(gè)方面:RTL實(shí)現(xiàn)是否合理、對(duì)廠家器件特點(diǎn)的理解和對(duì)綜合器掌握的限度。參考[10]中有比較全面的討論。4.1.1關(guān)于LeonardoSpectrum LeonardoSpectrum對(duì)綜合的控制能力比較強(qiáng),但使用也略為復(fù)雜,故需要在使用前盡量熟悉其功能,才干取得較好的綜合結(jié)果。 當(dāng)出現(xiàn)綜合結(jié)果不能滿足約束條件時(shí),不要急于修改設(shè)計(jì)源文獻(xiàn),應(yīng)當(dāng)通過(guò)綜合器提供的時(shí)序和面積分析命令找出關(guān)鍵所在,然后更改綜合控制或修改代碼。 在LeonardoSpectrum2023.1b以前的版本輸出的.v網(wǎng)表都不能用于仿真。4.1.1大規(guī)模設(shè)計(jì)的綜合分塊綜合 當(dāng)設(shè)計(jì)規(guī)模很大時(shí),綜合也會(huì)花費(fèi)很多時(shí)間。假如設(shè)計(jì)只更改某個(gè)模塊時(shí),可以分塊綜合。如有設(shè)計(jì)top.v包含a.v和b.v兩個(gè)模塊,當(dāng)只修改a.v的話,可以先單獨(dú)綜合b.v,輸出其網(wǎng)表b.edf,編寫一個(gè)b模塊的黑盒子接口b_syn.v,每次修改a.v后只綜合top.v、a.v、b_syn.v,將綜合后的網(wǎng)表和b.edf送去布線,可以節(jié)約綜合b模塊的時(shí)間。采用腳本命令當(dāng)設(shè)計(jì)規(guī)模比較大時(shí),綜合控制也許會(huì)比較復(fù)雜,可以考慮采用腳本控制文獻(xiàn)的方式進(jìn)行綜合控制,modelsim、LeonardoSpectrum和Quartus都支持TCL(ToolCommandLanguage)語(yǔ)言,采用腳本控制可以提供比圖形界面更靈活和更方便的控制手段。4.1.3必須重視工具產(chǎn)生的警告信息 綜合工具對(duì)設(shè)計(jì)進(jìn)行解決也許會(huì)產(chǎn)生各種警告信息,有些是可以忽略的,但設(shè)計(jì)者應(yīng)當(dāng)盡量去除,不去除必須確認(rèn)每條警告的含義,避免因此使設(shè)計(jì)的實(shí)現(xiàn)產(chǎn)生隱患。 這個(gè)原則對(duì)仿真和布局布線同樣合用。4.2調(diào)用模塊的黑盒子(Blackbox)方法 使用黑盒子方法的因素重要有兩點(diǎn): 一是HDL代碼中調(diào)用了一些FPGA廠家提供的模塊(如Altera的LPM模塊)或第三方提供的IP,這些模塊不需要綜合,并且有些綜合器也不能綜合(如FPGACompilerII/FPGAExpress可以綜合包含LPM的代碼而LeonardoSpectrum不能)。因此須提供一個(gè)黑盒子接口給綜合器,所調(diào)用的模塊到布局布線時(shí)才進(jìn)行連接。 二是方便代碼的移植,由于廠家提供的模塊或第三方提供的IP通常都是與工藝有關(guān)的,直接在代碼中調(diào)用的話將不利于修改,影響代碼移植。 下面以調(diào)用Altera的LPM庫(kù)中的乘法器為例來(lái)說(shuō)明。調(diào)用這樣一個(gè)模塊需要這樣一個(gè)文獻(xiàn):mult8x8.v(可由Quartus的MegaWizerPlug-inManager產(chǎn)生),代碼如下://mult8x8.vmodulemult8x8(dataa,datab,result);input[7:0]dataa;input[7:0]datab;output[15:0]result;//exemplartranslate_off//synopsystranslate_offlpm_mult lpm_mult_component( .dataa (dataa), .datab (datab), .aclr (1'b0), .clock (1'b0), .clken (1'b0), .sum (1'b0), .result (result) ); defparam lpm_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",//exemplartranslate_on/

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論