在Verilog中写位数的最佳方法是什么?

时间:2016-04-28 04:21:46

标签: verilog system-verilog

用于在Verilog中写入该位,这在以下写作中更好:

假设32位数据和所有32位都设置为零:

1)32'b0

2)32 {1'b0}?

另一方面,我想将5个MSB位更改为1:

1){5'b1,26'b0}

2){5 {1'b1},26 {1'b0}}

1或2更好?或者他们的行为是一样的?提前谢谢。

感谢
崇汉

1 个答案:

答案 0 :(得分:6)

Verilog有很好的处理表达式位宽的方法。一方面,您可以轻松地将一定宽度的表达式指定给另一个宽度的变量,并自动填充或截断表达式以适合变量。另一方面,您可以将一定宽度的表达式指定给另一个宽度的变量,并以静默方式填充或截断表达式以适合变量。

在SystemVerilog中,如果要将变量的所有位设置为0,则编写

VariableName = '0;

表达式'0的大小将调整为它所分配的变量的上下文。无需声明特定宽度。但即使你写了

VariableName = 0;

无需调整0的大小,因为它会被截断或用0填充以适应变量。 您编写的前两个表达式没有区别。它归结为如何将值视为整数或一组32个单独的位。

后两个表达式不代表相同的值。 {5&#39; b1,26&#39; b0}是32&#39; h 08 00_0000和{5 {1&#39; b1},26 {1&#39; b0}}是32& #39; H的 F8 00_0000。如果你真的想要设置一个比特位置,大多数人从LSB开始从0开始命令它们的位,并写出类似32'b1 << 26的东西。