FIR的DSP实现
数字滤波是DSP的最基本应用,利用MAC(乘,累加)指令和循环寻址可以方便地完成滤波运算。FIR滤波算法实际上是一种乘法累加运算,它不断地从输入端读入样本值,经延时,做乘法累加,再输出滤波结果。在实际编程中,通常使用线性缓冲区法和循环缓冲区法。
线性缓冲区法又叫延迟线法。其方法是:对于长度为N的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区,存放最新的N个样本;滤波时从最老的样本开始,每读一个样本后,将此样本向下移位;读完最后一个样本后,输入最新样本至缓冲区的顶部。
循环缓冲区法,对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的循环缓冲区,滑窗中存放最新的N个输入样本值。每次输入新的样本时,新的样本将改写滑窗中最老的数据,其他数据则不需要移动。
|