在寄存器中对二进制符号进行符号扩展和零扩展的代码格式是什么?
即
reg[0:0] a; //a is 1-bit.
reg[31:0] b, c; //b and c are 32-bits.
//some code...
将a
签名扩展为32位,将其添加到b
,然后将结果放入c
。
将a
零扩展为32位,将其添加到b
,并将结果放入c
。
答案 0 :(得分:1)
这是一个系统verilog方式:
Quicksort
上述示例中的 logic signed a;
logic [31:0] b, c;
...
b = a;
将成为b
的符号扩展值。
答案 1 :(得分:0)
签名扩展有很多种方法,我将使用需要最少量代码的方法。我们将使用Verilog 复制和连接操作。
复制格式: {numberOfTimesToRepeat{value}}
即。 {20 {A [0]}}
复制 a
寄存器中的第0位20次。
连接格式: {value1, value2}
即。 {a,b}
连接注册表中的二进制文件 a
并注册 b
。
签署延期:
{{31 {a [0]}},a}
复制 a
寄存器中的第0位31次,并在寄存器 a
的二进制位之前连接。
零延伸:
{{31 {zero}},a} // 0是一个包含零位的1位寄存器。
将值零重复31次,并在寄存器 a
的二进制文件之前连接。