dsp-基本算数运算.docx

dsp-基本算数运算.docx

ID:57665077

大小:23.98 KB

页数:6页

时间:2020-08-31

dsp-基本算数运算.docx_第1页
dsp-基本算数运算.docx_第2页
dsp-基本算数运算.docx_第3页
dsp-基本算数运算.docx_第4页
dsp-基本算数运算.docx_第5页
资源描述:

《dsp-基本算数运算.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一:基本算数运算1、实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。本实验学习使用定点DSP实现16位定点加、减、乘、除运算的基本方法和编程技巧。本实验的演示文件为exer1.out。2、实验原理1)定点DSP中的数据表示方法在DSP中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。2)实现16位定点加法在本实验中,我们使用下列代码来说明加法运算:ldtemp1,a;将变量temp1装入寄存器Aaddtemp2,

2、a;将变量temp2与寄存器A相加,结果放入A中stla,add_result;将结果(低16位)存入变量add_result中。注意,这里完成计算temp3=temp1+temp2,我们没有特意考虑temp1和temp2是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。3)实现16位定点减法在本实验中,我们使用下列代码来说明减法运算:stm#temp1,ar3;将变量temp1的地址装入ar3寄存器stm#temp3,ar2;将变量temp3的地址装入ar2寄存器sub*ar2+,*ar3,b;将变量temp3左移16位同时变量temp1也左移16位,

3、然后;相减,结果放入寄存器B(高16位)中,同时ar2加1。sthb,sub_result;将相减的结果(高16位)存入变量sub_result。4)实现16位定点整数乘法在本实验中,我们使用下列代码来说明整数乘法运算:6/6rsbxFRCT;清FRCT标志,准备整数乘ldtemp1,T;将变量temp1装入T寄存器mpytemp2,a;完成temp2*temp1,结果放入A寄存器(32位)例如,当temp1=1234H(十进制的4660),temp2=9876H(十进制的-26506),乘法的结果在A寄存器中为0F8A343F8H(十进制的-123517960)。这是一个3

4、2位的结果,需要两个内存单元来存放结果:stha,mpy_I_h;将结果(高16位)存入变量mpy_I_hstla,mpy_I_l;将结果(低16位)存入变量mpy_I_l当temp1=10H(十进制的16),temp2=05H(十进制的5),乘法结果在A寄存器中为00000050H(十进制的80)。对于这种情况,仅仅需要保存低16位即可:stla,mpy_I_l;将结果(低16位)存入变量mpy_I_l5)实现16位定点小数乘法在本实验中,我们使用下列代码来说明小数乘法运算:ssbxFRCT;FRCT=1,准备小数乘法ldtemp1,16,a;将变量temp1装入寄存器A的

5、高16位mpyatemp2;完成temp2乘寄存器A的高16位,结果在B中,同时;将temp2装入T寄存器sthb,mpy_f;将乘积结果的高16位存入变量mpy_f例如,temp1=temp2=4000H(十进制的0.5),两数相乘后结果为20000000(十进制的2−2=0.25)。再如,temp1=0ccdH(十进制的0.1),temp2=0599aH(十进制的0.7),两数相乘后B寄存器的内容为08f5f0a4H(十进制的0.07000549323857)。如果仅保存结果的高16位08f5H(十进制的0.06997680664063)。有时为了提高精度,可以使用RND

6、或使用MPYR指令对低16位做四舍五入的处理。6)实现16位定点整数除法详细代码如下:ldtemp1,T;将被除数装入T寄存器6/6mpytemp2,A;除数与被除数相乘,结果放入A寄存器ldtemp2,B;将除数temp2装入B寄存器的低16位absB;求绝对值stlB,temp2;将B寄存器的低16位存回temp2ldtemp1,B;将被除数temp1装入B寄存器的低16位absB;求绝对值rpt#15;重复SUBC指令16次subctemp2,b;使用SUBC指令完成除法运算bcddiv_end,agt;延时跳转,先执行下面两条指令,然后判断A,若A>0,则;跳转到标号

7、div_end,结束除法运算stlB,quot_i;将商(B寄存器的低16位)存入变量quot_isthB,remain_i;将余数(B寄存器的高16位)存入变量remain_ixorB;若两数相乘的结果为负,则商也应为负。先将B寄存器清0subquot_i,B;将商反号stlB,quot_i;存回变量quot_i中div_end:7)实现16位定点小数除法其详细代码如下:ldtemp1,T;将被除数装入T寄存器mpytemp2,A;除数与被除数相乘,结果放入A寄存器ldtemp2,B;将除数temp2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。