如何在Verilog中将有符号二进制转换为整数?
我试图在verilog中将有符号二进制数转换为整数,以便合成显示,我有几个问题。下面是我的代码如何在Verilog中将有符号二进制转换为整数?,verilog,Verilog,我试图在verilog中将有符号二进制数转换为整数,以便合成显示,我有几个问题。下面是我的代码 ..... if(acc[i][j]>10) //acc is a 2d register begin m_reg <= j-const_10; // const_10 is 16'b0000000000001010 m_int <= m_reg; $display("Current value of
.....
if(acc[i][j]>10) //acc is a 2d register
begin
m_reg <= j-const_10; // const_10 is 16'b0000000000001010
m_int <= m_reg;
$display("Current value of M(bits)=%b",m_reg);
$display("Current value of M(int)=%d",m_int);
end
else
....
。。。。。
if(acc[i][j]>10)//acc是一个二维寄存器
开始
m_reg显示时,所有数据均为“二进制”,我们可以选择以二进制、十进制或十六进制显示。输入数据时,我们有相同的选择,但设置和存储的内容保持不变
这些都是一样的:
a = 4'b1111;
a = 4'd15;
a = 4'hf;
要以给定格式显示,请执行以下操作:
$display("Binary %b", a);
$display("Decimal %d", a);
$display("Hex %h", a);
不显示前导0,至少对于十进制,因此可以使用最小宽度
$display("min of 2 Decimal %2d", a);
处理有符号数字:将reg
、逻辑
或wire
声明为有符号
,或在显示时转换
reg [3:0] a;
reg signed [3:0] a_s;
initial begin
a = 4'b1111; // is this 15 or -1 depends on if you read as signed
a_s = 4'b1111; // -1
#1ns;
$display("Decimal converted to signed %d", $signed(a));
$display("Signed Decimal %d", a_s);
end
除非数字中有小数位数,否则它是整数。Reg或logical可以声明为带符号。忽略“synthesis to display”部分,我的意思是说我最终要为合成编码,但在这种情况下,我想显示结果只是为了分析它。因此,如果我将Reg声明为带符号[15:0],然后执行m_int yes,那么为什么要复制到m_int?只需执行<代码>$显示(“M的当前值(位)=%d”,M_reg)代码>哦!我从来不知道我能把它印成那样。谢谢真管用!