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