verilog中的划分和浮点

时间:2015-03-25 18:54:03

标签: floating-point verilog division

我在Verilog中有52位二进制文​​件(如f)。我想将其转换为1.f。 我该怎么办?

re={1'b1,51'b0};
f=(a[51:0]/re)+1;

在我的Verilog代码中,我做了类似的事情,但输出是0000...0001

1 个答案:

答案 0 :(得分:0)

结果仍然是" 0000 ... 0001"因为你指定了整数除法。如果你想做浮点除法,你应该声明信号是真实的。例如:

real a = 30.000;
real re = $bitstoreal({1'b1, 51'b0});
f = (a/re)+1;

然而,这对于模拟来说是可以的。如果你想在硬件中完成浮点划分,你最好使用浮点除法IP核。至少Xilinx和Altera都免费提供这个内核。自己重新发明这种复杂的逻辑是不明智的。