DSP技术课程(第三章)-2概要1.ppt
文本预览下载声明
§3-3 TMS320C54x的指令集 ‘C54X指令集 TMS320C54x的指令集有近两百条指令,按功能分为如下几类: ?算术运算指令 ?逻辑运算指令 ?程序控制指令 ?装入和存储指令 一、算术运算指令 算术运算指令可分为如下几类: ? 加法指令 ? 减法指令 ? 乘法指令 ? 乘加指令 ? 乘减指令 ? 双数/双精度指令 ? 特殊操作指令 1.加法指令 定点DSP中数据表示方法 当它表示一个整数时,其最低位(D0)表示1,D1位表示2的1次方,次高位(D14)表示2的14方。 如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式显示)。 定点DSP中数据表示方法 当需要表示小数时,小数点的位置始终在最高为后,而最高位(D15)表示符号位。这样次高位(D14)表示0.5,然后是0.25,最低位(D0)表示。所以04000H表示小数0.5,01000H表示小数0.25,而0001H表示16位定点DSP表示的最小的小数(有符号)0.000030517578125。 实现16位定点加法 ‘C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。 ADD中寻址方式 ADD Smem [,SHIFT],src [,dst] 例如: 2.减法指令 实现16位定点减法 ‘C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。 其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。 SUB指令与ADD指令一样,有许多的寻址方式,其详细使用说明请参考《TMS320C54X使用教程》 利用SUBC实现除法 在‘C54X中没有提供专门的除法指令,一般有两种方法来完成除法。 一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。 另一种方法是使用SUBC指令,重复16次减法完成除法运算。 实现小数除法 在‘C54X中实现16位的小数除法与前面的整数除法基本一致,也是使用SUBC指令来完成。 但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。在执行SUBC指令前,应将被除数装入A或B寄存器的高16位,而不是低16位。其结果的格式与整数除法一样。 第二,应考虑符号位对结果小数点的影响。所以应对商右移一位,得到正确的有符号数。 3.乘法指令 实现16定点整数乘法 在‘C54X中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。 乘数在‘C54X的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。 如果是无符号数乘时,请使用MPYU指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。 实现小数乘法 在‘C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。 ‘C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移移位。 两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。 4.乘加和乘减指令 5、双精度/双数操作指令 6、特殊指令 二、逻辑运算指令 逻辑指令有与、或、异或、移位和测试指令 1、与指令(AND) 1、分支指令 3、返回指令 5、混合程序控制指令 四、装入和存储指令 装入和存储指令包括: ? 一般的装入和存储指令 ? 条件存储指令 ? 并行装入和存储指令 ? 并行装入和乘法指令 ? 并行存储和加件乘指令 ? 混合装入和存储指令 §3-4 特殊指令使用说明 FIRS指令 Viterbi译码指令DADST、DSADT、CMPS 最小均方运算LMS 在进行自适应滤波等操作中经常会使用LMS算法,C54x提供的LMS指令方便了编程。如下图所示的自适应滤波器设计中,滤波器系数修正公式为: 数据归一化相关指令EXP、NORM 归一化一个数是先求其指数,然后把它调整到最大精度格式。实现方法如下: 2、调用与中断指令 4、重复指令和堆栈操作指令 1、一般的装入指令 一般的装入
显示全部