南理工DSP应用技术实验四

上传人:我*** 文档编号:136033167 上传时间:2020-06-22 格式:DOC 页数:15 大小:5.46MB
返回 下载 相关 举报
南理工DSP应用技术实验四_第1页
第1页 / 共15页
南理工DSP应用技术实验四_第2页
第2页 / 共15页
南理工DSP应用技术实验四_第3页
第3页 / 共15页
南理工DSP应用技术实验四_第4页
第4页 / 共15页
南理工DSP应用技术实验四_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《南理工DSP应用技术实验四》由会员分享,可在线阅读,更多相关《南理工DSP应用技术实验四(15页珍藏版)》请在金锄头文库上搜索。

1、DSP应用技术实验报告 题目: DSP应用技术实验报告 院系: 电子工程与光电技术学院 姓名(学号): 指导教师: 李彧晟 实验日期: 2015年12月11号 实验四 FIR滤波器的DSP实现一、实验目的1. 巩固数字 FIR 滤波器的概念2. 理解定点 DSP 中数的定标、有限字长、溢出等概念3. 理解算法实现中实时的概念4. 掌握 DSP 开发过程以及基本调试方法5. 理解汇编以及高级语言开发 DSP 实现算法的区别二、实验仪器计算机,C2000 DSP 教学实验箱,XDS510 USB 仿真器,示波器,信号源三、实验内容针对FIR 算法,设计滤波器系数,完成数据的定标,查看滤波器特性曲线

2、。建立工程,编写DSP 的主程序,并对工程进行编译、链接,利用现有 DSP 平台实现FIR滤波器算法,通过信号源、示波器理解滤波器特性,验证实现与理论设计的一致性。四、实验准备1、实验流程实验之前首先必须对FIR滤波器的设计、实现算法有所了解,必要时通过计算机算法仿真,理解FIR滤波器特性。由于计算机仿真属于浮点运算,而 TMS320F2812 是定点DSP,因此需要针对所设计的FIR滤波器系数进行定标,随后对定标后的数据再次进行仿真,以验证定点实现的性能是否满足系统指标。根据FIR滤波器算法,编写 C源程序或者汇编程序,实现算法功能。并验证DSP实现时算法的正确性以及精度的要求。这种算法功能

3、上的仿真可以利用CCS集成开发环境中数据IO 来模拟信号的输入,完成验证算法精度与功能的正确。验证了算法的功能正确之后,可以将程序下载到DSP上运行,观察现象。更为重要的是,在硬件平台上验证系统的实时性,以及评估资源的使用情况。若满足实时性要求,则测试各项指标,应该与原理设计相吻合。如果实现与理论不一致,则首先检查算法的实时性,以及资源使用是否冲突等原因,对程序进行优化后再次编译链接,重新验证直至正确。算法的优化有时会贯穿于整个设计之中。图4.1 算法流程实现2、程序流程FIR滤波器算法属于典型的数据流处理方式,每到达一个新数据,就必须进行一次计算,更新输出。因此,当一次采样完成之后,就可以进

4、行FIR核心算法,并将计算结果输出给DAC。因此,和DSP的数据采集实验类似,用 DSP实现实时的 FIR信号处理算法必须依赖于ADC、DSP以及 DAC三大基本部件。充分利用 DSP 片上 ADC外设,实现模拟信号的采样,并由DSP完成FIR核心算法,由DSP2000 实验箱中 DAC1(AD768)来完成数字到模拟的还原。在数据采集实验基础上,我们对程序流程稍加改动,就可实现完整数字FIR滤波器功能。程序流程如图4.2 所示。图二 FIR滤波器程序流程3、FIR滤波器设计数字滤波器用于完成信号的滤波处理功能,是用有限精度算法实现的离散时间非时变系统。用DSP实现数字FIR滤波算法,具有稳定

5、性强、精度高、实时性好、灵活性大、实现简单等优点。有限长的单位冲击响应滤波器(FIR)差分方程可表示为:yn=k=0Nhkxn-k其中,h是滤波器系数,x为输入的数字信号,y为 FIR滤波器计算输出。N 为滤波器阶数。由此可得,一个 N 阶的滤波器计算,需要N+1个滤波器系数,N+1个数字输入,每得到一个y值,需要N+1次乘法以及N次加法。另外,N阶滤波器需要保存当前的 N+1 个输入信号数值,以及事先设计的 N+1 个滤波器系数。滤波器系数的设计有很多方式,这里我们采用MATLAB软件来对FIR滤波器算法进行仿真并验证性能。在MATLAB 界面中,利用 fir1 命令来设计滤波器系数。fir

6、1 的完整命令如下:h = fir1(n,Wn,ftype,window)其中,n为滤波器阶数,Wn为归一化截止频率(这里的归一化指与采样频率一半进行归一化),Wn对应了在幅频曲线上-6dB点的频率数值,ftype为滤波器类型,可以是低通、带通、高通、带阻等形式。window 是使用的窗函数,可以是 hamming、hanning、chebwin等形式。h为产生的滤波器系数。详细说明可在 MATLAB 中输入 help fir1 或 doc fir1 查看。对产生的滤波器系数可以用freqz 命令查看幅频、相频特性曲线。具体命令如下:freqz(h),其中h为设计的滤波器系数。当然也可以使用

7、fvtool(h)命令,验证滤波器设计是否满足系统指标要求,例如通带范围、阻带衰减、过渡带宽度等。4、DSP的算法实现TMS320F2812 是定点型 DSP,存储器字长 16bit,可进行 32bit 的运算。而仿真计算中得到的数据大多是浮点型,因此将算法用定点DSP实现时,必须进行数据格式的定标。比如对FIR滤波器系数的定标可以参照“实验10任意信号发生器”中介绍的方法来完成。对系数定标后,还要进行仿真以验证性能。另外,由于TMS320F2812的数据字长只有32bit,DAC1接受的字长为 16bit,因此有限字长带来精度的损失。更为重要的是当加法的结果超过16位表示范围时,数据产生了溢

8、出,这是有限字长带来的第二个问题。再者,数据的计算结果存放在32bit的寄存器中,但DAC却是16bit,取高位输出还是低位输出,还是取一个合适的范围,这是数据截取的问题。因此在编写程序时,必须考虑定点数据的运算效应,由数据的动态范围来确定截取、定标等问题。定点DSP内部一般有溢出保护功能,可以查看溢出标志位及时发现溢出现象,其次用溢出模式位来使ACC 结果控制在最大值范围之内,以达到防止溢出引起精度严重恶化的目的。具体的实现编程,可以采用C语言或者汇编语言。C语言描述算法较为简单,在此不作详细叙述。若用汇编语言实现,必须结合算法特点和汇编指令,充分利用片内多功能单元同时执行的特点,提高程序的

9、执行效率,比如在TMS320F2812的汇编指令有XMACD指令,支持在单周期内完成数据的加、乘以及数据搬移功能,或者使用DMAC指令在单周期内实现双乘与双加运算。采用不同的指令,必须辅以不同的数据编排方式,因此需要综合考虑选取最优的实现方案。5、算法实时性测试算法的实时性测试主要指该算法能否在规定的时间内完成FIR运算,规定时间在此是指采样周期。FIR的运算必须在两次采样间隔内完成,否则会造成数据的丢失。这是数据流处理的特点,数据的运算速度必须大于数据的更新速度。在实验平台中,我们可以利用GPIO管脚来实测采样周期和算法执行时间。添加程序,当程序进入断点时,将GPIO的某一个引脚输出置高,完

10、成算法退出中断时再置低。由此当全速执行程序时,测量该GPIO引脚上的周期,便是采样周期,高电平持续时间即为 FIR滤波器算法执行时间,由此判断计算法实现是否实时。TMS320F2812 的通用数字输入输出引脚是复用的,即可以作为通用 IO口使用,又可以作为外设引脚使用,这是由GPxMUX寄存器来控制切换。如果是数字IO模式,方向控制寄存器GPxDIR用来配置引脚信号的传输方向,另外GPxDAT寄存器用来反映当前对应引脚的电平,GPxSET用来设置引脚的高电平(置高),GPxCLEAR 寄存器用来设置引脚的低电平(清零),GPxTOGGLE 寄存器用来反相引脚电平(取反)。C2000 实验箱中可

11、用的 GPIO口在“附录C3 C2000 DSP 教学实验箱介绍”中有所介绍,下面以 GPAIO 为例简单介绍一下相关寄存器含义。(1) 通用 IO 口多路切换控制寄存器 GPAMUX(地址0x70C0)如果GPAMUX.y 位0,则对应引脚配置为通用 IO 口;如果GPAMUX.y 位1,则对应引脚配置为专用功能外设口;(2) 通用 IO 口方向控制寄存器 GPADIR(地址0x70C1)如果GPADIR.y 位0,则对应通用 IO 口配置为输入;如果GPADIR.y 位1,则对应通用 IO 口配置为输出;(3)通用 IO 数据寄存器 GPADAT(地址0x70E0)这是一个可读可写的寄存器

12、,读访问能返回当前输入IO引脚的信号电平状态,写操作能设置对应输出IO引脚的电平。如果GPADAT.y 位0,则表示引脚为低电平;如果GPADAT.y 位1,则表示引脚为高电平;由于不同引脚读写的同时发生,引起冲突,所以一般不使用该寄存器改变输出引脚的电平,而使用下述GPASET、GPACLEAR、GPATOGGLE 寄存器来解决。(4)通用 IO 口置位寄存器 GPASET(地址0x70E1)这是一个只写寄存器,读操作总是返回0。如果GPASET.y 位0,则表示引脚没有变化;如果GPASET.y 位1,则表示引脚电平置高(前提是该端口作为输出);(5)通用 IO 口清零寄存器 GPACLE

13、AR(地址0x70E2)这是一个只写寄存器,读操作总是返回0.如果GPACLEAR.y 位0,则表示引脚没有变化;如果GPACLEAR.y 位1,则表示引脚电平清零(前提是该端口作为输出);(6)通用 IO 口反相寄存器 GPATOGGLE(地址0x70E3)这是一个只写寄存器,读操作总是返回0.如果GPATOGGLE.y 位0,则表示引脚没有变化;如果GPATOGGLE.y 位1,则表示引脚电平反转(前提是该端口作为输出);五、实验步骤1.系数设计利用MATLAB 设计滤波器系数,并对系数进行数据定标,完成浮点到定点的转换。分别作出两组系数的幅频、相频特性曲线,看是否满足设计要求。2.设备检

14、查检查仿真器、C2000 DSP 实验箱、计算机之间的连接是否正确,打开计算机和实验箱电源。3.启动集成开发环境点击桌面CCS 2(C2000)快捷方式,进入集成开发环境 CCS。4. 建立工程新建一个DSP工程,编辑源程序、配置命令等相关文件,并在工程中添加这些程序文件。在上次实验程序的基础上加以修改,在中断程序内添加FIR算法模块,完成 FIR算法程序。设置GPIO的输出控制,使之能够完成算法执行时间测量的工作。 建立工程(build),若出错,则根据错误提示,修改源程序文件或者配置命令文件,直至编译链接正确,生成可执行的.out 文件。5.加载程序在主菜单下,选择“File Load P

15、rogram”,将程序下载到 DSP 内部。6.算法功能验证在中断服务子程序恰当的地方,设置探针点,利用文件IO 的方式,输入 x 数据(具体方法参见“实验9 DSP 开发基础实验”);在 FIR 算法结束处设置断点,验证 FIR 滤波器算法的正确性。输入的数据可具有一定的特殊性,进行特例验证。若计算结果不正确,则进行程序的调试。调试关键在于现象重现、错误定位,可以利用各种调试手段,比如打开寄存器窗口、变量窗口等辅助手段,根据数值以及实验原理,查找错误原因,修改程序直至正确为止。解决错误后,再重新恢复原错误程序,观察错误现象是否重现,以确定错误的唯一性。7.算法实时性验证去除程序中的探针点以及断点重新全速运行程序,测量采样频率以及FIR 算法的核心执行时间,判断该系统是否实时。若非实时,则优化程序,甚至修改滤波器系数,直至满足实时要求。8.连接外部电路打开信号源,产生一个合适频率(ADC 的采样频率必须满足奈奎斯特采样定律)的正弦信号,信号幅度控制在0.5V 以内,验证后将信号通过 INPUT1 接口输入到 DSP 中。打开示波器,将

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号