FIR滤波器在DSP上的实现

合集下载

FIR滤波器的DSP实现

FIR滤波器的DSP实现

FIR滤波器的DSP实现1.实验练习题******************************************************************* *用循环缓冲区和双操作数寻址方法实现FIR滤波器*N=80,y(n)=h0*x(n)+h1*x(n-1)+...+h78*x(n-78)+h79*x(n-79)*先用matlab,选择80点汉明窗设计一个截止频率为0.2pi的低通滤波器****************************************************************** .title "fir.asm".mmregs.def start.bss y,1 ;保存滤波结果.bss indata,1 ;输入信号缓冲区(变量).bss outdata,1 ;输出信号缓冲区(变量)xn .usect "xn",80 ;xnh .usect "h",80 ;h;PA0 .set 0002H ;D/A端口地址;PA1 .set 0008H ;A/D端口地址.datatable:.word -1,-4,-8,-12,-18,-25,-33,-42.word -52,-63,-75,-86,-96,-103,-108,-107.word -102,-89,-69,-39,0,49,109,179.word 260,350,449,555,667,782,898,1014.word 1126,1232,1330,1417,1492,1552,1596,1622.word 1631,1622,1596,1552,1492,1417,1330,1232.word 1126,1014,898,782,667,555,449,350.word 260,179,109,49,0,-39,-69,-89.word -102,-107,-108,-103,-96,-86,-75,-63.word -52,-42,-33,-25,-18,-12,-8,-4.textstart:SSBX FRCT ;小数乘法STM #xn,AR1RPT #79ST #0,*AR1+ ;把x(n)-x(n-79)赋始值0STM #h,AR1RPT #79MVPD #table,*AR1+ ;把参数表复制到数据存储区STM #xn+79,AR3 ;AR3-->x(n-79)STM #h+79,AR4 ;AR4-->h(n-79)STM #80,BK ;循环缓冲区大小80STM #-1,AR0 ;指针调整值-1LD #xn,DP ;DP指向xn所在页; PORTR PA1,@xn ;输入数据LD #y,DP ;DP指向y所在页FIR:NOPMVKD indata,*AR3+0% ;在这一行设置探针与断点用于从indata.dat文件中读输入数据RPTZ A,#79MAC *AR3+0%,*AR4+0%,ASTH A,@outdata ;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中NOP; STH A,@y ;保存计算结果; PORTW @y,PA0 ;硬件仿真时写D/AB F IR ;跳转; B FIR ;延迟跳转; PORTR PA1,*AR3+0% ;硬件仿真时读A/D,新数据覆盖最老的数据.end2.思考题---对照参考程序,编写实现39阶低通、高通、带通、带阻FIR数字滤波器的DSP程序,并仿真。

FIR数字滤波器在TMS320VC54xDSP上的实现

FIR数字滤波器在TMS320VC54xDSP上的实现

FIR数字滤波器在TMS320VC54xDSP上的实现FIR数字滤波器是一种基于采样定理的信号处理算法,可以对离散时间信号进行滤波和降噪。

在实际应用中,FIR数字滤波器常用于音频和图像处理、通信系统等领域。

本文将介绍在TMS320VC54x DSP上实现FIR数字滤波器的方法。

TMS320VC54x DSP是一种高性能数字信号处理器,具有高速计算、低功耗、可编程性强等优势。

在TMS320VC54x DSP上实现FIR数字滤波器需要进行以下步骤:一、设计FIR数字滤波器的传递函数FIR数字滤波器的传递函数可以通过设计滤波器的滤波特性来实现。

在本例中,我们以一个低通滤波器为例,其传递函数为:H(z) = a0 + a1*z^-1 + a2*z^-2 + … + aN*z^-N其中,a0,a1,…,aN是系数,N是滤波器的阶数。

二、将传递函数转化为差分方程将FIR数字滤波器的传递函数转换为差分方程可以更方便地实现。

令y(n)为输出,x(n)为输入,k是滤波器的时间常数,则差分方程为:y(n) = (a0*x(n) + a1*x(n-1) + a2*x(n-2) + … + aN*x(n-N))/k三、将差分方程转化为C语言代码在TMS320VC54x DSP上实现FIR数字滤波器需要将差分方程转化为C语言代码。

代码如下:#define N 10 //滤波器阶数float a[N+1] = {0.5, 0.2, 0.1, 0.05, 0.03, 0.02, 0.01, 0, 0, 0, 0}; //系数float x[N+1] = {0}; //输入数据float y = 0; //输出数据float FirFilter(float input){int i;float output = 0;//将输入数据移位for(i = N; i >= 1; i--){x[i] = x[i-1];}x[0] = input;//计算输出数据for(i = 0; i <= N; i++){output += a[i]*x[i];}return output;}四、在TMS320VC54x DSP上实现FIR数字滤波器在TMS320VC54x DSP上实现FIR数字滤波器需要使用C语言编写程序,并将程序下载到DSP芯片中。

DSP实现32阶的FIR数字低通滤波器

DSP实现32阶的FIR数字低通滤波器

32阶的FIR数字低通、高通、带阻滤波器的实现。

对于DSP来说,低通、高通、带阻滤波器实现程序大致相同,只是在于滤波系数不同。

所以我们滤波器系数分别放在三个头文件中,分别对应低通、高通、带阻。

FIR滤波器程序下面为一个FIR低通、带通、高通的通用程序。

HIGHPASS .set 0 ;if you want to use ,please set the value to 1 BANDPASS .set 0LOWPASS .set 1.global start,fir.mmregsCOFF_FIR_START: .sect "coff_fir".if LOWPASS.include "lowpass\lowpass.inc".elseif BANDPASS.include "bandpass\bandpass.inc".else.include "highpass\highpass.inc".endifK_FIR_BFFR .set 32d_data_buffer .usect "fir_bfr",64FIR_DP .usect "fir_vars",0d_filin .usect "fir_vars",1d_filout .usect "fir_vars",100h.asg AR4,FIR_DATA_P.asg AR6,INBUF_P.asg AR7,OUTBUF_P.sect "fir_prog"nopstart:LD #FIR_DP,DP ;加载数据页指针STM #d_data_buffer,FIR_DATA_PRPTZ A,#K_FIR_BFFR-1STL A,*FIR_DATA_P+;置数据缓冲区为0STM #d_filin,INBUF_P;新采样数据指针STM #d_filout,OUTBUF_P;滤波输出指针STM #100h,BKfir_loop:NOP ;Add Breakpoint & porbe pointLD *INBUF_P,A;获得输入采样数据CALL fir ;执行滤波STH A,*OUTBUF_P+%main_end:b fir_loop ;Add Breakpointfir:SSBX SXMSSBX FRCTSTM #d_data_buffer,FIR_DATA_PSTL A,*FIR_DATA_P;将采样数据放入数据缓冲X(n)STM #(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P fir_task:RPTZ A,#K_FIR_BFFR-1MACD *FIR_DATA_P-,COFF_FIR_START,A;乘加累加,且将数据缓冲区的数据移位。

基于DSP实现的FIR低通滤波器

基于DSP实现的FIR低通滤波器

基于DSP实现的FIR低通滤波器FIR(有限脉冲响应)低通滤波器是一种常见的数字信号处理(DSP)滤波器。

它的设计和实现非常灵活,可以用于去除数字信号中高频成分,使得信号能在一定的频率范围内进行平滑处理。

FIR低通滤波器有很多种设计方法,其中最简单的方法是基于窗函数设计,例如矩形窗、汉宁窗、布莱克曼窗等。

这些窗函数的选择取决于滤波器的性能要求和频率响应的形状。

在DSP中,FIR低通滤波器的实现可以采用直接形式、级联形式、并行形式和迭代形式等多种结构。

其中直接形式是最简单和直观的实现方式,也是最容易理解和实现的一种结构。

直接形式的FIR低通滤波器由一个延迟线、一组乘法器和加法器组成。

延迟线用于延迟输入信号,乘法器用于对延迟后的信号进行调制,而加法器则将调制后的信号相加得到输出信号。

```----------------------,,,x(n) -->, Delay ,-->, Multiply,-->--+ Sum ,--> y(n)Line ,,,----------------------```在实现过程中,需要注意的是延迟线的设置和乘法器的系数。

延迟线的长度决定了滤波器的阶数,即滤波器对输入信号的响应范围。

乘法器的系数则决定了滤波器的频率响应,可以通过窗函数的选取来确定。

通常,FIR滤波器的实现可以通过查表法或者卷积法来实现。

查表法通过预先计算所有可能的输入组合,并将其存储在一张查找表中,以减少计算量。

卷积法则通过将输入信号和滤波器的冲击响应进行卷积运算来得到输出信号。

当实现FIR低通滤波器时,还需要考虑滤波器的性能指标和算法的优化。

常见的性能指标包括滤波器的截止频率、抗混叠性能、通带和阻带的幅频特性等。

算法的优化可以从以下几个方面考虑:乘法器的系数选择、滤波器结构的选择、滤波器长度的选择和存储器的优化等。

总之,基于DSP实现的FIR低通滤波器是一种常用的数字信号处理滤波器,它可以用于去除数字信号中的高频成分,平滑信号的频谱。

FIR滤波器设计和DSP实现

FIR滤波器设计和DSP实现

FIR滤波器设计和DSP实现FIR滤波器(Finite Impulse Response Filter)又称为有限脉冲响应滤波器,是一种数字滤波器,其脉冲响应为有限长度。

FIR滤波器具有稳定性、线性相位等优点,广泛应用于数字信号处理(DSP)中。

1.窗函数法:窗函数法是FIR滤波器设计中最简单、最常用的方法之一、设计步骤主要有:选择合适的窗函数(如矩形窗、汉宁窗、哈宁窗等);确定滤波器的截止频率和通带或阻带波动范围;根据窗函数的特性进行滤波器系数的计算。

窗函数法设计得到的滤波器具有较好的频域响应,并且易于实现。

2.频率采样法:频率采样法是通过对滤波器在频域中的理想特性进行采样,然后进行逆变换得到滤波器系数。

设计步骤主要有:确定理想滤波器的频率响应;进行频率采样,得到取样频率上的实际频率响应;对实际频率响应进行逆变换,得到滤波器系数。

频率采样法设计的滤波器可以满足设计要求,但是需要进行逆变换,计算复杂度较高。

3.最小二乘法:最小二乘法是通过求解最小化均方差的优化问题,得到最佳滤波器系数。

设计步骤主要有:建立最小二乘优化问题的数学模型;对数学模型进行求解,得到最佳滤波器系数。

最小二乘法能够得到较好的滤波器性能,并且不需要进行逆变换,计算复杂度相对较低。

1.将滤波器的系数存储在系数寄存器中;2.将输入信号与相应的系数进行乘法运算;3.将乘法运算的结果累加得到输出信号;4.将输入信号和系数向右移动一个位置;5.重复步骤2-4,直到滤波器输出满足要求。

DSP实现可以采用硬件方法,如使用专用的FPGA或ASIC实现滤波器的计算单元;也可以采用软件方法,在DSP芯片上运行相应的滤波算法代码。

对于较复杂的滤波器设计,可以使用专门的滤波器设计软件进行设计和实现。

综上所述,FIR滤波器的设计和实现是数字信号处理中的重要内容,不同的设计方法和实现方式可以根据具体需求选择。

设计一个合适的FIR 滤波器可以满足信号处理的要求,并且在DSP实现中能够提高系统的运算效率和性能。

FIR滤波器及其DSP实现

FIR滤波器及其DSP实现

FIR滤波器及其DSP实现FIR(Finite Impulse Response)滤波器是一种常见的数字滤波器,它具有有限的脉冲响应。

与IIR(Infinite Impulse Response)滤波器相比,FIR滤波器具有线性相位特性,并且可以实现稳定的滤波效果。

FIR滤波器的核心是其冲激响应,即滤波器的输出响应。

FIR滤波器的输出可以通过对输入信号和滤波器的冲激响应进行卷积来实现。

为了得到所需的滤波效果,需要设计滤波器的冲激响应。

常见的方法包括频域设计和时域设计两种。

频域设计方法主要利用频率响应来设计FIR滤波器的冲激响应。

这包括将所需滤波特性转化为频率域中的理想滤波器响应,然后通过反变换得到冲激响应。

常见的频域设计方法有窗函数法、最优逼近法和频带优化法等。

窗函数法是最简单的频域设计方法之一,通过将理想滤波器的频率响应与窗函数的频率响应相乘得到FIR滤波器的冲激响应。

常用的窗函数有矩形窗、汉宁窗、汉明窗等。

窗函数法的优点是简单易用,但实现的FIR 滤波器在频域存在较大的过渡带宽。

因此,需要根据具体应用需求选择合适的窗函数。

最优逼近法是一种基于最优化理论的频域设计方法。

它通过将所需滤波特性定义为目标函数,利用优化算法来最小化目标函数与实际滤波器响应之间的差距,从而得到FIR滤波器的冲激响应。

最优逼近法能够较好地满足滤波特性的要求,但计算复杂度较高。

时域设计方法主要通过对滤波器的冲激响应进行直接设计来实现。

常见的时域设计方法有零相位响应(Zero-Phase Response,ZPR)设计和线性相位设计。

零相位响应设计方法通过首先设计一个偶对称的冲激响应,并通过反转和平移来得到滤波器的冲激响应。

这样可以实现零相位的滤波效果。

零相位响应设计方法能够保持输入信号的相位信息,适用于对相位要求较高的应用,如音频信号处理。

线性相位设计方法主要通过对滤波器的延迟进行优化来实现。

线性相位设计方法能够使得滤波器的相位响应近似为线性函数,从而实现滤波器对不同频率的信号具有相同的延迟。

FIR滤波器的DSP实现

第四章FIR数字滤波器设计4.1 实验目的1、熟悉使用TI公司的6413DSP开发板。

2、进一步熟悉软件Code Composer Studio的使用。

3、掌握加窗法实现FIR数字滤波器的原理。

4.2 实验内容使用Code Composer Studio软件在6713DSP开发板上实践加窗FIR数字滤波器算法。

4.3 实验器材6713DSP 开发板x1USB 数据线x1供电线x1电脑x14.4 实验原理1.一个长度为N+1的因果FIR滤波器传输函数H(z)是的N次多项式:其对应的频率响应函数为:任何长度为N+1的有限长序列x[n]的特性可由其离散时间傅里叶变换X( )的N+1样本完全描述。

因此,要设计一个长度为N+1的FIR 滤波器,可以利用冲击响应序列{h[n]}或频率响应H( )的N+1个样本来进行。

同时为了保证线性相位,必须满足条件:FIR 滤波器的两种直接设计方法为加窗傅里叶级数法和频率抽样法。

本次实验只用加窗傅里叶级数法实现。

2.由于加窗理想滤波器冲击响应序列的幅值响应出现吉布斯(Gibbs )现象,我们需要利用两边都是逐渐平滑减小到零的窗函数或者在通带到阻带加入平滑的过渡带等方法减弱吉布斯现象。

使用渐缩的窗函数可以使旁瓣的高度减小,但会使主瓣的宽度相应的增加,结果是在不连续点间出现更宽的过渡带。

现将我们常用的长度为N=2M+1的渐变窗函数列举如下:Hann 窗:Mn M N n n w ≤≤---=)],12cos(1[21)(πHamming 窗:Mn M N n n w ≤≤---=)],12cos(46.054.0[)(π Blackman 窗:M n M N n N n n w ≤≤--+--=)],14cos(08.0)12cos(5.042.0[)(ππKaiser 窗:10,)())]1/(21[1()(020-≤≤---=N n I N n I n w ββ4.5 实验步骤1、将6713 DSP开发板接上电源并与计算机连接,打开6713 DSK Diagnostics Utility 检测实验设备是否连接正常。

FIR滤波器在DSP上的实现

FIR 滤波器在DSP 上的实现1. 引言在信号处理中,滤波占有十分重要的地位。

数字滤波是数字信号处理的基本方法。

数字滤波与模拟滤波相比有很多优点。

它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。

数字滤波是语音处理、图像处理、频谱分析等应用中的基本处理算法。

DSP 是一种处理数字信号的专用微处理器,主要应用于实时快速地实现各种信号的数字处理算法。

用DSP 芯片实现数字滤波具有稳定性好、精确度高、不受环境影响等优点。

数字滤波器分为有限冲激响应滤波器FIR 和无限冲激响应滤波器IIR 。

对称FIR 滤波器在数字信号处理中应用十分广泛,常用于相位失真要求较高的场合,例如:(1)通信系统:调制解调器、综合业务数据网等,都要求保证数据脉冲的形状和通道中的相关时间。

f2)希尔伯特变换器:要求输入输出信号正交。

(3)高保真音响系统:音乐的相位失真必须减到最小,尽可能逼真地重现原来的声音等等。

由于FIR 是全零点的滤波器,因而系统总是稳定的。

这对于系统综合是很重要的。

2. FIR 滤波器的基本结构设h(n)(n=0,1,2,…,N 一1)为滤波器的冲激响应,输入信号为x(n),则FIR 滤波器就是要实现下列差分方程:10()()()N k y n h k x n k -==-∑ (1)式(1)就是FIR 滤波器的差分方程。

FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。

它的单位脉冲响应h(n)是一个有限长序列。

由上面的方程可见,FIR 滤波箅法实际上足一种乘法累加运算,它不断地输入样本x(n),经延时做乘法累加,再输出滤波结果y(n)。

FIR 滤波器的一个分支的延时线,把每一节的输出加权累加,得到滤波器的输出。

结构如图1所示,它由一条均匀间隔的延迟线上对抽失信号进行加权求和构成。

3. 利用MATLAB 确定滤波器的系数设计一个线性相位FIR 低通滤波器,技术指标:通带截止频率fp=1500Hz ,阻带起始频率fst=2250 Hz ,通带允许的最大衰减为Rp=0.25 dB ,阻带应达到的最小衰减为As=50dB 。

DSPFIR滤波器的DSP实现

DSP课程设计报告设计课题:FIR滤波器的DSP实现专业班级:学生姓名:学号:指导教师:设计时间:北华航天工业学院电子工程系DSP 课程设计任务书姓名:专业:电子信息工程班级:指导教师:职称:教授学号:课程设计题目:FIR滤波器的DSP实现设计要求:由实验箱信号发生器产生4KHz的模拟方波,然后进行AD转换,采样频率为64KHz,对采样数字信号进行数字滤波得到正弦波信号,存放在内存单元中观察这些数据的波形,并通过串口DAC转换后输出,在示波器上观察输出信号。

所需仪器设备:电脑,DSP实验箱(含硬件仿真器),示波器。

成果验收形式:演示,在CCS中及在示波器上观测到正确输出信号。

参考文献:1.《TMS320C55X DSP应用系统设计》赵洪亮等编著,北京航空航天大学出版社2.《DSP原理及应用》邹彦主编电子工业出版社3.《DSP原理及应用》胡圣尧等编著,东南大学出版社时间安排1.完成MATLAB设计滤波器;(5月25日,周一)2.ADC、DAC原理及接口设计。

(5月26日,周二)3. 完成整个设计任务:在AD/DA程序中插入设计好的数字滤波器,对采样的数字方波信号进行数字滤波。

并将滤波后的信号通过串口DAC 转换后输出,在示波器上观察得到正确输出信号。

(5月27日,周三)4.验收学生的课程设计成果。

(5月28日,周四)指导教师:2014年月日内容摘要有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

本次课设通过由实验箱信号发生器产生4KHz的模拟方波,然后进行AD转换,采样频率为64KHz,对采样数字信号进行数字滤波得到正弦波信号,存放在内存单元中观察这些数据的波形,并通过串口DAC转换后输出,在示波器上观察输出信号。

基于DSP实现的FIR低通滤波器

基于DSP实现的FIR低通滤波器FIR(Finite Impulse Response)低通滤波器是一种数字信号处理(DSP)算法,用于滤除输入信号中高于一些截止频率的频域成分,并使输出信号只包含低于该截止频率的成分。

FIR低通滤波器通常由一组脉冲响应函数(Impulse Response)的加权和组成,其中权重决定了滤波器的频率响应。

实现FIR低通滤波器的一种常见方法是使用离散时间线性卷积运算。

滤波器的输入信号通过一个延迟线数组,然后与一组权重向量进行内积。

该内积计算的结果即为滤波器的输出。

在DSP领域,用于实现FIR低通滤波器的算法有很多种,其中最常用的是基于迭代结构(Direct Form)的算法。

此算法按照滤波器的脉冲响应函数的长度进行迭代,每次迭代处理输入信号的一个样本。

该算法的优点是实现简单、稳定可靠。

下面是一个基于DSP实现的FIR低通滤波器的伪代码示例:```python#定义滤波器的截止频率和脉冲响应函数长度def cutoff_frequency = 1000 # 截止频率为1kHzdef length = 101 # 脉冲响应函数长度为101#初始化滤波器的权重向量def weights = [0.0] * length#计算滤波器的脉冲响应函数for i in range(length):#计算当前权重对应的频率frequency = i * sampling_rate / length#如果当前频率小于截止频率,则设置权重为1,否则为0weights[i] = 1 if frequency <= cutoff_frequency else 0#初始化输入和输出信号数组def input_signal = [0.0] * signal_lengthdef output_signal = [0.0] * signal_length#循环处理输入信号的每个样本for i in range(signal_length):#延迟线数组移位,并将当前输入样本放入延迟线的第一个位置delay_line[1:] = delay_line[:-1]delay_line[0] = input_signal[i]#计算滤波器的输出output_signal[i] = sum(delay_line * weights)```这段示例代码实现了一个FIR低通滤波器,截止频率为1kHz,脉冲响应函数长度为101、首先,根据截止频率计算出权重向量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FIR 滤波器在DSP 上的实现1. 引言在信号处理中,滤波占有十分重要的地位。

数字滤波是数字信号处理的基本方法。

数字滤波与模拟滤波相比有很多优点。

它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。

数字滤波是语音处理、图像处理、频谱分析等应用中的基本处理算法。

DSP 是一种处理数字信号的专用微处理器,主要应用于实时快速地实现各种信号的数字处理算法。

用DSP 芯片实现数字滤波具有稳定性好、精确度高、不受环境影响等优点。

数字滤波器分为有限冲激响应滤波器FIR 和无限冲激响应滤波器IIR 。

对称FIR 滤波器在数字信号处理中应用十分广泛,常用于相位失真要求较高的场合,例如:(1)通信系统:调制解调器、综合业务数据网等,都要求保证数据脉冲的形状和通道中的相关时间。

f2)希尔伯特变换器:要求输入输出信号正交。

(3)高保真音响系统:音乐的相位失真必须减到最小,尽可能逼真地重现原来的声音等等。

由于FIR 是全零点的滤波器,因而系统总是稳定的。

这对于系统综合是很重要的。

2. FIR 滤波器的基本结构设h(n)(n=0,1,2,…,N 一1)为滤波器的冲激响应,输入信号为x(n),则FIR 滤波器就是要实现下列差分方程:10()()()N k y n h k x n k -==-∑ (1)式(1)就是FIR 滤波器的差分方程。

FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。

它的单位脉冲响应h(n)是一个有限长序列。

由上面的方程可见,FIR 滤波箅法实际上足一种乘法累加运算,它不断地输入样本x(n),经延时做乘法累加,再输出滤波结果y(n)。

FIR 滤波器的一个分支的延时线,把每一节的输出加权累加,得到滤波器的输出。

结构如图1所示,它由一条均匀间隔的延迟线上对抽失信号进行加权求和构成。

图1 FIR滤波器的直接型结构图3.利用MATLAB确定滤波器的系数设计一个线性相位FIR低通滤波器,技术指标:通带截止频率fp=1500Hz,阻带起始频率fst=2250 Hz,通带允许的最大衰减为Rp= dB,阻带应达到的最小衰减为As=50dB。

滤波器的采样频率为fs=16000Hz。

这里采用窗函数设计法设计FIR滤波器,首先根据阻带衰减As=50dB来选择窗形状,海明窗和布拉克曼窗等窗函数均可提供大于50dB的衰减。

由于海明窗可提供较小的过渡带宽,所以选择海明窗。

然后编写MATLAB程序,求出技术指标中fp、fst相对应的数字频率,求出过渡带宽,由过渡带宽确定窗口长度N,求出低通滤波器的截止频率,由firl函数求出滤波器的系数。

这部分MATLAB程序如下:fp=1500;fst=2250;fs=16000; %输入设计指标wp=2*fp/fs; %求归一化数字通带截止频率ws=2*fst/fs; %求归一化数字阻带起始频率deltaw=ws-wp; %求过渡带宽N0=ceildeltaw); %求窗口长度N=N0+mod(N0+l,2); %确保窗口长度N为奇数n=N-1; %求出滤波器的阶数nwn=(ws+wp)/2; %求滤波器的截止频率b=firl(n,wn); %利用firl函数求出滤波器的系数bl=round(b*10000); %将系数用整数表示fn=fopen(‘’,’w’); %将系数存放在文件COEF_FIR.inc中fclose(fn)运行后得到:N=71,wp=,ws=,wn=。

再编制以下MATLAB程序段用于检验Rp和As是否满足设计要求:[H,w]=freqz(b,1); %计算频率响应mag=abs(H); %求幅频特性db=20*logl0(mag/max(mag)); %化为分贝值dw =pi/512;Rp= -(min(db(1:wp*pi/dw+1))) %检验通带波动As= -(max(db(ws*pi/dw+1:512))) %检验最小阻带衰减求得滤波器的Rp=,As=,满足设计要求。

4.DSP实现FIR滤波器程序设计的总体思路是:启动ADS7864对输入的模拟信号进行模数转换,每采集到一个数据就送人DSP滤波运算,运算结果送DAC7625转换为模拟量。

不断地重复上述过程,在DAC7625的输出端就得到滤波后的模拟信号。

为了精确地控制ADS7864的采样率,使用TMS320VC5416内部的定时器控制采样时间间隔T,设置定时器的定时时间等于采样时间间隔T,并让它工作在中断方式,则定时器每过T 时间就向CPU发出中断请求,CPU响应中断请求,转去执行中断服务程序,在中断服务程序中读取A/D转换结果,对转换结果进行滤波运算,并将运算结果送D/A 转换器转换为模拟量。

因此,程序分为主程序和定时器中断服务程序两部分。

为了提高程序运行速度,全部程序用汇编语言编写。

(1)主程序流程图主程序流程图如图2所示。

主程序首先完成DSP的初始化,然后启动A/D转换,最后等待定时器中断。

DSP的初始化包括:设置堆栈用于存放定时中断的断点地址;设置DSP的工作频率,TMS320VC5416的工作频率最高可达到160MHz,可以根据采样率来选择相应的工作频率;设置定时器的定时参数,以确定A/D转换器的采样速率;定时器开中断等。

(2)定时器中断服务程序流程图定时器中断服务程序流程图如图3所示。

由图3看出,滤波运算是在定时器中断服务程序中完成的,因此,中断服务程序稍长,但由于全部程序采用汇编语言指令编写,执行速度快,而且TMS320VC5416的工作频率最高可达160MHz,在定时器定时周期内有充裕的时间完成中断服务程序的运行。

(3)汇编语言程序①主程序.mmregs.def start.def INLOOP.bss w0,1.bss wl,1STACK .usect “STACK”,10Hx .usect “x”,71.dataCOEF .copy “COEF_ FIR.Inc” ;FIR滤波器系数.textstart SSBX INTM ;关中断STM #STACK+IOH,SP ;设置堆栈STM #0124H, PMST ;OVLY =1,MP/MC=O,IPTR =002HSSBX OVM ;OVM =1SSBX FRCT ;FRCT=1,准备做小数乘法RSBX SXMLD #6h,A ;选择ADS7864的通道APORTW *(8H),3H ;设置DSP时钟频率STM #0b,CLKMD ;切换到DIV方式Tst: LDM CLKMD,AAND #01b,ABC Tst,ANEQ ;A≠0,继续检测STM #97FFH,CLKMD ;设置为PLL×10方式LD #OH,A ;hold=0,启动A/D转换PORTW *(8H),4HRPT #30 ;延时NOPLD #1H,A ;hold=1PORTW * (8H),4H ;设置定时器,采样速率16000赫兹STM #0E79H,TCR ;预定标分频系数TDDR=9STM #3E7H,PRD ;定时器时间常数=999STM #08H,IMR ;允许定时器中断STM #08H,IFR ;定时器中断标志清零STM #0E69H,TCR ;启动定时RSBX INTM ;开中断WAIT B WAIT ;等待定时中断由于所设计的FIR滤波器的系数多达71个,所以在前面的MATLAB程序中将系数放在文件中,这样在汇编语言主程序中就可以通过.copy汇编命令将文件复制到汇编程序中,免去手工输入系数的麻烦。

②定时器中断服务程序INLOOP SSBX INTM ;禁止中断PORTR 2H,@w0 ;读取A/D转换结果存于w0中LD #0H,A ;hold=0,启动A/D转换PORTW *(8H),4HRPT #30 ;延时NOPLD #1H,A ;hold=1PORTW *(8H),4HLD #w0,DPLD #0F000H,A ;判断转换结果是否有效AND @ w0,ASTL A,@ wlCMPM @ w1,8000HBC GOBACK,NTC ;若转换结果无效则返回主程序LD @w0,A ;转换结果有效,w0送ASTL A,4,@w0 ;去掉高4位后再存于w0中LD @w0,-4,A ;右移4位LD #x+1,DPSTL A,@x+1 ;送入x+1,准备由DSP进行运算STM #x+71,AR1 ;AR1指向线性缓冲区FIR3 RPTZ A,#70 ;DSP进行滤波运算MACD *AR1-,COEF,ASTH A,* AR1 ;运算结果送D/A转换器PORTW *AR1,1000hLD #1FH,A ;使D/A转换器开始转换PORTW *(8H),1004HGOBACKRSBX INTM ;开中断RETE ;返回主程序.END5.结束语在上面的汇编语言程序中,FIR滤波器采用的是直接型结构,并且采用带移位双操作数指令来实现,所设计的程序直观易懂。

由于是线性相位的FIR滤波器,还可以采用线性相位FIR滤波器的结构及相应的DSP指令来设计程序。

占用存储空间少,运行速度快。

FIR滤波器以它优越的性能,在数字信号处理领域中占有很重要的地位。

采用DSP芯片实现FIR数字滤波,不仅具有准确度高、执行速度快等特点,而且用程序可移植性好,实用性强可以十分方便地改变滤波器特性。

相关文档
最新文档