湖南工程学院dsp课设
湖南工程学院dsp课设 篇1
一、设计摘要
摘要:
DSP数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。DSP 芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法用DSP 芯片实现IIR 数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因DSP 芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。IIR数字滤波器有其独特的优点,IIR数字滤波器单位响应为无限脉冲序列, IIR数字滤波器采用递归型结构,即结构上带有反馈环路。
本课题主要应用MATLAB软件设计IIR数字滤波器,并对所设计的滤波器进行仿真;应用DSP集成开发环境——CCS调试汇编程序。利用MATLAB仿真得到的滤波器系数,编程实现IIR数字滤波器,得出滤波结果波形,并对结果进行分析与总结。
关键字:DSP
IIR滤波器
编程
二、设计目的
(1)通过设计对DSP芯片有进一步的了解。(2)掌握IIR滤波器的设计方法。(3)培养一定的汇编及c语言能力。
三、设计原理
3.1 IIR数字滤波器的理论分析
从IIR数字滤波器的实现来看,有直接型、级联型、并联型和格型等基本网络结构。不同的结构形式会有不同的运算误差,其稳定性、运算速度、所占用的存储空间等也有所不同。其中直接Ⅱ型仅需要N级延迟单元,且可作为级联型和并联型结构中的基本单元,是最常用的IIR数字滤波器结构之一。IIR数字滤波器的设计方法有两类[4],一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要作辅助工具。对系统传递函数为
[3]
H(z)bzrr0Nk0Mr
1akzk对应的差分方程为:
y(n)brx(nr)aky(nk)
r0k1MN的IIR数字波滤器来说,设计的任务就是寻求一种因果关系和物理上可实现的系统传递函数使H(z)满足上述的关系,为此可这样使其频率响应能够满足所希望得到的频域指标。
3.2 TMS320C5502的体系结构
TMS320VC5402处理器在本系列中处于先进水平。它具有运算速度快,内部存储空间大,外部接口性能好等优点。所以我选择了技术上比较先进,价格又较便宜的C5402作为硬件开发对象。下面结合C5402的实际情况,介绍一下该芯片的体系结构。C5402共有144个引脚,其中有20根地址线AO-A19,16根数据线DO-D15,4个外部可屏蔽引脚INTO#-INT3#和一个不可屏蔽中断引脚BIO#,剩下的引脚可以分成以下几类:存储器控制引脚,时钟/晶振引脚,多通道缓冲串口引脚,主机接口通讯引脚,电源引脚,初始化和复位引脚,通用输入/输出引脚,以及用于测试的IEEE1149.1标准JTAG口。
3.3 IIR数字滤波器的设计流程
在设计滤波器时首先要有清晰的思路,因此流程图的设计至关重要。本设计采用的是基于DSP的IIR数字滤波,针对其要完成的功能,对其流程进行了初步规划,如图1所示:
开始系统初始化分配数据空间设置数据指针从指定端口读数据x(n)并从数据存储器读读取系数完成数据的乘加运算修改数据指针为下一次乘加运算做准备保存结果从指定端口输出结果图1 IIR数字滤波器设计流程
根据设计流程,通过DSP仿真软件编译出适合参数要求的汇编程序。运用汇编语言进行程序编写使其具有更好的实时性,此外运用汇编语言编写更有助于以后的设计拓展。
利用TMS320C5402实现IIR的程序中应注意以下几点:
(1)数据存放要求。因为采用MAC指令和循环寻址,所以输入数据和滤波器系数的存放要按照一定的要求。数据块和系数块都要放在双寻址数据存储区。(2)循环寻址的使用。为了使用循环寻址,除了对数据的存放有要求外,先还要设置BK为块长N。由于使用了循环寻址,数据和系数的指针在操作后以循环的方式增加1。
(3)数据的初始化。输入数据块要初始化为全0。这样在运算中不会对输入产生影响。
四、IIR数字滤波器的软件和硬件设计 4.1 IIR数字滤波器的数据存储器设计
TMS320C54X定点DSP提供了单周期乘/累加指令MAC和循环寻址方式,使IIR数字滤波器每个样值的计算可以在一个周期内完成。IIR数字滤波器每个样值的计算就是实现两数组对应项乘积的累加和。在计算时有前向通道和反馈通道两部分,因此在计算设计时要充分考虑x(n)、y(n)和h(n)系数的存放位置,并正确初始化这两个存储块指针,这样在计算中才能够准确取数据,实现乘加运算。数据存储器X:AR2X0X1X2AR1COEF:数据存储器B2B1B0A2A1
图2 存储过程
4.2 IIR滤波器的MATLAB辅助设计
对于脉冲响应不变法,它是将s域内的H(s)转换成z域内的H(z),但是在映射时,S域内不能一一对应到Z域内的单位圆上,因此容易在仿真中易产生混叠现象,影响实验效果。基于此,本次设计在MATLAB的仿真中优先考虑应用双线性变换法。
IIR低通数字滤波器根据相关技术指标进行matlab仿真,从而计算出相应的传输函数。其仿真结果结果如图3所示:
图3 利用matlab仿真图
根据以上仿真结果及相应的系数和N值,在相关技术指标不变的情况下,我选用了ChebyshevI型双线性变换法。
4.3基于DSP的IIR数字滤波器的硬件设计 硬件设计总体方案:
TI公司的2000系列和5000系列的DSP都通用型的芯片,考虑到2000系列的DSP多用于控制方面,而5000系列较2000系列具有更高的时钟频率、更低的价格和更加强大的运算功能,所以在数字滤波器系统的设计中采用了TI公司的一款高性能、低功耗的定点DSP: TMS320VC5402。该DSP具有较快的运算速度:运算速度最快可达532MIPS;采用了低功耗设计方式:内核电压为1.8V,I/O电压为3.3 V。数字滤波系统的具体方案框图如图6所示:
ADCTMS320VC5402FLASHSRAMJTAG时钟电源DAC图4数字滤波器系统方案框图
通常的设计中会采用SV供电并行的ADC(模数转换)和DAC(数模转换)芯 片与DSP连接,传输数据过程中会占用总线的时间,而且需要采用多片电平转换器件将SV电平转换为3.3V的逻辑电平。考虑到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,AR2 STM #d,AR3;RPT A,#5;初始化d(n),d(n-1),d(n-2)=0 STL A,*AR3+ STM #2,AR0 ;初始化Arn是地址偏移量为常数 INLOOP:STM #d+5,AR3;STM #table,AR4;IIR的系数A2,A1,B2,B1,B0 PORTR 100H,*AR1 ;从端口读入数据
LD *AR1,7,ASTM #N-1,BRC ;计算IIR的节数N RPT ELOOP LOOP:MAC *AR4+,*AR3-,A ;input+d(n-2)*A2 MAC*AR4,*AR3,A-;input+d(n-2)*A2+d(n-1)*A1 MAC*AR4+,*AR3-,A STH A,*AR3+0;d(n)=input+d(n-2)*A2+d(n-1)*A1 MPY *AR4+,*AR3-,A ;d(n-2)*B2 MAC*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1 DELAY*AR3-;d(n-2)=d(n-1)MAC*AR4+,*AR3,A;d(n-2)*B2+d(n-1)*B1+d(n)*B0 DELAY*AR3-;d(n-1)=d(n)ELOOP:STHA,*AR2;output=d(n-2)*B2+d(n-1)*B1+d(n)*B0 PORTW *AR2,200h ;将结果写入文件中BINLOOP
END
五、仿真分析及结果
5.1 CCS仿真细节
CCS是一个开放的环境,可以通过设置不同的驱动程序完成对不同环境的支持。CCS setup 配置程序就是用来定义DSP芯片和目标板类型的。在第一次使用CCS之前必须首先运行CCS setup 配置程序。在以后的使用中,若想改变CCS应用平台的类型,可以再次运行该配置程序来改变设置。CCS软件集成了TI公司的Simulator和Emulatord 的驱动程序,用户可以直接用TI的仿真器进行开发测试。
5.2 IIR数字滤波的软件调试
在效果图中,上面波形为DSP实验箱产生的滤波前的效果图,下面波形为进行IIR滤波后的效果图。从两图的比较可以看出,所设计的IIR滤波器收到了较好的效果,完成了设计要求。
在编写及调试的过程中主要遇到以下问题:
(1)在编写程序的过程中要对所涉及的存储单元进行初始化,这样在数据或是代码段进行汇编时才不会出现问题。
(2)编写程序需要对数据段、代码段、堆栈段进行设置。要编写相应的.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,ar0 mov xar2,xdp mov ar2,cdp mov #0,ac0 rpt csr macmz *ar0-,*cdp+,ac0 add t0,ar1 mov xar3,xdp mov ar3,cdp rpt csr macmz *ar1-,*cdp+,ac0 mar *ar1+ mov hi(ac0),*ar1 mov hi(ac0),t0 bclr frct ret _init
sub #1,t0 mov t0,mmap(csr)mov #0,ac0 rpt csr mov ac0,*ar0+ rpt csr mov ac0,*ar1+ ret _outdata
mov t1,ac0 sub #2,ac0 mov ac0,mmap(csr)add ac0,ar0 rpt csr delay *ar0-mar *ar0+ mov t0,*ar0 ret
图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 256 int N_L=IIRNUMBER_L;int data_in[bufer_L];int out[bufer_L];int x[IIRNUMBER_L+1];int y[IIRNUMBER_L+1];int k=0;int bufer=bufer_L;int fBn[IIRNUMBER_L]={0,0x634a};int fAn[IIRNUMBER_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){ x[0]=data_in[k];iirout=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;i<=bufer_L;i++){ wt1=2*pi*i*signal_1_f;wt1=wt1/signal_sample_f;wt2=2*pi*i*signal_2_f;wt2=wt2/signal_sample_f;data_in[i]=(cos(wt1)+cos(wt2))/2*32768;} }
图8 c程序
(3)Ink.cmd-stack 0x0500-sysstack 0x0500-heap 0x1000-c-u _Reset-l rts55.lib MEMORY { PAGE 0:
RAM(RWIX): origin=0x000100,length=0x01ff00
ROM(RIX): origin=0x020100,length=0x01ff00
VECS(RIX): origin=0xffff00,length=0x000200 PAGE 2:
IOPORT(RWI):origin=0x000000, length=0x020000 } SECTIONS {
.text >ROM 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
.pinit >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.
【湖南工程学院dsp课设】推荐阅读:
湖南工程学院怎么样07-12
湖南百万复明工程07-27
湖南工程学院班级旅游保证书08-16
湖南省公路工程结算书09-14
湖南苹果装饰设计工程公司11-14
湖南省2018年中级工程测量员考试题07-29
湖南大学研究生工程数学历年试卷及答案09-21