DSP实验报告相关HD8680通信技术应用讲义正文.docVIP

DSP实验报告相关HD8680通信技术应用讲义正文.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP实验报告相关HD8680通信技术应用讲义正文

实验14  定点小数乘法运算 一、实验目的 ㈠ 了解DSP定点运算中小数乘法的处理方法。 ㈡ 掌握汇编源程序的建立、汇编、链接过程,练习使用CCS进行程序调试的方法。 二、实验原理 ㈠ 小数运算 两个16位整数相乘,乘积总是“向左增长”。这就意味着多次相乘后乘积将会很快超出定点器件的数据范围。而且要将32位乘积保存到数据存储器,就要开销2个机器周期以及2个字的程序和RAM单元。更坏的是,由于乘法器都是16位相乘,因此很难在后续的递推运算中,将32位乘积作为乘法器的输人。 然而,小数相乘,乘积总是“向右增长”。这就意味着超出定点器件数据范围的将是不太感兴趣的部分。在小数乘法情况下,既可以存储32位乘积,也可以存储高16位乘积,这就允许 用较少的资源保存结果,也可以用于递推运算。这就是为什么定点DSP芯片都采用小数乘法的原因。 小数的表示方法: C54x采用2的补码小数,其最高位为符号位,数值范围从-1~+1。一个16位2的补 码小数(Q15格式)的每一位的权值为: MSB … LSB -1 1/2 1/4 1/8 … 2-16 一个十进制小数乘以32768之后,再将其十进制整数部分转换成十六进制数,就能得到这个十进制小数的2的补码表示了,如图8-4-1所示: 图8-4-1 DSP定点运算中小数的表示 在汇编语言程序中,是不能直接写入十进制小数的。如果要定义一个系数0.707,可以写成: .word 32768*707/1000 而不能写成32768*0.707。 ㈡ 小数乘法 先看一个小数乘法的例子(假设字长4位,累加器8位): 上述乘积是7位,当将其送到累加器时,为保持乘积的符号,必须进行符号位扩展,这样,累加器中的值-0.09375),出现了冗余符号位。原因是: 即两个带符号数相乘,得到的乘积带有2个符号位,造成错误的结果。 解决冗余符号位的办法是:在程序中设定状态寄存器ST1中的FRCT(小数方式)位为1,在乘法器将结果传送至累加器时就能自动地左移1位,累加器中的结果为:Szzzzzz0(Q7格式),-0.1875),自动地消去了两个带符号数相乘时产生的冗余符号位。 所以,在小数乘法编程时,应当事先设置FRCT位: SSBX FRCT … MPY *AR2,*AR3,A STH A,@Z 这样,C54x就完成了Q15*Q15=Q15的小数乘法。 三、实验任务 编制并调试一个计算小数乘法的程序段。 ㈠ 的程序段,已知其中 a1=0.1 a2=0.2 a3=-0.3 a4=0.4 x1=0.8 x2=0.6 x3=-0.4 x4=-0.2 汇编程序如下: ;*** 编制计算小数乘法运算的程序段。其中数据均为小数*** ;*** a1=0.1 a2=0.2 a3=-0.3 a4=0.4 *** ;*** x1=0.8 x2=0.6 x3=-0.4 x4=-0.2 *** .title chef.asm .mmregs .def start,_c_int00 .bss x,4 .bss a,4 .bss y,1 .data table: .word 1*32768/10 .word 2*32768/10 .word -3*32768/10 .word 4*32768/10 .word 8*32768/10 .word 6*32768/10 .word -4*32768/10 .word -2*32768/10 .text _c_int00 b start nop nop start: SSBX FRCT STM #0,SWWSR STM #x,AR1 RPT #7 MVPD table,*AR1+ STM #x,AR2 STM #a,AR3 STM #y,AR4 RPTZ A,#3 MAC *AR2+,*AR3+,A STH A,*AR4 done: B done 该程序运行的结果y=0x1EB7=0.24。

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档