我正在使用 C 语言开发一个微控制器 DDS 项目,并且在弄清楚如何计算线性插值以平滑输出值时遇到了一些麻烦。现在的程序
使用 24 位累加器的前 8 位作为 8 位输出值数组的索引。我需要想出一个函数,它将获取累加器的中字节和低字节,并在数组中的“上一个”和“下一个”值之间生成一个值。这在快速硬件上已经足够简单了,但是由于我使用的是微控制器,所以我真的需要避免进行任何浮点运算或除法!
有了这些限制,我不确定从我的两个 8 位输入数字和累加器的低 2 个字节中获取 8 位内插值的方法,它代表两个输入值之间的“距离”。提前感谢您的任何建议!
澄清
DDS = 直接数字合成
在 DDS 中,波形是使用相位累加器从查找表中生成的。相位累加器通常包含一个整数分量和一个小数分量。整数部分用作查找表的索引。在简单的 DDS 实现中,小数部分被忽略,但为了获得更高质量的输出,小数部分用于在相邻查找表值之间进行插值(通常只是线性插值)。对于上述问题,我们正在研究如何有效地在给定分数 f 的两个查找表值之间执行这种线性插值,其中0 <= f < 1
。