我当前的项目涉及一个地址计数器实体,它输出一个 7 位向量,并且输出 (m) 进入一个正弦查找表实体。所以基本上,我希望 m 是 x,正弦实体的输出是 y。但我的问题在于查找表的条目。如何将实际的实际值转换为 std_logic_vectors?
例如,一个条目的正弦值为 34.1326。它是如何变成向量的?
我当前的项目涉及一个地址计数器实体,它输出一个 7 位向量,并且输出 (m) 进入一个正弦查找表实体。所以基本上,我希望 m 是 x,正弦实体的输出是 y。但我的问题在于查找表的条目。如何将实际的实际值转换为 std_logic_vectors?
例如,一个条目的正弦值为 34.1326。它是如何变成向量的?
尽管 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 更改为更负的值以获得更高的分辨率。
将您的条目乘以值 2^n 并对结果进行四舍五入。结果可以表示为 std_logic_vector,记住它有“n”个逗号后位。在某种程度上选择“n”,四舍五入后的量化就足够了!
例子:
注意:仔细选择您的矢量大小并注意标志