0

所以我在 Verilog 上使用 64 位浮点数进行综合,所有都在 {-1,1} 的区域内。现在,我正在尝试创建类似于直方图的东西,我想我可以通过创建 RAM 来像 2D 数组一样工作。但我面临四舍五入的问题。

例如,

我的值为 0.94394(FltPt)。我想把它转换成公正的,

0.82394 = 8 和 0.8862 =9(所有数据都在 64 位 flt pt 中)

这样我就可以访问 RAM 上的特定地址。

什么是最理想的方法来解决这个问题,使用另一个乘数是太多的开销。我可以通过截断部分位来做一些技巧吗?我应该将它们转换为定点吗?

4

1 回答 1

0

我能想到的两个选项:最简单的方法是更改​​您的 bin,使边界为 2 的幂。然后您可以直接使用输入的一些位来处理您的直方图。我必须查看浮点格式才能知道要使用哪些位。

另一种可能性是只做一堆比较,看看放什么箱子。L 你会为两个坐标都这样做。

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
于 2013-11-09T12:06:06.587 回答