iverilog:如何在寄存器中扩展二进制文件



签名的代码的格式是什么,并在寄存器中零扩展二进制?

即。

reg[0:0] a;        //a is 1-bit.
reg[31:0] b, c;    //b and c are 32-bits.
//some code...

sign-extend a添加到32位,将其添加到b中,然后将结果放入c

零扩展 a中的32位,将其添加到b中,然后将结果放入c

这是系统verilog方法:

logic signed a;
logic [31:0] b, c;
...
b = a;

在上面的示例中, b将成为 a的签名延伸值。

有很多签名扩展的方法,我将使用需要最少代码的方法。我们将使用Verilog 复制 confenation 操作。

复制格式: {numberOfTimesToRepeat{value}}

即。{20 {a [0]}}

a 中复制0位20次。

串联格式: {value1, value2}

即。{a,b}

在寄存器中串联二进制文件 a 和register b

to Sign-Extend:

{{{31 {a [0]}},a}

a 中复制0次登记处31次,并在寄存器 a的二进制之前串联。

到零extend:

{{{31 {Zero}},a}//Zero是包含零位的1位寄存器。

复制零值31次,并在寄存器的二进制 a.

之前串联

最新更新