2. 基數(shù)表示法
這種形式的整數(shù)格式為:
[size ] 'base value
size 定義以位計(jì)的常量的位長;base為o或O(表示八進(jìn)制),b或B(表示二進(jìn)制),d或D(表示十進(jìn)制),h或H(表示十六進(jìn)制)之一;value是基于base的值的數(shù)字序列。值x和z以及十六進(jìn)制中的a到f不區(qū)分大小寫。
下面是一些具體實(shí)例:
5'O37 5位八進(jìn)制數(shù)
4'D2 4位十進(jìn)制數(shù)
4'B1x_01 4位二進(jìn)制數(shù)
7'Hx 7位x(擴(kuò)展的x), 即xxxxxxx
4'hZ 4位z(擴(kuò)展的z) , 即zzzz
4'd-4 非法:數(shù)值不能為負(fù)
8'h 2 A 在位長和字符之間,以及基數(shù)和數(shù)值之間允許出現(xiàn)空格
3'b001 非法: ` 和基數(shù)b之間不允許出現(xiàn)空格
(2+3)'b10 非法:位長不能夠?yàn)楸磉_(dá)式
注意,x(或z)在十六進(jìn)制值中代表4位x(或z),在八進(jìn)制中代表3位x(或z),在二進(jìn)制中代表1位x(或z)。
基數(shù)格式計(jì)數(shù)形式的數(shù)通常為無符號數(shù)。這種形式的整型數(shù)的長度定義是可選的。如果沒有定義一個(gè)整數(shù)型的長度,數(shù)的長度為相應(yīng)值中定義的位數(shù)。下面是兩個(gè)例子:
'o721 9位八進(jìn)制數(shù)
'hAF 8位十六進(jìn)制數(shù)
如果定義的長度比為常量指定的長度長,通常在左邊填0補(bǔ)位。但是如果數(shù)最左邊一位為x或z,就相應(yīng)地用x或z在左邊補(bǔ)位。例如:
10'b10 左邊添0占位, 0000000010
10'bx0x1 左邊添x占位,xxxxxxx0x1
如果長度定義得更小,那么最左邊的位相應(yīng)地被截?cái)?。例如?br />
3'b1001_0011與3'b011 相等
5'H0FFF 與5'H1F 相等
?字符在數(shù)中可以代替值z在值z被解釋為不分大小寫的情況下提高可讀性(參見第8章)。
3.6.2 實(shí)數(shù)
實(shí)數(shù)可以用下列兩種形式定義:
1) 十進(jìn)制計(jì)數(shù)法;例如
2.0
5.678
11572.12
0.1
2. //非法:小數(shù)點(diǎn)兩側(cè)必須有1位數(shù)字
2) 科學(xué)計(jì)數(shù)法; 這種形式的實(shí)數(shù)舉例如下:
23_5.1e2 其值為23510.0; 忽略下劃線
3.6E2 360.0 (e與E相同)
5E-4 0.0005
Verilog語言定義了實(shí)數(shù)如何隱式地轉(zhuǎn)換為整數(shù)。實(shí)數(shù)通過四舍五入被轉(zhuǎn)換為最相近的整數(shù)。
42.446, 42.45 轉(zhuǎn)換為整數(shù)42
92.5, 92.699 轉(zhuǎn)換為整數(shù)93
-15.62 轉(zhuǎn)換為整數(shù)-16
-26.22 轉(zhuǎn)換為整數(shù)-26
3.6.3 字符串
字符串是雙引號內(nèi)的字符序列。字符串不能分成多行書寫。例如:
"INTERNAL ERROR"
"REACHED->HERE"
用8位ASCII值表示的字符可看作是無符號整數(shù)。因此字符串是8位ASCII值的序列。為存儲字符串“INTERNAL ERROR”,變量需要8*14位。
reg [1 : 8*14] Message;
. . .
Message = "INTERNAL ERROR"
反斜線 (\ ) 用于對確定的特殊字符轉(zhuǎn)義。
\n 換行符
\t 制表符
\\ 字符\本身
" 字符"
\206 八進(jìn)制數(shù)206對應(yīng)的字符
3.7 數(shù)據(jù)類型
Verilog HDL 有兩大類數(shù)據(jù)類型。
1) 線網(wǎng)類型。net type 表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動元件的值決定,例如連續(xù)賦值或門的輸出。如果沒有驅(qū)動元件連接到線網(wǎng),線網(wǎng)的缺省值為z。
2) 寄存器類型。register type表示一個(gè)抽象的數(shù)據(jù)存儲單元,它只能在always語句和initial語句中被賦值,并且它的值從一個(gè)賦值到另一個(gè)賦值被保存下來。寄存器類型的變量具有x 的缺省值。
3.7.1 線網(wǎng)類型
線網(wǎng)數(shù)據(jù)類型包含下述不同種類的線網(wǎng)子類型。
* wire
* tri
* wor
* trior
* wand
* triand
* trireg
* tri1
* tri0
* supply0
* supply1
簡單的線網(wǎng)類型說明語法為:
net_kind [msb:lsb] net1, net2, . . . , netN;
net_kind 是上述線網(wǎng)類型的一種。msb和lsb 是用于定義線網(wǎng)范圍的常量表達(dá)式;范圍定義是可選的;如果沒有定義范圍,缺省的線網(wǎng)類型為1位。下面是線網(wǎng)類型說明實(shí)例。
wire Rdy, Start; //2個(gè)1位的連線。
wand [2:0] Addr; //Addr是3位線與。
當(dāng)一個(gè)線網(wǎng)有多個(gè)驅(qū)動器時(shí),即對一個(gè)線網(wǎng)有多個(gè)賦值時(shí),不同的線網(wǎng)產(chǎn)生不同的行為。例如,
wor Rde;
. . .
assign Rde = Blt & Wyl;
. . .
assign Rde = Kbl | Kip;
本例中,Rde有兩個(gè)驅(qū)動源,分別來自于兩個(gè)連續(xù)賦值語句。由于它是線或線網(wǎng),Rde的有效值由使用驅(qū)動源的值(右邊表達(dá)式的值)的線或(wor)表(參見后面線或網(wǎng)的有關(guān)章節(jié))決定。
1. wire和tri線網(wǎng)
用于連接單元的連線是最常見的線網(wǎng)類型。連線與三態(tài)線(tri)網(wǎng)語法和語義一致;三態(tài)線可以用于描述多個(gè)驅(qū)動源驅(qū)動同一根線的線網(wǎng)類型;并且沒有其他特殊的意義。
wire Reset;
wire [3:2] Cla, Pla, Sla;
tri [ MSB-1 : LSB +1] Art;
如果多個(gè)驅(qū)動源驅(qū)動一個(gè)連線(或三態(tài)線網(wǎng)),線網(wǎng)的有效值由下表決定。
wire (或 tri) 0 1 x z
0 0 x x 0
1 x 1 x 1
x x x x x
z 0 1 x z
下面是一個(gè)具體實(shí)例:
assign Cla = Pla & Sla;
. . .
assign Cla = Pla ^ Sla;
電子發(fā)燒友App

















評論