eda verilog簡單數(shù)字電路設(shè)計_第1頁
eda verilog簡單數(shù)字電路設(shè)計_第2頁
eda verilog簡單數(shù)字電路設(shè)計_第3頁
eda verilog簡單數(shù)字電路設(shè)計_第4頁
eda verilog簡單數(shù)字電路設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1電子電路設(shè)計訓(xùn)練

數(shù)字部分(Verilog)第四講、簡單數(shù)字電路設(shè)計24.1門級電路一個邏輯電路是由許多邏輯門和開關(guān)所組成,因此用邏輯門的模型來描述邏輯電路結(jié)構(gòu)是最直觀的。Verilog提供了一些描述門類型的關(guān)鍵字,可以用于門級結(jié)構(gòu)建模。Verilog基本元件模型共有26種,其中14種為基本門級元件,12種為開關(guān)級元件,34.1門級電路門級電路列表多輸入門and(與門)nand(與非門)or(或門)

nor(或非門)

xor(異或門)

xnor(異或非門,同或門)多輸出門buf(緩沖器)not(非門)三態(tài)門(如果不被使能,

則輸出“z”)bufif0(低電平使能緩沖器)

bufif1(高電平使能緩沖器)notif0(低電平使能非門)

notif1(高電平使能非門)上拉,下拉電阻pullup(上拉電阻)pulldown(下拉電阻)<實例元件名>(<數(shù)據(jù)輸出>,<數(shù)據(jù)輸入>,<控制輸入>)44.1門級電路門級電路調(diào)用(實例化)<門的類型>[<驅(qū)動能力><延時>]<門實例1>[,<門實例2>,

<門實例3>……];而每個門實例,按照<實例元件名>(<數(shù)據(jù)輸出>,<數(shù)據(jù)輸入>,<控制輸入>)例:nand#10nd1(a,data,clock,clear);這個例子說明在模塊中只使用了一個名為nd1的與非門實例,輸入為clock,data,clear輸出為a,輸出與輸入的延時為10個單位時間。54.1門級電路門級電路例子--D觸發(fā)器6門級電路例子--D觸發(fā)器(續(xù))module

flop

(data,clock,clear,q,qb);input data,clock,clear;outputq,qb;endmodulenand #10

nd1(a,data,clock,clear), nd2(b,ndata,clock),nd4(d,c,b,clear),nd5(e,c,nclock),nd6(f,d,nclock),nd8(qb,q,f,clear);nand #9

nd3(c,a,d),nd7(q,e,qb);not #10

iv1(ndata,data),iv2(nclock,clock);74.1門級電路門級電路例子—4位寄存器`include“flop.v”module

hardreg

(d,clk,clrb,q);input clk,clrb;input[3:0]d;output[3:0]q;endmoduleflopf0(d[0],clk,clrb,q[0],),f1(d[1],clk,clrb,q[1],),

f2(d[2],clk,clrb,q[2],),f3(d[3],clk,clrb,q[3],);注意但是,對于自行定義的模塊,推薦的作法:flopf0(.data(d[0]),.clock(clk),.clear(clrb),.q(q[0]),),f1(.data(d[1]),.clock(clk),.clear(clrb),.q(q[1]),),f2(.data(d[2]),.clock(clk),.clear(clrb),.q(q[2]),),f3(.data(d[3]),.clock(clk),.clear(clrb),.q(q[3]),);84.1門級電路門級電路例子—行為描述對比module

behaviorreg

(d,clk,clrb,q);input clk,clrb;input[3:0]d;output[3:0]q;endmodulealways

@(posedgeclkorclrb)

begin

if(!clrb)q<=0;

elseq<=d;

end94.2常用組合邏輯電路組合邏輯電路—

功能上無記憶,結(jié)構(gòu)上無反饋電路任一時刻的輸出狀態(tài)只取決于該時刻各輸入狀態(tài)的組合,而與電路的原狀態(tài)無關(guān)。對于任何一個多輸入多輸出組合邏輯電路,可以用框圖或者一組邏輯函數(shù)來表示。y1=f1

(a1,a2,…,an)y2=f2

(a1,a2,…,an)…ym

=fm

(a1,a2,…,an)

104.2常用組合邏輯電路加法器回憶多位加法器114.2常用組合邏輯電路加法器module

add_4(A,B,CI,S,CO);input[3:0] A,B;input CI;output[3:0]S;output CO;assign {CO,S}=A+B+CI;endmodule4位全加器16位?module

add_16(A,B,CI,S,CO);input[15:0] A,B;input CI;output[15:0]S;output CO;assign {CO,S}=A+B+CI;endmodule16位全加器124.2常用組合邏輯電路乘法器modulemult_4(X,Y,Product); input[3:0]X,Y; output[7:0]Product; assignProduct=X*Y;endmodule134.2常用組合邏輯電路比較器XY(X>Y)(X>=Y)(X=Y)(X<=Y)(X<Y)(X!=Y)00011100010001111011000111011100(X>Y)=X·(~Y)(X<Y)=(~X)·Y(X=Y)=(~X)·(~Y)+X·Y14比較器modulecompare_n(X,Y,XGY,XSY,XEY);parameterwidth=8;//必須在用以前寫input[width-1:0]X,Y;outputXGY,XSY,XEY;regXGY,XSY,XEY;

always@(XorY)//每當X或Y變化時beginif(X==Y)XEY=1;//設(shè)置X等于Y的信號為1elseXEY=0;if(X>Y)XGY=1;//設(shè)置X大于Y的信號為1elseXGY=0;if(X<Y)XSY=1;//設(shè)置X小于Y的信號為1elseXSY=0;endendmodule154.2常用組合邏輯電路多路器modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;regout;always@(sloraorb) if(!sl)out=a; elseout=b;endmodulen位數(shù)據(jù)選擇信號數(shù)據(jù)輸出數(shù)據(jù)輸入D0D1二選一8選一?164.2常用組合邏輯電路多路器moduleMux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8,Mout,nCS);parameterwidth=8;

input[2:0]addr;input[width-1:0]in1,in2,in3,in4,in5,in6,in7,in8;inputnCS;output[windth-1:0]Mout;reg[windth-1:0]Mout;

always@(addrorin1orin2orin3orin4orin5orin6orin7orin8ornCS)beginif(!nCS) case(addr)3'b000:Mout=in1;3'b001:Mout=in2;….endcaseelse Mout=0;endendmodule八選一…174.2常用組合邏輯電路編碼器(8-3編碼器)moduleencode8to3(in,out);input[7:0]in;output[2:0]out;reg[2:0]out;always@(in)begincase(in)8'b00000001:out=3'b000;8'b00000010:out=3'b001;8'b00000100:out=3'b010; 8'b00001000:out=3'b011; 8'b00010000:out=3'b100; 8'b00100000:out=3'b101; 8'b01000000:out=3'b110; 8'b10000000:out=3'b111;

default:out=3’b000;

//討論,default的重要性endcaseendendmodule184.2常用組合邏輯電路譯碼器(3-8譯碼器)moduledecode3to8(addr,out);

input[2:0]addr;

output[7:0]out;

assignout=1’b1<<addr;

endmodule194.3常用時序邏輯電路輸出不只是當前輸入的邏輯電平的函數(shù),還與目前電路所處的狀態(tài)有關(guān)。時序邏輯通常是由多個觸發(fā)器和多個組合邏輯塊組成的網(wǎng)絡(luò),時序邏輯電路是設(shè)計復(fù)雜數(shù)字電路的核心。204.3常用時序邏輯電路RS觸發(fā)器moduleRS_FF(R,S,Q,QB);

inputR,S;

outputQ,QB;

regQ,QB;

always@(RorS)

case({R,S})

0:beginQ<=Q;QB<=QB;end

1:beginQ<=1;QB<=0;end

2:beginQ<=0;QB<=1;end

3:beginQ<=1‘bx;QB<=1’bx;end//思考是否影響綜合?

endcase

endmodule214.3常用時序邏輯電路RS觸發(fā)器224.3常用時序邏輯電路同步RS觸發(fā)器234.3常用時序邏輯電路同步RS觸發(fā)器moduleSY_RS_FF(R,S,CLK,Q,QB);

inputR,S,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

case({R,S})

0:Q<=0;

1:Q<=1;

2:Q<=0;

3:Q<=1‘bx;

endcase

endmodule

244.3常用時序邏輯電路同步RS觸發(fā)器moduleSY_RS_FF(R,S,CLK,Q,QB);

inputR,S,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

case({R,S})

0:Q<=0;

1:Q<=1;

2:Q<=0;

3:Q<=1'bx;

endcase

endmodule254.3常用時序邏輯電路D觸發(fā)器

moduleSY_D_FF(D,CLK,Q,QB);

inputD,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

Q<=D;

endmodule264.3常用時序邏輯電路JK觸發(fā)器274.3常用時序邏輯電路JK觸發(fā)器moduleSY_JK_FF(J,K,CLK,Q,QB);

inputJ,K,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always

@(posedgeCLK)

case({J,K})

0:Q<=Q;

1:Q<=0;

2:Q<=1;

3:Q<=~Q;

endcase

endmoduleQnJK010001111011101000284.3常用時序邏輯電路寄存器

moduleREG4(CLR,D,CLK,Q);

inputCLR,CLK;

input[3:0]D;

output[3:0]Q;

reg[3:0]Q;

always@(posedgeCLKornegedgeCLR)

Q<=(!CLR)?0:D;

endmodule294.3常用時序邏輯電路移位寄存器moduleshifter_1(IN,CLK,CLR,Q);inputI

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論