我在Verilog中有52位二进制文件(如f
)。我想将其转换为1.f
。
我该怎么办?
re={1'b1,51'b0};
f=(a[51:0]/re)+1;
在我的Verilog代码中,我做了类似的事情,但输出是0000...0001
。
答案 0 :(得分:0)
结果仍然是" 0000 ... 0001"因为你指定了整数除法。如果你想做浮点除法,你应该声明信号是真实的。例如:
real a = 30.000;
real re = $bitstoreal({1'b1, 51'b0});
f = (a/re)+1;
然而,这对于模拟来说是可以的。如果你想在硬件中完成浮点划分,你最好使用浮点除法IP核。至少Xilinx和Altera都免费提供这个内核。自己重新发明这种复杂的逻辑是不明智的。