签名的代码的格式是什么,并在寄存器中零扩展二进制?
?即。
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
.