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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

10.1引言第10章

Verilog

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

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

行為型描述語句更簡練,有可能不被綜合;結構型描述語句通常容易被綜合,但語句顯得復雜。在實際開發(fā)中往往結合使用多種描述方法。10.22選1數(shù)據(jù)選擇器2選1數(shù)據(jù)選擇器可以有多種描述方式,通過4個實例和3種描述方式對例子中出現(xiàn)的語法現(xià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ù)選擇器的結構型描述方式;

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

所有的程序都置于模塊(module)框架結構內。模塊是Verilog最基本的構成單元。一個模塊可以是一個元件或者一個設計單元。module<模塊名>(端口列表)

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

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

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

10.2.22選1數(shù)據(jù)選擇器實例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)連線類型wire

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

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

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

(1)寄存器類型reg

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

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

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

三種邏輯運算符:邏輯與“&&”、邏輯或“||”和邏輯非“!”ab!a!ba&&ba||b真真假假真真真假假真假真假真真假假真假假真真假假邏輯運算的真值表(2)重復執(zhí)行語句always10.2.32選1數(shù)據(jù)選擇器實例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調用了多個底層模塊的實例。調用模塊的過程,稱為實例化。實例的使用格式為:1.Verilog語言描述2.程序說明<模塊名><實例名><端口列表>;非模塊與模塊或模塊

例10.2.4為門級結構描述,它提供了模型和實際電路之間直接的一一對應的關系。VerilogHDL中一些基元與關鍵字對應關系如下:not—非門;buf—緩沖器;and—與門;or—非門;nand—與非門;nor—或非門;xor—異或門;xnor—同或門。這些模塊稱為Verilog語言的基元(Primitive)圖10.2.5

例10.2.4仿真電路圖10.34選1數(shù)據(jù)選擇器10.3.14選1數(shù)據(jù)選擇器實例1sel(1)sel(0)out00in001in110in211in34選1數(shù)據(jù)選擇器功能表如表10.3.1所示。4個數(shù)據(jù)輸入端口in0、in1、in2、in3,也稱為輸入變量,兩位選擇變量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

語言描述2.程序說明

Verilog中如果一個網表型變量和寄存器型變量定義時沒有指定位長度,則它被認為是1位標量,如果設定了位長度,則被認為是一個矢量。(1)矢量類型wire[7:0]bus;

//8位矢量網表busreg[0:40]addr;

溫馨提示

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

評論

0/150

提交評論