所以我在Verilog上使用64位浮点数进行合成,所有都在{-1,1}的区域内。现在,我正在尝试创建类似直方图的东西,我想我可以通过创建一个像二维数组一样工作的RAM来做。但我正面临着四舍五入的问题。
例如,
我的值为0.94394(FltPt)。我想将此转换为just,
0.82394 = 8和0.8862 = 9(所有数据均为64位flt pt)
这样我就可以访问RAM上的特定地址了。
使用另一个乘数来解决这个问题最理想的方法是开销过高。是否有一些技巧可以通过截断部分位来做到?我应该将它们转换为固定点吗?
答案 0 :(得分:0)
我能想到的两个选择: 最简单的是更改您的bin,因此边界是2的幂。然后您可以直接使用输入的某些位来处理直方图。我必须去看浮点格式才能知道要使用哪些位。
另一种可能性就是进行一系列比较以查看要放入哪个bin。大号 您可以为两个坐标执行此操作。
reg [4:0] ram_aadr;
always @* begin
if(data < -.95)
ram_addr = 5'd0;
else if(data < -.85)
ram_addr = 5'd1;
...
else if(data < .95)
ram_addr = 5'd19;
else
ram_addr = 5'd20;
end