Verilog中的数字
信号值如果为标量,则为一位的0,1,x或z。例如:a = 1’b0; b = 1’b1;
c = x; d = z;
对于矢量,通常表示为:’constant, 标量也可以当作size=1的矢量。其中size表示常数的位数,radix为常数的基数。如果没有指定基数,则默认为十进制。Verilog支持的基数有:d(十进制),b(二进制),h(十六进制),o(八进制)。如果定义的位数大于所需要的位数时,通常在前面补0,但是如果最高位是x或z时候,就用x和z来填充。在常量表示中间,可以任意插入下划线,把数字隔开,以方便阅读。可以在基数前面加s(或者S)以表示这是一个有符号数,若未指定一个整数的进制类型,则默认是有符号数,若指定了进制类型,仅当基数前有s,则其为有符号数,否则为无符号数。对于有符号数,如果定义的位数大于所需要的位数时,前面补最高有效位(MSB),如下表中的8’sha9。
下面是一些实例:
数字表示
二进制
注释
reg a = 8'sha9
‘11111111111111111111111110101001
8位有符号数,所以进行MSB位扩展,
reg b = 4'd5
’00000000000000000000000000000101
4位无符号数,高位补0
reg c = 12'h5b_3
‘00000000000000000000010110110011
忽略下划线,12位的无符号数,高位补0
reg d = -8'b101
’11111111111111111111111111111011
负数转为补码表示,MSB位扩展到32位
reg e= 10'o752
‘00000000000000000000000111101010
8进制无符号数,高位补0
reg f = 8'hf
’00000000000000000000000000001111
16进制无符号数,高位补0
reg g = 12'hxa
‘00000000000000000000xxxxxxxx1010
左边补x直到12位,然后高位补0
reg h = -8'sha9
’00000000000000000000000001010111
补码表示负数,扩展MSB位,
reg i = 8'ha9
‘00000000000000000000000010101001
无符号数,高位补0
reg j = -4'sha
’00000000000000000000000000000110
补码表示负数,扩展MSB位。 Verilog中的数字
页:
[1]