【问题标题】:Non-integer values in verilogverilog 中的非整数值
【发布时间】:2014-06-22 13:04:42
【问题描述】:

有没有办法在 verilog 中存储和计算非整数值(比如 x = 5/2 = 2.5 )。 我可以在上面定义的 x 中计算和存储 2.5 吗?

【问题讨论】:

  • 您可以随心所欲地处理位,并且有很多方法可以对非整数进行编码。但我想你是在要求 Verilog 内置的东西?
  • 是的,我们是否有任何关键字或函数可以使用它们将非整数值也存储到寄存器中(例如,有符号表示我们正在将有符号数字存储到寄存器中)。
  • SystemVerilog 语言中有real 数据类型用于建模,但如果你问的是可以合成到硬件中的内置类型,那是不存在的。

标签: verilog system-verilog hdl


【解决方案1】:

是的,您可以使用real registers 来存储实际值,即:

real float; // a register to store real value 

通常它是一个 64 位宽的数据类型,用于存储浮点值。但并非所有 Verilog 运算符都可以与涉及实数和实数寄存器的表达式一起使用。不允许对实类型变量进行串联、取模运算符、大小写相等、按位运算符、归约运算符移位运算符、位选择和部分选择。

简单示例:

module ecample;
real r;

initial begin 
  r = 123456e-3;
  $display("r=%f",r); // r = 123.456000
  #20 r = r / 2;
  $display("r=%f",r); // r = 61.728000
  $finish; 
end 
endmodule 

【讨论】:

  • 确实支持数组。我可以声明像真正的 r[0:10][0:10] 吗??
  • 由于用户使用 SystemVerilog 标记了问题,我认为这就是他们正在使用的。是的,SystemVerilog 中有任何类型的数组
  • @dave_59:它也被标记为Verilog,其中没有真正的数组。
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多