1

我当前的项目涉及一个地址计数器实体,它输出一个 7 位向量,并且输出 (m) 进入一个正弦查找表实体。所以基本上,我希望 m 是 x,正弦实体的输出是 y。但我的问题在于查找表的条目。如何将实际的实际值转换为 std_logic_vectors?

例如,一个条目的正弦值为 34.1326。它是如何变成向量的?

4

2 回答 2

4

尽管 baldyHDL 的答案可行,但您现在可以使用(现在标准且可综合的)定点类型来节省大量手动工作。

您可以选择二进制点左侧和右侧的位数。有一些函数可以直接将实数转换为定点。

您可以在http://www.vhdl.org/fphdl/找到该库

例如:

signal a : sfixed (7 downto -6);

这在点的左边有 7 位(范围为 -64 到 +63),在点的右边有 6 位,每个值 2^-6 = 0.015625。

然后你可以这样做:

s <= to_sfixed(34.1326);

您将获得您所要求的表格中可表示的最接近的数字。鉴于您输入的分辨率,这可能不够接近,因此将 -6 更改为更负的值以获得更高的分辨率。

于 2013-04-12T08:43:22.710 回答
0

将您的条目乘以值 2^n 并对结果进行四舍五入。结果可以表示为 std_logic_vector,记住它有“n”个逗号后位。在某种程度上选择“n”,四舍五入后的量化就足够了!

例子:

  1. 你的价值:34.1326
  2. 目标后逗号:8 位
  3. 新值:34.1326 * 256 = 8737.946
  4. 四舍五入到 8737
  5. 作为 14 位的 std_logic_vector,这是“10001000100010”
  6. 请记住,这基本上是“100010”。“00100010”= 34.132813

注意:仔细选择您的矢量大小并注意标志

于 2013-04-12T06:26:00.997 回答