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

下載本文檔

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

文檔簡(jiǎn)介

10.1引言第10章

Verilog

硬件描述語(yǔ)言實(shí)例VerilogHDL描述邏輯電路時(shí)常用3種描述方式,分別為:行為型描述、數(shù)據(jù)流型描述和結(jié)構(gòu)型描述。

行為型描述只描述行為特征,不涉及邏輯電路的實(shí)現(xiàn),是一種高級(jí)語(yǔ)言描述方式,具有很強(qiáng)的通用性和有效性;數(shù)據(jù)流型描述指通過(guò)assign連續(xù)賦值實(shí)現(xiàn)組合邏輯功能的描述方式;結(jié)構(gòu)型描述指描述實(shí)體連接的結(jié)構(gòu)方式,所謂實(shí)體一般指Verilog語(yǔ)言已定義的基元,也就是說(shuō)結(jié)構(gòu)型描述指利用Verilog語(yǔ)言已定義的基元描述邏輯電路的描述方式。

行為型描述語(yǔ)句更簡(jiǎn)練,有可能不被綜合;結(jié)構(gòu)型描述語(yǔ)句通常容易被綜合,但語(yǔ)句顯得復(fù)雜。在實(shí)際開(kāi)發(fā)中往往結(jié)合使用多種描述方法。10.22選1數(shù)據(jù)選擇器2選1數(shù)據(jù)選擇器可以有多種描述方式,通過(guò)4個(gè)實(shí)例和3種描述方式對(duì)例子中出現(xiàn)的語(yǔ)法現(xiàn)象進(jìn)行解釋。10.2.12選1數(shù)據(jù)選擇器的數(shù)據(jù)流型描述方式;10.2.22選1數(shù)據(jù)選擇器的數(shù)據(jù)流型描述方式;

10.2.32選1數(shù)據(jù)選擇器的行為型描述方式;

10.2.42選1數(shù)據(jù)選擇器的結(jié)構(gòu)型描述方式;

10.2.12選1數(shù)據(jù)選擇器實(shí)例1//例10.2.1moduleMux21(a,b,s,y); //----------------1 inputa,b; inputs; outputy; assigny=(s==0)?a:b; //----------------2endmodule //----------------310.2.12選1數(shù)據(jù)選擇器實(shí)例1//例10.2.1moduleMux21(a,b,s,y); //----------------1 inputa,b; inputs; outputy; assigny=(s==0)?a:b; //----------------2endmodule //----------------31.Verilog語(yǔ)言描述2.程序說(shuō)明(1)注釋行(2)模塊定義語(yǔ)句module和endmodule

所有的程序都置于模塊(module)框架結(jié)構(gòu)內(nèi)。模塊是Verilog最基本的構(gòu)成單元。一個(gè)模塊可以是一個(gè)元件或者一個(gè)設(shè)計(jì)單元。module<模塊名>(端口列表)

<申明><功能描述>endmodule該模塊共包括四個(gè)端口:輸入端口a,b,s和輸出端口y。它定義的是二選一數(shù)據(jù)選擇器。Verilog端口類(lèi)型只有input(輸入),output(輸出),inout(雙向端口)三種,端口類(lèi)型申明描述了端口的信號(hào)傳輸方向。

圖10.2.2Verilog端口類(lèi)型(3)連續(xù)賦值語(yǔ)句assign“assigny=(s==0)?a:b;”為一條連續(xù)賦值語(yǔ)句。連續(xù)賦值語(yǔ)句assign能夠給網(wǎng)表變量賦值。只要等號(hào)右邊的表達(dá)式值發(fā)生變化,這種賦值行為就會(huì)立刻發(fā)生。連續(xù)賦值語(yǔ)句能模擬組合邏輯電路。(4)條件操作符“?”s==0?a:b為一條件表達(dá)式。式中條件操作符“?”為三目操作符,由兩個(gè)操作符隔離三個(gè)操作數(shù)構(gòu)成,語(yǔ)法格式如下:

表達(dá)式1?表達(dá)式2:表達(dá)式3執(zhí)行操作時(shí),首先會(huì)計(jì)算表達(dá)式1的值,如果表達(dá)式1的值為1,那么將計(jì)算表達(dá)式2的值,做為條件表達(dá)式的最后結(jié)果;如果表達(dá)式1的值為0,則計(jì)算表達(dá)式3的值,并做為條件表達(dá)式最后的結(jié)果。仿真結(jié)果仿真電路圖仿真波形圖

10.2.22選1數(shù)據(jù)選擇器實(shí)例2//例10.2.2moduleMux21(a,b,s,y); inputa,b; inputs; outputy; //--------------1 wired,e; //--------------2 assignd=a&(~s);//--------------3 assigne=b&s; assigny=d|e; endmodule

(1)連線(xiàn)類(lèi)型wire

程序中出現(xiàn)的中間變量d和e定義為wire類(lèi)型,表示內(nèi)部結(jié)點(diǎn)或連線(xiàn)。程序行1輸出端口y的數(shù)據(jù)類(lèi)型默認(rèn)為wire類(lèi)型。網(wǎng)表類(lèi)型可通過(guò)連續(xù)賦值語(yǔ)句(assign語(yǔ)句)或邏輯門(mén)驅(qū)動(dòng)。如果一個(gè)網(wǎng)表沒(méi)有和任何驅(qū)動(dòng)源連接,其值為高阻狀態(tài)。1.Verilog語(yǔ)言描述2.程序說(shuō)明(2)位運(yùn)算符

按位取反(~)、按位與(&)和按位或(|),按位異或(^)、按位同或(^~,異或非)。參與運(yùn)算兩個(gè)數(shù)位數(shù)不同時(shí),采用右對(duì)齊。&01xz00000101xxx0xxxz0xxx|01xz001xx11111xx1xxzx1xx^01xz001xx110xxxxxxxzxxxx^~01xz010xx101xxxxxxxzxxxx~

0110xxzx10.2.32選1數(shù)據(jù)選擇器實(shí)例3//例10.2.3modulemux21(a,b,s,y);inputa,b,s;outputy;regy;always@(aorbors)//----------------------------------1if(!s)y=a;//-----------------------------------2elsey=b;//------------------------------------3endmodule

(1)寄存器類(lèi)型reg

輸出端口y的數(shù)據(jù)類(lèi)型申明為reg即寄存器型,在always塊中被賦值的信號(hào)必須定義為reg型。寄存器(reg)類(lèi)型不一定是觸發(fā)器。只能在always語(yǔ)句中通過(guò)過(guò)程賦值語(yǔ)句進(jìn)行賦值。1.Verilog語(yǔ)言描述2.程序說(shuō)明

程序行1“always@(aorbors)”為重復(fù)執(zhí)行語(yǔ)句。always后面跟了一個(gè)時(shí)間控制語(yǔ)句,時(shí)間控制通過(guò)事件表達(dá)式(關(guān)鍵詞“@”)實(shí)現(xiàn),時(shí)間控制部分為完整敏感信號(hào)列表,只要任意敏感信號(hào)發(fā)生變化,過(guò)程塊將重復(fù)連續(xù)執(zhí)行,持續(xù)整個(gè)模擬過(guò)程。(3)條件語(yǔ)句(if-else)

條件語(yǔ)句if-else語(yǔ)句可用來(lái)選擇是否執(zhí)行某條語(yǔ)句。(4)邏輯運(yùn)算符

三種邏輯運(yùn)算符:邏輯與“&&”、邏輯或“||”和邏輯非“!”ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假邏輯運(yùn)算的真值表(2)重復(fù)執(zhí)行語(yǔ)句always10.2.32選1數(shù)據(jù)選擇器實(shí)例4//例10.2.4modulemux21(y,a,b,s);inputa,b,s;outputy;notu1(ns,s);andu2(sela,a,ns);andu3(selb,b,s);oru4(y,sela,selb);endmodule

例10.2.4調(diào)用了多個(gè)底層模塊的實(shí)例。調(diào)用模塊的過(guò)程,稱(chēng)為實(shí)例化。實(shí)例的使用格式為:1.Verilog語(yǔ)言描述2.程序說(shuō)明<模塊名><實(shí)例名><端口列表>;非模塊與模塊或模塊

例10.2.4為門(mén)級(jí)結(jié)構(gòu)描述,它提供了模型和實(shí)際電路之間直接的一一對(duì)應(yīng)的關(guān)系。VerilogHDL中一些基元與關(guān)鍵字對(duì)應(yīng)關(guān)系如下:not—非門(mén);buf—緩沖器;and—與門(mén);or—非門(mén);nand—與非門(mén);nor—或非門(mén);xor—異或門(mén);xnor—同或門(mén)。這些模塊稱(chēng)為Verilog語(yǔ)言的基元(Primitive)圖10.2.5

例10.2.4仿真電路圖10.34選1數(shù)據(jù)選擇器10.3.14選1數(shù)據(jù)選擇器實(shí)例1sel(1)sel(0)out00in001in110in211in34選1數(shù)據(jù)選擇器功能表如表10.3.1所示。4個(gè)數(shù)據(jù)輸入端口in0、in1、in2、in3,也稱(chēng)為輸入變量,兩位選擇變量sel(1)和sel(0),數(shù)據(jù)輸出端為out。

四選一數(shù)據(jù)選擇器功能表//例10.3.1modulemux4_1(out,in0,in1,in2,in3,sel);outputout;inputin0,in1,in2,in3;input[1:0]sel;//-----------------1regout;always@(in0orin1orin2orin3orsel)//--------------2case(sel)2'b00:out=in0;2'b01:out=in1;2'b10:out=in2;2'b11:out=in3;default:out=1'bx;endcaseendmodule 1.Verilog

語(yǔ)言描述2.程序說(shuō)明

Verilog中如果一個(gè)網(wǎng)表型變量和寄存器型變量定義時(shí)沒(méi)有指定位長(zhǎng)度,則它被認(rèn)為是1位標(biāo)量,如果設(shè)定了位長(zhǎng)度,則被認(rèn)為是一個(gè)矢量。(1)矢量類(lèi)型wire[7:0]bus;

//8位矢量網(wǎng)表busreg[0:40]addr;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論