实验指导书及其思考题答案

上传人:bin****86 文档编号:43925214 上传时间:2018-06-07 格式:DOC 页数:99 大小:2.21MB
返回 下载 相关 举报
实验指导书及其思考题答案_第1页
第1页 / 共99页
实验指导书及其思考题答案_第2页
第2页 / 共99页
实验指导书及其思考题答案_第3页
第3页 / 共99页
实验指导书及其思考题答案_第4页
第4页 / 共99页
实验指导书及其思考题答案_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《实验指导书及其思考题答案》由会员分享,可在线阅读,更多相关《实验指导书及其思考题答案(99页珍藏版)》请在金锄头文库上搜索。

1、DSP 原理及应用实实 验验 指指 导导 书书杨宣兵 编 写适用专业:电子信息工程 _电子科学与技术 信息工程 通信工程 信息与通信工程学院2011 2013 年 5 月I前前 言言DSP 原理与应用是电子信息类专业信号与信息处理方向的一门专业必修课,同时也是其他电类专业的一门重要的选修课。课程以 DSP 芯片原理及基于DSP 芯片的应用系统开发为主要内容,介绍了 DSP 芯片原理与开发工具及软硬件开发方法。开设必要的课程实验,使学生加深对 DSP 原理与片上资源应用的掌握,掌握 DSP 项目开发流程、开发方法、开发平台 CCS 的基本使用、DSP 对外设控制方法以及经典数字信号处理算法的 D

2、SP 工程实现等。培养学生将数字信号处理理论应用到实际项目中的工程意识与工程开发能力。通过本课程实验,提高学生分析问题、解决问题的能力和基于 DSP 的嵌入式系统开发的实际动手能力,为学生步入社会奠定工程开发基础。对不同专业根据实验教学大纲进行实验项目选择。实实验验项项目目设设置置与与内内容容提提要要序序 号号实验项目实验项目实验实验 学时学时每组每组 人数人数实验实验 类型类型实验实验 要求要求内内 容容 提提 要要1基本算术运算的 DSP 实现41验证必修1、CCS 基本操作; 2、DSP 应用程序结构和开发流 程; 3、基于 DSP 开发环境 (Simulator)完成 16 位定点 加

3、、减、乘、除运算。2数字振荡器的设计与 实现41设计必修1、CCS 图形工具使用; 2、基于 C 语言和汇编语言混合 程序设计; 3、定时器等外设资源的应用; 4、简单算法(迭代)的实现。3BSP 串口通信实现42综合必修1、McBSP 串口操作; 2、 VC54XX 片上 ROM 资源的使 用;4FIR 数字滤波器设计42设计选修1、McBSP 串口操作与串口中断II与实现实现服务程序编写; 2、AD/DA 操作; 3、FIR 滤波器实现的特殊指令 应用; 4、CCS 高级调试工具使用。5TMS320VC5402 的 Bootloader 设计与实 现4510设计必修1、编程完成对外设 I/

4、O 端口的 控制,实现流水灯功能; 2、完成从 COFF 文件到启动表 的转换; 3、完成程序的固化与脱离上位 机控制的独立运行。6快速傅立叶变换实现42综合选修1、辅助寄存器使用,位倒序寻 址方式应用等; 2、FFT 算法的编程实现; 3、CCS 探针和图形工具使用。7外部设备控制实验41综合任选1、熟悉外部中断使用与中断服 务程序编写方法; 2、掌握对外设端口的操作方法;3、掌握外设的控制方法(包括 键盘、LED、步进电机、LCD 等) ;8双音多频信号编码器 设计22设计选修1、 掌握 DTMF 信号的产生原理;2、 掌握 DTMF 信号产生的 DSP 实现方法;9双音多频信号解码器 设

5、计42设计选修3、 掌握 DTMF 信号的解码算法 原理; 4、 掌握 DTMF 信号解码算法的 DSP 实现方法;III目目 录录实验一实验一 基本算术运算的 DSP 实现1实验二实验二 数字振荡器的设计与实现.9实验三实验三 BSP 串口通信实现16实验四实验四 FIR 数字滤波器设计与实现.25实验五实验五 TMS320VC5402 的 Bootloader 设计与实现.34实验六实验六 快速傅立叶变换(FFT)的实现.45实验七实验七 外部中断、按键、LED 控制实验.67实验八实验八 双音多频 DTMF 信号产生.70实验九实验九 双音多频 DTMF 信号解码.76附录一附录一 DE

6、S5402PP-U 性能介绍82附录二附录二 CCS 驱动程序的安装83附录三附录三 DES5402PP-U 功能详细介绍87附录四附录四 DES5402PP-U 板上设置、状态显示、跳线一览表93IV1实验一:实验一: 基本算术运算的基本算术运算的 DSP 实现实现 实验学时:4实验类型:验证实验要求:必修一、实验目的一、实验目的1、掌握 CCS 的配置与基本使用方法;2、掌握 C54X 汇编语言程序结构,掌握基于 CCS 开发平台 Simulator 采用汇编指令完成 16 位定点加减乘除运算程序设计并对运算结果进行评价;二、实验内容二、实验内容本实验学习使用定点 DSP 实现 16 位定

7、点加、减、乘、除运算的基本方法和编程技巧。三、实验原理、方法和手段三、实验原理、方法和手段1定点 DSP 中数据表示方法C54X 是 16 位的定点 DSP。一个 16 位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示,D1 位表示02,次高位(D14)表示。如果表示一个有符号数时,最高位(D15)为符号12142位,0 表示正数,1 表示负数。例如,07FFFH 表示最大的正数 32767(十进制) ,而 0FFFFH 表示最大的负数-1(负数用 2 的补码方式显示) 。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这

8、样次高位(D14)表示,然后是,最低位(D0)表示。所以 04000H 表示小数12221520.5,01000H 表示小数,而 0001H 表示 16 位定点 DSP 能表示的最小125. 023的小数(有符号)=0.8125。在后面的实验中,除非有特别说明,我们指的都152是有符号数。在 C54X 中,将一个小数用 16 位定点格式来表示的方法是用乘152以该小数,然后取整。从上面的分析可以看出,在 DSP 中一个 16 进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于 1) ,但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,

9、系统都当成整数来处理。 22实现 16 定点加法 C54X 中提供了多条用于加法的指令,如 ADD,ADDC,ADDM 和 ADDS。其中 ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如 32 位扩展精度加法) ,而 ADDM 专用于立即数的加法。在本实验中,我们可以使用下列代码来说明加法运算:ldtemp1,a;将变量 temp1 装入寄存器 Aadd temp2,a;将变量 temp2 与寄存器 A 相加,结果放入 A 中stla,add_result ;将结果(低 16 位)存入变量 add_result 中。注意,这里完成计算 temp3=temp1+temp2,

10、我们没有特意考虑 temp1 和temp2 是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。3实现 16 位定点减法C54X 中提供了多条用于减法的指令,如 SUB,SUBB,SUBC 和 SUBS。其中 SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如 32 位扩展精度的减法) ,而 SUBC 为移位减,DSP 中的除法就是用该指令来实现的。SUB指令与 ADD 指令一样,有许多的寻址方式,其详细使用说明请查阅 TI 文档。在本实验中,我们可以使用下列代码来说明减法运算:stm #temp1,ar3;将变量 temp1 的地址装入 ar3 寄存器s

11、tm #temp3,ar2;将变量 temp3 的地址装入 ar3 寄存器sub *ar2+, *ar3,b ;将变量 temp3 左移 16 位同时变量 temp1 也左移;16 位,然后相减,结果放入寄存器 B(高 16 位)中,;同时 ar2 加 1。sth b,sub_result;将相减的结果(高 16 位)存入变量 sub_result。4实现 16 定点整数乘法在 C54X 中提供了大量的乘法运算指令,其结果都是 32 位,放在 A 或B 寄存器中。乘数在 C54X 的乘法指令很灵活,可以是 T 寄存器、立即数、存贮单元和 A 或 B 寄存器的高 16 位。在 C54X 中,一般

12、对数据的处理都当做有符号3数,如果是无符号数乘时,请使用 MPYU 指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。在本实验中,我们使用下列代码来说明整数乘法运算:rsbx FRCT;清 FRCT 标志,准备整数乘ldtemp1,T;将变量 temp1 装入 T 寄存器mpytemp2,a;完成 temp2*temp1,结果放入 A 寄存器(32 位)例如,当 temp1=1234H(十进制的 4660) ,temp2=9876H(十进制的-26506) ,乘法的结果在 A 寄存器中为 0F8A343F8H(十进制的-) 。这是一个 32 位的结果,需要两个内存单元来

13、存放结果:sth a,mpy_I_h;将结果(高 16 位)存入变量 mpy_I_hstla,mpy_I_l;将结果(低 16 位)存入变量 mpy_I_l当 temp1=10H(十进制的 16) ,temp2=05H(十进制的 5) ,乘法结果在 A 寄存器中为 H(十进制的 80) 。对于这种情况,仅仅需要保存低 16 位即可:stla,mpy_I_l;将结果(低 16 位)存入变量 mpy_I_l5实现 16 定点小数乘法在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了

14、一个状态位 FRCT,将其设置为 1 时,系统自动将乘积结果左移移位。但注意整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)相乘后结果为 32 位,如果精度允许的话,可以只存高 16 位,将低 16 位丢弃,这样仍可得到 16 位的结果。在本实验中,我们使用下列代码来说明小数乘法运算:ssbxFRCT;FRCT=1,准备小数乘法ldtemp1,16,a;将变量 temp1 装入寄存器 A 的高 16 位mpyatemp2;完成 temp2 乘寄存器 A 的高 16 位,结果在 B中;同时将 temp2 装入 T 寄存器sthb,mpy_f;将乘积结果的高

15、16 位存入变量 mpy_f4例如,temp1=temp2=4000H(十进制的 0.5) ,两数相乘后结果为(十进制的=0.25) 。再如,temp1=0ccdH(十进制的 0.1) ,temp2=0599aH(十进制的 0.7) ,22两数相乘后 B 寄存器的内容为 08f5f0a4H(十进制的 0.857) 。如果仅保存结果的高 16 位 08f5H(十进制的 0.063) 。有时为了提高精度,可以使用 RND 或使用MPYR 指令对低 16 位做四舍五入的处理。6实现 16 定点整数除法在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用 SUBC 指令,重复 16次减法完成除法运算。下面我们以 temp1/temp2 为例,说明如何使用 SUBC 指令实现整数除法。其中变量 temp1 为被除数,temp2 为除数,结果即商存放在变量temp3 中。在完成整数除法时,先判断结

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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