




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
語法學(xué)習(xí)的經(jīng)驗(yàn)之談FPGAIP核。早期的的是代碼輸入的方式,絕大多數(shù)的設(shè)計(jì)都采用代碼來完成。FPGA開發(fā)所使用的代碼,我們通常稱之為硬件描述語言(HardwareDescriptionLanguageVHDL和Verilog。VHDL發(fā)展較早,語法嚴(yán)謹(jǐn);VerilogC語言,語法風(fēng)格比較自由。IP核調(diào)用通FPGA的設(shè)計(jì)也在朝著軟件化、平臺(tái)化的方向發(fā)展,也許在不久的將來,越來越多的工程只需要設(shè)計(jì)者從一個(gè)類似蘋果商店的IP核庫(kù)中索取組件進(jìn)行配置,最后像搭積木一樣完成一底層的代碼邏輯編寫方式無論如何還是有其生存空間的,畢竟一個(gè)個(gè)IP核組件都是從代碼是Verilog,建議初學(xué)者先掌握其中一門,至于到底先下手哪一門,則需要讀者根據(jù)自身的C語言基礎(chǔ),不妨先學(xué)VHDL和Verilog的取舍問題,建議先學(xué)精一門,也別忘了兼故另一門,無論哪一種語言,至HDLHDL實(shí)現(xiàn)的硬件電路大都是并行處理的。也許就是這么個(gè)大彎轉(zhuǎn)不HDL語言所實(shí)現(xiàn)的功能時(shí)常常百思不得其解。對(duì)于初學(xué)者,尤長(zhǎng)此以往,若能達(dá)到代碼和電路都心中有數(shù),那才證明真真正正掌握HDL語言的精髓了?!啊癚uartusII(Altera公司的器件使用)ISE(Xilinx公司的器件使FPGA器件的電路板,管、UART、I2C等一條線和相關(guān)的連接線。通過開發(fā)工具我們可以進(jìn)行工程的建立的學(xué)習(xí)套件的同時(shí),也非常推薦大家多去讀讀FPGA原廠Altare(qts_qii5v1.pdf)或Xilinx(xst.pdf)的文檔,在他們的一些文檔手冊(cè)中有各種常見電路的實(shí)現(xiàn)代碼風(fēng)格和參考實(shí)例。在練習(xí)的過程中,大家也要學(xué)會(huì)使用開發(fā)工具生成的各種視圖,尤其是RTL視圖。RTL總之,HDL語言的學(xué)習(xí),簡(jiǎn)單的歸納,就是需要初學(xué)者多看、多寫、多思考、多比對(duì)。Verilog可綜合的語法子集夠通過編譯最終生成用于燒錄到FPGA器件中的配置數(shù)據(jù)流。無論是Verilog語言還是VHDL語的C語言和Verilog,會(huì)讓初學(xué)者誤入歧途,畢竟Verilog和C語言在本質(zhì)上存在著很大modulemy_first_prj(verilog文件中都會(huì)出現(xiàn)該語法,它是一個(gè)固定的用法,所有的功能實(shí)現(xiàn)語法最終都應(yīng)該包括在“…”中。Module的語法如下所示,modulemy_first_prjmodulemodulemy_first_prj(modulemodule通信銜接。對(duì)于本module而言,這些信號(hào)無非可以歸為三類,即輸入(input)信號(hào),輸出(output)信號(hào)(”內(nèi)列出。inputinputinputwirerst_n;input[7:0]data_in;的名稱為rst_n38bitdata_in的輸入信號(hào)。parameterinput<端口命名1>; output[<最 >:<最低位>]<端口命名5>;outputreg[<最 信號(hào)類型:wire,reg等。每個(gè)時(shí)鐘clk上升沿到來時(shí),reg都會(huì)鎖存到的輸入數(shù)據(jù),而wire就是這兩個(gè)reg之間wirereg類型,但是實(shí)際的電路個(gè)寄存器(rigisterreg信號(hào)必須是在某個(gè)由特定信號(hào)邊沿敏感觸發(fā)的always語句中被賦值。 5.1regwireWire和regwire[< reg[< reg[< reg[< 通俗的說,它就是C語言里的 ////beginbegin,ifTaskC語言中的子函數(shù),taskinput、outputinout():(//////多個(gè)沿觸發(fā)的時(shí)序邏輯//+加-減!~&與|或^*/%<>賦值符號(hào):=和<=verilog可用語法里很小的一個(gè)子集,硬件設(shè)計(jì)的精髓就是力求用最簡(jiǎn)代碼風(fēng)格與書寫規(guī)范碼的設(shè)計(jì)。要想做好一個(gè)FPGA設(shè)計(jì),好的代碼風(fēng)格能夠起到事半功倍的效果。稍微規(guī)范點(diǎn)的做FPGA設(shè)計(jì)的公司都會(huì)為自己的團(tuán)隊(duì)制定一套供參考的代碼書寫規(guī)范。畢竟法保留的是不可以作為后面幾種名稱使用的,Verilog和VHDL的主要關(guān)鍵字如下: repeattri rtrantriand scalared forkorsignedvectoredcasezfunctionoutputsmallwaitcmoshighz0parameterspecifywanddeassignhighz1pmosspecparamweak0defaultifposedgestrengthweak1defparamifnoneprimitivestrong0whiledisableinitialpull0strong1wireedgeinoutpull1supply0worelseinputpulldownsupply1xnorendintegerpulluptablexorendattributejoinremostaskendcaselargerealtimeendfunctionmacromodulerealtimetran elsif aliasendlooppuretransport exit reject untilassertfunctionnextremuseattributegenerate or inertialotherssignal 除了以上這些保留的不可以作為用戶自定義的其他名稱,verilog和VHDL還有以_(verilog每個(gè)功能塊(verilogalways邏輯、VHDLprocess邏輯)之間盡量用一行或?qū)τ谝恍?fù)雜的FPGA開發(fā),工程師的設(shè)計(jì)習(xí)慣和代碼風(fēng)格將會(huì)在很大程度上影響器件EDA綜合工具HDL代碼所實(shí)現(xiàn)邏輯電路的速度和面積的最HDL代碼盡可能最優(yōu)化。那么,我們又回到了老議題上——HDL代碼才算是最優(yōu)化,什么樣的代碼才稱得上是好的代碼風(fēng)格呢?對(duì)于滿目的FPGA廠商和FPGA器件,既有大家都拍手叫好的設(shè)計(jì)原則這里和大家一起探討在絕大多數(shù)FPGA設(shè)計(jì)中必定會(huì)而且可能是非常頻繁的涉及升沿din將被鎖存到輸出端dout。qDqD5.2inputclk;inputdin;regdout;always@(posedgeclk)begindout<=din;平有效復(fù)位)dout0(din取值態(tài)將一直保持到clr拉高后的下一個(gè)clk有效觸發(fā)沿。qDqD5.3inputclk;inputrst_n;inputdin;regdout;always@(posedgeclkornegedgerst_n)beginif(!rst_n)dout<=1'b0;elsedout<=din;常是上升沿dindoutset的上升沿(高電平有效置位)dout1(din取值狀態(tài)將一直保持到set拉低后的下一個(gè)clk有效觸發(fā)沿。qqD 5.4moduledff(clk,set,din,dout);inputclk;inputdin;inputset;regdout;always@(posedgeclkorposedgeset)beginif(set)dout<=1'b1;elsedout<=5.5所示。既帶異步復(fù)位,又帶異步置位的寄存器其實(shí)是個(gè)很的模型,我們可以簡(jiǎn)單的分析一下,如果set和clr都處于無(et=0,cr=(clr=1(clr=0異議;但是如果setclr同時(shí)有效(set=1,clr=0dout咋辦?到底是10?qD 5.5moduledff(clk,moduledff(clk,rst_n,set,din,dout);inputclk;inputdin;inputrst_n;inputset;regdout;always@(posedgeclkornegedgerst_nposedgeset)if(!rst_n)dout<=1’b0;elseif(set)dout<=1'b1;elsedout<=din;qD5.6異步復(fù)位和置位的寄存器(復(fù)位優(yōu)先級(jí)高情況下din的值才會(huì)輸出到dout信號(hào)上。qDqDmodulemoduledff(clk,ena,din,dout);inputclk;inputdin;inputena;regdout;always@(posedgeclk)beginif(ena)dout<=din;FPGA如圖5.8和上游閥門。②關(guān)閉第一級(jí)下游和閥門,打開上游閥門,水由上游流進(jìn)閘室,閘室水面與上游相平時(shí),打開上游,船由上游駛進(jìn)閘室。③關(guān)閉上游和閥門,打開第一級(jí)下游閥門,當(dāng)閘室水面降到跟下游水面相平時(shí),打開下游,船駛出第一級(jí)閘室。如此操作4地先后造成兩個(gè)連通器,使船閘內(nèi)水面先后與上、下游水面相平。圖5.8三峽大壩五級(jí)示意②對(duì)于需要分頻或倍頻的時(shí)鐘,用器件內(nèi)部的時(shí)鐘管理(如PLL或DLL)單元去DLL)來產(chǎn)生,這類時(shí)鐘管理單元的使用并不復(fù)雜,在EDA工具中打開配置頁(yè)面進(jìn)行簡(jiǎn)單FPGA6里有更詳細(xì)的介紹和說明。5.1I/O01xZ00XX01X1X1XXXXXZ01XZ我們還是可以把握好FPGA內(nèi)部的輸入、輸出狀態(tài),保證不出現(xiàn)情況。5.9所示,linkyoutZlink控制當(dāng)前的輸出狀態(tài)為Z時(shí),則輸入信號(hào)yin的值由管腳信號(hào)ytri來決定。5.95.9//Verilog例程inoutytri;…reglink;wire…linkassignytri=link?yout:1'bz;assignyin=ytri;…yiny=((~a&b&c)|~d)&5.2abcdeyxxxx10xxX0011xx100x0x100xx0100011101moduleexample(a,b,c,d,e,inputa,b,c,d,e;outputy;wireassignassignm=~a&b&c;assignn=m|~d;assigny=n&~e;QuartusII自帶的綜合工具,我們可以看到它的RTL5.10所示,和我們的5.10a到輸出y的路徑是關(guān)鍵路徑,影響了整個(gè)邏輯的時(shí)序性能。那么,下面我們就要想辦法從這條路徑著手做一些優(yōu)化的工作。很簡(jiǎn)單,我們的目標(biāo)是減少輸入ay之間的邏輯等級(jí),目前是3級(jí),我們可以想辦法減少到21級(jí)。a=0時(shí),yb&c|~d&~ea=1時(shí),y~d&modulemoduleexample(a,b,c,d,e,inputa,b,c,d,e;outputy;wireassignm=~a|~d;assignn=(b&c)|~d;assigny=m&n&5.11Buffer,這樣就在一定程度moduleexample(sel,a,b,c,d,inputsel,a,b,c,d;wire[1:0]temp1=wire[1:0]temp2=assignassignsum=sel?temp1:temp2;moduleexample(sel,a,b,c,d,inputsel;output[7:0]sum;wire[7:0]temp1=sel?a:c;wire[7:0]temp2=sel?assignsum=5.13 5.10所示實(shí)例的基礎(chǔ)上對(duì)這個(gè)組合邏輯的各條走線延時(shí)和邏輯門延時(shí)做了標(biāo)記。每個(gè)門延時(shí)的時(shí)間是2ns,而不同的走線延時(shí)略有不同
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子墊片項(xiàng)目可行性研究報(bào)告
- 中國(guó)蒸汽拖把行業(yè)市場(chǎng)深度分析及行業(yè)發(fā)展趨勢(shì)報(bào)告
- 2025年天氣預(yù)告顯示屏項(xiàng)目投資可行性研究分析報(bào)告
- 電視植入廣告行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國(guó)襪子行業(yè)市場(chǎng)深度分析及投資戰(zhàn)略研究報(bào)告
- 2025年麻袋項(xiàng)目可行性研究報(bào)告
- 2021-2026年中國(guó)航空貨運(yùn)行業(yè)投資分析及發(fā)展戰(zhàn)略研究咨詢報(bào)告
- 2025年中國(guó)吉西他濱行業(yè)市場(chǎng)運(yùn)行現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)檢測(cè)方箱行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年中國(guó)船舶防腐涂料行業(yè)市場(chǎng)供需格局及投資前景展望報(bào)告
- 《黃色新聞的泛濫》課件
- 2024年山東省公務(wù)員考試《行測(cè)》真題及答案解析
- 化工原理Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024-2025學(xué)年初中體育與健康九年級(jí)全一冊(cè)人教版(2024)教學(xué)設(shè)計(jì)合集
- 環(huán)保產(chǎn)業(yè)政策及市場(chǎng)發(fā)展趨勢(shì)分析研究
- 2024年河南省高考對(duì)口升學(xué)語文英語試題
- 學(xué)習(xí)白求恩精神,做一個(gè)高尚的人一個(gè)純潔的人
- 《中醫(yī)藥學(xué)概論》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 2024年秋季新外研版三年級(jí)上冊(cè)英語課件 Unit 1 第1課時(shí)(Get ready)
- 單位委托員工辦理水表業(yè)務(wù)委托書
- 2024版《保密法》培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論