20.1.4Verilog硬件描述語言實(shí)例I - Verilog硬件描述語言實(shí)例I-2_第1頁
20.1.4Verilog硬件描述語言實(shí)例I - Verilog硬件描述語言實(shí)例I-2_第2頁
20.1.4Verilog硬件描述語言實(shí)例I - Verilog硬件描述語言實(shí)例I-2_第3頁
20.1.4Verilog硬件描述語言實(shí)例I - Verilog硬件描述語言實(shí)例I-2_第4頁
20.1.4Verilog硬件描述語言實(shí)例I - Verilog硬件描述語言實(shí)例I-2_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

(2)數(shù)的表示方法

按進(jìn)制劃分,整數(shù)可以表示成十進(jìn)制數(shù),十六進(jìn)制數(shù),八進(jìn)制和二進(jìn)制數(shù)。Verilog中整數(shù)通常有兩種表述方式,分別為十進(jìn)制數(shù)和指定位數(shù)表述方式。十進(jìn)制數(shù)表述方式:

指定位數(shù)表述方式:

用0到9的數(shù)字序列表示。

<位長度><‘進(jìn)制符號><數(shù)字及a到f(十六進(jìn)制)>

。

在硬件描述語言中,x表示不定值,z表示高阻態(tài)。可以在十六進(jìn)制,八進(jìn)制和二進(jìn)制中使用x和z,十六進(jìn)制中一個(gè)x表示4位都是x,八進(jìn)制中一個(gè)x表示3位都是x,二進(jìn)制中則表示一位是x。z用法同理。整數(shù)的表示示例:'h123F

//無位長度的十六進(jìn)制數(shù)'o123 //無位長度的八進(jìn)制數(shù)3'b101 //3位二進(jìn)制數(shù)5'D3 //5位十進(jìn)制數(shù)12'hx //12位不確定數(shù)16'oz //16位高阻態(tài)16'b1001_0110_1111_zzzz//16位二進(jìn)制數(shù)以下表示是不正確的:123af

//十六進(jìn)制數(shù),缺少進(jìn)制符號'

h

在表示長數(shù)據(jù)時(shí)還可以用下劃線“_”進(jìn)行分割以增加程序的可讀性,(3)

case語句的語法結(jié)構(gòu)

case

(表達(dá)式)

選項(xiàng)值1:語句1; 選項(xiàng)值2:語句2; 選項(xiàng)值3:語句3;

…default:

缺省語句;endcase

缺省語句不是必須有的。

4選1數(shù)據(jù)選擇器的仿真電路圖:

4選1數(shù)據(jù)選擇器的仿真波形圖:3.

仿真結(jié)果10.3.2

4選1數(shù)據(jù)選擇器實(shí)例21.if-else語句實(shí)現(xiàn)的4選1數(shù)據(jù)選擇器

//例10.3.2modulemux4_1(out,in0,in1,in2,in3,sel);outputout;inputin0,in1,in2,in3;input[1:0]sel;regout;always@(in0orin1orin2orin3orsel)beginif(sel==2'b00)out=in0;elseif(sel==2'b01)out=in1;elseif(sel==2'b10)out=in2;elseif(sel==2'b11)out=in3;elseout=1'bx;endendmodule2.

程序說明(1)if條件語句除了if-else結(jié)構(gòu)外,還有if-else-if結(jié)構(gòu)

if

(表達(dá)式1)

語句1;elseif(表達(dá)式2)

語句2;elseif…else

語句n;(2)順序塊語句begin-end

順序塊語句通常用來將兩條或多條語句組合在一起,使其在格式上更象一條語句。begin

語句1;語句2;

......語句n;end順序塊有以下特點(diǎn):

1)塊內(nèi)的語句是按順序執(zhí)行的,即只有上面一條語句執(zhí)行完后下面的語句才能執(zhí)行。2)直到最后一條語句執(zhí)行完,程序才跳出該語句塊。

(3)缺省項(xiàng)問題缺省項(xiàng)是可以省略的,但省略缺省項(xiàng)會引入鎖存器,在組合邏輯電路設(shè)計(jì)中可能會帶來一些問題。

//例10.3.3moduleex3reg(y,a,b,c);inputa,b,c;outputy;regy,rega;always@(aorborc)begin

if(a&b)rega=c;else //有缺省項(xiàng)情況

rega=0;y=rega;endendmodulerega被綜合為一個(gè)數(shù)據(jù)選擇器:

省略了缺省項(xiàng)的Verilog語言程序

//例10.3.4moduleex4reg(y,a,b,c);inputa,b,c;outputy;regy,rega;always@(aorborc)beginif(a&b)rega=c; //缺省項(xiàng)省略

y=rega;endendmoduleif-else結(jié)構(gòu)的缺省項(xiàng)省略了,當(dāng)a&b為1時(shí),rega被賦予c的值,但當(dāng)a&b為0時(shí),rega將保持原值,這時(shí)需要一個(gè)鎖存器把rega的值保持下來,因此綜合時(shí)rega被綜合為一個(gè)鎖存器,鎖存器是多余的部分。綜合后的電路:對于case語句存在同樣的問題,也會由于缺少缺省項(xiàng),產(chǎn)生了不必要的鎖存器。//例10.3.5moduleinccase(a,b,c,d,e);inputa,b,c,d;outpute;rege;always@(aorborcord)

case({a,b})//---------------12’b11:e=d;2’b10:e=~c;endcaseendmodule程序行1的“{}”為拼接操作符,將a和b組成一個(gè)二進(jìn)制數(shù)。仿真電路:

由此可見,If條件語句和case條件語句在省略缺省項(xiàng)時(shí),會產(chǎn)生鎖存器。因此,在設(shè)計(jì)組合邏輯電路時(shí)缺省項(xiàng)不能省略。10.4四位加法器1.Verilog語言描述4位加法器的功能是實(shí)現(xiàn)2個(gè)4位二進(jìn)制數(shù)的加法運(yùn)算。由兩個(gè)模塊組成,分別為底層全加器模塊和頂層模塊。//例10.4.1//全加器moduleadd_full(A,B,C,Carry,S);inputA,B,C;outputCarry,S;//全加器進(jìn)位和assignS=A^B^C;assignCarry=(A&B)|(B&C)|(A&C);endmodule實(shí)例(Instances)//四位加法器moduleadd_full4(A,B,C,S);input[3:0]A,B;output[3:0]S;//加法器和output[4:0]C;//加法器進(jìn)位assignC[0]=0;add_fullu1(A[0],B[0],C[0],C[1],S[0]),//------------1u2(A[1],B[1],C[1],C[2],S[1]),

u3(A[2],B[2],C[2],C[3],S[2]),

u4(A[3],B[3],C[3],C[4],S[3]);endmodule實(shí)例化(instantiation)2.

程序說明實(shí)例(Instances),實(shí)例化(instantiation)已經(jīng)定義好的模塊,作為我們電路中的單元。調(diào)用這些模塊的過程,稱為實(shí)例化(instantiation),調(diào)用完之后,這些電路中的模塊單元稱為實(shí)例(Instance)。實(shí)例的使用格式為:

<模塊名><實(shí)例名><端口列表>;這是管腳按順序映射調(diào)用方式。

Verilog中不允許嵌套定義模塊,即一對module和endmodule之間只能定義一個(gè)模塊。但一個(gè)模塊內(nèi)可以通過實(shí)例的方式多次調(diào)用其他模塊。實(shí)例的調(diào)用格式2:add_fullu1(.A(A[0]),.B(B[0]),.C(C[0]),.Carry(C[1]),.S(S[0])),u2(.A(A[1]),.B(B[1]),.C(C[1]),.Carry(C[2]),.S(S[1])),u3(.A(A[2]),.B(B[2]),.C(C[2]),.Carry(C[3]),.S(S[2])),u4(.A(A[3]),.B(B[3]),.C(C[3]),.Carry(C[4]),.S(S[3]));<模塊名><實(shí)例名><.實(shí)例端口1(模塊端口1]),.實(shí)例端口2(模塊端口2)>;3.

仿真結(jié)果仿真電路圖

仿真波形圖

10.5

七段數(shù)碼管顯示譯碼器例10.5.1實(shí)現(xiàn)的是將BCD碼轉(zhuǎn)換成七段數(shù)碼管的顯示碼,并假設(shè)LED數(shù)碼管是共陰極。電路有4個(gè)輸入端,7個(gè)輸出端。

//例10.5.1moduledecode48(a,b,c,d,e,f,g,D3,D2,D1,D0);outputa,b,c,d,e,f,g;inputD3,D2,D1,D0;//輸入4位BCD

碼rega,b,c,d,e,f,g;//輸出驅(qū)動7個(gè)筆劃段always@(D3orD2orD1orD0)begincase({D3,D2,D1,D0})//用case

語句進(jìn)行譯碼1.Verilog語言描述4'd0:{a,b,c,d,e,f,g}=7'b1111110;4'd1:{a,b,c,d,e,f,g}=7'b0110000;4'd2:{a,b,c,d,e,f,g}=7'b1101101;4'd3:{a,b,c,d,e,f,g}=7'b1111001;4'd4:{a,b,c,d,e,f,g}=7'b0110011;4'd5:{a,b,c,d,e,f,g}=7'b1011011;4'd6:{a,b,c,d,e,f,g}=7'b1011111;

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論