集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1317|回复: 2

Verilog中的数字

[复制链接]
fpga_feixiang 发表于 2020-7-16 15:55:10 | 显示全部楼层 |阅读模式
信号值如果为标量,则为一位的0,1,x或z。例如:

a = 1’b0; b = 1’b1;

c = x; d = z;

      对于矢量,通常表示为:[size]’[radix]constant, 标量也可以当作size=1的矢量。其中size表示常数的位数,radix为常数的基数。如果没有指定基数,则默认为十进制。Verilog支持的基数有:d(十进制),b(二进制),h(十六进制),o(八进制)。如果定义的位数大于所需要的位数时,通常在前面补0,但是如果最高位是x或z时候,就用x和z来填充。在常量表示中间,可以任意插入下划线,把数字隔开,以方便阅读。可以在基数前面加s(或者S)以表示这是一个有符号数,若未指定一个整数的进制类型,则默认是有符号数,若指定了进制类型,仅当基数前有s,则其为有符号数,否则为无符号数。对于有符号数,如果定义的位数大于所需要的位数时,前面补最高有效位(MSB),如下表中的8’sha9。

下面是一些实例:

数字表示

二进制

注释

reg [31:0] a = 8'sha9

‘11111111111111111111111110101001

8位有符号数,所以进行MSB位扩展,

reg [31:0] b = 4'd5

’00000000000000000000000000000101

4位无符号数,高位补0

reg [31:0] c = 12'h5b_3

‘00000000000000000000010110110011

忽略下划线,12位的无符号数,高位补0

reg [31:0] d = -8'b101

’11111111111111111111111111111011

负数转为补码表示,MSB位扩展到32位

reg [31:0] e= 10'o752

‘00000000000000000000000111101010

8进制无符号数,高位补0

reg [31:0] f = 8'hf

’00000000000000000000000000001111

16进制无符号数,高位补0

reg [31:0] g = 12'hxa

‘00000000000000000000xxxxxxxx1010

左边补x直到12位,然后高位补0

reg [31:0] h = -8'sha9

’00000000000000000000000001010111

补码表示负数,扩展MSB位,

reg [31:0] i = 8'ha9

‘00000000000000000000000010101001

无符号数,高位补0

reg [31:0] j = -4'sha

’00000000000000000000000000000110

补码表示负数,扩展MSB位。
zxopenhl 发表于 2020-7-19 16:04:16 | 显示全部楼层
Verilog中的数字
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 03:31 , Processed in 0.057976 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表