HDL第五章語(yǔ)法與要素_第1頁(yè)
HDL第五章語(yǔ)法與要素_第2頁(yè)
HDL第五章語(yǔ)法與要素_第3頁(yè)
HDL第五章語(yǔ)法與要素_第4頁(yè)
HDL第五章語(yǔ)法與要素_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章 Verilog 語(yǔ)法與要素 本章介紹本章介紹Verilog HDL的基本要素,包括數(shù)字、字符串、的基本要素,包括數(shù)字、字符串、標(biāo)識(shí)符、運(yùn)算符、數(shù)據(jù)類型和關(guān)鍵字等。標(biāo)識(shí)符、運(yùn)算符、數(shù)據(jù)類型和關(guān)鍵字等。5.1 Verilog語(yǔ)言要素語(yǔ)言要素 1、空白符、空白符 包含空格符、包含空格符、Tab、換行、換頁(yè)。每條、換行、換頁(yè)。每條Verilog語(yǔ)句以;結(jié)尾。教材語(yǔ)句以;結(jié)尾。教材P121中段兩個(gè)書寫格式具有相同效果。中段兩個(gè)書寫格式具有相同效果。 2、注釋、注釋 有兩種形式的注釋有兩種形式的注釋 單行注釋:?jiǎn)涡凶⑨專?以以/打頭,直到本行結(jié)束,不允許續(xù)行。打頭,直到本行結(jié)束,不允許續(xù)行。 多行

2、注釋:多行注釋: 以以/*開始,直到開始,直到*/結(jié)束。結(jié)束。30cout / 非法:以數(shù)字為首非法:以數(shù)字為首o(hù)ut* /非法:非法: 包含不允許字符包含不允許字符* 3、標(biāo)識(shí)符、標(biāo)識(shí)符 Verilog HDL中的標(biāo)識(shí)符中的標(biāo)識(shí)符(identifier)可以是任意一組字母、數(shù)字、可以是任意一組字母、數(shù)字、$符號(hào)和符號(hào)和_(下劃線下劃線)符號(hào)的組合,但標(biāo)識(shí)符的第一個(gè)字符必須是字母符號(hào)的組合,但標(biāo)識(shí)符的第一個(gè)字符必須是字母或者下劃線。另外,標(biāo)識(shí)符是區(qū)分大小寫的。以下是標(biāo)識(shí)符的幾個(gè)或者下劃線。另外,標(biāo)識(shí)符是區(qū)分大小寫的。以下是標(biāo)識(shí)符的幾個(gè)例子:例子:4、關(guān)鍵字、關(guān)鍵字 Verilog 系統(tǒng)內(nèi)部使用

3、的詞,關(guān)鍵字用戶不可用重定義其它含義。系統(tǒng)內(nèi)部使用的詞,關(guān)鍵字用戶不可用重定義其它含義。所有的關(guān)鍵字都是小寫字母組成。例如所有的關(guān)鍵字都是小寫字母組成。例如always是關(guān)鍵字,但是是關(guān)鍵字,但是ALWAYS不是關(guān)鍵字。不是關(guān)鍵字。5. 2 常量常量Verilog 中常量主要有三種類型:整數(shù)、實(shí)數(shù)、字符串中常量主要有三種類型:整數(shù)、實(shí)數(shù)、字符串 5.2.1 整數(shù)。整數(shù)。+/- +/-進(jìn)制有以下進(jìn)制有以下4種形式:種形式: 二進(jìn)制二進(jìn)制 : b或或B,不區(qū)別大寫、小寫字母;,不區(qū)別大寫、小寫字母; 十進(jìn)制:十進(jìn)制: d或或D或缺省,不區(qū)別大寫、小寫字母;或缺省,不區(qū)別大寫、小寫字母; 十六進(jìn)制:

4、十六進(jìn)制:h或或H ,不區(qū)別大寫、小寫字母;,不區(qū)別大寫、小寫字母; 八進(jìn)制:八進(jìn)制: o或或O ,不區(qū)別大寫、小寫字母;,不區(qū)別大寫、小寫字母;8b11011010 /位寬為位寬為8位二進(jìn)制數(shù)位二進(jìn)制數(shù)11011010 8hd5 /位寬為位寬為8位十六進(jìn)制數(shù)位十六進(jìn)制數(shù)d5(即二進(jìn)制數(shù)即二進(jìn)制數(shù)11010101)5o27 /位寬為位寬為5位八進(jìn)制數(shù)位八進(jìn)制數(shù)27(即二進(jìn)制數(shù)(即二進(jìn)制數(shù)10111)4D2 /位寬為位寬為4位十進(jìn)制數(shù)位十進(jìn)制數(shù)2(即二進(jìn)制數(shù)(即二進(jìn)制數(shù)0010)4B1x_01 /位寬為位寬為4位二進(jìn)制數(shù)位二進(jìn)制數(shù)1x015Hx /位寬為位寬為5位十六進(jìn)制數(shù)位十六進(jìn)制數(shù)x (即二

5、進(jìn)制數(shù)即二進(jìn)制數(shù)xxxxx)4hz /位寬為位寬為4位十六進(jìn)制數(shù)位十六進(jìn)制數(shù)z二進(jìn)制數(shù)二進(jìn)制數(shù)zzzz)8 h 2A /位寬為位寬為8位十六進(jìn)制數(shù)位十六進(jìn)制數(shù)2A即二進(jìn)制數(shù)(即二進(jìn)制數(shù)(00101010)合格的整數(shù)書寫例子。合格的整數(shù)書寫例子。不合格的整數(shù)書寫例子。不合格的整數(shù)書寫例子。3 b001 / 與基數(shù)與基數(shù)b之間不允許出現(xiàn)空格之間不允許出現(xiàn)空格4d-4 / 數(shù)值不允許正、負(fù)符號(hào)(數(shù)值不允許正、負(fù)符號(hào)( 或)正、負(fù)符號(hào)只或)正、負(fù)符號(hào)只 / 允許出現(xiàn)在最左面允許出現(xiàn)在最左面 ( 3 2 )b10 /位寬為不可以是表達(dá)式位寬為不可以是表達(dá)式在書寫數(shù)字時(shí)需要注意:在書寫數(shù)字時(shí)需要注意:1)

6、在較長(zhǎng)數(shù)字之間可以因)在較長(zhǎng)數(shù)字之間可以因 _ 分開,用來(lái)提高可讀性,但第一個(gè)數(shù)字分開,用來(lái)提高可讀性,但第一個(gè)數(shù)字 之前不可以加下劃線。之前不可以加下劃線。2)無(wú)位寬說(shuō)明時(shí),默認(rèn)為為)無(wú)位寬說(shuō)明時(shí),默認(rèn)為為32位(二進(jìn)制)。位(二進(jìn)制)。3)x或或z在二進(jìn)制中代表一位在二進(jìn)制中代表一位 x或或z,在八進(jìn)制中代表,在八進(jìn)制中代表3位位x或或z,在十六,在十六 位進(jìn)制中代表位進(jìn)制中代表4為為x或或z. 例如:例如:8b1001xxxx 與與 8h9x相同相同 8b1010zzzz 與與 8haz相同相同4)如果沒(méi)有定義一個(gè)整數(shù)的位寬,則其寬度為響應(yīng)數(shù)所需的二進(jìn)制位。)如果沒(méi)有定義一個(gè)整數(shù)的位寬,

7、則其寬度為響應(yīng)數(shù)所需的二進(jìn)制位。 例如:例如:o721 / 9位二進(jìn)制數(shù)位二進(jìn)制數(shù)111010001 hAF /8位二進(jìn)制數(shù)位二進(jìn)制數(shù)101011115)如果定義的位寬比實(shí)際的位數(shù)長(zhǎng),則通常左邊添)如果定義的位寬比實(shí)際的位數(shù)長(zhǎng),則通常左邊添0補(bǔ)位,但如果數(shù)的補(bǔ)位,但如果數(shù)的 最左邊為最左邊為x或或z,則左邊添,則左邊添x或或z。 例如:例如: 10b10 /左邊添左邊添8位位0,即,即0000000010 10bx0 x1 / 左邊添左邊添6位位x,即,即xxxxxxx0 x1 如果定義的位寬比實(shí)際的位小,則左邊(高位)的位數(shù)被截掉。如果定義的位寬比實(shí)際的位小,則左邊(高位)的位數(shù)被截掉。 例

8、如:例如:3b1001_0011 同同 3b011 5H0FFF 同同 5H1F6)?是高阻態(tài))?是高阻態(tài)z的另一種表示方法,在表示數(shù)字時(shí)完全等同替代。的另一種表示方法,在表示數(shù)字時(shí)完全等同替代。7)整數(shù)可以帶正、負(fù)符號(hào),正、負(fù)號(hào)必須寫在最左面。負(fù)數(shù)通常用)整數(shù)可以帶正、負(fù)符號(hào),正、負(fù)號(hào)必須寫在最左面。負(fù)數(shù)通常用 二進(jìn)制補(bǔ)碼表示。二進(jìn)制補(bǔ)碼表示。 例如:例如:-8h72 / -72H的的 8位二進(jìn)制補(bǔ)碼位二進(jìn)制補(bǔ)碼100011108)當(dāng)位寬與進(jìn)制缺省時(shí)表示是十進(jìn)制數(shù)。)當(dāng)位寬與進(jìn)制缺省時(shí)表示是十進(jìn)制數(shù)。 例如例如32 /表示十進(jìn)制數(shù)表示十進(jìn)制數(shù)32 -15 / 表示十進(jìn)制數(shù)表示十進(jìn)制數(shù)-159

9、)在位寬與)在位寬與之間,以及進(jìn)制和數(shù)字之間允許出現(xiàn)空格但之間,以及進(jìn)制和數(shù)字之間允許出現(xiàn)空格但 與進(jìn)制之間以與進(jìn)制之間以 及數(shù)字之間不允許出現(xiàn)空格。及數(shù)字之間不允許出現(xiàn)空格。 例如:例如: 6 b 110001 /合法,表示合法,表示6位二進(jìn)制數(shù)位二進(jìn)制數(shù)110001 6 b110001 /不合法,在不合法,在 與進(jìn)制與進(jìn)制 b 之間出現(xiàn)空格之間出現(xiàn)空格 6b 110 001 /不合法,在不合法,在 數(shù)字之間出現(xiàn)空格數(shù)字之間出現(xiàn)空格5.2.2 實(shí)數(shù)實(shí)數(shù) 實(shí)數(shù)可以用下列兩種形式定義:實(shí)數(shù)可以用下列兩種形式定義:1) 十進(jìn)制計(jì)數(shù)法;例如十進(jìn)制計(jì)數(shù)法;例如2) 科學(xué)計(jì)數(shù)法;科學(xué)計(jì)數(shù)法; 這種形式的

10、實(shí)數(shù)舉例如下:這種形式的實(shí)數(shù)舉例如下:5.2.3 字符串字符串 字符串是雙引號(hào)內(nèi)的字符序列。字符串不能分成多行書寫。例如字符串是雙引號(hào)內(nèi)的字符序列。字符串不能分成多行書寫。例如: 字符符的作用主要是在仿真時(shí),顯示一些相關(guān)的信息,或者指定顯字符符的作用主要是在仿真時(shí),顯示一些相關(guān)的信息,或者指定顯示格式。字符串屬于示格式。字符串屬于regreg型變量,其寬度為此字符串中的字符個(gè)數(shù)乘以型變量,其寬度為此字符串中的字符個(gè)數(shù)乘以8.8.例如:例如:reg 8*12:1 stringvar ; /* tringvar 是是reg型變量,該變量可以存放包型變量,該變量可以存放包含含12個(gè)字符的字符串,共個(gè)

11、字符的字符串,共96bit */beginstringvar=“Hello word!” ; /變量變量stringvar存放字符串(包含存放字符串(包含12個(gè)字符)個(gè)字符)end 轉(zhuǎn)義標(biāo)識(shí)符轉(zhuǎn)義標(biāo)識(shí)符(escaped identifier )可以在一條標(biāo)識(shí)符中包含任可以在一條標(biāo)識(shí)符中包含任何可打印字符。轉(zhuǎn)義標(biāo)識(shí)符以何可打印字符。轉(zhuǎn)義標(biāo)識(shí)符以(反斜線反斜線)符號(hào)開頭,以空白結(jié)尾(空符號(hào)開頭,以空白結(jié)尾(空白可以是一個(gè)空格、一個(gè)制表字符或換行符)。下面例舉了幾個(gè)轉(zhuǎn)白可以是一個(gè)空格、一個(gè)制表字符或換行符)。下面例舉了幾個(gè)轉(zhuǎn)義標(biāo)識(shí)符:義標(biāo)識(shí)符:特殊字符說(shuō) 明n換行tTab鍵符號(hào)”符號(hào)“ddd八進(jìn)制數(shù)

12、ddd對(duì)應(yīng)的ASCII字符例如:例如: 123 8進(jìn)制數(shù)進(jìn)制數(shù)123 對(duì)應(yīng)的對(duì)應(yīng)的ASCII字符是大寫字母字符是大寫字母S5.3 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型是用來(lái)表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)類型是用來(lái)表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲(chǔ)和傳輸單元等物理量。傳輸單元等物理量。Verilog HDL有下列四種邏輯值狀態(tài):有下列四種邏輯值狀態(tài):1) 0:低電平、邏輯:低電平、邏輯0或邏輯非(或邏輯非(“假假”)2) 1:高電平、邏輯:高電平、邏輯1或或“真真”3) x或或X:不確定或未知的邏輯狀態(tài):不確定或未知的邏輯狀態(tài)4) z或或Z:高阻態(tài):高阻態(tài)Verilog HDL 中的變量部分為如

13、下兩種類數(shù)據(jù)類型:中的變量部分為如下兩種類數(shù)據(jù)類型:net型和型和variable型型1、 線網(wǎng)類型。線網(wǎng)類型。net類型表示類型表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動(dòng)元件的值決定,例如連續(xù)賦值或門的輸出。如果沒(méi)有驅(qū)動(dòng)元件連接驅(qū)動(dòng)元件的值決定,例如連續(xù)賦值或門的輸出。如果沒(méi)有驅(qū)動(dòng)元件連接到線網(wǎng),線網(wǎng)的缺省值為到線網(wǎng),線網(wǎng)的缺省值為z。可綜合的。可綜合的net 型變量有:型變量有:wire型、型、tri型、型、supply1和和supply0。見教材。見教材P126表表5.2 1)wire型型 是最常用的是最常用的net型數(shù)據(jù)變量,型數(shù)據(jù)變量,Va

14、rilog HDL模塊中的輸入模塊中的輸入/輸出信輸出信號(hào)未被明確指定數(shù)據(jù)類型時(shí)都被默認(rèn)為號(hào)未被明確指定數(shù)據(jù)類型時(shí)都被默認(rèn)為wire型??梢匀≈敌汀?梢匀≈?、1、X、Z,如果,如果wire型變量沒(méi)有被連接到驅(qū)動(dòng),其值為高阻態(tài)型變量沒(méi)有被連接到驅(qū)動(dòng),其值為高阻態(tài)Z。 wire型變量定義格式為:型變量定義格式為:wire 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名 i; /變量位寬為一位。變量位寬為一位。例如:例如:wire a,b; /定義兩個(gè)位寬一位的定義兩個(gè)位寬一位的wire型變量型變量a和和b?;颍夯颍?wire n-1: 0 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名 Ii;

15、/變量位寬為變量位寬為n位。位?;颍夯颍?wire n: 1 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名 Ii; /變量位寬為變量位寬為n位。位。例如:例如:wire 7:0 databus ; /定義位寬定義位寬 8位位wire型變量型變量databus。 wire 19:0 addrbus ; /定義位寬定義位寬 20位位wire型變型變daddrbus wire 0:7 a ; / 定義位寬為定義位寬為8位的位的wire型變量型變量2)tri型型 功能與使用方法與功能與使用方法與wire型相同,只是為了增加程序的可讀性,可更型相同,只是為了增加程序的可讀性,可更清楚表示該信號(hào)綜合后的

16、電路具有三態(tài)的功能。清楚表示該信號(hào)綜合后的電路具有三態(tài)的功能。3)supply0 h和和supply1型型 supply0用于對(duì)用于對(duì)“地地”建模,即低電平建模,即低電平0;supply1網(wǎng)用于對(duì)電源建網(wǎng)用于對(duì)電源建模,即高電平模,即高電平1;例如;例如:2 、variable類型。類型。 variable類型表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能類型表示一個(gè)抽象的數(shù)據(jù)存儲(chǔ)單元,它只能在在always語(yǔ)句和語(yǔ)句和initial語(yǔ)句中被賦值,在語(yǔ)句中被賦值,在always、initial等模塊內(nèi)被賦值等模塊內(nèi)被賦值的信號(hào)必須定義為的信號(hào)必須定義為variable型。型。 1)reg型型 是最常用的是

17、最常用的variable型變量。被定義為型變量。被定義為reg型變量在綜合時(shí),型變量在綜合時(shí), 綜合器會(huì)根據(jù)本具體情況確定將其映射成寄存器還是連線。綜合器會(huì)根據(jù)本具體情況確定將其映射成寄存器還是連線。 定義格式如下:定義格式如下:reg 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名 i; /變量位寬為一位。變量位寬為一位。例如:例如:reg a,b; /定義兩個(gè)位寬為一位的定義兩個(gè)位寬為一位的reg型變量型變量a和和b?;颍夯颍?reg n-1: 0 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名 i; /變量位寬為變量位寬為n位。位。或:或: reg n: 1 數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)

18、名2,數(shù)據(jù)名數(shù)據(jù)名 i; /變量位寬為變量位寬為n位。位。例如:例如:reg 7:0 qout ; /定義位寬定義位寬 為為8位位reg型變量型變量qout。 reg 8:1 qout ; /定義位寬定義位寬 為為8位位reg型變量型變量qout。 2)integer型型 多用于表示循環(huán)變量,表示循環(huán)次數(shù)。多用于表示循環(huán)變量,表示循環(huán)次數(shù)。integer型變量只型變量只 能被整體使用,不能作為位向量使用。能被整體使用,不能作為位向量使用。 定義格式變量同定義格式變量同reg:integer i,j ; /i、j被定為兩個(gè)被定為兩個(gè)integer變量。變量。5.4 參數(shù)參數(shù) Verilog用參數(shù)

19、用參數(shù)parameter來(lái)定義符號(hào)常量。參數(shù)經(jīng)常用于定義時(shí)來(lái)定義符號(hào)常量。參數(shù)經(jīng)常用于定義時(shí)延和變量的寬度。使用參數(shù)說(shuō)明的參數(shù)只被賦值一次。參數(shù)說(shuō)明形式延和變量的寬度。使用參數(shù)說(shuō)明的參數(shù)只被賦值一次。參數(shù)說(shuō)明形式如下:如下: 參數(shù)名通常用大寫字母表示,而標(biāo)識(shí)名、變量采用小寫字母表示。參數(shù)名通常用大寫字母表示,而標(biāo)識(shí)名、變量采用小寫字母表示。module compare_w(a,b,larger,equal,less) ; /六位數(shù)據(jù)比較器六位數(shù)據(jù)比較器parameter SIZE=6 ; /參數(shù)定義,可以改變參數(shù)定義,可以改變SIZE值值input SIZE-1:0 a,b ;output l

20、arger,equal,less ; wire larger,equal,less ;assign larger=(ab) ;assign equal=(a=b) ;assign less=(ab) ;endmodulemodule add_w(a,b,sum) ; /十六位加法器十六位加法器parameter MSB=15 ; /參數(shù)定義,可以改變參數(shù)定義,可以改變MSB值值input MSB:0 a,b ; output MSB+1 :0 sum ;assign sum= a+b ;endmodulemodule count_w(en,clk,reset,out) ; /八位二進(jìn)制計(jì)數(shù)器八

21、位二進(jìn)制計(jì)數(shù)器input clk,reset,en ; parameter WIDTH=8 ; /參數(shù)定義,可以改變參數(shù)定義,可以改變SIZE值值output WIDTH-1:0 out ; wire WIDTH-1:0 out ;always (posedge clk or negedge reset ) if (!reset) out=0 ; else if ( en ) out=out+1 ;endmodule module johnsont_w(clk,clr,qout) ; /八位約翰遜計(jì)數(shù)器八位約翰遜計(jì)數(shù)器input clk, clr; parameter WIDTH=8 ; /參數(shù)定義,可以改變參數(shù)定義,可以改變WIDTH值值output reg WIDTH-1:0 qout ; always (posedge clk or posedge clr) begin if (clr) oqut=0 ; else begin qout=qout+1 ; qout0 大于大于 = 不小于(大于等于)不小于(大于等于) 45 結(jié)果為假(結(jié)果為假( 0),),5218; 如果真, Grade_A 賦值為Student; 如果

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論