1、一、设计摘要摘要: DSP数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。DSP 芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法用DSP 芯片实现IIR 数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。IIR数字滤波器有其独特的优点,IIR数字滤波器单位响应为无限脉冲序列, IIR数字滤波器采用递归型结构,即结构上带有反馈环路。本课题主要应用MATLAB软件设计IIR数字滤波器,
2、并对所设计的滤波器进行仿真;应用DSP集成开发环境CCS调试汇编程序。利用MATLAB仿真得到的滤波器系数,编程实现IIR数字滤波器,得出滤波结果波形,并对结果进行分析与总结。关键字:DSP IIR滤波器 编程二、设计目的(1)通过设计对DSP芯片有进一步的了解。(2)掌握IIR滤波器的设计方法。(3)培养一定的汇编及c语言能力。三、设计原理3.1 IIR数字滤波器的理论分析从IIR数字滤波器的实现来看,有直接型、级联型、并联型和格型等基本网络结构。不同的结构形式会有不同的运算误差,其稳定性、运算速度、所占用的存储空间等也有所不同3。其中直接型仅需要N级延迟单元,且可作为级联型和并联型结构中的
3、基本单元,是最常用的IIR数字滤波器结构之一。IIR数字滤波器的设计方法有两类4,一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要作辅助工具。对系统传递函数为对应的差分方程为:的IIR数字波滤器来说,设计的任务就是寻求一种因果关系和物理上可实现的系统传递函数使H(z)满足上述的关系,为此可这样使其频率响应能够满足所希望得到的频域指标。3.2 TMS320C5502的体系结构TMS320VC5402处理器在本系列中处于先进水平。它具有运算速度快,内部存储空间大,外部接口性能好等
4、优点。所以我选择了技术上比较先进,价格又较便宜的C5402作为硬件开发对象。下面结合C5402的实际情况,介绍一下该芯片的体系结构。C5402共有144个引脚,其中有20根地址线AO-A19,16根数据线DO-D15,4个外部可屏蔽引脚INTO#-INT3#和一个不可屏蔽中断引脚BIO#,剩下的引脚可以分成以下几类:存储器控制引脚,时钟/晶振引脚,多通道缓冲串口引脚,主机接口通讯引脚,电源引脚,初始化和复位引脚,通用输入/输出引脚,以及用于测试的IEEE1149. 1标准JTAG口。3.3 IIR数字滤波器的设计流程在设计滤波器时首先要有清晰的思路,因此流程图的设计至关重要。本设计采用的是基于
5、DSP的IIR数字滤波,针对其要完成的功能,对其流程进行了初步规划,如图1所示:图1 IIR数字滤波器设计流程根据设计流程,通过DSP仿真软件编译出适合参数要求的汇编程序。运用汇编语言进行程序编写使其具有更好的实时性,此外运用汇编语言编写更有助于以后的设计拓展。利用TMS320C5402实现IIR的程序中应注意以下几点:(1)数据存放要求。因为采用MAC指令和循环寻址,所以输入数据和滤波器系数的存放要按照一定的要求。数据块和系数块都要放在双寻址数据存储区。(2)循环寻址的使用。为了使用循环寻址,除了对数据的存放有要求外,先还要设置BK为块长N。由于使用了循环寻址,数据和系数的指针在操作后以循环
6、的方式增加1。(3)数据的初始化。输入数据块要初始化为全0。这样在运算中不会对输入产生影响。四、IIR数字滤波器的软件和硬件设计4.1 IIR数字滤波器的数据存储器设计TMS320C54X定点DSP提供了单周期乘/累加指令MAC和循环寻址方式,使IIR数字滤波器每个样值的计算可以在一个周期内完成。IIR数字滤波器每个样值的计算就是实现两数组对应项乘积的累加和。在计算时有前向通道和反馈通道两部分,因此在计算设计时要充分考虑x(n)、y(n)和h(n)系数的存放位置,并正确初始化这两个存储块指针,这样在计算中才能够准确取数据,实现乘加运算。图2 存储过程4.2 IIR滤波器的MATLAB辅助设计对
7、于脉冲响应不变法,它是将s域内的H(s)转换成z域内的H(z),但是在映射时,S域内不能一一对应到Z域内的单位圆上,因此容易在仿真中易产生混叠现象,影响实验效果。基于此,本次设计在MATLAB的仿真中优先考虑应用双线性变换法。IIR低通数字滤波器根据相关技术指标进行matlab仿真,从而计算出相应的传输函数。其仿真结果结果如图3所示: 图3 利用matlab仿真图根据以上仿真结果及相应的系数和N值,在相关技术指标不变的情况下,我选用了ChebyshevI型双线性变换法。4.3基于DSP的IIR数字滤波器的硬件设计硬件设计总体方案: TI公司的2000系列和5000系列的DSP都通用型的芯片,考
8、虑到2000系列的DSP多用于控制方面,而5000系列较2000系列具有更高的时钟频率、更低的价格和更加强大的运算功能,所以在数字滤波器系统的设计中采用了TI公司的一款高性能、低功耗的定点DSP: TMS320VC5402。该DSP具有较快的运算速度:运算速度最快可达532MIPS;采用了低功耗设计方式:内核电压为1.8V,I/O电压为3.3 V。数字滤波系统的具体方案框图如图6所示:图4数字滤波器系统方案框图通常的设计中会采用SV供电并行的ADC(模数转换)和DAC(数模转换)芯片与DSP连接,传输数据过程中会占用总线的时间,而且需要采用多片电平转换器件将SV电平转换为3.3V的逻辑电平。考
9、虑到TMS320VC5402的片上包含两个McBSP(多通道缓冲串行口)接口,可以将这两个通道模仿实现SPI的时序,因此本设计中采用了SPI接口器件,ADC芯片采用的是TLV 1570,实现将需要滤波信号从模拟转换到数字信号的实时采样。数模转换芯片采用的是TLV 5608,实现滤波后的信号从数字信号恢复为所需要的模拟信号。JTGA口供DSP芯片下载程序调试。PMST=FFA0H,ST1=2300H,;SWWSR=0,OVM=1,FRCT=1,SXM=1STM#X,AR1STM#Y,AR2STM#d,AR3;RPTA,#5;初始化d(n),d(n-1),d(n-2)=0STLA,*AR3+STM
10、#2,AR0;初始化Arn是地址偏移量为常数INLOOP:STM#d+5,AR3;STM#table,AR4;IIR的系数A2,A1,B2,B1,B0PORTR100H,*AR1;从端口读入数据LD*AR1,7,ASTM#N-1,BRC;计算IIR的节数NRPTELOOPLOOP:MAC*AR4+,*AR3-,A;input+d(n-2)*A2MAC*AR4,*AR3,A-;input+d(n-2)*A2+d(n-1)*A1MAC*AR4+,*AR3-,ASTHA,*AR3+0;d(n)=input+d(n-2)*A2+d(n-1)*A1MPY*AR4+,*AR3-,A;d(n-2)*B2MA
11、C*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1DELAY*AR3-;d(n-2)=d(n-1)MAC*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1+d(n)*B0DELAY*AR3-;d(n-1)=d(n)ELOOP:STHA,*AR2;output=d(n-2)*B2+d(n-1)*B1+d(n)*B0PORTW*AR2,200h;将结果写入文件中BINLOOP END五、仿真分析及结果5.1 CCS仿真细节CCS是一个开放的环境,可以通过设置不同的驱动程序完成对不同环境的支持。CCS setup 配置程序就是用来定义DSP芯片和目标板类型的。在第一次使
12、用CCS之前必须首先运行CCS setup 配置程序。在以后的使用中,若想改变CCS应用平台的类型,可以再次运行该配置程序来改变设置。CCS软件集成了TI公司的Simulator和Emulatord 的驱动程序,用户可以直接用TI的仿真器进行开发测试。5.2 IIR数字滤波的软件调试在效果图中,上面波形为DSP实验箱产生的滤波前的效果图,下面波形为进行IIR滤波后的效果图。从两图的比较可以看出,所设计的IIR滤波器收到了较好的效果,完成了设计要求。在编写及调试的过程中主要遇到以下问题:(1)在编写程序的过程中要对所涉及的存储单元进行初始化,这样在数据或是代码段进行汇编时才不会出现问题。(2)编
13、写程序需要对数据段、代码段、堆栈段进行设置。要编写相应的.cmd(链接命令文件)文档对其进行合理化的分配空间。(3)在编写程序时一定要编写相应的中断向量表文件,这样在汇编时才不会出错。5.3 芯片选择此设计中采用的是C5502 Device Simulator芯片,IIR输入信号入口地址data_in,输出地址为out。图4 芯片选择5.4创建项目图5 创建项目5.5加载程序图6 加载程序5.6程序(1)IIR.asm.global _iir,_init,_outdata_iir bset frct sub #1,t0 mov t0,mmap(csr)add t0,ar0mov xar2,xd
14、pmov ar2,cdpmov #0,ac0rpt csrmacmz *ar0-,*cdp+,ac0add t0,ar1mov xar3,xdpmov ar3,cdprpt csrmacmz *ar1-,*cdp+,ac0mar *ar1+mov hi(ac0),*ar1mov hi(ac0),t0bclr frctret_init sub #1,t0mov t0,mmap(csr)mov #0,ac0rpt csrmov ac0,*ar0+rpt csrmov ac0,*ar1+ret_outdata mov t1,ac0sub #2,ac0mov ac0,mmap(csr)add ac0,
15、ar0rpt csrdelay *ar0-mar *ar0+mov t0,*ar0ret图7 汇编源程序(2)IIR55.c#include math.h#define signal_1_f 500#define signal_2_f 10000#define signal_sample_f 25000#define pi 3.1415926#define IIRNUMBER_L 2#define bufer_L 256int N_L=IIRNUMBER_L; int data_inbufer_L;int outbufer_L ;int xIIRNUMBER_L+1;int yIIRNUMBE
16、R_L+1;int k=0;int bufer=bufer_L;int fBnIIRNUMBER_L=0,0x634a;int fAnIIRNUMBER_L=0xe5c,0xe5c;extern int iir(int *x,int *y,int *fAn,int *fBn,int N_L);extern int init(int *,int *,int);extern int outdata(int *,int,int);void inputwave();void main()int iirout;inputwave();init(x,y,N_L);while(1)x0=data_ink;i
17、irout=iir(x,y,fAn,fBn,N_L);outdata(out,iirout,bufer);k+;if(k=bufer_L)k=0;void inputwave()float wt1;float wt2;int i;for(i=0;iROM PAGE 0 .data ROM PAGE 0 .bss RAM PAGE 0 .const RAM PAGE 0 .sysmem RAM PAGE 0 .stack RAM PAGE 0 .cio RAM PAGE 0 .sysstack RAM PAGE 0 .switch RAM PAGE 0 .cinit RAM PAGE 0 .pi
18、nit RAM PAGE 0 .vectors VECS PAGE 0 .ioport IOPORT PAGE 2 图9 命令程序5.7运行结果图10 运行结果5.8更改图形参数图11 更改参数过程5.9波形图图12波形图图13 滤波前时域波形图14滤波前频域波形图15 滤波后时域波形图16 滤波后频域波形六、心得体会参考文献【1】汪春梅,孙洪波TMS320C55x DSP原理及应用.电子工业出版社.2011.6【2】 戴明桢.TMS320C54xDSP结构、原理及应用M.北京航空航天大学出版社,2001,8.【3】 胡圣尧. DSP原理及应用M.东南大学出版社,2008.7.【4】清源科技.TMS320C54xDSP应用程序设计教程M.机械工业出版社,2004,1.【5】邹彦. DSP原理及应用M. 北京:电子工业出版社,2005,1.16