【verilog】verilog数值表示

1. 数值种类

verilog HDl 有 4 种基本的值表示硬件电路的电平逻辑:

  • 0:逻辑 0 或假
  • 1:逻辑 1 或真
  • x/X:未知
  • z/Z:高阻

x 表示信号值不确定,此时信号可能是 0,也可能是 1.

z 表示信号处于高阻状态,信号没有驱动时,常常是高阻状态。

2. 整数数值表示方法

数字声明时,合法的基数格式有 4 种:

  • 二进制(b/B)
  • 八进制(o/O)
  • 十进制(d/D)
  • 十六进制(h/H)

2.1 数值可指明位宽,也可补指明位宽

2.1.1 指明位宽

8'b1000_0001 /// 8位宽二进制数
8'o201       /// 8位宽八进制数
8'd129       /// 8位宽十进制数
8'h81        /// 8位宽十六进制数

笔记

其中,下划线 _ 只是增强代码的可读性,没有实际意义。


2.1.2 不指明位宽

assign cnt = b'1000_0001 ;
assign cnt = o'201       ;
assign cnt = d'129       ;
assign cnt = h'81        ;

笔记

不指明位宽时,常见编译器(vivado 等)默认为 32 bit。

例如:cnt = b’1000_0001 等价于 cnt = 32’b 1000_0001。


2.1.3 负数表示

通常在表示位宽的数字前面加一个 -(减号) 来表示复数。

例如:

-8'b 1000_0001 /// 8 位宽二进制数
-8'o 201       /// 8 位宽八进制数
-8'd 129       /// 8 位宽十进制数
-8'h 81        /// 8 位宽十六进制数

2.2 实数表示方法

实数表示方法主要有两种方式:

例如:

/// 十进制

7
77
-7
-77

/// 科学计数法

1.7e7   /// 大小为17000000
1.7-e7  /// 大小为0.00000017

2.3 字符串表示方法

字符串是由双引号包起来的字符队列。

字符串不能多行书写,即字符串不能包含回车符,也就是说字符串不能换行。

verilog 将字符串当作一些列单字节 ASCII 字符队列。

例如:

/// 存储"hello,world!"的字符串

reg [12*8-1:0] str ;

initial begin
	str = "hello,world!";
end

笔记

在表达式和赋值语句中,用作操作的字符被视为由 8 bit 的 ASCII 码表示的无符号整数常量。

例如:上面的 str 位宽就是 12*8。


3. 总结

  1. 掌握不同进制的数值(包括负数)的表示方法。
  2. 不指明位宽时,编译器(vivado 等)默认为 32 位宽。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值