verilog語(yǔ)言的綜合與不可綜合_第1頁(yè)
verilog語(yǔ)言的綜合與不可綜合_第2頁(yè)
verilog語(yǔ)言的綜合與不可綜合_第3頁(yè)
verilog語(yǔ)言的綜合與不可綜合_第4頁(yè)
verilog語(yǔ)言的綜合與不可綜合_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Verilog的綜合與不可綜合代碼編譯通過(guò),只能看到輸出,不能實(shí)現(xiàn)電路,就是不能用來(lái)制作具體的芯片。一、基本Verilog中的變量有線(xiàn)網(wǎng)類(lèi)型和寄存器類(lèi)型。線(xiàn)網(wǎng)型變量綜合成wire,而寄存器可能綜合成WIRE,鎖存器和觸發(fā)器。二:verilog語(yǔ)句結(jié)構(gòu)到門(mén)級(jí)的映射1、連續(xù)性賦值:assign總是綜合成由組合邏輯驅(qū)動(dòng)的結(jié)點(diǎn)。Assign語(yǔ)句中的延時(shí)綜合時(shí)都將忽視。、過(guò)程性賦值:過(guò)程性賦值只出現(xiàn)在always語(yǔ)句中。阻塞賦值和非阻塞賦值就該賦值本身是沒(méi)有區(qū)別的,只是對(duì)后面的語(yǔ)句有不同的影響。建議設(shè)計(jì)組合邏輯電路時(shí)用阻塞賦值,設(shè)計(jì)時(shí)序電路時(shí)用非阻塞賦值。過(guò)程性賦值的賦值對(duì)象有可能綜合成wire,latchflip-flpp過(guò)程性賦值語(yǔ)句中的任何延時(shí)在綜合時(shí)都將忽略。建議同一個(gè)變量單一地使用阻塞或者非阻塞賦值。、邏輯操作符:邏輯操作符對(duì)應(yīng)于硬件中已有的邏輯門(mén)、算術(shù)操作符:Verilogreg視為無(wú)符號(hào)數(shù)integerreg、進(jìn)位:通常會(huì)將進(jìn)行運(yùn)算操作的結(jié)果比原操作數(shù)擴(kuò)展一位,用來(lái)存放進(jìn)位或者借位。如:Wire[3:0]A,B;Wire[4:0]C;AssignC=A+B;C的最高位用來(lái)存放進(jìn)位。、關(guān)系運(yùn)算符:關(guān)系運(yùn)算符:<,>,<=,>=和算術(shù)操作符一樣,可以進(jìn)行有符號(hào)和無(wú)符號(hào)運(yùn)算,取決于數(shù)據(jù)類(lèi)型是 reg,net還integer。7、相等運(yùn)算符:=注意:===和!==是不可綜合的。可以進(jìn)行有符號(hào)或無(wú)符號(hào)操作,取決于數(shù)據(jù)類(lèi)型8、移位運(yùn)算符:左移,右移,右邊操作數(shù)可以是常數(shù)或者是變量,二者綜合出來(lái)的結(jié)果不同。9、部分選擇:部分選擇索引必須是常量。10、BIT選擇:BIT選擇中的索引可以用變量,這樣將綜合成多路(復(fù)用)器。11、敏感表:Always過(guò)程中,所有被讀取的數(shù)據(jù),即等號(hào)右邊的變量都要應(yīng)放在敏感表中,不然,綜合時(shí)不能正確地映射到所用的門(mén)。12、IF:如果變量沒(méi)有在IF語(yǔ)句的每個(gè)分支中進(jìn)行賦值,將會(huì)產(chǎn)生latch。如果IF語(yǔ)句中產(chǎn)生了latch,則IF的條件中最好不要用到算術(shù)操作。Case語(yǔ)句類(lèi)似。Case的條款可以是變量。如果一個(gè)變量在同一個(gè)IF條件分支中先贖值然后讀取,則不會(huì)產(chǎn)生latch。如果先讀取,后贖值,則會(huì)產(chǎn)生latch。13、循環(huán):只有for-loop語(yǔ)句是可以綜合的。14alwaysalways建議不要使用局部變量。15、不能在多個(gè)always塊中對(duì)同一個(gè)變量贖值16、函數(shù)函數(shù)代表一個(gè)組合邏輯,所有內(nèi)部定義的變量都是臨時(shí)的,這些變量綜合后為wire。17、任務(wù):任務(wù)可能是組合邏輯或者時(shí)序邏輯,取決于何種情況下調(diào)用任務(wù)。18、Z:Z會(huì)綜合成一個(gè)三態(tài)門(mén),必須在條件語(yǔ)句中賦值19、參數(shù)化設(shè)計(jì):優(yōu)點(diǎn):參數(shù)可重載,不需要多次定義模塊四:模塊優(yōu)化1、資源共享:當(dāng)進(jìn)程涉及到共用ALUALU,乘除通常在其內(nèi)部共用。2、共用表達(dá)式:如:C=A+B;D=G+(A+B);兩者雖然有共用的A+B,但是有些綜合工具不能識(shí)別.可以將第二句改為:D=G+C;這樣只需兩個(gè)加法器.3、轉(zhuǎn)移代碼:如循環(huán)語(yǔ)句中沒(méi)有發(fā)生變化的語(yǔ)句移出循環(huán).4、避免latch:兩種方法:1、在每一個(gè)IF分支中對(duì)變量賦值。2、在每一個(gè)IF語(yǔ)句中都對(duì)變量賦初值。5:模塊:綜合生成的存儲(chǔ)器如ROM或RAM不是一種好方法。最好用庫(kù)自帶的存儲(chǔ)器模塊。五、驗(yàn)證:在always語(yǔ)句中,如果敏感表不含時(shí)鐘,最好將所有的被讀取的信號(hào)都放在敏感表中。2、異步復(fù)位:建議不要在異步時(shí)對(duì)變量讀取,即異步復(fù)位時(shí),對(duì)信號(hào)贖以常數(shù)值。歡迎進(jìn)入超前MCU技術(shù)論壇對(duì)關(guān)于verilog綜合-個(gè)人小結(jié)進(jìn)行討論!sndi0,negedge,posedge,operators,output,parameter。。有些工具支持有些工具不支持的結(jié)構(gòu):casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。建立可綜合模型的原則VerilogHDL。不使用。不使用循環(huán)次數(shù)不確定的循環(huán)語(yǔ)句,如forever、while等。4)不使用用戶(hù)自定義原語(yǔ)(UDP元件。盡量使用同步方式設(shè)計(jì)電路。除非是關(guān)鍵路徑的設(shè)計(jì),一般不采用調(diào)用門(mén)級(jí)元件來(lái)描述設(shè)計(jì)的方法,建議采用行為語(yǔ)句來(lái)完成設(shè)計(jì)。always過(guò)程塊描述組合邏輯,應(yīng)在敏感信號(hào)列表中列出所有的輸入信號(hào)。所有的內(nèi)部寄存器都應(yīng)該能夠被復(fù)位,在使用FPGA實(shí)現(xiàn)設(shè)計(jì)時(shí),應(yīng)盡量使用器件的全局復(fù)位端作為系統(tǒng)總的復(fù)位。對(duì)時(shí)序邏輯描述和建模,應(yīng)盡量使用非阻塞賦值方式。對(duì)組合邏輯描述和建模,既可以塞賦值。不能在一個(gè)以上的always過(guò)程塊中對(duì)同一個(gè)變量賦值。而對(duì)同一個(gè)賦值對(duì)象不能既使用阻塞式賦值,又使用非阻塞式賦值。ifcase語(yǔ)句的所有條件分支中都對(duì)變量明確地賦值。避免混合使用上升沿和下降沿觸發(fā)的觸發(fā)器。同一個(gè)變量的賦值不能受多個(gè)時(shí)鐘控制,也不能受兩種不同的時(shí)鐘條件(或者不同的時(shí)鐘沿)控制。case語(yǔ)句的分支項(xiàng)中使用x值或z值。不可綜合語(yǔ)句:1)initial 只能在testbench中使用,不能綜合。2)events event在同步testbench時(shí)更有用,不能綜合。3)real 不支持real數(shù)據(jù)類(lèi)型的綜合。time time數(shù)據(jù)類(lèi)型的綜合。force和release 不支持force和release的綜合。assign和deassign 不支持對(duì)reg數(shù)據(jù)類(lèi)型的assign或deassign進(jìn)行綜合,支持wireassigndeassign進(jìn)行綜合。forkjoin 不可綜合,可以使用非塊語(yǔ)句達(dá)到同樣的效果。primitives 支持門(mén)級(jí)原語(yǔ)的綜合,不支持非門(mén)級(jí)原語(yǔ)的綜合。tableUDPtable的綜合。posedgenegedge如:always@(posedgeclkornegedgeclk)begin...end這個(gè)always塊不可綜合。regalways塊驅(qū)動(dòng)延時(shí)以開(kāi)頭的延時(shí)不可綜合成硬件電路延時(shí),綜合工具會(huì)忽略所有延時(shí)代碼,但不會(huì)報(bào)錯(cuò)。如:a=#10b;這里的#10是用于仿真時(shí)的延時(shí),在綜合的時(shí)候綜合工具會(huì)忽略a=b;XZ的比較可能會(huì)有人喜歡在條件表達(dá)式中把數(shù)據(jù)和X(或Z)進(jìn)行比較,殊不知這是不可綜合的,綜合工具同樣會(huì)忽略。所以要確保信號(hào)只有兩個(gè)狀態(tài):0或1。來(lái)自:人人網(wǎng)日志可綜合指那些可以綜合成FPGA(ASIC)中某種結(jié)構(gòu)的語(yǔ)言要素。而不可綜合則主要quartusIIxinlinxverilog語(yǔ)言。因?yàn)閂erilog是一種硬件描述語(yǔ)言,所以在寫(xiě)Verilog語(yǔ)言時(shí),首先要有所要寫(xiě)的module在硬件上如何實(shí)現(xiàn)的概念module.比如在決定是否使用reg定義時(shí),要問(wèn)問(wèn)自己物理上是不是真正存在這個(gè)如果是,它的clock是什么?D端是什么?Q端是什么?有沒(méi)有清零和置位?同步還是異步?再比如上面討論的三態(tài)輸出問(wèn)題,首先想到的應(yīng)該是在register何才能讓編譯器知道要賦值給一個(gè)信號(hào)為三態(tài)。同樣,Verilog中沒(méi)有編譯的概念,而只有綜合的概念。寫(xiě)硬件描述語(yǔ)言的目的是為了綜合,所以說(shuō)要想寫(xiě)的好就要對(duì)綜合器有很深的了解,這樣寫(xiě)出來(lái)的代碼才有效率。曾經(jīng)接觸過(guò)motorola蘇州設(shè)計(jì)中心的一位資深工程師,他忠告了一句:就是用verilog描述電路的時(shí)候,一定要清楚它實(shí)現(xiàn)的電路,很多人只顧學(xué)習(xí)verilog語(yǔ)言,而不熟悉它實(shí)現(xiàn)的電路,這是設(shè)計(jì)不出好的電路來(lái)的一般寫(xiě)verilogcode時(shí),對(duì)整個(gè)硬件的結(jié)構(gòu)應(yīng)該是很清楚了,最好有詳細(xì)的電路圖畫(huà)出,時(shí)序問(wèn)題等都應(yīng)該考慮清楚了??梢钥粗鴪D直接寫(xiě)code。要知道,最初Verilog是為了實(shí)現(xiàn)仿真而發(fā)明的不可綜合的Verilog語(yǔ)句也是很重要的.因?yàn)樵趯?shí)際設(shè)計(jì)電路時(shí)除了要實(shí)現(xiàn)一個(gè)可綜合的module外,你還要知道它的外圍電路是怎樣的,以及我的這個(gè)電路與這些外圍電路能否協(xié)調(diào)工作.這些外圍電路就可以用不可綜合的語(yǔ)句來(lái)實(shí)現(xiàn)而不必管它是如何實(shí)現(xiàn)的因?yàn)樗鼈兛赡芤呀?jīng)實(shí)際存在了,我僅是用它來(lái)模擬的.所以,verilog的時(shí)候應(yīng)該要先明確我是用它來(lái)仿真的還是綜合的要是用來(lái)綜合的話(huà)就必須要嚴(yán)格地使用可綜合的語(yǔ)句而且不同的寫(xiě)法可能產(chǎn)生的電路會(huì)有很大差別,這時(shí)就要懂一些verilog綜合方法的知識(shí)就像前面說(shuō)的,腦子里要有一個(gè)硬件的概念特別是當(dāng)綜合報(bào)錯(cuò)時(shí),就要想一想我這種寫(xiě)法能不能用硬件來(lái)實(shí)現(xiàn),verilogC,很多寫(xiě)法是不可實(shí)現(xiàn)的.要是這個(gè)module僅是用來(lái)仿真的就要靈活得多了,這時(shí)你大可不必太在意硬件實(shí)現(xiàn)只要滿(mǎn)足它的語(yǔ)法實(shí)現(xiàn)你要的功能就行了.有網(wǎng)友說(shuō)關(guān)于#10clk=~clk的問(wèn)題,雖然這種語(yǔ)句是不可綜合的,但是在做simulationverificationtestbenchclock常用到的大容量memory,一般是不會(huì)在片上實(shí)現(xiàn)的,這個(gè)時(shí)候也需要一個(gè)unsynthesizablemodule.mengxy所言切中肯罄。我們?cè)O(shè)計(jì)的module的目的是為了可以綜合出功能正確,符合標(biāo)準(zhǔn)的電路來(lái)。我想這是個(gè)反復(fù)的過(guò)程,就像我們?cè)趯?xiě)designflow中總要注明前仿真,綜合后的仿真,以及后verilog這個(gè)時(shí)候就會(huì)發(fā)揮很大的作用。verilog_xl的兄弟應(yīng)該深有體會(huì)。veril

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論