运用TMS320C54x汇编语言编写定点数运算、浮点数运算程. 下载本文

一、 定点数的运算

在定点 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位小数乘法以及有符号 /无符号整数除法的程序指令。