第2章 Verilog HDL門(mén)級(jí)建模_第1頁(yè)
第2章 Verilog HDL門(mén)級(jí)建模_第2頁(yè)
第2章 Verilog HDL門(mén)級(jí)建模_第3頁(yè)
第2章 Verilog HDL門(mén)級(jí)建模_第4頁(yè)
第2章 Verilog HDL門(mén)級(jí)建模_第5頁(yè)
已閱讀5頁(yè),還剩52頁(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)介

第2章VerilogHDL門(mén)級(jí)建模VerilogHDL數(shù)字系統(tǒng)設(shè)計(jì)及仿真本章內(nèi)容門(mén)級(jí)范例基本語(yǔ)法MOS開(kāi)關(guān)UDP層次化設(shè)計(jì)2門(mén)級(jí)范例——四選一選擇器電路圖3模塊代碼moduleMUX4x1(Y,A,B,C,D,S1,S0,En_);outputY;inputA,B,C,D;inputS1,S0;inputEn_;not(S1n,S1);not(S0n,S0);not(S1nn,S1n);not(S0nn,S0n);not(En_n,En_);and(and1,En_n,S1n,S0n,A);and(and2,En_n,S1n,S0nn,B);and(and3,En_n,S1nn,S0n,C);and(and4,En_n,S1nn,S0nn,D);or(Y,and1,and2,and3,and4);endmodule

門(mén)級(jí)語(yǔ)句4等價(jià)代碼moduleMUX4x1(Y,A,B,C,D,S1,S0,En_);outputY;inputA,B,C,D;inputS1,S0;inputEn_;not(S1n,S1),(S0n,S0),(S1nn,S1n),(S0nn,S0n),(En_n,En_);and(and1,En_n,S1n,S0n,A),(and2,En_n,S1n,S0nn,B),(and3,En_n,S1nn,S0n,C),(and4,En_n,S1nn,S0nn,D);or(Y,and1,and2,and3,and4);endmodule

5門(mén)級(jí)建模結(jié)構(gòu)模塊定義端口聲明內(nèi)部連線聲明門(mén)級(jí)調(diào)用6模塊定義語(yǔ)法要求

module模塊名(端口名1,端口名2……);

……

endmodule

例如:

moduleMUX4x1(Y,A,B,C,D,S1,S0,En_);moduleabc(a,b,c);

moduleadder(a,b,cin,sum,cout);

moduletest;標(biāo)識(shí)符,自己定義端口列表,只寫(xiě)名稱7標(biāo)識(shí)符的要求標(biāo)識(shí)符由字母、數(shù)字、下劃線(_)和美元符($)組成。標(biāo)識(shí)符是區(qū)分大小寫(xiě)的。標(biāo)識(shí)符的第一個(gè)字符必須是字母或下劃線,不能以數(shù)字或美元符開(kāi)始。還有一些VerilogHDL基本語(yǔ)法中使用到的關(guān)鍵字作為保留字,不能作為標(biāo)識(shí)符使用,例如module8端口聲明端口列表僅僅是列出了本模塊具有哪些端口,但這些端口是輸入還是輸出并沒(méi)有定義,這就需要在模塊中聲明outputY;inputA,B,C,D;inputS1,S0;inputEn_;9語(yǔ)法形式:端口類(lèi)型[端口位寬左界:端口位寬右界]端口名;端口類(lèi)型輸入—input

輸出—output

雙向—inout

寬度input[2:0]cin;output[0:4]cout;inout[4:7]fast;cin[2]、cin[1]、cin[0]cout[0]、cout[1]、cout[2]、cout[3]、cout[4]fast[4]、fast[5]、fast[6]、fast[7]10定義一個(gè)2位寬度的輸入信號(hào)a

建議形式input[1:0]a;input[0:1]a;input[3:4]a;input[2:1]a;?端口類(lèi)型[端口寬度-1:0]端口名;11端口連接規(guī)則輸入輸出必須遵循12門(mén)級(jí)調(diào)用語(yǔ)法形式邏輯門(mén)類(lèi)型<實(shí)例名稱(可選)>(端口連接);

例如not(S0nn,S0n);not(En_n,En_);and(and1,En_n,S1n,S0n,A);and(and2,En_n,S1n,S0nn,B);and(and3,En_n,S1nn,S0n,C);13基本邏輯門(mén)單輸入邏輯門(mén):緩沖器buf和非門(mén)not

buf

實(shí)例名稱(out1,out2,…,outn,in);

not實(shí)例名稱(out1,out2,…,outn,in);

例:notn2(out1,out2,in);門(mén)級(jí)調(diào)用也稱為實(shí)例化順序一致!notn1(out1,in);實(shí)例名稱可以沒(méi)有,但仿真器編譯器時(shí)會(huì)自動(dòng)分配14多輸入邏輯門(mén):與門(mén)and、與非門(mén)nand

或門(mén)or、或非門(mén)nor

異或門(mén)xor和同或門(mén)xnor

范例anda1(out1,in1,in2,in3);or(out1,in1,in2);xorx1(out1,in1,in2);nandn[3:0](Y,A,B);nandn3(Y3,A3,B3);nandn2(Y2,A2,B2);nandn1(Y1,A1,B1);nandn0(Y0,A0,B0);15三態(tài)門(mén)

bufif1、bufif0、notif1和notif0語(yǔ)法三態(tài)門(mén)類(lèi)型實(shí)例名稱(輸出信號(hào),輸入信號(hào),控制信號(hào));范例bufif1b1(Y,A,ctrl);bufif0b2(Y,A,ctrl);notif1n1(Y,A,ctrl);notif0n2(Y,A,ctrl);16模塊實(shí)例化語(yǔ)法形式模塊名稱實(shí)例名稱(端口連接);兩種連接方式按順序連接按名稱連接

17按順序連接欲調(diào)用此模塊moduleMUX4x1(Y,A,B,C,D,S1,S0,En_);outputY;inputA,B,C,D;inputS1,S0;inputEn_;……//模塊功能部分//省略endmodule

moduleTest;reg

a,b,c,d,en_;//連接輸入端regs1,s0;wirey;//連接輸出端……MUX4x1mymux(y,a,b,c,d,s1,s0,en_);endmodule順序一致!18實(shí)例化過(guò)程19按名稱連接語(yǔ)法形式

.原模塊中端口名稱(新模塊中連接信號(hào)名稱)范例moduleTest;reg

a,b,c,d,e,f,g;wirey;……MUX4x1mymux(.Y(y),.A(a),.B(b),.C(c),.D(d),.En_(e),.S1(f),.S0(g));endmodule20如果有端口懸空MUX4x1mymux(y,a,b,c,d,s1,,en_);//兩個(gè)逗號(hào)間表示沒(méi)有連接的端口MUX4x1mymux(.Y(y),.A(a),.B(b),.C(c),.D(d),.En_(e));//沒(méi)有出現(xiàn)的端口就沒(méi)有連接

21內(nèi)部連線聲明語(yǔ)法形式

wire[線寬-1:0]線名稱;范例

wirea;//定義一位線網(wǎng)awire[3:0]b;//定義四位線網(wǎng)b

未聲明而直接使用時(shí),默認(rèn)為1位寬22MOS開(kāi)關(guān)抽象程度更低

nmos

實(shí)例名(out,data,ctrl);

pmos

實(shí)例名(out,data,ctrl);源極(邏輯1)和地極(邏輯0)

supply1vdd;

supply0gnd;23非門(mén)modulemynot(Y,A);outputY;inputA;supply1vdd;supply0gnd;nmosn1(Y,vdd,A);pmosp1(Y,gnd,A);endmodule24與非門(mén)modulemynand(Y,A,B);outputY;inputA,B;wires;supply1vdd;supply0gnd;pmosn1(Y,vdd,A);pmosn2(Y,vdd,B);nmosp1(Y,s,A);nmosp2(s,gnd,B);endmodule25測(cè)試模塊moduleTest;rega,b;wirey;mynandnand1(y,a,b);initialbegina<=0;b<=0;#10a<=0;b<=1;#10a<=1;b<=0;#10a<=1;b<=1;endendmodule26用戶自定義原語(yǔ)UDPand、or、not等邏輯門(mén)是VerilogHDL自帶的內(nèi)建語(yǔ)法,對(duì)這些門(mén)的描述是以原語(yǔ)的形式在VerilogHDL中定義的,即VerilogHDL的內(nèi)置原語(yǔ)。在實(shí)際設(shè)計(jì)中,設(shè)計(jì)者有時(shí)需要使用自己編寫(xiě)的原語(yǔ),VerilogHDL也支持這種語(yǔ)法,這種原語(yǔ)就是用戶自定義原語(yǔ)(User-DefinedPrimitive,UDP)。27UDP基本結(jié)構(gòu)primitiveUDP名稱(輸出端口,輸入端口1,……,輸入端口n);output輸出端口名;input輸入端口名;reg

寄存器名;initial//初始化寄存器,這兩行在時(shí)序UDP中使用table……//狀態(tài)表信息endtableendprimitive28UDP基本規(guī)則1.UDP只能有一個(gè)1位的輸出端口,輸出端口必須在端口列表的第一個(gè)位置。不允許有多個(gè)輸出端口或多位輸出端口。如下聲明均是違法的:

outputa,b;//多個(gè)輸出違法

output[1:0]c;//多位輸出違法2.UDP可以有多個(gè)輸入端口,但每個(gè)輸入端口僅能有1位信號(hào)。

input[3:0]d;//違法

inputd3,d2,d1,d0;//合法3.輸出端口聲明為output,輸入端口聲明為input29UDP基本規(guī)則4.時(shí)序電路的UDP需要保存狀態(tài),所以時(shí)序電路UDP的輸出端口要聲明為reg類(lèi)型。5.時(shí)序電路的UDP中初始狀態(tài)可以使用initial語(yǔ)句初始化,該語(yǔ)句可選。6.UDP與module同級(jí)別,所以模塊內(nèi)部不能定義UDP,但可以在模塊內(nèi)調(diào)用已定義的UDP,語(yǔ)法與門(mén)級(jí)調(diào)用完全相同。7.UDP的狀態(tài)表項(xiàng)可以處理0、1、x值,不能處理z值。本身UDP不能輸出z值,輸入給UDP的z值會(huì)被當(dāng)做x值來(lái)處理。8.UDP中不能使用inout端口。30組合電路UDP二輸入與非門(mén)primitivenand_udp(Y,A,B);outputY;inputA,B;Table//AB:Y

00:1;01:1;10:1;11:0;endtableendprimitive//輸入信號(hào)1輸入信號(hào)2……輸入信號(hào)n:輸出信號(hào);31注意事項(xiàng)1.輸入信號(hào)的順序一定要和UDP中端口列表中的輸入信號(hào)順序相同!2.輸入和輸出之間以冒號(hào)“:”隔開(kāi),每一行結(jié)束處以分號(hào)“;”結(jié)束。3.狀態(tài)表中要包含所有有確定輸出的輸入情況,即最好做到每種可以得到確定輸出值的輸入都有對(duì)應(yīng)的列表行與之相對(duì)應(yīng)。32完整的二輸入與非門(mén)UDPprimitivenand_udp(Y,A,B);outputY;inputA,B;table//AB:Y00:1;01:1;10:1;11:0;x0:1;0x:1;xx:x;endtableendprimitive這一行狀態(tài)表的作用與不寫(xiě)一樣,所以此行可以省略33引入無(wú)關(guān)項(xiàng)?primitivenand_udp(Y,A,B);outputY;inputA,B;table//AB:Y0?:1;?0:1;11:0;endtableendprimitive34四選一選擇器的UDPprimitiveMUX4x1_udp(Y,A,B,C,D,S1,S0,En_);outputYinputA,B,C,D,S1,S0,En_;table//ABCDS1S0En_:Y??????1:0;0???000:0;1???000:1;?0??010:0;?1??010:1;??0?100:0;??1?100:1;???0110:0;???1110:1;endtable

endprimitive35UDP的實(shí)例化與門(mén)級(jí)一樣moduleTest;reg

a,b,c,d,en_;regs1,s0;wirey;……//按順序連接MUX4x1_udpmux_udp1(y,a,b,c,d,s1,s0,en_);//按名稱連接,與門(mén)級(jí)建模完全一致MUX4x1_udpmux_udp2(.Y(y),.A(a),.B(b),.C(c),.D(d),.S1(s1),.S0(s0),.En_(en_));endmodule36時(shí)序電路UDP時(shí)序電路UDP的輸出值必須聲明為reg類(lèi)型。時(shí)序電路UDP的輸出可以使用initial語(yǔ)句進(jìn)行初始化。狀態(tài)表項(xiàng)格式為“輸入信號(hào):當(dāng)前輸出:下一個(gè)輸出”。狀態(tài)表的輸入信號(hào)可以是電平值,也可以是邊沿信號(hào)。要列出所有可能的變化,防止工作中突然出現(xiàn)x值。37電平敏感的D鎖存器primitivelatch_udp(q,d,clock);outputq;inputd,clock;regq;initialq=0;table//dclock:q:q*?0:?:-;01:?:0;11:?:1;endtableendprimitive

38使用(xx)來(lái)表示信號(hào)的變化primitivedff_udp(q,d,clock);outputq;inputd,clock;regq;//輸出也可以不指定初始值table//dclock:q:q*0(01):?:0;//第一行,正常輸出

1(01):?:1;//第二行,正常輸出

?(1?):?:-;//第三行,屏蔽下降沿

?(x0):?:-;//第四行,屏蔽下降沿

(??)?:?:-;//第五行,屏蔽clock非邊沿時(shí)dendtableendprimitive39縮寫(xiě)項(xiàng)縮

寫(xiě)

式含

義解

釋?0,1,x不能用于輸出部分b0,1不能用于輸出部分維持原值不變只能用在時(shí)序UDP的輸出部分r(01)信號(hào)的上升沿f(10)信號(hào)的下降沿p(01),(0x)或(x1)可能是信號(hào)的上升沿n(10),(1x)或(x0)可能是信號(hào)的下降沿*(??)信號(hào)值的任意變化40縮寫(xiě)后的D觸發(fā)器primitivedff_udp(q,d,clock);outputq;inputd,clock;regq;table//dclock:q:q*1r:?:1;0r:?:0;?n:?:-;?(0x):?:-;?(x1):?:-;*?:?:-;endtableendprimitive41層次化設(shè)計(jì)Top-Down流程42四位全加器的門(mén)級(jí)建模原理圖四個(gè)一位全加器的拼接43一位全加器modulefulladd(S,Cout,Cin,A,B);outputS,Cout;inputCin,A,B;wireand1,and2,and3,and4;xor(S,Cin,A,B);and(and1,Cin,A);and(and2,A,B);and(and3,Cin,B);or(Cout,and1,and2,and3);endmodule

44整體模塊moduleadd4(S3,S2,S1,S0,COUT,CIN,X3,X2,X1,X0,Y3,Y2,Y1,Y0);outputCOUT,S3,S2,S1,S0;inputCIN,X3,X2,X1,X0,Y3,Y2,Y1,Y0;wirec0,c1,c2;fulladdadd0(.S(S0),.Cout(c0),.Cin(CIN),.A(X0),.B(Y0));fulladdadd1(.S(S1),.Cout(c1),.Cin(c0),.A(X1),.B(Y1));fulladdadd2(.S(S2),.Cout(c2),.Cin(c1),.A(X2),.B(Y2));fulladdadd3(.S(S3),.Cout(COUT),.Cin(c2),.A(X3),.B(Y3));endmodule45合并線網(wǎng)后moduleadd4(S,COUT,CIN,X,Y);//四位全加器outputCOUT;output[3:0]S;inputCIN;input[3:0]X,Y;wirec0,c1,c2;fulladdadd0(.S(S[0]),.Cout(c0),.Cin(CIN),.A(X[0]),.B(Y[0]));fulladdadd1(.S(S[1]),.Cout(c1),.Cin(c0),.A(X[1]),.B(Y[1]));fulladdadd2(.S(S[2]),.Cout(c2),.Cin(c1),.A(X[2]),.B(Y[2]));fulladdadd3(.S(S[3]),.Cout(COUT),.Cin(c2),.A(X[3]),.B(Y[3]));endmodule46測(cè)試模塊moduletadd4;reg[3:0]x,y;reg

cin;wire[3:0]s;wirecout;add4myadd4(.S(s),.COUT(cout),.CIN(cin),.X(x),.Y(y));initial//此段代碼用于生成輸入的數(shù)據(jù)begin

cin<=0;x<=11;y<=2;#10cin<=0;x<=9;y<=6;#10cin<=0;x<=9;y<=7;#10cin<=1;x<=11;y<=2;#10cin<=1;x<=9;y<=6;#10cin<=1;x<=9;y<=7;#10$stop;endendmodule47層次化調(diào)用以.隔開(kāi)層次tadd4.stadd4.myadd4tadd4.myadd4.c0tadd4.myadd4.add0tadd4.myadd4.add0.and1482-4譯碼器的門(mén)級(jí)建模電路圖49moduleDEC2x4(Z,A,B,Enable);output[3:0]Z;inputA,B,Enable;wireAbar,Bbar;notnot0(A

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論