超声波流量计多普勒原理的探讨 六十六
5.2.3 DSP中FIR滤波程序实现
TMS320C55X定点DSP提供了单周期乘/累加指令MAC和循环寻址方式,使FIR数字滤波器每个样值的计算可以在一个周期内完成。FIR数字滤波器每个样值的计算就是实现两数组对应项乘积的累加和。采用RPTZ和MAC指令结合循环寻址方式可以方便地实现这一运算,其中,RPTz指令将累加器清零初始化,并将立即数N.1(16位)装入到重复
计数器,使下一条指令重复执行N次。MAC指令实现将两存储区数的乘积累加到累加器,再通过使存储区指针以循环寻址的方式指向下一个存储区。
为了实现对应项相乘,输入样值x(n)和滤波器系数h(n)必须合理存放,并正确初始化这两个存储块指针。图5.2中是输入样值x(n)和滤波器系数h(n)在TMS320C55x的一种存放方法。
利用DSP5509实现FIR的程序中应注意以下几点:
1.数据定标。输入数据和滤波器系数均小于1,以Q15表示,将FRCT标志置l,输入数据与滤波器系数乘完后结果自动左移一位,和累加器并取高16位输出。这样,输出和输入的Q值就一致了。
2.数据存放要求。因为采用MAC指令和循环寻址,所以输入数据和滤波器系数的存放要安照一定的要求。数据块和系数块都要放在双寻址数据存储区。并且,起始地址为m位地址边界。
3.循环寻址的使用。为了使用循环寻址,除了对数据饿存放有要求外,先还要设置BK为块长N。由于使用了循环寻址,数据和系数的指针在操作后以循环的方式增1.4.数据的初始化。输入数据块要初始化为全0。
超声波流量计