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

时间:2017-06-26 18:48:56

标签: verilog iverilog

在寄存器中对二进制符号进行符号扩展和零扩展的代码格式是什么?

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

2 个答案:

答案 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的二进制文件之前连接。