




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
rogDLGA(hrdaeode)VerilogHDL FSM(STA) behavioral,有效名有時(shí)并不是要求將功能描述出來,F(xiàn)or(I=0;I<1024;I=I+1)Mem[I]<= 32’b0; 就沒必要用loop_index作為指針名長(zhǎng)的名字對(duì)書寫和會(huì)帶來不便,甚至帶來錯(cuò)誤。采用縮寫時(shí)應(yīng)注意同一信號(hào)在模塊中 : 如: Irdy_,名字一般首字符大寫,其余小寫(但parameter,integer ,如: 如:D_addr[7:2],這里的“D”指明了地址是模塊(Decodermodule)中的地址。 如:in,out,x,z寄存后的信號(hào)_reg-xbio的三態(tài)輸出_xz_xod原始輸出信號(hào)_xo原始輸入信號(hào)_xi_f_z寄存前的信號(hào)_next時(shí)鐘信號(hào)modulemodulereg變量賦值等。這樣做的目的是為了更有效的綜合,因?yàn)樵陧攲幽K中出現(xiàn)中間邏輯,Synopsysdesigncompiler就不能把子模塊中的邏輯綜合到最優(yōu)。每一個(gè)模塊應(yīng)在開始處注明文件名功能描述模塊設(shè)計(jì)者設(shè)計(jì)時(shí)間及 RevisionHistory要格外如:/* ========================*\ ﹕RX_MUX.v Calledby ﹕TopmoduleRevisionHistory Revision1.0﹕ ﹕Technology.IncCopyright(c)1999,TechnologyInc,Allright\*=========================不要對(duì)Input進(jìn)行驅(qū)動(dòng), 在module內(nèi)不要存在沒有驅(qū)動(dòng)的信號(hào),更不能在模塊端口中出現(xiàn)的輸出信號(hào),避免在elaboratecompilewarning,干擾錯(cuò)誤定位。80個(gè)字符以內(nèi),以保持代碼的清晰、美觀和層次感。module名用UxxCellVxx標(biāo)識(shí)。向量大小表示要清晰,采用(name_based)的調(diào)用而非基于順序的(order_based。另外,調(diào)用模塊時(shí)調(diào)用關(guān)系要寫synplify綜合過程會(huì)出warning。InstanceUInstance2(.DataOut(DOUT.DataIn(DIN.Cs_(Cs_PosedgeClk_,這樣的好處是在整個(gè)設(shè)計(jì)中采用同一 嚴(yán)格級(jí)模塊的劃只有頂層包括IO引腳(pads),中間層是時(shí)鐘產(chǎn)生模塊、JTAG、的內(nèi)核(CORE),這對(duì)所有模塊的輸出加以寄存(1,使得輸出的驅(qū)動(dòng)強(qiáng)度和輸入的延遲可以預(yù)測(cè),從(圖1DC可以對(duì)關(guān)鍵路徑模塊實(shí)現(xiàn)速度優(yōu)化,而對(duì)非關(guān)鍵路徑模塊實(shí)施面積優(yōu)化。在同一DC無法實(shí)現(xiàn)不同的綜合策略。ultraedittab4modulewire和regmodule主體以//modulebeginif...else一一對(duì)應(yīng),若無elseNetandregalways語句中賦值。Data[-40],則LSB[0][-1][-2][-3][-4]MSB,或Data[04],則LSB[4][3][2][1][0]MSBData[4:0]這種格式的定義。對(duì)net和register類型的輸出要做。moduleelaboratecompilewarningr類型的輸出要做。yIf((alpha<beta)&&(g >=delta)) If(alpha<beta&&g>=delta)... 當(dāng)比較向量時(shí),verilog將對(duì)位數(shù)小的向量做0擴(kuò)展以使它們的長(zhǎng)度相匹配,它的自動(dòng)擴(kuò) If(Abc=={4’b0,If(Abc==8’b0)每一個(gè) 都應(yīng)有一個(gè) always@(Cond)ifDataOut<=Else以上語句DataOut會(huì)綜合成鎖存器yIfelseifelseifelse ycase語句通常綜合成一級(jí)多路復(fù)用器(圖的右邊部分if-then-else則綜合成優(yōu)先編碼多個(gè)多路復(fù)用器,如圖的左邊部分。通常,使用case 語句要比if語句快,優(yōu)先編的號(hào)的到達(dá)有先后時(shí)使用。條件賦值語句也能綜合成多路復(fù)用器,而case yCase應(yīng)該有一個(gè)defaultcaseDefault:;4.1.7Writingfunctionsyfunctionfunctiony pare;input[15:0]Vector1;input[15:0]Vector2;input[7:0]Length;if(//comparetheupperbyte//comparethelowerendfunction ByteSelyVerilog支持兩種賦值:過程賦值(procedural)和連續(xù)賦值(continuous)。過程賦值用于過程(initial,always,taskorfunction)中給 和integer變量賦值,而連續(xù)賦值一般給wireAlways@(敏感表,敏感表要完整,如果不完整,將會(huì)引起仿真和綜合結(jié)果不一致always@(dorClr)if(Clr)q=elseif(e)q=d;以上語句在行為級(jí)仿真時(shí)e的變化將不會(huì)使仿真器進(jìn)入該進(jìn)程, 避免使用CombinatorialVsSequential如果一個(gè)持續(xù)幾個(gè)時(shí)鐘周期,設(shè)計(jì)時(shí)就用時(shí)序邏輯代替組合邏輯如:WireCt_24_e4;//itccarriesinfo.Lastoverseveralclockcycles Ct_24_e4=(count8bit[7:0]>=8’h24)&(count8bit[7:0]<=8’那么這種設(shè)計(jì)將綜合出兩個(gè)8 RegAlways@(poseddgeClkornegedgeRst_)If <=1’Elseif(count8bit[7:0]==8’he4)Ct_24_e4<=1’b0;Elseif(count8bit[7:0]==8’h23)Ct_24_e4<=1’b1; 在simulationpattern 或reportfile中,盡量不用內(nèi)部信號(hào),如果要用就把它們引到端口,不增加面積defaultWireAssignOE_default=!(oe1|oe2|oe3);Assignbus[31:0]=oe1?Data1[31:0]oe2?Data2[31:0]oe3?Data3[31:0]:oe_default?32’h0000_0000:32’hzzzz_zzzz;`define”做常數(shù)把“`define”放在一個(gè)獨(dú)立的文件中 If(~OE_&&(state!=PENDING)) //ifenable==tureand ---identicallablesonbeginandendIf(~OE_&&(state!=PENDING))begin//driveEnd//drive Commentend<unit>withthenameofthe<unit> Calcparity;//Data,ParityErrEndfunction//y每一個(gè)模塊都應(yīng)在模塊開始處塊級(jí)的注釋(參面標(biāo)準(zhǔn)模塊頭)y在模塊端口列表中出現(xiàn)的端口信號(hào),都應(yīng)做簡(jiǎn)要的功能描述VerilogHDLparameter分配好狀態(tài),VHDL不同,VHDL狀態(tài)機(jī)狀 Mealy機(jī)的狀態(tài)和輸入有關(guān),而Moore機(jī)的狀態(tài)轉(zhuǎn)換和輸入無關(guān)。 regCurrentState,NextState,Out1;ParameterS0=0,S1=1;always@(posedgeClkornegedge//statevectorflip-flops(sequential)ifCurrentState=S0;CurrentState<=NextState;always@(In1orIn2or//outputandstatevectordecode(combinational)case(CurrentState)NextState<=S1;Out1<=1'b0;if(In1)NextState<=S0;Out1<=In2;NextState<=S1;Out1<=!In2;4.2for(i=0;i<4;i=i+1)Sig1=Sig2;DataOut[i]=DataIn[i];for-loop中第一條語句始終不變,浪費(fèi)運(yùn)算時(shí)間yz=(cond)?(a+b):(c+if-then-elseif(Cond)z= a+b;z c+moduleCOUNT(AndBits,Clk,Rst); //internalregReg[2:0]Count;always@(posedgeClk)ifCount<=0;Count<=Count+1; //endifAndBits<=&Count;End//endalwaysmoduleCOUNT(AndBits,Clk,Rst); Reg//internalregReg[2:0]Count;always@(posedgeClk)begin//synchronousif(Rst)Count<=0;Count<=Count+1;End//endalwaysalways@(Count)AndBits=&End//endalwaysEndmodule//end 組合邏輯單開,3個(gè)觸發(fā)器ymoduleCOUNT Enable,Clk, InputRst,reg[2:0]always@(posedgeClk)if(Rst)Z<=elseif(Enable==1'b1)If(Z==Z<=Z<=Z+Else;End//endalwaysEndmodule//endCOUNTmoduleCOUNT(Z, Enable,Clk,Rst);Output[2:0]Z;Reg[2:0]Z;//internalwireGATED_Clk=Clk&always@(posedgeGATED_ClkorposedgeRst)beginif(Rst)Z<=if(Z==Z<=Z<=Z+End//endifEnd//endalwaysEndmodule//endmodulec=ac[3:0]=a[3:0]&c[3]=a[3]&c[2]=a[2]&c[1]=a[1]&c[0]=a[0]&for(i=0;i<=3;i=i+1)c[i]=a[i]&b[i];yscripts也可以集中在該特性上。要選擇合適的約束條件,過分scripts來滿足時(shí)y所謂點(diǎn)到點(diǎn)例外(Point-to-pointexception,就是從一個(gè)寄存器的輸出到另一個(gè)寄存器的y避免偽路徑(False為忽略這些warning,但如果數(shù)量較多時(shí),就可能將其他真正的問題錯(cuò)過了。y避免使用Latch使用LatchAll_registerslevel_sensitive來報(bào)告設(shè)計(jì)中用到的Latch。else,casedefaultsif和caselatch的產(chǎn)生,下面的語句中,DataOut會(huì)被綜合成always@(Cond)ifDataOut<=DataIny使用門控時(shí)鐘(Gatedclock)不利于移植,可能引起毛刺,帶來時(shí)序問題,同時(shí)對(duì)掃描鏈的compileryymoduleCOUNT(Reset,Enable,Clk,Qout);inputReset,Enable,Clkoutput[2:0]Qout;reg[2:0]Qout;wireGATED_Clk=Clk&Enablealways@(posedgeGATED_Clkorposedg
溫馨提示
- 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年中國(guó)一次性無菌帽市場(chǎng)深度調(diào)查評(píng)估及投資方向研究報(bào)告
- 2025年四氟制品液壓機(jī)項(xiàng)目投資可行性研究分析報(bào)告
- 12 我的環(huán)保小搭檔 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治二年級(jí)下冊(cè)統(tǒng)編版
- 2025年男式手套項(xiàng)目投資可行性研究分析報(bào)告
- 2025年度房產(chǎn)租賃合同附租賃房產(chǎn)租賃期間租金調(diào)整協(xié)議
- 11呼吸 教學(xué)設(shè)計(jì)-2023-2024學(xué)年冀人版(2017)科學(xué)四年級(jí)下冊(cè)
- 2025年度吊車租賃及現(xiàn)場(chǎng)安全監(jiān)督合同
- 2025年廠房出租合同及租賃雙方爭(zhēng)議解決機(jī)制
- 2025年度車輛質(zhì)押貸款風(fēng)險(xiǎn)控制協(xié)議
- 噴粉回收震動(dòng)式粉篩行業(yè)深度研究報(bào)告
- 人教版(2025版)七年級(jí)下冊(cè)英語UNIT 1 Animal Friends 單元整體教學(xué)設(shè)計(jì)(6個(gè)課時(shí))
- 項(xiàng)目管理知識(shí)手冊(cè)指南
- 2025年常熟市招聘進(jìn)村人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- (主城一診)重慶市2025年高2025屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測(cè) (第一次)物理試卷(含答案)
- 2025年中國(guó)電信集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- DB50T 393-2011 城市三維建模技術(shù)規(guī)范
- 《肺癌圍手術(shù)期護(hù)理》課件
- 《糖尿病足護(hù)理查房》課件
- 山東省臨沂市地圖矢量課件模板()
- 2024復(fù)工復(fù)產(chǎn)安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論