- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、 定点数的运算
在定点 DSP 芯片中 ,采用定点数进行数值运算 ,其操作数一般采用整数来表示。一个整 数的最大表示范围取决于 DSP 芯片所给定的字长 ,一般为 16 位或 24 位。显
然 ,字长越长 ,所 能表示的数的范围越大 , 精度也越高。在字长固定的前提下 , 所需要达到的精度越高 , 那么 所能表示的浮点数的范围就会越小。
DSP 芯片的数以 2 的补码形式表示。每个 16 位数用一个符号位来表示数的正
负 , 0 表示数 值为正 , l 则表示数值为负。其余 15 位表示数值的大小。如 :
二进制数 0010000000000011b=8195
二进制数 1111111111111100b= -4
为了使得无论是无符号数还是符号数 , 都可以使用同样的加法减法规则 , 符号数中的负 数用正数的补码表示。
对 DSP 芯片而言 ,参与数值运算的数就是 16 位的整数。但在许多情况下 ,数学运算过程
中的数不一定都是整数。
那么 , DSP 芯片是如何处理小数的呢 ?这其中的关键就是数的定标 , 由程序员来确定一个数的小数点处于 16 位中的哪一位。
通过设定小数点在 16 位数中的不同位置 , 就可以表示不同大小和不同精度的小数了。 数 的定标有 Q 表示法和 S 表示法两种。
定点数的加减法运算 较为简单 ,只需遵循二进制数加减法运算规则相加减即可。如 :两个 8 位数具有相同的 Qn 格式 ,保证隐含的小数点对齐。
下图中两个 8 位数相加 , 有溢出。 溢出是由于字长有限运算结果超出数值的表示范围引起的。
定点数的乘法运算
DSP 处理器都有硬件乘法器和乘法指令 ,可实现单周期乘法运算 ,二进制乘法运算包含 一系列的移位和加法运算。 定点数乘法运算不要求相乘数有相同的 Qn 格式。 两个相乘数分别 为 Qn 和 Qm 格式 ,字长为 N ,结果为 Q(n+m 格式 ,字长为
2N 。如:
以下两个相乘数分别为 Q7 和 Q6 格式 , 8 位字长。两个定点小数作乘法运算 ,结果左移一 位,保存高位得到运算结果 ,结果为 Qm (m n
m 格式。小数乘小数 ,整数乘小数都要求 对乘积结果左移一位后 , 保存高位。
整数与整数相乘 ,须查询标志位确定保存的位数 , 结果
不需要左移一位。 DSP 处理器带有可选的自动左移一位的功能 ,消除移位操作的时间开销。
定点数的除法运算
除法是乘法的逆运算 , 包括一系列移位和条件减法运算 , 需要用除法子程序实现。 大多 数 DSP 处理器不提供单周期除法指令。如果除法运算中包含负数 ,应将负数变换为等值的正 数 ,然后作除法运算 ,最后加上正确的符号。
下面详细分析 32 位整数乘法 , 32 位小数乘法以及有符号 /无符号整数除法的程序指令。
位定点数乘法运算示意图
32 位整数乘法参考程序 :
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
This routine multiplies two 32-bit signed integers resulting;
in a 64-bit product. The operands are fetched from data memory and
the result is written back to data memory.
Data Storage:
X1,X0 32-bit operand
Y1,Y0 32-bit operand
W3,W2,W1,W0 64-bit product
Entry Conditions:
SXM=1,OVM=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.mmregs
STACK: .usect “ STACK” ,100h设置;堆栈段
.bss X0,1
.bss X1,1
.bss Y0,1
.bss Y1,1
.bss W0,1
.bss W1,1
.bss W2,1
.bss W3,1
.def start
.data
table1: .word 1
.word 2
table2: .word 3
.word 4
.text
start: STM #X0,AR2 ; 将 X0 的首地址存入 AR2
STM #Y0,AR3 ; 将 Y0 的首地址存入 AR3
RPT #1 ;设置重复执行两次下条指令
MVPD table1,*AR
文档评论(0)