(1)2`B01 、 4`H0 、 16`H4012 等的含义
请参考verilog数据常量
数字表达式:<位宽><进制><数字>
’b:二进制 //eg.4'b1110 表示4位二进制数1110
‘h:十六进制 //eg 8'hef、4’ha等
'd:十进制 //eg 2'd3、4‘d15(不能写16,4位宽最大15)等
所以10’d0表示10位宽的数值0,0000000000
加入10‘d15,则表示十进制15, 0000001111
(2),wire型变量和reg型变量区别:
wire的本质是一条没有逻辑的连线,也就是说输入时什么输出也就是什么。wire型数据常用来表示以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z(高组态)。
如果你把wire定义的变量用在有逻辑性的语句中就会出现综合错误:
例如:
在always语句中使用wire型定义的变量赋值,综合器就会报错。
reg型表示的寄存器类型,用于always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x(未知状态)。reg型相对复杂些,其综合后的输出主要还看具体使用的场景:当在组合电路中使用reg,合成后的仍然是net网络;当在时序电路中使用reg合成后的才是register。