我已经制作了一个I2S发送器,以在我的FPGA中产生“声音”。我想做的下一步是创建一个正弦波。我已经在LUT中制作了16个样本。我的问题是如何在VHDL中实现类似的功能。以及如何按顺序加载样本。谁已经尝试过此方法,并且可以分享他的知识?
我制作了一个包含16个样本的查找表:
OrderID Creation Date User ID Days in Lab Gender Sample Date ID of Sample Card System Sample ID ...
7386 NaN 1999-01-14 NaN NaN Male NaN 000000000000 NaN ...
[7387 rows x 96 columns]
答案 0 :(得分:1)
最简单的解决方案是制作ROM,这只是一个大写的说明。
FPGA综合工具会将其映射到其他LUT上。
请注意,对于较大的表,仅存储了1/4的波形,而其他值则被导出。
我想发送24位样本,您还知道如何使用此数据(二进制!)吗?
24位(带符号)意味着您必须将浮点值转换为-8388608..8388607范围内的整数值。 (出于对称原因,您将使用-8388608..8388607)
因此将正弦值(您知道在-1..1范围内)乘以8388607。
正弦波的频率取决于您发送的速度(每秒采样数)。