Loading

Verilog基本语法 数值表示

引言

本文参考IEEE.1364-2005,对verilog中的语法进行深入学习。

数值表示易混淆点

1)未声明位宽的常数

659 正确 //十进制是默认的,因此不需要'd的开头

'o7460 正确

4af 错误   //十六进制必须要有'h的开头

2)声明位宽的常数

3'b01x //表明一个3位数据,LSB为不确定值

16'hz //表明一个16位的高阻数值

3)有符号的常数

8'd-6 错误 //没有这种表示方法

-8'd6 正确 //以补码表示的6,等价于-(8'd6)

4'shf 正确 //s代表signed 故实际表示4位有符号数1111 以补码表示,原数据为1001,即十进制中的-1

-4'shf 正确 //等价于-(-1)即1

16'sd? 正确 //等价于16'sbz 16位高阻值

自动左补齐

reg [11:0] a;

initial begin

  a='hx; //产生12位x

  a='h3x; //产生12位03x(16进制表示)

  a='hz3; //产生12位zz3  

end

总结:有效数据最低高位是什么,左边就补齐什么。当分配给reg数据类型时,带位宽的负常数和有符号常数被符号扩展,无论reg本身是否有符号。

posted @ 2022-04-09 11:31  月光小猪(已长膘)  阅读(653)  评论(0编辑  收藏  举报