如何在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

我试图在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 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)哦!我从来不知道我能把它印成那样。谢谢真管用!