版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)安全部工作年終總結(jié)
- 老年癡呆用藥指導(dǎo)護(hù)理
- 裝載機(jī)系統(tǒng)培訓(xùn)
- 四川省遂寧市遂寧中學(xué)2024-2025學(xué)年度上期高一半期考試英語(yǔ) - 副本
- 湖南省長(zhǎng)沙市長(zhǎng)郡梅溪湖中學(xué)2024-2025學(xué)年上學(xué)期八年級(jí)第一次月考英語(yǔ)試題(含答案無(wú)聽(tīng)力部分)
- 廣東省江門(mén)市福泉奧林匹克學(xué)校2024-2025學(xué)年上學(xué)期七年級(jí)數(shù)學(xué)第一次月考試題(無(wú)答案)
- 2024-2025學(xué)年寧夏中衛(wèi)市中衛(wèi)七中七年級(jí)(上)第一次月考數(shù)學(xué)試卷(無(wú)答案)
- 2024-2025學(xué)年初中九年級(jí)數(shù)學(xué)上冊(cè)期中測(cè)試卷及答案(人教版)
- T-ZFDSA 30-2024 靈芝鴨制作標(biāo)準(zhǔn)
- 陜西省安康市漢濱區(qū)部分學(xué)校2024-2025學(xué)年七年級(jí)上學(xué)期期中地理試卷
- 5.2 珍惜師生情誼同步課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 專題25 圓的基本性質(zhì)(分層精練)(解析版)
- 教師招聘高中信息技術(shù)考試試題
- 5.2 珍惜師生情誼 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年 上冊(cè)
- 在初中數(shù)學(xué)教學(xué)中有效開(kāi)展項(xiàng)目式學(xué)習(xí)的策略
- 行政或后勤崗位招聘筆試題及解答(某大型國(guó)企)2025年
- 醫(yī)療廢物管理工作計(jì)劃范文(4篇)
- 廣聯(lián)達(dá)智慧工地管理系統(tǒng)解決方案
- 孩子上學(xué)務(wù)工合同協(xié)議書(shū)
- Unit 2 School things Lesson 1(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教精通版英語(yǔ)三年級(jí)上冊(cè)
- 2024年中國(guó)打印機(jī)行業(yè)概覽:技術(shù)轉(zhuǎn)型升級(jí)國(guó)產(chǎn)打印機(jī)品牌崛起-24正式版
評(píng)論
0/150
提交評(píng)論