eda設(shè)計與應(yīng)用ppt第7章_第1頁
eda設(shè)計與應(yīng)用ppt第7章_第2頁
eda設(shè)計與應(yīng)用ppt第7章_第3頁
eda設(shè)計與應(yīng)用ppt第7章_第4頁
eda設(shè)計與應(yīng)用ppt第7章_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Verilog設(shè)計的描述風(fēng)格設(shè)計的描述風(fēng)格o 結(jié)構(gòu)(結(jié)構(gòu)(Structural)描述描述o 行為(行為(Behavioural)描述描述o 數(shù)據(jù)流(數(shù)據(jù)流(Data Flow)描述描述7.1 Verilog設(shè)計的層次設(shè)計的層次在在Verilog程序中可通過如下方式描述電路的程序中可通過如下方式描述電路的結(jié)構(gòu)結(jié)構(gòu) 調(diào)用調(diào)用Verilog內(nèi)置門元件(門級結(jié)構(gòu)描述)內(nèi)置門元件(門級結(jié)構(gòu)描述) 調(diào)用開關(guān)級元件(晶體管級結(jié)構(gòu)描述)調(diào)用開關(guān)級元件(晶體管級結(jié)構(gòu)描述) 用戶自定義元件用戶自定義元件UDP(也在門級)(也在門級)7.2 結(jié)構(gòu)(結(jié)構(gòu)(Structural)描述描述Verilog的的內(nèi)置門元件內(nèi)置

2、門元件 門元件的調(diào)用門元件的調(diào)用調(diào)用門元件的格式為:調(diào)用門元件的格式為:門元件名字門元件名字 ()其中普通門的端口列表按下面的順序列出:其中普通門的端口列表按下面的順序列出:(輸出,輸入(輸出,輸入1,輸入,輸入2,輸入,輸入3););比如:比如:and a1(out,in1,in2,in3);/三輸入三輸入與門與門對于三態(tài)門,則按如下順序列出輸入輸出端口:對于三態(tài)門,則按如下順序列出輸入輸出端口:(輸出,輸入,使能控制端);(輸出,輸入,使能控制端);比如:比如:bufif1 mytri1(out,in,enable);/高電平高電平使能的三態(tài)門使能的三態(tài)門門元件的調(diào)用門元件的調(diào)用對于對于b

3、uf和和not兩種元件的調(diào)用,需注意兩種元件的調(diào)用,需注意的是:它們允許有多個輸出,但只能的是:它們允許有多個輸出,但只能有一個輸入。比如:有一個輸入。比如: not N1(out1,out2,in); /1個輸入個輸入in,2個輸出個輸出out1,out2 buf B1(out1,out2,out3,in); /1個輸入個輸入in,3個輸出個輸出out1,out2,out3【例【例7.1】 調(diào)用門元件實現(xiàn)的調(diào)用門元件實現(xiàn)的4選選1 MUXmodule mux4_1a(out,in1,in2,in3,in4,s0,s1);input in1,in2,in3,in4,s0,s1; output

4、out;wire s0_n,s1_n,w,x,y,z;not (sel0_n,s0),(s1_n,s1);and (w,in1,s0_n,s1_n),(x,in2,s0_n,s1), (y,in3,s0,s1_n),(z,in4,s0,s1);or (out,w,x,y,z);endmodule用基本門實現(xiàn)的用基本門實現(xiàn)的4選選1 MUX原理圖原理圖 7.3 行為描述行為描述就是對設(shè)計實體的數(shù)學(xué)模型的描述,其抽象就是對設(shè)計實體的數(shù)學(xué)模型的描述,其抽象程度遠(yuǎn)高于結(jié)構(gòu)描述方式。行為描述類程度遠(yuǎn)高于結(jié)構(gòu)描述方式。行為描述類似于高級編程語言,當(dāng)描述一個設(shè)計實似于高級編程語言,當(dāng)描述一個設(shè)計實體的行為時

5、,無需知道具體電路的結(jié)構(gòu),體的行為時,無需知道具體電路的結(jié)構(gòu),只需要描述清楚輸入與輸出信號的行為,只需要描述清楚輸入與輸出信號的行為,而不需要花費(fèi)更多的精力關(guān)注設(shè)計功能而不需要花費(fèi)更多的精力關(guān)注設(shè)計功能的門級實現(xiàn)。的門級實現(xiàn)。 【例例7.2】 用用case語句描述的語句描述的4選選1 MUXmodule mux4_1b(out,in1,in2,in3,in4,s0,s1);input in1,in2,in3,in4,s0,s1; output reg out;always(*) /使用通配符使用通配符case(s0,s1)2b00:out=in1;2b01:out=in2;2b10:out=i

6、n3;2b11:out=in4;default:out=2bx;endcaseendmodule采用行為描述方式時需注意采用行為描述方式時需注意 用行為描述模式設(shè)計電路,可以降低設(shè)計難用行為描述模式設(shè)計電路,可以降低設(shè)計難度。行為描述只需表示輸入與輸出之間的關(guān)度。行為描述只需表示輸入與輸出之間的關(guān)系,不需要包含任何結(jié)構(gòu)方面的信息。系,不需要包含任何結(jié)構(gòu)方面的信息。 設(shè)計者只需寫出源程序,而挑選電路方案的設(shè)計者只需寫出源程序,而挑選電路方案的工作由工作由EDA軟件自動完成。軟件自動完成。在電路的規(guī)模較大或者需要描述復(fù)雜的邏輯關(guān)在電路的規(guī)模較大或者需要描述復(fù)雜的邏輯關(guān)系時,應(yīng)首先考慮用行為描述方式

7、設(shè)計電路,系時,應(yīng)首先考慮用行為描述方式設(shè)計電路,如果設(shè)計的結(jié)果不能滿足資源占有率的要求,如果設(shè)計的結(jié)果不能滿足資源占有率的要求,則應(yīng)改變描述方式。則應(yīng)改變描述方式。7.4 數(shù)據(jù)流描述數(shù)據(jù)流描述數(shù)據(jù)流描述方式主要使用持續(xù)賦值語句,數(shù)據(jù)流描述方式主要使用持續(xù)賦值語句,多用于描述組合邏輯電路,其格式為:多用于描述組合邏輯電路,其格式為: assign LHS_net=RHS_expression;右邊表達(dá)式中的操作數(shù)無論何時發(fā)生變右邊表達(dá)式中的操作數(shù)無論何時發(fā)生變化,都會引起表達(dá)式值的重新計算化,都會引起表達(dá)式值的重新計算, 并將重新計算后的值賦予左邊表達(dá)式并將重新計算后的值賦予左邊表達(dá)式的的ne

8、t型變量。型變量。 【例例7.4】 數(shù)據(jù)流描述的數(shù)據(jù)流描述的4選選1 MUXmodule mux4_1c(out,in1,in2,in3,in4,s0,s1);input in1,in2,in3,in4,s0,s1; output out;assign out=(in1 & s0 & s1)|(in2 & s0 & s1)|(in3& s0 & s1)|(in4 & s0 & s1);endmodule數(shù)據(jù)流描述數(shù)據(jù)流描述用數(shù)據(jù)流描述模式設(shè)計電路與用傳統(tǒng)的用數(shù)據(jù)流描述模式設(shè)計電路與用傳統(tǒng)的邏輯方程設(shè)計電路很相似。設(shè)計中只邏輯方程設(shè)

9、計電路很相似。設(shè)計中只要有了布爾代數(shù)表達(dá)式就很容易將它要有了布爾代數(shù)表達(dá)式就很容易將它用數(shù)據(jù)流方式表達(dá)出來。表達(dá)方法是用數(shù)據(jù)流方式表達(dá)出來。表達(dá)方法是用用Verilog中的邏輯運(yùn)算符置換布爾中的邏輯運(yùn)算符置換布爾邏輯運(yùn)算符即可。邏輯運(yùn)算符即可。比如,如果邏輯表達(dá)式為:,則用數(shù)據(jù)比如,如果邏輯表達(dá)式為:,則用數(shù)據(jù)流方式描述為:流方式描述為: assign F=(a&b)|(c&d)。7.5 不同描述風(fēng)格的設(shè)計不同描述風(fēng)格的設(shè)計對設(shè)計者而言,采用的描述級別越高,設(shè)計對設(shè)計者而言,采用的描述級別越高,設(shè)計越容易;對綜合器而言,行為級的描述越容易;對綜合器而言,行為級的描述為綜合器的優(yōu)

10、化提供了更大的空間,較為綜合器的優(yōu)化提供了更大的空間,較之門級結(jié)構(gòu)描述更能發(fā)揮綜合器的性能,之門級結(jié)構(gòu)描述更能發(fā)揮綜合器的性能,所以在電路設(shè)計中,除非一些關(guān)鍵路徑所以在電路設(shè)計中,除非一些關(guān)鍵路徑的設(shè)計采用門級結(jié)構(gòu)描述外,一般更多的設(shè)計采用門級結(jié)構(gòu)描述外,一般更多地采用行為建模方式。地采用行為建模方式。 【例例7.12】 調(diào)用門元件實現(xiàn)的調(diào)用門元件實現(xiàn)的1位全加器位全加器module full_add1(a, b, module full_add1(a, b, cincin, sum, , sum, coutcout); );input a, b, input a, b, cincin; ;o

11、utput sum, output sum, coutcout; ;wire s1,m1, m2, m3;wire s1,m1, m2, m3;and (m1, a, b),and (m1, a, b), (m2, b, (m2, b, cincin), ), (m3, a, (m3, a, cincin); );xorxor (s1, a, b), (s1, a, b), (sum, s1, (sum, s1, cincin); );or (or (coutcout, m1, m2, m3);, m1, m2, m3);endmoduleendmodule數(shù)據(jù)流描述的數(shù)據(jù)流描述的1位全加器位

12、全加器module full_add2(a,b,cin,sum,cout);input a, b, cin;output sum, cout;assign sum = a b cin;assign cout = (a & b ) | (b & cin ) | (cin & a );endmodule行為描述的行為描述的1位全加器位全加器【例例7.14】 行為描述的行為描述的1位全加器位全加器module full_add3(a,b,cin,sum,cout);input a,b,cin; output reg sum,cout;always * /或?qū)憺榛驅(qū)憺閍lway

13、s (a or b or cin)begin cout,sum=a+b+cin; endendmodule兩個半加器構(gòu)成一個全加器兩個半加器構(gòu)成一個全加器 【例例7.15】 用模塊例化方式設(shè)計的用模塊例化方式設(shè)計的1位全加器頂位全加器頂層設(shè)計層設(shè)計module full_add(ain,bin,cin,sum,cout);input ain,bin,cin; output sum,cout;wire d,e,f; /用于內(nèi)部連接的節(jié)點(diǎn)信號用于內(nèi)部連接的節(jié)點(diǎn)信號half_add u1(ain,bin,e,d); /半加器模塊調(diào)用,采用位置關(guān)聯(lián)方式半加器模塊調(diào)用,采用位置關(guān)聯(lián)方式half_add

14、u2(e,cin,sum,f); or u3(cout,d,f); /或門調(diào)用或門調(diào)用endmodule【例例7.16】 半加器定義半加器定義module half_add(a,b,so,co);input a,b; output so,co;assign co=a&b; assign so=ab;endmodule4 4位加法器設(shè)計位加法器設(shè)計module add4_1(sum,cout,a,b,cin);output 3:0 sum;output cout;input 3:0 a,b;input cin; full_add1 f0(a0,b0,cin,sum0,cin1);full

15、_add1 f1(a1,b1,cin1,sum1,cin2);full_add1 f2(a2,b2,cin2,sum2,cin3);full_add1 f3(a3,b3,cin3,sum3,cout);endmodule結(jié)構(gòu)描述的結(jié)構(gòu)描述的4位級連全加器位級連全加器【例例7.18】 數(shù)據(jù)流描述的數(shù)據(jù)流描述的4位加法器位加法器module add4_2(cout,sum,a,b,cin);input cin; input3:0 a,b; output3:0 sum; output cout;assign cout,sum=a+b+cin;endmoduleu如果數(shù)字系統(tǒng)比較復(fù)雜,可采用如果數(shù)字系

16、統(tǒng)比較復(fù)雜,可采用“Top-down”的方法進(jìn)行設(shè)的方法進(jìn)行設(shè)計。首先把系統(tǒng)分為幾個模塊,每個模塊再分為幾個子模塊,計。首先把系統(tǒng)分為幾個模塊,每個模塊再分為幾個子模塊,以此類推,直到易于實現(xiàn)為止。這種以此類推,直到易于實現(xiàn)為止。這種“Top-down”的方法能夠的方法能夠把復(fù)雜的設(shè)計分解為許多簡單的邏輯來實現(xiàn),同時也適合于多把復(fù)雜的設(shè)計分解為許多簡單的邏輯來實現(xiàn),同時也適合于多人進(jìn)行分工合作,如同用人進(jìn)行分工合作,如同用C語言編寫大型軟件一樣。語言編寫大型軟件一樣。Verilog語語言能夠很好地支持這種言能夠很好地支持這種“Top-down”的設(shè)計方法的設(shè)計方法u多層次結(jié)構(gòu)電路的描述既可以采

17、用文本方式,也可以用圖多層次結(jié)構(gòu)電路的描述既可以采用文本方式,也可以用圖形和文本混合設(shè)計的方式。用一個形和文本混合設(shè)計的方式。用一個8位累加器的設(shè)計為例來位累加器的設(shè)計為例來說明這兩種設(shè)計方式。說明這兩種設(shè)計方式。8位全加器位全加器module add8(sum,cout,b,a,cin);output7:0 sum;output cout;input7:0 a,b;input cin;assign cout,sum=a+b+cin;endmodule8位寄存器位寄存器module reg8(qout,in,clk,clear);output7:0 qout;input7:0 in;input

18、 clk,clear;reg7:0 qout;always (posedge clk or posedge clear)beginif(clear) qout=0; /異步清異步清0else qout=in;endendmodulemodule acc(accout,cout,accin,cin,clk,clear);output7:0 accout;output cout;input7:0 accin;input cin,clk,clear;wire7:0 sum;add8 accadd8(sum,cout,accout,accin,cin); /調(diào)用調(diào)用add8子模塊子模塊reg8 acc

19、reg8(accout,sum,clk,clear); /調(diào)用調(diào)用reg8子模塊子模塊endmodule累加器頂層文本描述累加器頂層文本描述 對于上面的模塊調(diào)用,可采用位置對應(yīng)的方式,即調(diào)用時對于上面的模塊調(diào)用,可采用位置對應(yīng)的方式,即調(diào)用時模塊端口列表中信號的排列順序與模塊定義時端口列表中的信模塊端口列表中信號的排列順序與模塊定義時端口列表中的信號排列順序相同;也可以采用信號名對應(yīng)方式,此時不必按順號排列順序相同;也可以采用信號名對應(yīng)方式,此時不必按順序,例如上面對序,例如上面對reg8的調(diào)用:的調(diào)用:module reg8(qout,in,clk,c lear);/reg8的模塊聲明的模塊

20、聲明reg8 accreg8(accout,sum,clk,clear); /調(diào)用方式調(diào)用方式1,位置對應(yīng),位置對應(yīng)Reg8 accreg8(.qout(accout),.clear(clear), .in(sum),.clk(clk);/調(diào)用方式調(diào)用方式2,信號名對應(yīng),信號名對應(yīng)7.7 基本組合電路設(shè)計基本組合電路設(shè)計 門級結(jié)構(gòu)描述門級結(jié)構(gòu)描述 module gate1(F,A,B,C,D);input A,B,C,D;output F;nand(F1,A,B); /調(diào)用門元件調(diào)用門元件and(F2,B,C,D);or(F,F1,F2);endmodule 數(shù)據(jù)流描述數(shù)據(jù)流描述module

21、gate2(F,A,B,C,D);input A,B,C,D;output F;assign F=(A&B)|(B&C&D);endmodule【例例7.24】 74138的的Verilog描述描述module ttl74138(a,y,g1,g2a,g2b);input2:0 a; input g1,g2a,g2b; output reg7:0 y;always (*) begin if(g1 & g2a & g2b) /只有當(dāng)只有當(dāng)g1、g2a、g2b為為100時,譯碼器使能時,譯碼器使能begin case(a)3b000:y=8b11111110

22、; /譯碼輸出譯碼輸出3b001:y=8b11111101;3b010:y=8b11111011;3b011:y=8b11110111;3b100:y=8b11101111;3b101:y=8b11011111;3b110:y=8b10111111;3b111:y=8b01111111;default:y=8b11111111;endcase endelse y=8b11111111; endendmodule【例例7.25】 8線線3線優(yōu)先編碼器線優(yōu)先編碼器74148的的Verilog描述描述module ttl74148(din,ei,gs,eo,dout);input7:0 din; i

23、nput ei; output reg gs,eo; output reg2:0 dout;always (ei,din) begin if(ei) begin dout=3b111;gs=1b1;eo=1b1; endelse if(din=8b111111111) begin dout=3b111;gs=1b1;eo=1b0;endelse if(!din7) begin dout=3b000;gs=1b0;eo=1b1;endelse if(!din6) begin dout=3b001;gs=1b0;eo=1b1;endelse if(!din5) begin dout=3b010;g

24、s=1b0;eo=1b1;endelse if(!din4) begin dout=3b011;gs=1b0;eo=1b1;endelse if(!din3) begin dout=3b100;gs=1b0;eo=1b1;endelse if(!din2) begin dout=3b101;gs=1b0;eo=1b1;endelse if(!din1) begin dout=3b110;gs=1b0;eo=1b1;endelse begin dout=3b111;gs=1b0;eo=1b1;end endendmodule【例例7.27】 奇偶校驗位產(chǎn)生器奇偶校驗位產(chǎn)生器module pari

25、ty(even_bit,odd_bit,a);input7:0 a; output even_bit,odd_bit;assign even_bit=a; /生成偶校驗位生成偶校驗位assign odd_bit=even_bit; /生成奇校驗位生成奇校驗位endmodule 7.8 基本時序電路設(shè)計基本時序電路設(shè)計【例例7.29】 帶異步清帶異步清0/異步置異步置1的的JK觸發(fā)器觸發(fā)器module jkff_rs(clk,j,k,q,rs,set);input clk,j,k,set,rs; output reg q;always (posedge clk, negedge rs, nege

26、dge set)begin if(!rs) q=1b0;else if(!set) q=1b1;else case(j,k)2b00:q=q;2b01:q=1b0;2b10:q=1b1;2b11:q=q;default:q=1bx;endcaseendendmodule【例例7.30】 電平敏感的電平敏感的1位數(shù)據(jù)鎖存器位數(shù)據(jù)鎖存器module latch1(q,d,le);input d,le; output q;assign q=le?d:q; /le為高電平時,將輸入端數(shù)據(jù)鎖存為高電平時,將輸入端數(shù)據(jù)鎖存endmodule【例例7.31】 帶置位帶置位/復(fù)位端的復(fù)位端的1位數(shù)據(jù)鎖存器位數(shù)

27、據(jù)鎖存器module latch2(q,d,le,set,reset);input d,le,set,reset; output q;assign q=reset?0:(set? 1:(le?d:q);endmodule【例例7.32】 8位數(shù)據(jù)鎖存器(位數(shù)據(jù)鎖存器(74LS373)module ttl373(le,oe,q,d);input le,oe; input7:0 d; output reg7:0 q;always * /或?qū)憺榛驅(qū)憺閍lways (le,oe,d)begin if(oe & le) q=d; /或?qū)憺榛驅(qū)憺閕f(!oe) & (le)else q=8

28、bz;endendmodule【例例7.33】 數(shù)據(jù)寄存器數(shù)據(jù)寄存器module reg_w(dout,din,clk,clr);parameter WIDTH=7;input clk,clr; inputWIDTH:0 din;output regWIDTH:0 dout;always (posedge clk, posedge clr)begin if(clr) dout=0;else dout=din; endendmodule【例例7.35】 可變模加法可變模加法/減法計數(shù)器減法計數(shù)器module updown_count(d,clk,clear,load,up_down,qd);in

29、put clk,clear,load,up_down;input7:0 d; output7:0 qd; reg7:0 cnt;assign qd=cnt;always (posedge clk)begin if(!clear) cnt=8h00; /同步清同步清0,低電平有效,低電平有效else if(load) cnt=d;/同步預(yù)置同步預(yù)置else if(up_down) cnt=cnt+1; /加法計數(shù)加法計數(shù)else cnt=cnt-1; /減法計數(shù)減法計數(shù)endendmodule【例例7.39】 行為描述的三態(tài)門行為描述的三態(tài)門module tristate1(in,en,out)

30、;input in,en; output reg out;always (in or en)begin if(en) out=in; else out=1bz; endendmodule【例例7.40】 調(diào)用門元件調(diào)用門元件bufif1描述的三態(tài)門描述的三態(tài)門module tristate2(in,en,out);input in,en; output out; tri out;bufif1 b1(out,in,en);/注意三態(tài)門端口的排列順序注意三態(tài)門端口的排列順序endmodule【例例7.41】 數(shù)據(jù)流描述的三態(tài)門數(shù)據(jù)流描述的三態(tài)門module tristate3(out,in,en)

31、;input in,en; output out;assign out=en?in:1bz; /若若en=1,out=in;/若若en=0,out為高阻態(tài)為高阻態(tài)endmodule【例例7.42】 三態(tài)雙向驅(qū)動器三態(tài)雙向驅(qū)動器module bidir(y,a,en,b);input a,en; output b; inout y;assign y=en?a:bz; assign b=y;endmodule【例例7.44】 三態(tài)雙向總線緩沖器三態(tài)雙向總線緩沖器module ttl245(a,b,oe,dir);input oe,dir; /使能信號和方向控制使能信號和方向控制inout7:0 a,b; /雙向數(shù)據(jù)線雙向數(shù)據(jù)線assign a=(oe,dir=2b00)?b:8bz;assign b=(oe,dir=2b01)?a:8bz;endmodule生成一個新的宏模塊生成一個新的宏模塊 設(shè)置輸出文件的類型、目錄和名字設(shè)置輸出文件的類型、目錄和名字 定制定制RAM模塊的數(shù)據(jù)寬度和深度模塊的數(shù)據(jù)寬度和深度 指定指定RAM模塊的初始化數(shù)據(jù)文件模塊的初始化數(shù)據(jù)文件 【例例7.46】 用文本方式調(diào)用用文本方式調(diào)用RA

溫馨提示

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

評論

0/150

提交評論