dsp实验1-基本算数运算.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dsp实验1-基本算数运算课案

电子科技大学通信与信息工程学院 标 准 实 验 报 告 (实验)课程名称 DSP设计与实现 电子科技大学教务处制表 电 子 科 技 大 学 实 验 报 告 一、实验室名称:DSP实验室 二、实验项目名称:基本算术运算 三、实验学时:4 四、实验原理: 定点DSP中数据表示方法 C54X是16位的定点DSP。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示,D1位表示,次高位(D14)表示。如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示,然后是,最低位(D0)表示。所以04000H表示小数0.5,01000H表示小数,而0001H表示16位定点DSP能表示的最小的小数(有符号)=0.000030517578125。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X中,将一个小数用16位定点格式来表示的方法是用乘以该小数,然后取整。 从上面的分析可以看出,在DSP中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。 实现16定点加法 C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。ADD指令的寻址方式很多,其详细使用说明请参考《TMS320C54X实用教程》。在本实验中,我们使用下列代码来说明加法运算: ld temp1,a ;将变量temp1装入寄存器A add temp2,a ;将变量temp2与寄存器A相加,结果放入A中 stl a,add_result ;将结果(低16位)存入变量add_result中。 注意,这里完成计算temp3=temp1+temp2,我们没有特意考虑temp1和temp2是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。 实现16位定点减法 C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。SUB指令与ADD指令一样,有许多的寻址方式,其详细使用说明请参考《TMS320C54X实用教程》。在本实验中,我们使用下列代码来说明减法运算: stm #temp1,ar3 ;将变量temp1的地址装入ar3寄存器 stm #temp3,ar2 ;将变量temp3的地址装入ar3寄存器 sub *ar2+, *ar3,b ;将变量temp3左移16位同时变量temp1也左移16位,然后 ;相减,结果放入寄存器B(高16位)中,同时ar2加1。 sth b,sub_result ;将相减的结果(高16位)存入变量sub_result。 实现16定点整数乘法 在C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。有关乘法指令的详细使用说明请参考《TMS320C54X实用教程》。在C54X中,一般对数据的处理都当做有符号数,如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。在本实验中,我们使用下列代码来说明整数乘法运算: rsbx FRCT ;清FRCT标志,准备整数乘 ld temp1,T ;将变量temp1装入T寄存器 mpy temp2,a ;完成temp2*temp1,结果放入A寄存器(32位) 例如,当temp1=1234H(十进制的4660),temp2=9876H(十进制的-26506),乘法的结果在A寄存器中为0F8A343F8H(十进制的-123517960)。这是一个32位的结果,需要两个内存单元来存放结果: sth a,mpy_I_h ;将结果(高16位)存入变量mpy_I_h stl a,mpy_I_l ;将结果(低16位)存入变量mpy_I_l 当temp1=10H(十进制的16),temp2=05H(十进制的5),乘法

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档