在程序運行過程中,其值不能被改變的量稱為常量。下面首先對在Verilog HDL語言中使用的數字及其
表示方式進行介紹。
一.數字
y 整數:
在Verilog HDL中,整型常量即整常數有以下四種進制表示形式:
1) 二進制整數(b或B)
2) 十進制整數(d或D)
3) 十六進制整數(h或H)
4) 八進制整數(o或O)
數字表達方式有以下三種:
1) <位寬><進制><數字>這是一種全面的描述方式。
2) <進制><數字>在這種描述方式中,數字的位寬采用缺省位寬(這由具體的機器系統
決定,但至少32位)。
3) <數字>在這種描述方式中,采用缺省進制十進制。
在表達式中,位寬指明了數字的精確位數。例如:一個4位二進制數的數字的位寬為4,一個4位十六進制
數的數字的位寬為16(因為每單個十六進制數就要用4位二進制數來表示)。見下例:
8'b10101100 //位寬為8的數的二進制表示, 'b表示二進制
8'ha2 //位寬為8的數的十六進制,'h表示十六進制。
y x和z值:
在數字電路中,x代表不定值,z代表高阻值。一個x可以用來定義十六進制數的四位二進制數的狀態,
八進制數的三位,二進制數的一位。z的表示方式同x類似。z還有一種表達方式是可以寫作?。在使用
case表達式時建議使用這種寫法,以提高程序的可讀性。見下例:
4'b10x0 //位寬為4的二進制數從低位數起第二位為不定值
4'b101z //位寬為4的二進制數從低位數起第一位為高阻值
12'dz //位寬為12的十進制數其值為高阻值(第一種表達方式)
12'd? //位寬為12的十進制數其值為高阻值(第二種表達方式)
8'h4x //位寬為8的十六進制數其低四位值為不定值
y 負數:
一個數字可以被定義為負數,只需在位寬表達式前加一個減號,減號必須寫在數字定義表達式的最前
面。注意減號不可以放在位寬和進制之間也不可以放在進制和具體的數之間。見下例:
-8'd5 //這個表達式代表5的補數(用八位二進制數表示)
8'd-5 //非法格式
y 下劃線(underscore_):
下劃線可以用來分隔開數的表達以提高程序可讀性。但不可以用在位寬和進制處,只能用在具體的數
字之間。見下例:
16'b1010_1011_1111_1010 //合法格式
8'b_0011_1010 //非法格式
當常量不說明位數時,默認值是32位,每個字母用8位的ASCII值表示。
例:
10=32’d10=32’b1010
1=32’d1=32’b1
-1=-32’d1=32’hFFFFFFFF
‘BX=32’BX=32’BXXXXXXX…X
“AB”=16’B01000001_01000010
|