述职报告 - 太原理工大学_第1页
述职报告 - 太原理工大学_第2页
述职报告 - 太原理工大学_第3页
述职报告 - 太原理工大学_第4页
述职报告 - 太原理工大学_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页免责声明:图文来源于网络搜集,版权归原作者所以若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。 述职报告-太原理工大学一、设计摘要

摘要:

dsp数字信号处理(digitalsignalprocessing,简称dsp)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。dsp芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速地实现各种数字信号处理算法用dsp芯片实现iir数字滤波器,不仅具有精确度高、不受环境影响等优点,而且因dsp芯片的可编程性,可方便地修改滤波器参数,从而改变滤波器的特性,设计十分灵活。iir数字滤波器有其独特的优点,iir数字滤波器单位响应为无限脉冲序列,iir数字滤波器采用递归型结构,即结构上带有反馈环路。

本课题主要应用matlab软件设计iir数字滤波器,并对所设计的滤波器进行仿真;应用dsp集成开发环境——ccs调试汇编程序。利用matlab仿真得到的滤波器系数,编程实现iir数字滤波器,得出滤波结果波形,并对结果进行分析与总结。

关键字:dsp

iir滤波器

编程

二、设计目的

(1)通过设计对dsp芯片有进一步的了解。(2)掌握iir滤波器的设计方法。(3)培养一定的汇编及c语言能力。

三、设计原理

3.1iir数字滤波器的理论分析

从iir数字滤波器的实现来看,有直接型、级联型、并联型和格型等基本网络结构。不同的结构形式会有不同的运算误差,其稳定性、运算速度、所占用的存储空间等也有所不同。其中直接Ⅱ型仅需要n级延迟单元,且可作为级联型和并联型结构中的基本单元,是最常用的iir数字滤波器结构之一。iir数字滤波器的设计方法有两类[4],一类是借助于模拟滤波器的设计方法设计出模拟滤波器,利用冲激响应不变法或双线性变换法转换成数字滤波器,然后用硬件或软件实现;另一类是直接在频域或时域中进行设计,设计时需要作辅助工具。对系统传递函数为

1

[3]

h(z)bzrr0nk0mr

1akzk对应的差分方程为:

y(n)brx(nr)aky(nk)

r0k1mn的iir数字波滤器来说,设计的任务就是寻求一种因果关系和物理上可实现的系统传递函数使h(z)满足上述的关系,为此可这样使其频率响应能够满足所希望得到的频域指标。

3.2tms320c5502的体系结构

tms320vc5402处理器在本系列中处于先进水平。它具有运算速度快,内部存储空间大,外部接口性能好等优点。所以我选择了技术上比较先进,价格又较便宜的c5402作为硬件开发对象。下面结合c5402的实际情况,介绍一下该芯片的体系结构。c5402共有144个引脚,其中有20根地址线ao-a19,16根数据线do-d15,4个外部可屏蔽引脚into#-int3#和一个不可屏蔽中断引脚bio#,剩下的引脚可以分成以下几类:存储器控制引脚,时钟/晶振引脚,多通道缓冲串口引脚,主机接口通讯引脚,电源引脚,初始化和复位引脚,通用输入/输出引脚,以及用于测试的ieee1149.1标准jtag口。

3.3iir数字滤波器的设计流程

在设计滤波器时首先要有清晰的思路,因此流程图的设计至关重要。本设计采用的是基于dsp的iir数字滤波,针对其要完成的功能,对其流程进行了初步规划,如图1所示:

2

开始系统初始化分配数据空间设置数据指针从指定端口读数据x(n)并从数据存储器读读取系数完成数据的乘加运算修改数据指针为下一次乘加运算做准备保存结果从指定端口输出结果图1iir数字滤波器设计流程

根据设计流程,通过dsp仿真软件编译出适合参数要求的汇编程序。运用汇编语言进行程序编写使其具有更好的实时性,此外运用汇编语言编写更有助于以后的设计拓展。

利用tms320c5402实现iir的程序中应注意以下几点:

(1)数据存放要求。因为采用mac指令和循环寻址,所以输入数据和滤波器系数的存放要按照一定的要求。数据块和系数块都要放在双寻址数据存储区。(2)循环寻址的使用。为了使用循环寻址,除了对数据的存放有要求外,先还要设置bk为块长n。由于使用了循环寻址,数据和系数的指针在操作后以循环的方式增加1。

(3)数据的初始化。输入数据块要初始化为全0。这样在运算中不会对输入产生影响。

四、iir数字滤波器的软件和硬件设计

34.1iir数字滤波器的数据存储器设计

tms320c54x定点dsp提供了单周期乘/累加指令mac和循环寻址方式,使iir数字滤波器每个样值的计算可以在一个周期内完成。iir数字滤波器每个样值的计算就是实现两数组对应项乘积的累加和。在计算时有前向通道和反馈通道两部分,因此在计算设计时要充分考虑x(n)、y(n)和h(n)系数的存放位置,并正确初始化这两个存储块指针,这样在计算中才能够准确取数据,实现乘加运算。数据存储器x:ar2x0x1x2ar1coef:数据存储器b2b1b0a2a1

图2存储过程

4.2iir滤波器的matlab辅助设计

对于脉冲响应不变法,它是将s域内的h(s)转换成z域内的h(z),但是在映射时,s域内不能一一对应到z域内的单位圆上,因此容易在仿真中易产生混叠现象,影响实验效果。基于此,本次设计在matlab的仿真中优先考虑应用双线性变换法。

iir低通数字滤波器根据相关技术指标进行matlab仿真,从而计算出相应的传输函数。其仿真结果结果如图3所示:

4

图3利用matlab仿真图

根据以上仿真结果及相应的系数和n值,在相关技术指标不变的情况下,我选用了chebyshevi型双线性变换法。

4.3基于dsp的iir数字滤波器的硬件设计硬件设计总体方案:

ti公司的2021系列和5000系列的dsp都通用型的芯片,考虑到2021系列的dsp多用于控制方面,而5000系列较2021系列具有更高的时钟频率、更低的价格和更加强大的运算功能,所以在数字滤波器系统的设计中采用了ti公司的一款高性能、低功耗的定点dsp:tms320vc5402。该dsp具有较快的运算速度:运算速度最快可达532mips;采用了低功耗设计方式:内核电压为1.8v,i/o电压为3.3v。数字滤波系统的具体方案框图如图6所示:

adctms320vc5402flashsramjtag时钟电源dac图4数字滤波器系统方案框图

通常的设计中会采用sv供电并行的adc(模数转换)和dac(数模转换)芯

5片与dsp连接,传输数据过程中会占用总线的时间,而且需要采用多片电平转换器件将sv电平转换为3.3v的逻辑电平。考虑到tms320vc5402的片上包含两个mcbsp(多通道缓冲串行口)接口,可以将这两个通道模仿实现spi的时序,因此本设计中采用了spi接口器件,adc芯片采用的是tlv1570,实现将需要滤波信号从模拟转换到数字信号的实时采样。数模转换芯片采用的是tlv5608,实现滤波后的信号从数字信号恢复为所需要的模拟信号。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#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)*b2mac*ar4+,*ar3,a;d(n-2)*b2+d(n-1)*b1delay*ar3-;d(n-2)=d(n-1)

6mac*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.1ccs仿真细节

ccs是一个开放的环境,可以通过设置不同的驱动程序完成对不同环境的支持。ccssetup配置程序就是用来定义dsp芯片和目标板类型的。在第一次使用ccs之前必须首先运行ccssetup配置程序。在以后的使用中,若想改变ccs应用平台的类型,可以再次运行该配置程序来改变设置。ccs软件集成了ti公司的simulator和emulatord的驱动程序,用户可以直接用ti的仿真器进行开发测试。

5.2iir数字滤波的软件调试

在效果图中,上面波形为dsp实验箱产生的滤波前的效果图,下面波形为进行iir滤波后的效果图。从两图的比较可以看出,所设计的iir滤波器收到了较好的效果,完成了设计要求。

在编写及调试的过程中主要遇到以下问题:

(1)在编写程序的过程中要对所涉及的存储单元进行初始化,这样在数据或是代码段进行汇编时才不会出现问题。

(2)编写程序需要对数据段、代码段、堆栈段进行设置。要编写相应的.cmd(链接命令文件)文档对其进行合理化的分配空间。

(3)在编写程序时一定要编写相应的中断向量表文件,这样在汇编时才不会出错。

5.3芯片选择

此设计中采用的是c5502devicesimulator芯片,iir输入信号入口地址data_in,输出地址为out。

7

图4芯片选择

5.4创建项目

图5创建项目

5.5加载程序

图6加载程序

85.6程序

(1)iir.asm.global_iir,_init,_outdata_iir

bsetfrct

sub#1,t0

movt0,mmap(csr)addt0,ar0movxar2,xdpmovar2,cdpmov#0,ac0rptcsrmacmz*ar0-,*cdp+,ac0addt0,ar1movxar3,xdpmovar3,cdprptcsrmacmz*ar1-,*cdp+,ac0mar*ar1+movhi(ac0),*ar1movhi(ac0),t0bclrfrctret_init

sub#1,t0movt0,mmap(csr)mov#0,ac0rptcsrmovac0,*ar0+rptcsrmovac0,*ar1+ret_outdata

movt1,ac0sub#2,ac0movac0,mmap(csr)addac0,ar0rptcsrdelay*ar0-mar*ar0+movt0,*ar0ret

9

图7汇编源程序

(2)iir55.c#include”math.h”#definesignal_1_f500#definesignal_2_f10000#definesignal_sample_f25000#definepi3.1415926#defineiirnumber_l2#definebufer_l256intn_l=iirnumber_l;intdata_in[bufer_l];intout[bufer_l];intx[iirnumber_l+1];inty[iirnumber_l+1];intk=0;intbufer=bufer_l;intfbn[iirnumber_l]={0,0x634a};intfan[iirnumber_l]={0xe5c,0xe5c};externintiir(int*x,int*y,int*fan,int*fbn,intn_l);externintinit(int*,int*,int);externintoutdata(int*,int,int);voidinputwave;voidmain{intiirout;

10inputwave;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;}}}voidinputwave{floatwt1;floatwt2;inti;for(i=0;irompage0

.data>rompage0

.bss>rampage0

.const>rampage0

.sysmem>rampage0

.stack>rampage0

.cio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论