欢迎来到天天文库
浏览记录
ID:57687487
大小:21.50 KB
页数:2页
时间:2020-09-01
《DSP实验四 小数运算的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四小数运算一、实验目的1.掌握TMS320C54X中小数的表示和处理方法;2.掌握用汇编语言编写DSP程序的方法;3.熟悉CCS软件进行软件仿真。二、实验内容编写计算的程序。其中数据均为小数:a1=0.1a2=0.2a3=-0.3a4=0.2x1=0.8x2=0.6x3=-0.4x4=-0.2三、实验说明许多DSP芯片只支持整数运算,如果现在这些芯片上进行小数运算的话,定点小数运算应该是最佳选择了。两个16位整数相乘,乘积总是“相左增长”的,这意味着多次相乘后乘积将会很快超出定点器件的数据范围。而且要将32位乘积保存到
2、数据存储器,就要开销2个机器周期以及2个字的程序和RAM单元。并且由于乘法器都是16位相乘,因此很难在后续的递推运算中,将32位乘积作为乘法器的输入。然而,小数相乘,乘积总是“相右增长”的,这就合得超出定点器件数据范围的部分是我们不太感兴趣的部分。在小数乘法下,既可以存储32位乘积,也可以存储16位乘积,这就允许用较少的资源保存结果,也方便用于递推去处中。TMS320C54X用用2的补码表示小数,其最高位为符号位,数值范围为(-1-1)。2的补码小数表示方法:将十进制小数乘以32768,并将整数乘积转换成16进制数。正数:
3、乘以32768,整数转换成16进制数;负数:其绝对值乘以32768,整数转换成16进制数后取反加1。如0.5:乘以32768得16384,再转换成十六进制就得到4000H,这就是0.5的补码形式。如-0.5:绝对值乘以32768得16384,再转换成十六进制就得到C000H,这就是0.5的补码形式。在汇编语言程序中,由于不能直接写入十进制小数,因此若要定义一个小数0.707,则应该写成32768*707/1000。在进行小数乘法时,应事先设置状态寄存器ST1中的FRCT位(小数方式位)置1,这样在乘法器将结果传送至累加器时
4、就能自动地左移1位,从而自动消除两个带符号数相乘时产生的冗余符号位。使用语句:SSBXFRCT四、实验设备硬件:PC机软件:PC机操作系统win98及以上、CCS集成开发环境。五、实验步骤1在SIMULATOR方式下运行CCS软件;2新建一个工程;3编辑源程序文件;4向工程添加添加源文件;5编译、链接工程,如有错误则继续调试,直到完全正确生成out文件;6装载out文件运行;7查看内存单元的内容是否正确。注:实验报告要打印出运行结果即内存单元的内容汇编源程序:(可参考课本218页程序).title"dianxin.asm"
5、.mmregsstack.usect"stack",50H.bssa,4.bssx,4.bssy,1.dataSS.word32768*2/10,32768*3/10,-32768*3/10,32768*4/10.word32768*5/10,32768*5/10,32768*5/10,32768*5/10.globalstart.textstartSTM#0,SWWSRSTM#stack+50H,spSTM#a,AR1RPT#7MVPDSS,*AR1+CALLSUMendBendSUMSSBXFRCTSTM#a,AR2S
6、TM#x,AR3RPTZA,#3MAC*AR2+,*AR3+,ASTHA,*(y)RET.end运行程序后y的值为0x1EB7(即十进制的0.24)
此文档下载收益归作者所有