【问题标题】:What is the best way to write bit number in Verilog?在 Verilog 中写入位数的最佳方法是什么?
【发布时间】:2016-04-28 04:21:45
【问题描述】:

对于在Verilog中写位,下面的写法比较好:

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

1) 32'b0

2) 32{1'b0} ?

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

1) {5'b1,26'b0}

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

1 还是 2 更好?还是他们的行为相同?提前致谢。

谢谢
冲汉

【问题讨论】:

    标签: verilog system-verilog


    【解决方案1】:

    Verilog 处理表达式位宽的方法有好有坏。一方面,您可以轻松地将某个宽度的表达式分配给另一个宽度的变量,并且它会自动填充或截断表达式以适应变量。另一方面,您可以将某个宽度的表达式分配给另一个宽度的变量,它会默默地填充或截断表达式以适应变量。

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

    VariableName = '0;
    

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

    VariableName = 0;
    

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

    后两个表达式不代表相同的值。 {5'b1,26'b0} 是 32'h0800_0000 和 {5{1'b1},26{1'b0}} 是 32'hF8 00_0000。如果你真的想设置一个位位置,大多数人从 LSB 开始从 0 开始排序他们的位,并且会写像32'b1 << 26 这样的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 2020-12-29
      • 2015-01-30
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多