IIR数字滤波器在TI DSP上的实现
2016-06-23沙岩李娜娜王换换朱晓宁王丹
沙岩+李娜娜+王换换+朱晓宁+王丹
数字滤波器是对数字信号进行滤波处理以得到期望的响应特性的离散时间系统。在众多通用数字信号处理器中,美国TI公司生产的TMS320系列单片DSP在国际上占有较大市场,这种单片DSP把高速控制器的灵活性和阵列处理器的数值计算能力结合起来。
一、IIR数字滤波器结构原理
本文IIR数字滤波器的设计方法:借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现。
从IIR数字滤波器的实现来看,有直接型、级联型、并联型等基本网络结构。其中直接Ⅱ型仅需要N级延迟单元,且可作为级联型和并联型结构中的基本单元。本文以二阶IIR滤波器的直接实现形式表示。其系统函数H(z)可以表示为:
在编程时,可以将变量和系数都存在DARAM中,采用循环缓冲区方式寻址,共需开辟4个缓冲区,用来存放变量和系数。
二阶IIR滤波器的直接IIR 型差分方程为:
(3)
二、IIR数字滤波器在C54x上的设计与实现
1.IIR数字滤波器在TMS320VC5409 DSP上的实现流程
1.1根据指标确定滤波器的类型,设计出滤波器的参数;
1.2根据DSP的特点(字长、精度等)对参数进行取舍、量化,仿真;
1.3根据仿真结果对滤波器的结构、参数再次进行调整,直到满足要求为止;
1.4在DSP上用语言实现滤波器功能。
2.IIR数字滤波器在TMS320VC5409 DSP上的实现算法
从理论上说,可以用高阶IIR数字滤波器实现良好的滤波效果[2]。但由于DSP本身有限字长和精度的因素,加上IIR滤波器在结构上存在反馈回路,是递归型的,再者高阶滤波器参数的动态范围很大。这样一来造成两个后果:结果溢出和误差增大。解决此问题的有效方法是把高阶IIR数字滤波器简化成几个2阶滤波器来设计,即采用级联结构。
通过CCS的数据输入输出功能和RTDX功能,可以随时观察DSP结果和理论仿真结果之间的差异,及时发现数据的溢出和计算误差 [3]。滤波没有产生溢出现象且滤波效果满足设计要求。采用间接寻址指向数据存储单元,主要指令为加法、乘法和循环实现,这些都可以通过MAC等指令直接实现[4]。
三、IIR滤波器性能仿真和实际测试
1.在CCS环境下实现IIR数字滤波器
在CCS环境中用汇编语言编写一个实现IIR数字滤波器的程序及链接器命令文件,最终通过CCS的图形显示工具观察输入信号和输出信号波形以及频谱的变换。
采用双线性变化法设计,主要技术指标如下:Fp=100Hz,Fst=300Hz,Rp=3dB,Rs=20dB,取样频率为1000Hz。
滤波器采用巴特沃思模拟低通滤波器设计,经计算可得:
2.结果分析
由MATLAB编程生成的IIR数字滤波器的输入数据。频率分别为50赫兹和350赫兹的两个频率信号,经过此IIR滤波器后,频率为350赫兹的信号得到一定程度的压制,频率为50赫兹的信号被保留,基本上达到预期的滤波效果。但因为滤波器的性能不是非常理想,因此引入一定的噪声(比如150Hz频段)。输入、输出信号的1频谱图见图1。
本文介绍了一种基于C5409硬件平台的IIR数字滤波器实现方案。IIR数字滤波器是针对采样率固定的系统设计的,更改系统或系统采样率改变时应重新设计。用到的数据存储单元,程序开始时应对这些单元进行初始化。如果要进行连续滤波,应保存上一次滤波的结果。针对TI公司的TMS320VC5409 DSP,阐述了IIR数字滤波器的理论设计及在DSP上的实现过程。根据其实现思路,可以很方便设计出符合要求的滤波器。该方法具有较强的实用性。
参考文献
[1]彭启琮,管庆,李玉柏.DSP技术的发展与应用.北京:高等教育出版社,2012
[2]张伟雄,徐光辉,陈亮.DSP芯片的原理与开发应用.北京:电子工业出版社,2013
[3]彭启琮.TMS320VC54x实用教程.成都:电子科技大学出版社,2010
[4]刘顺兰,吴杰.数字信号处理.西安:西安电子科技大学出版社,2013