基于DSP的IIR数字滤波器的设计与实现
- 格式:docx
- 大小:19.25 KB
- 文档页数:3
IIR数字滤波器的设计及软件实现IIR数字滤波器(Infinite Impulse Response Digital Filter)是一种常用于信号处理的数字滤波器。
与FIR(Finite Impulse Response)滤波器不同,IIR滤波器的输出取决于过去的输入样本和输出样本。
1.确定滤波器的类型:根据实际应用需求选择低通滤波器、高通滤波器、带通滤波器或带阻滤波器。
2.确定滤波器的阶数:阶数决定了滤波器的频率响应特性的陡峭程度。
一般来说,阶数越高,滤波器的频率响应特性越陡峭。
阶数的选择需要权衡计算复杂度和滤波器性能。
3.设计滤波器的传递函数:传递函数是描述滤波器输入和输出之间关系的数学表达式。
传递函数可以通过频率响应要求来确定。
4.选择滤波器设计方法:针对不同的频率响应要求,可以选择不同的滤波器设计方法,如巴特沃斯方法、切比雪夫方法、椭圆方法等。
5.设计滤波器的参数:根据滤波器的传递函数和设计方法,计算滤波器的系数。
这些系数可以用于实现滤波器。
软件实现的步骤如下:1. 选择合适的软件平台:根据实际需求,选择适合的软件平台,如MATLAB、Python等。
2. 导入相关的滤波器设计库:选择合适的滤波器设计库,如MATLAB的Signal Processing Toolbox、Python的scipy.signal等。
3.使用滤波器设计函数:根据选择的滤波器设计方法,使用相应的函数进行滤波器设计。
这些函数可以根据输入的参数计算出滤波器的系数。
4.实现滤波器:使用得到的滤波器系数,将其用于滤波器的实现。
可以使用滤波器函数对信号进行滤波操作。
5.评估滤波器性能:根据实际应用需求,对滤波器的性能进行评估。
可以通过比较滤波器的输出和期望的输出,或者通过分析滤波器的频率响应特性来评估滤波器的性能。
需要注意的是,IIR数字滤波器的设计和实现过程可能相对复杂,需要一定的信号处理和数学基础。
在实际应用中,可以借助已有的滤波器设计库和工具来简化设计和实现过程。
IIR 数字滤波器 (设计实验)一、实验目的1.了解IIR (Infinite Impulse Response ,无限冲激响应)滤波器原理及使用方法;2.了解使用MA TLAB 语言设计IIR 滤波器的方法;3.了解DSP 对IIR 滤波器的设计及编程方法;4.熟悉在CCS 环境下对IIR 滤波器的调试方法;二、实验原理IIR 数字滤波器的传递函数H(z)为:其对应的差分方程为:对于直接形式的二阶IIR 数字滤波器,其结构如图4.1图4.1 IIR 数字滤波器结构图编程时,可以分别开辟四个缓冲区,存放输入、输出变量和滤波器的系数,如图4.2所示。
图4.2 IIR 数字滤波器算法图三、实验内容与步骤设计一个三阶的切比雪夫Ⅰ型带通数字滤波器,其采样频率Fs =16kHz ,其通频带3.2kHz<f <4.8kHz ,内损耗不大于1dB ;f <2.4kHz 和f >5.6kHz 为阻带,其衰减大于20dB 。
输入信号频率为4000Hz 、6500Hz 的合成信号,通过所设计的带通滤波器将6500Hz 信号滤掉,余下4000Hz 的信号,达到滤波效果。
1、IIR 滤波器的MA TLAB 设计在MA TLAB 中设计IIR 滤波器,程序为: wp=[3.2,4.8];ws=[2.4,5.6];rp=1;rs=2001()1Mii i N ii i b zH z a z -=-==-∑∑01()()()MNi i i i y n b x n i a y n i ===-+-∑∑[n,wn]=cheb1ord(wp/8,ws/8,rp,rs)[b,a]=cheby1(n,rp,wn)设计结果为:N=3wn =0.4000 0.6000b0=0.0114747 a0=1.000000b1=0 a1=0b2=-0.034424 a2=2.13779b3=0 a3=0b4=0.034424 a4=1.76935b5=0 a5=0b6=-0.0114747 a6=0.539758在设计IIR滤波器时,会出现系数≥1的情况,为了用Q15定点小数格式表示系数,可以用大数去所有系数。
题目基于DSP的IIR数字滤波器的设计学生姓名王喜娟学号 1210064068 所在学院物电学院专业班级电信1203班指导教师黄朝军老师完成地点实验室A-10122016年6月7日陕西理工学院本科毕业设计任务书院(系) 物理与电信工程学院专业班级电子信息科学与技术(电信1203) 学生姓名王喜娟一、毕业设计题目基于DSP的IIR数字滤波器设计二、毕业设计工作自 2015 年 11 月 9 日起至 2016 年 5 月 18 日止三、毕业设计进行地点: 博远楼A1012室四、毕业设计应完成内容及相关要求:数字滤波器是指完成信号滤波处理的功能,用有限精度算法实现的离散时间线性非时变系统。
相对于模拟滤波器,数字滤波器没有漂移,能够处理低频信号,频率响应特性可做成非常接近于理想的特性,且精度可以达到很高,容易集成等,这些优势决定了数字滤波器的应用越来越广泛。
主要研究内容如下:1、课题的研究背景、目的及意义;2、数字滤波器的基本理论;3、数字滤波器设计方法的对比分析;4、IIR数字滤波器的性能分析及Matlab仿真;5、DSP上IIR数字滤波器的实现。
五、毕业设计应收集资料及参考文献:1、应收集与课题相关文献至少12篇(其中包括一篇英文文献),文献的发表年限应为2010年至2016年;2、除了文献之外,所参考的书目不能超过3篇;3、所有的参考资料要留存电子版,在交论文时一并打包交予指导教师。
六、毕业设计的进度安排:1、接受任务书,结合任务书查阅文献资料(包括一定数量的外文资料),给出课题设计总体方案,完成开题报告;并完成一篇外文文献的全文翻译工作;(1月15日-3月20日)2、结合研究内容和设计方案,完成内容1和2的工作;(3月20日-4月10日)3、完成课题内容3的工作,并提交中期报告;(4月10日-4月20日)4、完成课题内容4和5的工作,并完成设计报告第一稿;(4月215月10日)5、结合修改意见,完成设计报告,并在系统中提交终稿,报告字数必须在5000字以上,并按照系上统一要求的格式排版打印;(4月11日-5月20日)6、制作答辩PPT,准备答辩材料,准备答辩,并完成后续工作(5月21日-6月10日)7、必须定期与指导老师见面,汇报进展情况,按时完成论文的撰写工作。
II R 数字滤波器的优化设计和D SP 实现张晓光,徐 钊(中国矿业大学信电学院,江苏省徐州市221008)摘 要:首先叙述了直接Ⅱ型II R (无限冲击响应)数字滤波器能够克服使用定点DSP 实现II R 数字滤波器时引起的输入数据的溢出问题;然后利用MAT LAB 软件生成滤波器的输入数据和系数,进行相应的数据压缩处理,并生成仿真波形;最后给出了用DSP 语言实现直接Ⅱ型结构II R 数字滤波器的完整程序、仿真结果,同时对仿真结果进行了分析、比较。
关键词:II R 数字滤波器;MAT LAB;定点DSP中图分类号:T N911.72收稿日期:2005208209;修回日期:2005210210。
0 引 言数字滤波在DSP (数字信号处理)中占有重要地位。
数字滤波器按实现的网络结构或者从单位脉冲响应,分为II R (无限脉冲响应)和F I R (有限脉冲响应)滤波器。
如果II R 滤波器和F I R 滤波器具有相同的性能,那么通常II R 滤波器可以用较低的阶数获得高的选择性,执行速度更快,所用的存储单元更少,所以既经济又高效。
一般说来,从使用要求上来看,在对象为要求不敏感的场合,如语音通信等,选用II R 滤波器较为合适,这样可以充分发挥其经济、高效的特点。
使用定点DSP 实现II R 滤波器是不容易的,II R 滤波器的反馈回路容易引起计算溢出。
一般采用定标输入数据克服溢出问题,但定标的结果使输出信号幅度降低。
为克服输出信号电平低的问题,一般在硬件上人为地多加一个运算放大器,以自举输出信号电平。
本文介绍一种II R 滤波器的优化设计方法,即借助组合两节II R 滤波器输入计算,克服输入数据溢出问题,从而可删除末级运算放大器。
1 II R 滤波器的设计一个高阶的II R 滤波器可以简化成几个二阶滤波器级联。
高阶II R 滤波器的传递函数可表示为:H (z )=H 1(z )H 2(z )…H n (z )(1)式中:n 为滤波器的阶数。
高通IIR滤波器的设计及DSP实现1绪论1.1基于DSP的IIR滤波器设计课题背景随着集成电路技术的发展,各种新型的大规模和超大规模集成电路不断涌现,集成电路技术与计算机技术结合在一起,使得数字信号处理系统的功能越来越强。
数字信号处理技术逐渐发展成为一门主流技术,数字信号处理技术就是基于 VLSI 技术和计算机技术发展起来的一门重要技术。
DSP 技术已在通信、控制、信号处理、仪器仪表、医疗、家电等很多领域得到了越来越广泛的应用。
数字滤波器在各种数字信号处理中发挥着十分重要的作用,用数字滤波器设计一直是信号处理领域的重要研究课题。
常用的数字滤波器有IIR滤波器和FIR 滤波器,其中IIR滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现、较好的选频特性等优点,得到了广泛应用。
1.2本设计主要研究内容与方法主要是在学习信号分析与处理的基础知识后,应用MATLAB软件、CCS软件结合来设计基于DSP的IIR滤波器设计。
应用MATLAB软件设计IIR数字滤波器:应用MATLAB中的工具FDATOOL 工具设计滤波器的系数;在MATLAB中编译M文件,产生输入数据。
应用DSP 芯片的汇编语言与C语言进行编写程序,应用DSP集成软件开发环境CCS调试汇编程序与C程序,并用TMS320C54结合软件开发环境CCS来实现了IIR数字滤波的仿真。
2 IIR数字滤波器的设计2.1 IIR数字滤波器的基本概念无限脉冲响应滤波器是数字滤波器的一种,简称IIR数位滤波器(infinite impulse response filter)。
由于无限脉冲响应滤波器中存在反馈回路,因此对于脉冲输入信号的响应是无限延续的。
iir滤波器有以下几个特点1 IIR数字滤波器的系统函数可以写成封闭函数的形式。
2 IIR数字滤波器采用递归型结构,即结构上带有反馈环路。
iir滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
一、总框图设计1、总体框图的设计前端处理AD50 功率放大McBSPDSP音频输入音频输出图1 语音滤波处理单元框图本次DSP实现的语音输入模块采用偏置和差动放大技术,并经过滤波处理后输入到语音编解码芯片TLV320AD50,前端输入的电压范围为-2.5V---+2.5V。
经过变换后输入到AD50的芯片的差动信号范围为0---5V。
TLC320AD50C作为主方式,通过DSP的MCBSP0口进行通信。
音频信号通过D/A转换后输出,由于TLC320AD50输出的是差动信号,因此首先经过差动放大,然后可以推动功率为0.4W的板载扬声器输出。
总体来讲,本次设计就是要把输入的模拟音频信号进行数字化采集、A/D,IIR滤波、D/A转换,最后回放出模拟音频信号。
因此,总的设计框图如上图1所示。
二、IIR数字滤波器的设计2.1 IIR数字滤波器的设计框图要设计IIR数字滤波器,应该首先设计一个模拟原型滤波器(截止频率为1rad/s的低通滤波器),无限冲激响应(IIR)滤波器的冲激响应序列具有无限延伸的长度,它与模拟滤波器相匹配。
进行IIR 滤波器设计,就是利用幅值映射关系,将熟知的模拟滤波器转换为数字滤波器。
因此,设计IIR 滤波器的框图如下:图1 IIR 数字滤波器的设计框图2.2 基本原理首先设计满足性能的模拟滤波器原型,再利用线性变换离散化为数字滤波器。
也就是在模拟滤波器基础上在模拟域(S 平面)进行频率变换,将模拟原形滤波器转换成所需类型(指定截止频率的低通、高通、带通、带阻)的模拟滤波器,再将其数字离散化,从S 平面映射至Z 平面,得到所需技术指标的数字滤波器。
2.2.1 巴特沃斯滤波器原理由于已知指标,故可求出滤波器的阶数N ,因而求出归一化极点 和归一化传输函数 。
也可以根据N 查表得到归一化传输函数。
然后再去归一化,得到实际的滤波器传输函数Ha(S)。
这样即可设计出低通巴特沃斯滤波器。
巴特沃斯滤波器的幅度响应在通带内具有最平坦的特性,且在通带和阻带内幅度的特性,是单调变化的。
摘要随着计算机和信息技术的飞速发展,数字信号处理已经成为高速实时处理的一项关键技术,广泛应用在语音识别、智能检测、工业控制等各个领域。
数字滤波器是对数字信号实现滤波的线性时不变系统。
数字滤波实质上是一种运算过程,实现对信号的运算处理。
DSP数字信号处理(Digital Signal Processing,简称DSP)是一门涉与许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
传感器数字信号处理是利用传感器对模拟信号或数字信号进行采集并把其转换成计算机可识别的电信号,并利用计算机对信号进行处理以达到计算机辅助控制或是计算机自动控制的目的。
DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法。
用DSP 芯片实现IIR数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。
本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境——CCS调试汇编程序,文章结合TM320C5509的结构特点,介绍了一种IIR滤波器在TM320C5509中的实现方法。
关键字:IIR;数字滤波器;DSP;TM320C5509;MATLAB目录摘要............................................................... (I)第1章绪论............................................................... .. (3)1.1数字滤波器研究的背景............................................................... . (3)1.2数字滤波器研究的现状............................................................... . (3)1.3 数字滤波器研究的容与方法............................................................... . (5)第2章系统方案设计与论证............................................................... (7)2.1 IIR数字滤波器的设计步骤............................................................... . (7)2.2 IIR数字滤波器的基本原理............................................................... . (7)2.3 IIR数字滤波器的流程框图............................................................... . (8)第3章基于DSP的IIR数字滤波器设计 (9)3.1 DSP系统的特点............................................................... . (9)3.2 DSP系统的设计流程............................................................... .. (9)3.3 基于DSP的IIR数字滤波器设计总框图 (10)第4章软件设计............................................................... (12)4.1 CCS平台介绍............................................................... (12)4.2 仿真结果............................................................... .. (13)第5章结论............................................................... .. (15)参考文献............................................................... .. (16)附录A:源代码............................................................... (17)致............................................................... (20)第1章绪论1.1数字滤波器研究的背景当今,数字信号处理(DSP:Digtal Signal Processing)技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科。
IIR 数字滤波器的设计及软件实现一.实验目的(1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法; (2)学会用MATLAB 信号处理工具箱中的滤波器设计函数(或滤波器设计分析工具FDAtool )设计各种滤波器,学会根据滤波需求确定滤波器指标参数; (3)掌握IIR 数字滤波器的MATLAB 实现方法;(4)通过观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。
二.实验原理设计IIR 数字滤波器一般采用间接法(脉冲响应不变法和双线性不变法),应用最广泛的是双线性变换法。
基本的设计过程是:①将给定的数字滤波器指标转换成模拟滤波器的指标; ②涉及模拟滤波器;③将模拟滤波器的系统函数转换成数字滤波器的系统函数。
MATLAB 信号处理工具箱中的各种IIR 数字滤波器设计函数都是采用双线性变换法。
本实验的数字滤波器的MATLAB 实验是调用MATLAB 信号处理工具箱的函数filter 对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n). 三.实验内容及步骤1.信号处产生函数mstg 产生由三路抑制载波调幅信号相加构成的复合信号st ,该函数还会自动回图显示st 的时域波形和幅频特性曲线,由后图可见,三路信号时域混叠无法在时域分离。
但频域是分离的,所以可通过滤波的方法在频域分离。
2.将st 中三路调幅信号分离,通过观察st 的幅频特性曲线,分别确定可以分离st 中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。
且滤波器的通带最大衰减为0.1dB ,阻带最小衰减为60bB 。
提示:抑制载波单频调幅信号的数学表示式为()()()()()()[]tt t t t s f f f f f f c c c 0002cos 2cos 212cos 2cos )(++-==ππππ 其中,()t fc2cos π称为载波,f c为载波频率,()t f 02cos π称为单频调制信号,f为调制正弦波信号频率,且满足fc>f。
实验四IIR数字滤波器的设计数字信号处理DSP
IIR(Infinite Impulse Response)数字滤波器是一种常用的数字信
号处理技术,用于对信号进行滤波。
其特点是具有无限脉冲响应,通过对
输入信号和滤波器的系数进行运算,可以得到输出信号。
设计一个IIR数字滤波器的步骤如下:
1.确定滤波器的类型:根据滤波器的要求,选择滤波器的类型,如低
通滤波器、高通滤波器、带通滤波器等。
2.确定滤波器的阶数:滤波器的阶数决定了滤波器的复杂度和性能。
一般来说,阶数越高,滤波器的性能越好,但计算复杂度也会增加。
3.确定滤波器的频率响应:根据滤波器的类型和要求,确定滤波器的
频率响应。
可以使用一些滤波器设计工具或者数学模型来计算频率响应。
4.设计滤波器的传递函数:根据所选的滤波器类型和频率响应,设计
滤波器的传递函数。
传递函数描述了滤波器的输入输出关系。
5.将传递函数转换为差分方程:将滤波器的传递函数转换为差分方程,形式为y(n)=b0*x(n)+b1*x(n-1)+...-a1*y(n-1)-a2*y(n-2)-...,其中
y(n)为输出信号,x(n)为输入信号。
6.计算滤波器的系数:根据差分方程,计算滤波器的系数,即b0、
b1、..、a1、a2、..
7.实现滤波器:将计算得到的滤波器系数应用到滤波器的实现中,可
以使用C语言、MATLAB等工具进行实现。
8.评估滤波器性能:根据设计要求和信号特点,评估滤波器的性能,
如频率响应、幅频响应等。
通过上述步骤,可以设计出满足要求的IIR数字滤波器,并用于数字信号处理中。
基于DSP的IIR数字滤波器的设计与实现
摘要:叙述了IIR数字滤波器的设计原理及其在DSP上的实现思路,并对用DSP实现IIR 数字滤波的方法进行了分析。
用MATLAB计算出IIR数字滤波器的系数,考虑到溢出问题,采用级联的形式对滤波器进行分解,最后在TMS320VC5416 DSP上得以实现,并通过CCS(come composer studio)的输入输出功能和RTDX(real-time data exchange)的功能保证实现结果和仿真结果的一致性。
关键词:IIR数字滤波器DSP 算法
数字滤波器在各种数字信号处理中发挥着十分重要的作用,数字滤波器设计一直是信号处理领域的重要研究课题。
常用的数字滤波器有FIR滤波器和IIR滤波器,其中IIR数字滤波器因具有结构简单、占用存储空间少、运算速度快、较高的计算精度和能够用较低的阶数实现较好的选频特性等特点[1],得到了广泛应用。
DSP芯片有适合于数字信号处理的软件资源和硬件资源,是实现数字信号处理的重要途径[2]。
目前所见文献,多数为滤波器的模型设计,所得结果也是在MATLAB等实验环境下模拟仿真完成的,带有很大的局限性。
本文讨论IIR数字滤波器在DSP上的实现思路,并对其实现方法进行了分析。
1 数字IIR滤波器的理论设计分析
数字滤波器实际上是一个采用有限精度算法实现的线性非时变离散系统,滤波器的功能实现实际上是通过大量的加法运算和乘法运算完成的。
IIR数字滤波器差分方程的一般形式为:
从IIR数字滤波器的实现来看,有直接型、级联型、并联型和格型等基本网络结构。
不同的结构形式会有不同的运算误差,其稳定性、运算速度、所占用的存储空间等也有所不同[3]。
其中直接Ⅱ型仅需要N级延迟单元,且可作为级联型和并联型结构中的基本单元,是最常用的IIR数字滤波器结构之一。
IIR数字滤波器的设计方法有两类[4],一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要计算机作辅助工具。
对系统传递函数为
的IIR数字波滤器来说,设计的任务就是寻求一种因果关系和物理上可实现的系统传递函数H(z),使其频率响应H(ejω)能够满足所希望得到的频域指标。
2 IIR数字滤波器在DSP上的实现方法及实现过程
2.1 IIR数字滤波器在DSP上的实现步骤和条件
IIR数字滤波器在DSP上的设计过程如下:
(1)根据指标确定滤波器的类型,设计出滤波器的参数;
(2)根据DSP的特点(字长、精度等)对参数进行取舍、量化,然后进行仿真;
(3)根据仿真结果对滤波器的结构、参数再次进行调整,直到满足要求为止;
(4)在DSP上用语言实现滤波器功能。
定点DSP芯片,既可以做定点运算,也可以做浮点运算。
一个算法,既可以用汇编语言编程实现,也可以用高级语言(C,C++)实现。
而一个IIR数字滤波器是否可以在DSP上实现,最终要看此算法是否满足两个条件:执行时间和精度。
一个算法的精度再高,如果做不到实时,也没有实用价值;相反,如果执行时间很快,但精度满足不了要求,也就无从实现滤波功能。
IIR数字滤波器在DSP上的实现思路,应该是在满足上面两个条件的前提下,
找到尽可能简易的实现方法。
2.2 IIR数字滤波器在TMS320VC5416 DSP上的实现过程
借助于计算机强大的仿真功能,在MATLAB环境下设计一个IIR数字滤波器变得十分容易[5]。
但是要在DSP上实现此滤波器功能,则需要对滤波器的结构、系数等参数进行改进。
下面以一个低通IIR数字滤波器在DSP芯片TMS320VC5416上的实现为例,叙述其实现过程。
TMS320VC5416是DSP芯片的主要供应商TI公司最近推出的5000系列中的高性能DSP,该处理器为16位定点DSP,最高运算速度可达160MIPS,内带256KB的RAM,有128KB的数据空间,最大程序容量高达16MB,有3个McBSP和6个DMA通道并且支持外部DMA,内核电压低至1.5V。
其CPU由于运算速度快、内部资源充足、接口灵活、功耗低,非常适合做复杂算法运算。
低通IIR数字滤波器的参数如下:采样率为16000Hz,截止频率为500Hz,采用butterworth 模型设计时阶数为7阶,在MATLAB6.5环境下得到的b系数和a系数如表1所示。
从理论上说,可以用高阶IIR数字滤波器实现良好的滤波效果。
但由于DSP本身有限字长和精度的因素,加上IIR滤波器在结构上存在反馈回路,是递归型的,再者高阶滤波器参数的动态范围很大。
这样一来造成两个后果:结果溢出和误差增大,从而导致算法无法在DSP上实现。
解决此问题的有效方法是把高阶IIR数字滤波器简化成几个2阶滤波器来设计,即采用级联结构。
因此系统函数为:
H(z)=H1(z)H2(z)…Hn(z)(3)
上述7阶IIR数字滤波器采用级联的结构后变成4个滤波器级联的形式,每个滤波器的系数如表2所示。
TMS320VC5416是16位DSP。
在CCS下,它的浮点数格式占用两个字,即32bit。
通过CCS 的数据输入输出功能和RTDX功能,可以随时观察DSP结果和理论仿真结果之间的差异,及时发现数据的溢出和计算误差。
对表2的系数取7个有效位(在CCS下浮点数的有效位为7位),计算结果如图1所示。
图中为输入和滤波后的波形,信号频率为500Hz。
从图中可以看出,滤波没有产生溢出现象且滤波效果满足设计要求。
程序流程如图2。
采用间接寻址指向数据存储单元,主要指令为加法、乘法和循环实现,这些都可以通过MAC等指令直接实现。
需注意的是要对乘法运算结果进行溢出保护。
另外,因为主程序框架采用C结构,而算法由汇编语言实现,所以要注意不同环境下寻址方式的区别,当从C环境进入直接寻址时,要先确定DP值,以免带来不确定的计算结果。
数据采集时要先通过DSP的DMA功能将输入数据保存在外部SRAM中,采样结束后再将要滤波的数据通过DMA载入内部RAM中,从而提高处理速度。
考虑到IIR数字滤波器的运算特点,某一时刻的输入数据参加一次运算后不再参与下次运算,只有各级滤波器输出结果需要参与多次运算,因此滤波结果和输入数据可以共用同一存储地址,从而节省存储空间。
除此之处,还要注意以下问题:
(1)IIR数字滤波器是针对采样率固定的系统设计的,更改系统或系统采样率改变时应重新设计。
(2)用到的数据存储单元,程序开始时应对这些单元进行初始化。
如果要进行连续滤波,应保存上一次滤波的结果。
(3)IIR数字滤波器的滤波结果会引起相位的延迟,故对相位严格要求的场合,需加全通网络进行较正,或选用FIR滤波器实现滤波功能。
IIR数字滤波器以它优越的性能,在电力、通信和测控等领域得到广泛应用。
本文针对TI公司的TMS320VC5416 DSP,叙述了IIR数字滤波器的理论设计及在DSP上的实现过程。
根据其实现思路,可以很方便设计出符合要求的滤波器。
该方法具有很强的实用性,对FIR 滤波器的设计及滤波器在嵌入式系统中的实现也有很好的参考价值。
通过“变压器绝缘套管介损在线监测”等测控系统中的滤波器设计和实现表明,设计方法简单、方便、实现灵活,满足工程实际要求。