




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一基本算术运算1. 实验目的加、减、乘、除是数字信号处理中最基本的算术运算。DSP中提供了大量的指令来实现这些功能。本实验学习使用定点DSP实现16位定点加、减、乘、除运算的基本方法和变成技巧。2. 实验原理(1)定点DSP中数据表示方法C54X是16位的定点DSP。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1位表示21,次高位(D14)表示214。如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示2-1,然后是2-2,最低位(D0)表示2-15。所以04000H表示小数0.5,01000H表示小数2-30.125,而0001H表示16位定点DSP能表示的最小的小数(有符号)2-150.000030517578125。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X中,将一个小数用16位定点格式来表示的方法是用215乘以该小数,然后取整。从上面的分析可以看出,在DSP中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。(2)实现16定点加法C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。(3)实现16位定点减法C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。(4)实现16定点整数乘法在C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。在C54X中,一般对数据的处理都当做有符号数,如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。(5)实现16定点小数乘法在C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。但注意整数乘法时不能这样处理,所以上面的实验一开始便将FRCT清除。两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。(6)实现16定点整数除法在C54X中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用SUBC指令,重复16次减法完成除法运算。以temp1/temp2为例,其中变量temp1为被除数,temp2为除数,结果即商存放在变量temp3中。在完成整数除法时,先判断结果的符号。方法是将两数相乘,保存A或B的高16位以便判断结果的符号。然后只做两个正数的除法,最后修正结果的符号。为了实现两个数相除,先将被除数装入A或B的低16位,接着重复执行SUBC指令,用除数重复减16次后,除法运算的商在累加器的低16位,余数在高16位。(7)实现16定点小数除法在C54X中实现16位的小数除法与前面的整数除法基本一致,也是使用循环的SUBC指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。这与整数除法正好相反。所以在执行SUBC指令前,应将被除数装入A或B寄存器的高16位,而不是低16位。其结果的格式与整数除法一样,A或B寄存器的高16位为余数,低16位为商。第二,与小数乘法一样,应考虑符号位对结果小数点的影响。所以应对商右移一位,得到正确的有符号数。3.实验内容本实验需要使用C54X汇编语言实现加、减、乘、除的基本运算,并通过DES的存贮器显示窗口观察结果。实验分两步完成:(1)编写实验程序代码本实验的汇编源程序代码主要分为六个部分:加法、减法、整数乘法、小数乘法、整数除法和小数除法。每个部分后面都有一条需要加断点的标志语句:nop当执行到这条加了断点的语句时,程序将自动暂停。这时你可以通过“存贮器窗口”检查计算结果。当然你看到的结果都是十六进制的数。(2)在simulator上调试运行,并观察结果在完成实验程序代码的输入,并使用汇编批处理ASM.BAT进行编译连接后,就可以在simulator上调试运行。步骤如下:a. 启动simulator实验系统软件sim54X.exe。b. 在调试界面的左下脚命令栏输入load exer1.out,或单击菜单栏下面的“load”选项,并在弹出的File Name对话框中键入exer1.out装入基本算术运算实验程序,这时应能在“反汇编”窗口看到程序代码。c. 用鼠标选中“Memory”窗口,并在其中选择要查看的存贮器地址段:0x0800x8e。d. 在反汇编窗口中在每个“nop”指令处都设一个断点,方法有两种:1.用鼠标单击该指令将其点亮即可。2.在菜单栏中选择“Break”-“Add”,然后在弹出的对话框中键入欲加断点的地址即可。e. 单击菜单栏下的“Run=F5”按钮,启动执行基本算术运算程序,程序在执行完加法运算后自动暂停。通过“CPU”窗口可以看到寄存器AHL的内容为0x46,这正是加法运算的结果。同样,在“Memory”窗口中,可以看到0x81,0x82,0x88的内容分别为0012,0034,0046。执行加法运算后,将0x81和0x82的内容相加,结果放在0x88单元。f. 在“Memory”窗口中用鼠标左键双击0x81单元,这时可以修改该内存单元的内容。输入新的数据0x0ffee(十进制的-18),编辑内容时请直接输入FFEE(十六进制),然后回车确认,便完成对0x81单元的修改。g. 在“CPU”窗口中修改PC值,方法也是鼠标左键双击PC寄存器的内容,输入新的PC值0x0085(编辑内容时直接输入0085),并用回车键确认。h. 单击菜单栏下的“Run=F5”按钮,程序从当前PC继续运行,重新计算0x81和0x82的和,结果在0x88中。当程序再次暂停时,可以看到AHL寄存器和0x88的内容为0x22(十进制的34),这正是我们希望的结果:-18+52=34。i. 单击“Run=F5”按钮,程序从当前PC继续运行,完成减法运算。当程序再次暂停时(断点位于0x1813),可以看到0x83和0x84单元的内容分别为FFEE和0012,B寄存器的内容为ffdc0000,而0x89的内容为ffdc(十进制-36),这正是我们希望的结果:-18-18=-36。注意,该减法操作使用了辅助寄存器寻址,所以计算结果在B寄存器的高16位。j. 单击“Run=F5”按钮,程序从当前PC继续运行,完成整数乘法运算。当程序再次暂停时(断点位于0x181d),可以看到0x81和0x82单元的内容分别为0012和0034,A寄存器的内容为000003A8,这正是我们希望的结果:18*52=936(0x3a8)。这时我们可以用1个16位的内容单元来保存结果,如将A寄存器的低16位存入0x8b单元。但如果将0x81的内容修改为0x2000(十进制的8192),在“CPU窗口”中将PC修改为1818,然后继续运行,重新计算乘法。当程序完成乘法暂停时,可以看到A寄存器的内容为00068000,这也是一个正确的结果:8192*52=425984(0x68000)。此时将无法用一个16位的存贮单元来保存A寄存器中的结果。k. 单击“Run=F5”按钮,程序从当前PC继续运行,完成小数乘法运算。当程序再次暂停时(断点位于0x1826),可以看到0x83和0x84单元的内容分别为4000和b548,A寄存器的内容为40000000,乘法的结果在B寄存器中为daa40000,这正是我们希望的结果:0.5*(-0.58374)=-0.29187(0x0daa4)。对于小数乘法,一般情况都可以用1个16位的内容单元将B寄存器的高16位保存(如存入0x8c)单元。l. 单击“Run=F5”按钮,程序从当前PC继续运行,完成整数除法运算。当程序再次暂停时(断点位于0x183b),可以看到0x81,0x82,0x8d和0x8e单元的内容分别为0034,0012,FFEE和0010,这正是我们希望的结果:52除以-18,商为-2(0xfffe),余数为16(0x10)。m. 单击“Run=F5”按钮,程序从当前PC继续运行,完成小数除法运算。当程序再次暂停时(断点位于0x1852),可以看到0x81,0x82和0x8f单元的内容分别为4000,4ab8和6da3,这正是我们希望的结果:0.5/0.58374=0.8565457(0x6da3)n. 如果以上程序运行不正确,请检查代码是否输入正确,还可以在源代码中插入断点调试,注意对中间结果的观察。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北交所科技成长产业跟踪第二十八期:小马智行与广州公交集团合作推动自驾技术商业化应用关注北交所无人车概念企业
- 基于2025年农村人居环境整治的社会稳定风险评估与城乡融合发展报告
- 智能化改造对城市污水处理厂运营效率提升的影响报告
- 线下演出市场2025年演出市场政策法规解读与合规报告
- 商业地产项目数字化运营策略与客户体验反馈机制优化报告
- 食品行业食品安全追溯体系与RFID技术应用现状与发展趋势报告
- 工业互联网平台2025年异构数据库融合技术在化工行业中的化工行业市场前景分析报告
- 智慧养老服务平台项目投资回报率分析与可行性报告
- 答题万能公式概要1
- 2025年二手电商平台信用体系建设与信用教育普及报告
- 房屋拆除施工合同
- 企业内部控制-三江学院中国大学mooc课后章节答案期末考试题库2023年
- 国开农业产业发展规划形考1-4试题及答案
- 2022年临商银行股份有限公司招聘考试真题及答案
- 【小升初】2023小学六年级人教版道德与法治升学毕业试卷及答案(时政+上下册考点)04
- MT-146.1-2011-树脂锚杆-第一部分:锚固剂
- 小学生综合素质发展评价手册
- 软件工程复习英文
- 钢花管注浆施工方案范本
- 乳房健康知识
- 济宁医学院期末考试《人体解剖学》复习题
评论
0/150
提交评论