版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第二部分第二部分 Verilog HDL基本語法基本語法2.1 Verilog HDL2.1 Verilog HDL程序模塊結構程序模塊結構設設計計模模塊塊模塊端口定義模塊端口定義I/OI/O說明說明功能描述功能描述模塊內(nèi)容模塊內(nèi)容信號類型說明信號類型說明2.1.1 模塊端口定義模塊端口定義模塊端口定義模塊端口定義用來聲明設計電路模塊的輸入輸出用來聲明設計電路模塊的輸入輸出端口。端口定義端口。端口定義格式格式如下如下module 模塊名(端口模塊名(端口1,端口,端口2,端口,端口3,);); 在端口定義的在端口定義的圓括弧圓括弧中,是設計電路模塊與外界中,是設計電路模塊與外界聯(lián)系的聯(lián)系的全部
2、輸入輸出端口信號或引腳全部輸入輸出端口信號或引腳,它是設計實體,它是設計實體對外的一個通信界面,是外界可以看到的部分(不包對外的一個通信界面,是外界可以看到的部分(不包含電源和接地端),多個端口名之間用含電源和接地端),多個端口名之間用“,”分隔。分隔。例如,例如,module adder(sum,cont,ina,inb,cin););2.1.2 模塊內(nèi)容模塊內(nèi)容模塊內(nèi)容模塊內(nèi)容包括包括I/O說明、信號類型聲明和功能描述。說明、信號類型聲明和功能描述。1. 模塊的模塊的I/O說明說明模塊的模塊的I/O說明說明用來聲明模塊端口定義中各端口數(shù)據(jù)流動方向用來聲明模塊端口定義中各端口數(shù)據(jù)流動方向包括
3、輸入(包括輸入(input)、輸出()、輸出(output)和雙向()和雙向(inout)。)。I/O說說明格式如下明格式如下input 端口端口1,端口,端口2,端口,端口3,;output 端口端口1,端口,端口2,端口,端口3,;例如例如 input ina,inb,cin;output sum,cont;2. 信號類型聲明信號類型聲明 信號類型聲明信號類型聲明用來說明設計電路的功能描述中,所用的用來說明設計電路的功能描述中,所用的信號的數(shù)據(jù)類型以及函數(shù)聲明。信號的數(shù)據(jù)類型以及函數(shù)聲明。 信號的數(shù)據(jù)類型主要有信號的數(shù)據(jù)類型主要有連線(連線(wire)、寄存器(寄存器(reg)、整型(整型
4、(integer)、實型(實型(real)和和時間(時間(time)等類型。等類型。 3. 功能描述功能描述 功能描述功能描述是是Verilog HDL程序設計中最主要的部分,用來程序設計中最主要的部分,用來描述設計模塊的內(nèi)部結構和模塊端口間的邏輯關系,在電路描述設計模塊的內(nèi)部結構和模塊端口間的邏輯關系,在電路上相當于上相當于器件的內(nèi)部電路結構器件的內(nèi)部電路結構。 功能描述可以用功能描述可以用assign語句語句、元件例化(元件例化(instantiate)、always塊語句塊語句、initial塊語句塊語句等方法來實現(xiàn),通常把確定這些等方法來實現(xiàn),通常把確定這些設計模塊描述的方法稱為建模。
5、設計模塊描述的方法稱為建模。 (1)用)用assign語句建模語句建模 用用assign語句建模的方法很簡單,只需要在語句建模的方法很簡單,只需要在“assign”后面再加一個表達式即可。后面再加一個表達式即可。assign語句一般適合對語句一般適合對組合邏輯組合邏輯進行賦值,稱為連續(xù)進行賦值,稱為連續(xù)賦值方式。賦值方式?!纠纠?.1】1位全加器的設計。位全加器的設計。 inainbcinadder1sumcoutVerilog HDL源程序如下源程序如下module adder1(sum,cout,ina,inb,cin);); /模塊端口定義模塊端口定義input ina,inb,cin
6、;output sum,cout;/I/O聲明聲明assign cout,sum = ina+inb+cin; /功能描述語句功能描述語句endmodule /endmodule后不加分號后不加分號 默認的數(shù)據(jù)類型為默認的數(shù)據(jù)類型為wire(連線)型,(連線)型, 為拼接為拼接運算符,是將運算符,是將cout、sum這樣兩個這樣兩個1位操作數(shù)拼接位操作數(shù)拼接為一個為一個2位操作數(shù)。位操作數(shù)。(2)用元件例化()用元件例化(instantiate)方式建模)方式建模 元件例化方式建模是利用元件例化方式建模是利用Verilog HDL提供的元提供的元件庫實現(xiàn)的。件庫實現(xiàn)的。例如,用與門例化元件定義
7、一個例如,用與門例化元件定義一個3輸入端與門可以輸入端與門可以寫為寫為andmyand3(y,a,b,c);(3)用)用always塊語句建模塊語句建模always塊語句可以產(chǎn)生各種邏輯,常用于塊語句可以產(chǎn)生各種邏輯,常用于時序邏輯時序邏輯的功能描述。一個程序設計模塊中,可以包含一個的功能描述。一個程序設計模塊中,可以包含一個或多個或多個always語句。語句。程序運行中,在某種條件滿足程序運行中,在某種條件滿足時,就重復執(zhí)行一遍時,就重復執(zhí)行一遍always結構中的語句結構中的語句?!纠纠?.2】8位二進制加法計數(shù)器的設計。位二進制加法計數(shù)器的設計。 module cnt8(out,cou
8、t,data,load,cin,clk,clr); input 7:0 data;input load, cin, clk, clr; output 7:0 out;output cout; reg 7:0 out; /寄存器型參量,具有寄存功能寄存器型參量,具有寄存功能always (posedge clk) /時鐘上升沿,每次上升沿,時鐘上升沿,每次上升沿,執(zhí)行執(zhí)行always語句語句 begin if (clr) out =8b0; else if (load) out = data; else out = out+8b1; endassign cout = &out & cin; /”
9、&out”與縮減運算式與縮減運算式endmodule(4)用)用initial塊語句建模塊語句建模initial塊語句與塊語句與always語句類似,不過在程序中它語句類似,不過在程序中它只執(zhí)行只執(zhí)行1次次就結束了。就結束了。 Verilog HDL程序設計模塊的基本結構小結程序設計模塊的基本結構小結: Verilog HDL程序是由程序是由模塊模塊構成的。每個模塊的構成的。每個模塊的內(nèi)容都是嵌在內(nèi)容都是嵌在module和和endmodule兩語句之間,每兩語句之間,每個模塊實現(xiàn)特定的功能,模塊是可以進行個模塊實現(xiàn)特定的功能,模塊是可以進行層次嵌套層次嵌套的。的。 每個模塊首先要進行每個模塊首
10、先要進行端口定義端口定義,并說明輸入,并說明輸入(input)、輸出()、輸出(output)或雙向()或雙向(inouts),然),然后對模塊的后對模塊的功能功能進行邏輯進行邏輯描述描述。 Verilog HDL程序的程序的書寫格式自由書寫格式自由,一行可以一,一行可以一條或多條語句,一條語句也可以分為多行寫。條或多條語句,一條語句也可以分為多行寫。 除了除了endmodule語句外,每條語句后必須要有語句外,每條語句后必須要有分號分號“;”。 可以用可以用/*/或或/對對Verilog HDL程序的任程序的任何部分作何部分作注釋注釋。 一個完整的源程序都應當加上需要的注釋,一個完整的源程序
11、都應當加上需要的注釋,以加強程序的可讀性。以加強程序的可讀性。 2.2 Verilog HDL的詞法的詞法2.2.1 空白符和注釋空白符和注釋 Verilog HDL的空白符包括的空白符包括空格空格、tab符號符號、換行換行和和換頁換頁。 空白符如果不是出現(xiàn)在字符串中,編譯源程序空白符如果不是出現(xiàn)在字符串中,編譯源程序時將被忽略。時將被忽略。 注釋分為注釋分為行注釋行注釋和和塊注釋塊注釋兩種方式。行注釋用兩種方式。行注釋用符號符號/(兩個斜杠)開始,注釋到本行結束。塊注(兩個斜杠)開始,注釋到本行結束。塊注釋用釋用/*開始,用開始,用*/結束結束。塊注釋可以跨越多行,但。塊注釋可以跨越多行,但
12、它們不能嵌套。它們不能嵌套。 2.2.2 常數(shù)常數(shù) Verilog HDL的常數(shù)包括的常數(shù)包括數(shù)字數(shù)字、未知未知X和和高阻高阻Z三三種。數(shù)字可以用二進制、十進制、八進制和十六進制種。數(shù)字可以用二進制、十進制、八進制和十六進制等等4種不同數(shù)制來表示,完整的種不同數(shù)制來表示,完整的數(shù)字格式數(shù)字格式為為 其中,位寬表示數(shù)字對應的二進制數(shù)的位數(shù)寬度;其中,位寬表示數(shù)字對應的二進制數(shù)的位數(shù)寬度;進制符號包括進制符號包括b或或B(表示二進制數(shù)),(表示二進制數(shù)),d或或D(表示(表示十進制數(shù)),十進制數(shù)),h或或H(表示十六進制數(shù)),(表示十六進制數(shù)),o或或O(表(表示八進制數(shù))。示八進制數(shù))。例如例如
13、8b10110001 /表示位寬為表示位寬為8位的二進制數(shù)位的二進制數(shù)8hf5 /表示位寬為表示位寬為8位的十六進制數(shù)位的十六進制數(shù)十進制數(shù)的位寬和進制符號可以缺省十進制數(shù)的位寬和進制符號可以缺省,例如,例如/表示十進制數(shù)表示十進制數(shù)125X和和Z表示位數(shù)的特殊性表示位數(shù)的特殊性:8b1111xxxx/等價等價8hfx1258b1101zzzz/等價等價8hdz2.2.3 字符串字符串字符串是用字符串是用雙引號雙引號括起來的括起來的可打印字符序列可打印字符序列,它必須,它必須包含在包含在同一行同一行中。中。例如,例如,”ABC”,”A BOY.”,”A”,”1234”都是字符串。都是字符串。2
14、.2.4 標識符標識符 標識符是用戶編程時為常量、變量、模塊、寄存標識符是用戶編程時為常量、變量、模塊、寄存器、端口、連線、示例和器、端口、連線、示例和begin-end塊等元素定義的名塊等元素定義的名稱。標識符可以是字母、數(shù)字和下劃線稱。標識符可以是字母、數(shù)字和下劃線“_”等符號組等符號組成的任意序列。定義標識符時應遵循如下成的任意序列。定義標識符時應遵循如下規(guī)則:規(guī)則: 首字符不能是數(shù)字。首字符不能是數(shù)字。 字符數(shù)不能多于字符數(shù)不能多于1024個。個。 大小寫字母是不同的。大小寫字母是不同的。 不要與關鍵字同名。不要與關鍵字同名。 2.2.5 關鍵字關鍵字 關鍵字是關鍵字是Verilog
15、HDL預先定義的單詞,它們預先定義的單詞,它們在程序中有不同的使用目的。所有關鍵字都用小寫在程序中有不同的使用目的。所有關鍵字都用小寫例如,例如, module和和endmodule來指出源程序模塊的開始來指出源程序模塊的開始和結束;用和結束;用assign來描述一個邏輯表達式等。來描述一個邏輯表達式等。 Verilog HDL的關鍵字有的關鍵字有97個。個。 2.2.6 操作符操作符 操作符也稱為運算符,是操作符也稱為運算符,是Verilog HDL預定義的預定義的函數(shù)名字,這些函數(shù)對被操作的對象(即操作數(shù))函數(shù)名字,這些函數(shù)對被操作的對象(即操作數(shù))進行規(guī)定的運算,得到一個結果。進行規(guī)定的
16、運算,得到一個結果。 操作符通常由操作符通常由13個字符組成,例如,個字符組成,例如,“+”表表示加操作,示加操作,“= =”(兩個(兩個=字符)表示邏輯等操作,字符)表示邏輯等操作,“= = =”(3個個=字符)表示全等操作。字符)表示全等操作。 有些操作符的操作數(shù)只有有些操作符的操作數(shù)只有1個,稱為個,稱為單目單目操作;操作;有些操作符的操作數(shù)有有些操作符的操作數(shù)有2個,稱為個,稱為雙目雙目操作;有些操操作;有些操作符的操作數(shù)有作符的操作數(shù)有3個,稱為個,稱為三目三目操作。操作。 1. 算術操作符(算術操作符(Arithmetic operators)常用的算術操作符:常用的算術操作符:
17、+(加)、(加)、-(減)、(減)、*(乘)、(乘)、/(除)、(除)、%(求余)。(求余)。其中其中%是求余操作符是求余操作符, 在兩個整數(shù)相除的基礎上,取在兩個整數(shù)相除的基礎上,取出其余數(shù)。例如,出其余數(shù)。例如,5 % 6的值為的值為5;13 % 5的值是的值是3。2. 邏輯操作符(邏輯操作符(Logical operators )邏輯操作符包括:邏輯操作符包括:&(邏輯與)、(邏輯與)、|(邏輯或)、?。ㄟ壿嫹牵ㄟ壿嫽颍ⅲ。ㄟ壿嫹牵?. 位運算(位運算(Bitwise operators)位運算是將兩個操作數(shù)按對應位進行邏輯操作。位運算是將兩個操作數(shù)按對應位進行邏輯操作。位運算操作符
18、包括:位運算操作符包括:(按位取反)、(按位取反)、&(按位與)、(按位與)、|(按位或)、(按位或)、(按位異或)、(按位異或)、或或(按位同或)。(按位同或)。 在進行位運算時,當兩個操作數(shù)的位寬不同時,在進行位運算時,當兩個操作數(shù)的位寬不同時,計算機會自動將兩個操作數(shù)按右端對齊,位數(shù)少的操計算機會自動將兩個操作數(shù)按右端對齊,位數(shù)少的操作數(shù)會在高位用作數(shù)會在高位用0補齊。補齊。 4. 關系操作符(關系操作符(Pelational operators)關系操作符有:關系操作符有: (小于)、(小于)、(大于)、(大于)、=(大(大于等于)。于等于)。其中,其中,(右移)、(右移)、 n ;
19、/將操作數(shù)的內(nèi)容右移將操作數(shù)的內(nèi)容右移n位,同時從位,同時從左邊開始左邊開始用用0來填補來填補移出的位數(shù)。移出的位數(shù)。操作數(shù)操作數(shù) 4的結果是的結果是A = 8b00001101;而;而A 4的結果是的結果是A = 8b00010000。 8. 條件操作符條件操作符(Conditional operators)條件操作符為:?:條件操作符為:?:條件操作符的條件操作符的操作數(shù)有操作數(shù)有3個,個,其使用格式為其使用格式為操作數(shù)操作數(shù) = 條件條件 ? 表達式表達式1:表達式:表達式2; 即當條件為真(條件結果值為即當條件為真(條件結果值為1)時,操作數(shù))時,操作數(shù) = 表達式表達式1;為假(條件
20、結果值為;為假(條件結果值為0)時,操作數(shù))時,操作數(shù) = 表達表達式式2。源程序如下源程序如下moduleexample_2_3(out,a,b,c);input a,b,c;outputout;assign out = a? b:c;endmodule【例【例2.3】用】用Verilog HDL語言描述下圖所示的電路。語言描述下圖所示的電路。outcba1&9. 位并接操作符(位并接操作符(Concatenation operators)并接操作符為:并接操作符為:并接操作符的并接操作符的使用格式使用格式:操作數(shù)操作數(shù)1的某些位,操作數(shù)的某些位,操作數(shù)2的某些位,的某些位,操作數(shù),操作數(shù)n
21、的某些位;的某些位;作用:作用:即將操作數(shù)即將操作數(shù)1的某些位與操作數(shù)的某些位與操作數(shù)2的某些位的某些位與與與操作數(shù)與操作數(shù)n的某些位并接在一起。的某些位并接在一起。例如,例如,將將1位全加器進位位全加器進位cont與和與和sum并接在一起使用,并接在一起使用,它們的結果由兩個加數(shù)它們的結果由兩個加數(shù)ina、inb及低位進位及低位進位cin相加決相加決定的表達式為定的表達式為cont,sum= ina+inb+cin; 2.2.7 Verilog HDL數(shù)據(jù)對象數(shù)據(jù)對象Verilog HDL數(shù)據(jù)對象是指用來存放各種類型數(shù)據(jù)的數(shù)據(jù)對象是指用來存放各種類型數(shù)據(jù)的容器,包括容器,包括常量常量和和變量
22、變量。 1. 常量常量常量是一個恒定不變的值數(shù),一般常量是一個恒定不變的值數(shù),一般在程序前部定義在程序前部定義。常量定義常量定義格式格式為為parameter 常量名常量名1 = 表達式,常量名表達式,常量名2 = 表達式,表達式,常量名常量名n = 表達式;表達式;parameter是常量定義關鍵字,常量名是用戶定義的標是常量定義關鍵字,常量名是用戶定義的標識符,表達式是為常量賦的值。例如識符,表達式是為常量賦的值。例如parameter vcc = 5,fbus = 8b11010001; 2. 變量變量 變量是在程序運行時其值可以改變的量。變量是在程序運行時其值可以改變的量。 在在Ver
23、ilog HDL中,變量分為中,變量分為網(wǎng)絡型(網(wǎng)絡型(nets type)和和寄存器型(寄存器型(register type)兩種。兩種。 (1)網(wǎng)絡型變量()網(wǎng)絡型變量(nets type) netsnets型變量是輸出值始終根據(jù)輸入變化而更新的型變量是輸出值始終根據(jù)輸入變化而更新的變量,它一般用來定義硬件電路中的變量,它一般用來定義硬件電路中的各種物理連線各種物理連線。類類 型型功能說明功能說明wire、tri連線類型(兩者功能完全相同)連線類型(兩者功能完全相同)wor、trior具有線或特性的連線(兩者功能一致)具有線或特性的連線(兩者功能一致)wand、triand具有線與特性的連
24、線(兩者功能一致)具有線與特性的連線(兩者功能一致)tri1、tri0分別為上拉電阻和下拉電阻分別為上拉電阻和下拉電阻supply1、supply0分別為電源(邏輯分別為電源(邏輯1)和地(邏輯)和地(邏輯0)Verilog HDL提供的提供的nets型變量如下型變量如下(2)寄存器型變量()寄存器型變量(register type) register型變量是一種數(shù)值容器,不僅可以型變量是一種數(shù)值容器,不僅可以容納當容納當前值前值,也可以,也可以保持歷史值保持歷史值,這一屬性與,這一屬性與觸發(fā)器或寄存觸發(fā)器或寄存器的記憶功能器的記憶功能有很好的對應關系。有很好的對應關系。 register型變
25、量與型變量與wire型變量的根本區(qū)別:型變量的根本區(qū)別:register型變量需要被明確地賦值,并且在被重新賦值型變量需要被明確地賦值,并且在被重新賦值前一直保持原值。前一直保持原值。 register型變量是在型變量是在always、initial等過程語句中等過程語句中定義,并通過過程語句賦值。定義,并通過過程語句賦值。 常用的常用的register型變量及說明型變量及說明 類類 型型功功 能能 說說 明明reg常用的寄存器型變量常用的寄存器型變量integer32位帶符號整數(shù)型變量位帶符號整數(shù)型變量real64位帶符號實數(shù)型變量位帶符號實數(shù)型變量time無符號時間型變量無符號時間型變量
26、integer、real和和time等等3種寄存器型變量都是純數(shù)種寄存器型變量都是純數(shù)學的抽象描述,不對應任何具體的硬件電路,但它們學的抽象描述,不對應任何具體的硬件電路,但它們可以描述與模擬有關的計算。例如,可以利用可以描述與模擬有關的計算。例如,可以利用time型型變量控制經(jīng)過特定的時間后關閉顯示等。變量控制經(jīng)過特定的時間后關閉顯示等。 reg型變量是數(shù)字系統(tǒng)中存儲設備的抽象,常用型變量是數(shù)字系統(tǒng)中存儲設備的抽象,常用于具體的硬件描述,因此是最常用的寄存器型變量。于具體的硬件描述,因此是最常用的寄存器型變量。 reg型變量定義的關鍵字是型變量定義的關鍵字是reg,定義,定義格式格式如下如下
27、reg 位寬位寬 變量變量1,變量,變量2,變量,變量n;用用reg定義的變量有一個范圍選項(即位寬),定義的變量有一個范圍選項(即位寬),默認默認的位寬是的位寬是1。位寬為。位寬為1位的變量稱為位的變量稱為標量標量,位寬超過,位寬超過1位的變量稱為位的變量稱為向量向量。標量的定義不需要加位寬選項,。標量的定義不需要加位寬選項,例如例如 reg a,b;/定義兩個定義兩個reg型變量型變量a,b 向量定義時需要位寬選項向量定義時需要位寬選項,例如,例如reg7:0data;/定義定義1個個8位寄存器型位寄存器型變量,最高有效位是變量,最高有效位是7,最低有效位是,最低有效位是0reg0:7da
28、ta;/定義定義1個個8位寄存器型位寄存器型變量,最高有效位是變量,最高有效位是0,最低有效位是,最低有效位是7向量定義后可以采有多種使用形式(即賦值)向量定義后可以采有多種使用形式(即賦值)data=8b00000000;data5:3=3b111;data7=1; (3)數(shù)組)數(shù)組 若干個相同寬度的向量構成數(shù)組。若干個相同寬度的向量構成數(shù)組。在數(shù)字系統(tǒng)中,在數(shù)字系統(tǒng)中,reg型數(shù)組變量即為型數(shù)組變量即為memory(存儲器)型變量(存儲器)型變量。存儲器型可以用如下語句定義存儲器型可以用如下語句定義reg7:0mymemory1023:0;上述語句定義了一個上述語句定義了一個1024個字存
29、儲器變量個字存儲器變量mymemory,每個字的字長為每個字的字長為8位。在表達式中可以用下面的語句位。在表達式中可以用下面的語句來使用存儲器:來使用存儲器:mymemory7 = 75;/存儲器存儲器mymemory的第的第7個字個字被賦值被賦值752.3 Verilog HDL的語句的語句 語句是構成語句是構成Verilog HDL程序不可缺少的部分。程序不可缺少的部分。Verilog HDL的語句包括賦值語句、條件語句、循的語句包括賦值語句、條件語句、循環(huán)語句、結構說明語句和編譯預處理語句等類型,環(huán)語句、結構說明語句和編譯預處理語句等類型,每一類語句又包括幾種不同的語句。在這些語句中,每
30、一類語句又包括幾種不同的語句。在這些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句。行語句。 2.3.1 賦值語句賦值語句1. 門基元賦值語句門基元賦值語句格式:格式:基本邏輯門關鍵字基本邏輯門關鍵字(門輸出,門輸入(門輸出,門輸入1,門輸,門輸入入2,門輸入,門輸入n);); 基本邏輯門關鍵字是基本邏輯門關鍵字是Verilog HDL預定義的邏預定義的邏輯門,包括輯門,包括and、or、not、xor、nand、nor等;等;圓括弧中內(nèi)容是被描述門的輸出和輸入信號。圓括弧中內(nèi)容是被描述門的輸出和輸入信號。例如,具有例如,具有a、b、c、
31、d四個輸入和四個輸入和y為輸出與非門為輸出與非門的門基元賦值語句為的門基元賦值語句為nand(y,a,b,c,d););該語句與該語句與y = (a & b & c & d)等效)等效2. 連續(xù)賦值語句連續(xù)賦值語句格式格式assign賦值變量賦值變量 = 表達式;表達式;例如例如assigny = (a & b & c & d);); 在執(zhí)行中,輸出在執(zhí)行中,輸出y的變化跟隨輸入的變化跟隨輸入a、b、c、d的的變化而變化,變化而變化,反映了信息傳送的連續(xù)性反映了信息傳送的連續(xù)性。 【例【例2.4】4輸入端與非門的輸入端與非門的Verilog HDL源程序。源程序。moduleexample_4
32、_4(y,a,b,c,d);outputy;inputa,b,c,d;assign #1 y = (a&b&c&d);endmodule #1表示該門的輸出與輸入信號之間具有表示該門的輸出與輸入信號之間具有1個個單位的時間延遲。單位的時間延遲。 3. 過程賦值語句過程賦值語句 過程賦值語句出現(xiàn)在過程賦值語句出現(xiàn)在initial和和always塊語句中,塊語句中,賦值符號是賦值符號是“=”,格式為,格式為賦值變量賦值變量 = 表達式;表達式; 在過程賦值語句中,賦值號在過程賦值語句中,賦值號“=”左邊的賦值變左邊的賦值變量必須是量必須是reg(寄存器)型變量,其值在該語句結束(寄存器)型變量,其
33、值在該語句結束即可得到即可得到。如果一個塊語句中包含若干條過程賦值語。如果一個塊語句中包含若干條過程賦值語句,那么這些過程賦值語句是按照語句編寫的句,那么這些過程賦值語句是按照語句編寫的順序順序由由上至下一條一條地上至下一條一條地執(zhí)行執(zhí)行,前面的語句沒有完成,后面,前面的語句沒有完成,后面的語句就不能執(zhí)行,就象被阻塞了一樣。因此,過程的語句就不能執(zhí)行,就象被阻塞了一樣。因此,過程賦值語句也稱為阻塞賦值語句。賦值語句也稱為阻塞賦值語句。 4. 非阻塞賦值語句非阻塞賦值語句 非阻塞賦值語句也是出現(xiàn)在非阻塞賦值語句也是出現(xiàn)在initial和和always塊語塊語句中,賦值符號是句中,賦值符號是“=”
34、,格式為格式為賦值變量賦值變量 = 表達式;表達式; 在非阻塞賦值語句中,賦值號在非阻塞賦值語句中,賦值號“=”左邊的賦左邊的賦值變量也必須是值變量也必須是reg型變量型變量,其值其值不象在過程賦值語不象在過程賦值語句那樣,語句結束時即刻得到,而句那樣,語句結束時即刻得到,而在該塊語句結束才在該塊語句結束才可得到可得到。 【例【例2.5】上升沿觸發(fā)的】上升沿觸發(fā)的D觸發(fā)器的的源程序。觸發(fā)器的的源程序。moduleD_FF(q,d,clock);inputd,clock;outputq;regq;always(posedge clock) q = d;endmoduleq是觸發(fā)器的輸出,屬于是觸
35、發(fā)器的輸出,屬于reg型變量;型變量;d和和clock是輸是輸入,屬于入,屬于wire型變量(由隱含規(guī)則定義)。型變量(由隱含規(guī)則定義)。 2.3.2 條件語句條件語句條件語句包含條件語句包含if語句和語句和case語句,它們都是順語句,它們都是順序語句,應放在序語句,應放在always塊中。塊中。1. if語句語句完整的完整的Verilog HDL的的if語句結構如下:語句結構如下:if (表達式表達式) begin 語句語句; endelse if (表達式表達式) begin 語句語句; endelse begin 語句語句; end【例【例2.6】8線線-3線優(yōu)先編碼器的設計線優(yōu)先編碼
36、器的設計 輸入輸入輸出輸出a0 a1 a2 a3 a4 a5 a6 a7y0 y1 y2x x x x x x x 01 1 1x x x x x x 0 10 1 1x x x x x 0 1 11 0 1x x x x 0 1 1 10 0 1x x x 0 1 1 1 11 1 0 x x 0 1 1 1 1 10 1 0 x 0 1 1 1 1 1 11 0 00 1 1 1 1 1 1 10 0 0Verilog HDL源代碼如下源代碼如下moduleexample_2_6(y,a);input 7:0a;output 2:0y;reg 2:0y;always (a)beginif(
37、a7)y=3b111; else if(a6)y=3b110;else if(a5)y=3b101;else if(a4)y=3b100;else if(a3)y=3b011;else if(a2)y=3b010;else if(a1)y=3b001;else y=3b000;endendmodule2. case語句語句 case語句是一種多分支的條件語句,完整的語句是一種多分支的條件語句,完整的case語句的語句的格式格式為為case (表達式表達式) 選擇值選擇值1 : 語句語句1; 選擇值選擇值2 : 語句語句2; 選擇值選擇值n : 語句語句n; default :語句語句n+1;e
38、ndcase【例【例2.7】用】用case語句描述語句描述4選選1數(shù)據(jù)選擇器。數(shù)據(jù)選擇器。 moduleexample_4_7(z,a,b,c,d,s1,s2);inputs1,s2;inputa,b,c,d;outputz;regz;always (s1 or s2 or a or b or c or d)beginabcds1s2數(shù)數(shù)據(jù)據(jù)選選擇擇器器z case (s1,s2) 2b00:z=a;2b01:z=b;2b10:z=c;2b11:z=d; default: z=a; endcaseendendmodule case語句還有兩種變體語句形式,即語句還有兩種變體語句形式,即case
39、z和和casex語句。語句。casez和和casex語句與語句與case語句的語句的格式完全相同,它們的區(qū)別是:在格式完全相同,它們的區(qū)別是:在casez語句中,語句中,如果分支表達式某些位的值為高阻如果分支表達式某些位的值為高阻z,那么對這些,那么對這些位的比較就不予以考慮,只關注其他位的比較結果。位的比較就不予以考慮,只關注其他位的比較結果。 在在casex語句中,把不予以考慮的位擴展到未知語句中,把不予以考慮的位擴展到未知x,即不考慮值為高阻即不考慮值為高阻z和未知和未知x的那些位,只關注其他的那些位,只關注其他位的比較結果。位的比較結果。 2.3.3 循環(huán)語句循環(huán)語句 循環(huán)語句包含循環(huán)
40、語句包含for語句、語句、repeat語句、語句、while語句語句和和forever語句語句4種。種。1. for語句語句for語句的語法格式為語句的語法格式為for (循環(huán)指針循環(huán)指針 = 初值初值; 循環(huán)指針循環(huán)指針 終值終值; 循環(huán)指針循環(huán)指針 = 循環(huán)指針循環(huán)指針 + 步長值步長值) begin 語句語句; end【例【例2.8】8位奇偶校驗器的描述。位奇偶校驗器的描述。 moduleexample_2_8(a, out);input 7:0a;outputout;regout;integern;always(a)begin out = 0; for (n = 0; n =b) ma
41、x=a;elsemax=b; endendfunction函數(shù)調(diào)用的格式如下函數(shù)調(diào)用的格式如下函數(shù)名(關聯(lián)參數(shù)表);函數(shù)名(關聯(lián)參數(shù)表); 函數(shù)調(diào)用一般是出現(xiàn)在模塊、任務或函數(shù)語函數(shù)調(diào)用一般是出現(xiàn)在模塊、任務或函數(shù)語句中。通過函數(shù)的調(diào)用來完成某些數(shù)據(jù)的運算或轉(zhuǎn)句中。通過函數(shù)的調(diào)用來完成某些數(shù)據(jù)的運算或轉(zhuǎn)換。換。例如,調(diào)用例例如,調(diào)用例2.9編制的求最大值的函數(shù)編制的求最大值的函數(shù)peak=max(data,peak); 其中,其中,data和和peak是與函數(shù)定義的兩個參數(shù)是與函數(shù)定義的兩個參數(shù)a、b關聯(lián)的關聯(lián)參數(shù)。通過函數(shù)的調(diào)用,求出關聯(lián)的關聯(lián)參數(shù)。通過函數(shù)的調(diào)用,求出data和和peak中
42、的最大值,并用函數(shù)名中的最大值,并用函數(shù)名max返回。返回。 2.4 不同抽象級別的不同抽象級別的Verilog HDL模型模型 Verilog HDL是一種用于邏輯電路設計的硬件描是一種用于邏輯電路設計的硬件描述語言。用述語言。用Verilog HDL描述的電路稱為該設計電路描述的電路稱為該設計電路的的Verilog HDL模型。模型。 Verilog HDL具有具有行為描述行為描述和和結構描述結構描述功能。功能。 行為描述行為描述是對設計電路的邏輯功能的描述,并是對設計電路的邏輯功能的描述,并不用關心設計電路使用那些元件以及這些元件之間不用關心設計電路使用那些元件以及這些元件之間的連接關系
43、。的連接關系。 行為描述屬于行為描述屬于高層次高層次的描述方法,在的描述方法,在Verilog HDL中,行為描述包括中,行為描述包括系統(tǒng)級系統(tǒng)級(System Level)、)、算法級算法級(Algorithm Level)和)和寄存器傳輸級寄存器傳輸級(RTL:Register Transfer Level)等)等3種抽象級別。種抽象級別。 結構描述結構描述是對設計電路的結構進行描述,即是對設計電路的結構進行描述,即描述設計電路使用的元件及這些元件之間的連接描述設計電路使用的元件及這些元件之間的連接關系。關系。 結構描述屬于結構描述屬于低層次低層次的描述方法,在的描述方法,在Verilog
44、 HDL,結構描述包括,結構描述包括門級門級(Gate Level)和)和開關開關級級(Switch Level)2種抽象級別。種抽象級別。 在在Verilog HDL的學習中,應重點掌握高層的學習中,應重點掌握高層次描述方法,但門級描述在一些電路設計中也有次描述方法,但門級描述在一些電路設計中也有一定的實際意義。一定的實際意義。2.4.1 Verilog HDL門級描述門級描述 用于用于門級描述門級描述關鍵字包括:關鍵字包括:not(非門)、(非門)、and(與門)、(與門)、nand(與非門)、(與非門)、or(或門)、(或門)、nor(或(或非門)、非門)、xor(異或門)、(異或門)、xnor(異或非門)、(異或非門)、buf(緩沖器)以及(緩沖器)以及bufif1、bufif0、notif1、notif0等各等
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五選一推理題目及答案
- 養(yǎng)老院投訴處理與改進制度
- 養(yǎng)老院老人生活設施維修人員培訓制度
- 汽車輪胎物理題目及答案
- 辦公室資產(chǎn)盤點與報廢制度
- 酒店安全制度
- 物理素質(zhì)強化訓練題目及答案
- 輔警的請示報告制度
- 論代履行制度
- 2026年及未來5年市場數(shù)據(jù)中國無人零售商店行業(yè)發(fā)展前景預測及投資策略研究報告
- 2025年10月自考04184線性代數(shù)經(jīng)管類試題及答案含評分參考
- 2025年勞動保障協(xié)理員三級技能試題及答案
- 企業(yè)機械設備使用管理辦法
- 20以內(nèi)加減法混合口算練習題1000道(附答案)
- 全國高考體育單招考試政治模擬試卷試題及答案2025年
- 人臉識別技術在機場安檢的應用措施
- 產(chǎn)品質(zhì)量檢查報告表專業(yè)標準模板版
- 2025年及未來5年中國心血管病醫(yī)院行業(yè)競爭格局及投資戰(zhàn)略研究報告
- 晶狀體脫位課件
- 增值稅起征點講解課件
- 2025年智能焊接機器人產(chǎn)業(yè)發(fā)展藍皮書
評論
0/150
提交評論