摘要:
数字滤波,是数字信号处理的基本核心内容之一,占有极重要的地位。它通过对采样数据信号进行数学运算处理来达到频域滤波目的,是图像处理、语音处理、模式识别、通信、软件无线电、谱分析等应用中的一个基本处理算法。与模拟滤波器相比,数字滤波器不用考虑器件的噪声、电压漂移、温度漂移等问题,可以容易的实现不同幅度和相位频率等特性指标,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用很受欢迎。现在通过DSP编程并结合TI公司的数字信号处理器TMs320VC5402设计了一款稳定度高,低功耗的IIR数字滤波器
系统,并完成了软硬调试工作。
关键字:数字滤波器,DSP,IIR ,低功耗 ,稳定
Abstract:Digital filtering of digital signal processing, is one of the basic core contents, occupies an important
position. It through sampling data signals of mathematical operation treatment to achieve the frequency domain filtering purposes, image processing, audio processing, pattern recognition, communications, software radio, spectral analysis of applications such as a fundamental algorithms. Compared with simulation filter, digital filters need not consider device of noise, voltage drift, temperature drift, can easily achieve different amplitude and phase frequency characteristic indices, able to handle such low frequency signal, frequency response characteristics but make it very close to ideal characteristics, and the precision can reach high, easy integration etc, these advantages determines the application of digital filter is very popular. Now through DSP programming and combined with TI company's digital signal processor TMs320VC5402 design in a high degree of stability, low power consumption, IIR digital filter system and completed soft debugging.
Keywords: Digital filters, DSP, IIR, low power consumption, stable
一、IIR数字滤波器的理论分析
从IIR数字滤波器的实现来看,有直接型、级联型、并联型和格型等基本网络结构。不同的结构
[3]
形式会有不同的运算误差,其稳定性、运算速度、所占用的存储空间等也有所不同。其中直接Ⅱ型仅需要N级延迟单元,且可作为级联型和并联型结构中的基本单元,是最常用的IIR数字滤波器结构
[4]
之一。IIR数字滤波器的设计方法有两类,一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要作辅助工具。对系统传递函数为
M H(z)??bzrr?0Nk?0?r
1??akz?k对应的差分方程为:
y(n)??brx(n?r)??aky(n?k)
r?0k?1MN
1
的IIR数字波滤器来说,设计的任务就是寻求一种因果关系和物理上可实现的系统传递函数使H(z)满足上述的关系,为此可这样使其频率响应能够满足所希望得到的频域指标。
二、TMS320C5402的体系结构
TMS320VC5402处理器在本系列中处于先进水平。它具有运算速度快,内部存储空间大,外部接口性能好等优点。所以我选择了技术上比较先进,价格又较便宜的C5402作为硬件开发对象。下面结合C5402的实际情况,介绍一下该芯片的体系结构。C5402共有144个引脚,其中有20根地址线AO-A19,16根数据线DO-D15,4个外部可屏蔽引脚INTO#-INT3#和一个不可屏蔽中断引脚BIO#,剩下的引脚可以分成以下几类:存储器控制引脚,时钟/晶振引脚,多通道缓冲串口引脚,主机接口通讯引脚,电源引脚,初始化和复位引脚,通用输入/输出引脚,以及用于测试的IEEE1149. 1标准JTAG口。
三、IIR数字滤波器的设计流程
在设计滤波器时首先要有清晰的思路,因此流程图的设计至关重要。本设计采用的是基于DSP的IIR数字滤波,针对其要完成的功能,对其流程进行了初步规划,如图8所示:
2
开始系统初始化分配数据空间设置数据指针从指定端口读数据x(n)并从数据存储器读读取系数完成数据的乘加运算修改数据指针为下一次乘加运算做准备保存结果从指定端口输出结果 图1 IIR数字滤波器设计流程
根据设计流程,通过DSP仿真软件编译出适合参数要求的汇编程序。运用汇编语言进行程序编写使其具有更好的实时性,此外运用汇编语言编写更有助于以后的设计拓展。 利用TMS320C5402实现IIR的程序中应注意以下几点:
(1)数据存放要求。因为采用MAC指令和循环寻址,所以输入数据和滤波器系数的存放要按照一定的要求。数据块和系数块都要放在双寻址数据存储区。
(2)循环寻址的使用。为了使用循环寻址,除了对数据的存放有要求外,先还要设置BK为块长N。由于使用了循环寻址,数据和系数的指针在操作后以循环的方式增加1。
(3)数据的初始化。输入数据块要初始化为全0。这样在运算中不会对输入产生影响。
四、IIR数字滤波器的软件和硬件设计
3
4.1基于DSP的IIR数字滤波器的软件设计 4.1.1 IIR数字滤波器的数据存储器设计
TMS320C54X定点DSP提供了单周期乘/累加指令MAC和循环寻址方式,使IIR数字滤波器每个样值的计算可以在一个周期内完成。IIR数字滤波器每个样值的计算就是实现两数组对应项乘积的累加和。在计算时有前向通道和反馈通道两部分,因此在计算设计时要充分考虑x(n)、y(n)和h(n)系数的存放位置,并正确初始化这两个存储块指针,这样在计算中才能够准确的提取数据,实现乘加运算。图7是IIR滤波器数据存放和系数表:
数据存储器X:AR2X0X1X2AR1COEF:数据存储器B2B1B0A2A1
图2 IIR滤波器数据存放和系数表
在程序设计中,首先将数据放入相应的段中, X数据指针AR2指向X0,同时将H(n)的指针AR1指向B0,利用乘加指令完成前向通道的一次运算;接着修改指针,AR2指针增1,H(n)的指针AR1减1,依次完成前向通道的乘加运算;反馈通道应用同样的方法进行乘加。在程序设计时,可以采用先增益后衰减的方法,亦可采用先衰减后增益的方法。但是采用先衰减后增益的方式其系统动态范围和鲁棒性较好,因此在设计中采用了后一种方法。
4.1.2 IIR滤波器的MATLAB辅助设计
4
具体在MATLAB中设计IIR数字滤波器的设计步骤如下:按一定规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标;根据转换后的技术指标使用滤波器选择函数,确定最小阶数N和固有频率Wn;运用最小阶数N产生模拟低通滤波器原型,运用固有频率把模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器。本设计主要应用产生低通滤波器,运用脉冲响应不变法或双线性不变法把模拟滤波器转换成数字滤波器。
对于脉冲响应不变法,它是将s域内的H(s)转换成z域内的H(z),但是在映射时,S域内不能一一对应到Z域内的单位圆上,因此容易在仿真中易产生混叠现象,影响实验效果。基于此,本次设计在MATLAB的仿真中优先考虑应用双线性变换法。
MATLAB工具箱提供了几种模拟滤波器的原型产生函数,Butterworth滤波器原型,Chebyshev(I型、 II型)滤波器原型、椭圆滤波器原型等不同的模拟滤波器原型,从模拟滤波器向数字滤波器转换的双线性变换法和脉冲响应不变法等方法,模拟IIR数字滤波器阶数选择函数以及数字滤波器直接设计函数等等。另外,MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数。这一整套设计函数给在MATLAB中设计IIR数字滤波器带来了极大的方便。
IIR低通数字滤波器根据相关技术指标进行matlab仿真,从而计算出相应的传输函数。其仿真结果结果如图5所示:
图3 利用matlab仿真图
根据以上仿真结果及相应的系数和N值,在相关技术指标不变的情况下,我选用了ChebyshevI
5