代码在寄存器中对二进制进行签名扩展和零扩展的格式是什么?Verilog:如何在注册表中扩展二进制文件?
即
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
。
代码在寄存器中对二进制进行签名扩展和零扩展的格式是什么?Verilog:如何在注册表中扩展二进制文件?
即
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
。
签名扩展有很多方法,我将使用需要最少量代码的方法。我们将使用Verilog 复制和串联操作。
复制格式:{numberOfTimesToRepeat{value}}
即{20 {A [0]}}
复制第0位在a
寄存器20倍。
级联格式:{value1, value2}
即{A,B}
串接中寄存器二进制a
和寄存器b
。之前
{{31 {A [0]}},一个}
复制第0位在a
寄存器31次,并连接:
符号扩展二进制寄存器a
。
要零扩展:
{{31 {零}},一个} //零是含有零位的1位寄存器。
将值零复制31次,并连接在寄存器a
的二进制之前。
@toolic你能解释你在那里做了什么吗?谢谢 – NoName
'reg [0:0] a;'=>'reg a;'这是一点。 –