第三章 DSP 软件体系

83
第第第 第第第 DSP DSP 第第 第第 C54x C54x 第第第第 第第第第 C54x C54x 第第第第第第第第 第第第第第第第第 C54x C54x 第第第 第第第 C54x C54x 第第第第第第第第 第第第第第第第第

description

第三章 DSP 软件体系.  ‘C54x 寻址方式 ‘ C54x 特殊寻址方式说明  ‘ C54x 指令集 ‘ C54x 特殊指令使用说明. §3-1 TMS320C54x 的寻址方式. 立即数寻址: 指令中嵌有一个固定的数 绝对地址寻址: 指令中有一个固定的地址 累加器寻址: 按累加器内的地址去访问程序存储器中 的一个单元 直接寻址: 指令中的 7bits 是一个数据页内的偏移地址, - PowerPoint PPT Presentation

Transcript of 第三章 DSP 软件体系

Page 1: 第三章     DSP 软件体系

第三章 第三章 DSPDSP 软件体系软件体系‘‘C54xC54x 寻址方式寻址方式‘‘C54xC54x 特殊寻址方式说明特殊寻址方式说明‘‘C54xC54x 指令集指令集‘‘C54xC54x 特殊指令使用说明特殊指令使用说明

Page 2: 第三章     DSP 软件体系

立即数寻址: 指令中嵌有一个固定的数绝对地址寻址: 指令中有一个固定的地址累加器寻址: 按累加器内的地址去访问程序存储器中 的一个单元直接寻址: 指令中的 7bits 是一个数据页内的偏移地址, 而所在的数据页由数据页指针 DP 或 SP 决定。 该偏移加上 DP 和 SP 的值决定了在数据存储器 中的实际地址。间接寻址: 按照辅助寄存器中的地址访问存储器。存储器映射寄存器寻址: 修改存储器映射寄存器中的值, 而不影响当前 DP 或 SP 的值。堆栈寻址: 把数据压入和弹出系统堆栈。

§3-1 TMS320C54x§3-1 TMS320C54x 的寻址方式的寻址方式

Page 3: 第三章     DSP 软件体系

在立即数寻址中,指令里包括了立即操作数。在一条指令中可对两种立即数编码。一种是短立即数( 3 、 5 、8 或 9bits ),另一种是 16bits 的长立即数。立即数可包含在单字或双字指令中。 3- , 5- , 8- 或 9-bit 值在单字指令中, 16-bit 值在双字指令中。

1 . 1 . 立即数寻址立即数寻址

Page 4: 第三章     DSP 软件体系

立即数寻址的其他例子: LD #0 , ARP ; ARP=2 ( #k3 ) LD #3 , ASM ; ASM=3 ( #k5 ) LD #50 , DP ; DP=50 ( #k9 ) LD #1234 , A ; A=1234 ( #k ) STM #FFFFh , IMR ; IMR=FFFFh ( #lk )

短立即数 RPT长立即数 RPT

Page 5: 第三章     DSP 软件体系

在直接寻址中,指令代码包含了数据存储器地址的低七位。这 7-bit dma作为偏移地址与数据页指针( DP )或堆栈指针( SP )相结合共同形成 16-bit 的数据存储器实际地址。如右图所示。

2. 直接寻址

Page 6: 第三章     DSP 软件体系

CPL=0 : dma 与 9-bit 的 DP 相结合形成数据存储器地址。以 DP 为基准的直接寻址

DP9-bit

9-bit 的 DP 指向数据存储空间的 512 个数据页中的一页

01

2

510511

Page 7: 第三章     DSP 软件体系

编程举例:编程举例:

Page 8: 第三章     DSP 软件体系

编程举例: 33221100

3

00 xaxaxaxaxay

iii

直接寻址编程:.mmregs.bss x, 4, 1

a0 .word 012ha1 .word 3211ha2 .word fe11ha3 .word ff03h

.sect “program”LD #0, ALD #X, DPLD #a0, T

MAC x , A

LD #a1 , T

MAC X+1 , A

LD #a2 , T

MAC X+2 , A

…..

Page 9: 第三章     DSP 软件体系

以 SP 为基准的直接寻址CPL=1 : dma 加上 SP 基地址形成数据存储器地址。 (st1中)

使用以 SP 为基址的直接寻址: AND sample, A

LD sample, A

ADD sample , B ;…… ..

Page 10: 第三章     DSP 软件体系

3. 间接寻址 在间接寻址中, 64K 数据空间任意单元都可通过一个辅助寄存器中的 16-bit 地址进行访问。‘ C54x 有 8 个 16-bit辅助寄存器( AR0-AR7 )。两个辅助寄存器算术单元( ARAU0 和 ARAU1 ),根据辅助寄存器的内容进行操作,完成无符号的 16-bit 算术运算。间接寻址很灵活,不仅能从存储器中读或写一个单 16-bit 数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。

单操作数寻址

Page 11: 第三章     DSP 软件体系

单操作数间接寻址方框图

Page 12: 第三章     DSP 软件体系

单操作数间接寻址类型: *Arx : ARx 包含了数据存储器地址 *ARx-/ *ARx+ : 访问后, ARx 中的地址减 1/ 加 1 *+ARx : 在寻址之前, ARx 中的地址加 1 *ARx-0B/ *ARx+0B :访问后,从 ARx 中以位倒序进位的 方式减去 / 加上 AR0 *ARx-0/ *ARx+0 : 访问后,从 ARx 中减去 / 加上 AR0 *ARx-%/ *ARx+% : 访问后, ARx 中的地址以循环寻址 的方式减 1/ 加 1 *ARx-0%/ *ARx+0% :访问后,从 ARx 中以循环寻址的方 式减去 / 加上 AR0 *ARx(lk) : ARx 和 16-bit 的长偏移 (lk) 的和用来 作为数据存储器地址。 ARx 本身不 被修改

Page 13: 第三章     DSP 软件体系

*+ARx(lk) : 在寻址之前,把一个带符号的 16-bit 的长偏移 ( lk )加到 ARx 中,然后用新的 ARx 的值作为 数据存储器的地址 *+ARx(lk)% :在寻址之前,把一个带符号的 16-bit 的长偏移 以循环寻址的方式加到 ARx 中,然后再用新 的 ARx 的值作为数据存储器的地址

Page 14: 第三章     DSP 软件体系

编程举例:

Page 15: 第三章     DSP 软件体系

编程举例:编程举例: 33221100

3

00 xaxaxaxaxay

iii

间接寻址编程:.mmregs.bss x, 4, 1

a .word 1, 2, 3, 4.sect “program”STM #a, AR1STM #x, AR2LD #0, ALD *AR1+ , TMAC *AR2+ , ALD *AR1+ , T

MAC *AR2+ , A

LD *AR1+ , T

MAC *AR2+ , A

LD *AR1 , T

MAC *AR2 , A

…..

Page 16: 第三章     DSP 软件体系

双操作数寻址方式

双数据存储器操作数间接寻址类型*Arx : ARx 是数据存储器地址*ARx-/ *ARx+ : 访问后, ARx 中的地址减 1/ 加 1*ARx+0% : 访问后, AR0 以循环寻址的方式加 到 ARx 中。例如:

MPY *AR2 , *AR3 , AFIRS *AR2 , *AR3 , coef

Page 17: 第三章     DSP 软件体系

双数据存储器操作数间接寻址方框图双数据存储器操作数间接寻址方框图

Page 18: 第三章     DSP 软件体系

4. 绝对地址寻址有个别指令可以使用 16bits 的绝对地址寻址: 数据存储器地址( dmad )寻址: MVDK Smem, dmad MVDM dmad, MMR MVKD dmad, Smem MVMD pmad, Smem程序存储器地址( pmad )寻址: FIRS Xmem, Ymem, pmad MACD Smem, pmad, src MACP Smem, pmad, src MVPD pmad, Smem端口地址 (PA) 寻址 PORTR PA, Smem PORTW Smem, PA*(lk) 寻址适用于支持单数据存储器操作数的指令

Page 19: 第三章     DSP 软件体系

5. 累加器寻址 累加器寻址是用累加器中的数作为一个地址。这种寻址方式可用来对存放数据的程序存储器寻址。共有两条指令可以采用累加器寻址:

READA SmemWRITA Smem

READA 是把累加器 A 所确定的程序存储器单元中的一个字,传送到单数据存储器( Smem )操作数所确定的数据存储器单元中。 WRITA 是把 Smem 操作数所确定的数据单元中的一个字,传送到累加器 A 确定的程序存储器单元中去。

Page 20: 第三章     DSP 软件体系

只有 8 条指令能使用存储器映射寄存器寻址:LDM MMR , dstMVDM dmad, MMR

MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR

PSHM MMRSTLM src, MMRSTM #lk, MMR

6. 存储器映射寄存器寻址 存储器映射寄存器寻址用来修改存储器映射寄存器而不影响当前数据页指针( DP )或堆栈指针( SP )的值。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。

Page 21: 第三章     DSP 软件体系
Page 22: 第三章     DSP 软件体系

7. 堆栈寻址 系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项或传递数据值。处理器使用一个 16-bit 的存储器映射寄存器—堆栈指针来对堆栈寻址,它总是指向存放在堆栈中的最后一个元素。 共有四条使用堆栈寻址方式访问堆栈的指令:

PSHD 把一个数据存储器的值压入堆栈。PSHM 把一个存储器映射寄存器的值压入堆栈。POPD 把一个数据存储器的值弹出堆栈。POPM 把一个存储器映射寄存器的值弹出堆栈。

Page 23: 第三章     DSP 软件体系

§3-2 §3-2 特殊寻址方式说明特殊寻址方式说明 本小节重点介绍两种广泛应用的特殊寻址方式—循环寻址和位倒序寻址。 位倒序寻址

位倒序寻址提高了执行速度和在 FFT 算法的程序中使用存储器的效率。在这种寻址方式中, AR0 存放的整数 N 是 FFT 点数的一半。一个辅助寄存器指向一数据存放的物理单元。当使用位倒序寻址把 AR0 加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,而不是从右向左。间接寻址中 *Arn+0B/-0B 表示位倒序寻址。

Page 24: 第三章     DSP 软件体系

88 点的点的 FFTFFT 蝶型结运算蝶型结运算W0

W0

W2

W0

W2

W0

W1

W2

W3

x(0)

x(4)

x(2)

x(6)

x(1)

x(5)

x(3)

x(7) X(7)

X(6)

X(5)

X(4)

X(3)

X(2)

X(1)

X(0)

W0

W0

W0

0000

0100

0010

0110

0001

0101

0011

0111

Page 25: 第三章     DSP 软件体系

FFTFFT 中混序就是位倒序中混序就是位倒序FFT 运算时输出 / 输入序列中必有其一要混序。

Page 26: 第三章     DSP 软件体系

位倒序寻址的执行位倒序寻址的执行 设 设 FFTFFT 长度长度 N=16N=16 ,则,则 AR0AR0 赋值为赋值为 88 ,位,位倒序方式读入数据情况如下:倒序方式读入数据情况如下:

Page 27: 第三章     DSP 软件体系

循环寻址: 许多算法,如卷积,相关和 FIR 滤波等,都需要在存储器中实现一个循环缓冲器。在这些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。‘ C54x 间接寻址中提供了循环寻址的方式,以 % 表示。循环寻址图示

Page 28: 第三章     DSP 软件体系

循环寻址的有效地址计算循环寻址的有效地址计算 定义循环缓冲器大小寄存器( BK )来确定了循环缓冲器的大小。大小为 R 的循环缓冲器必须从一个 N-bit 边界开始。循环缓冲器的有效基地址( EFB )就是用户选定的辅助寄存器( ARx )的低 N 位置 0 后所得到的值。 满足条件: 循环缓冲器的尾地址( EOB )是通过用 BK 的低 N 位代替 ARx 的低 N 位得到。循环缓冲器的 INDEX 就是 ARx 的低 N 位, step 就是加到辅助寄存器,或从辅助寄存器中减去的值。循环寻址的算法如下:

RN 2

Page 29: 第三章     DSP 软件体系

if 0≤ if 0≤ index+step index+step < < BK:BK: index = index + step index = index + stepelse if index + step ≥ BK:else if index + step ≥ BK: index = index + step - BK index = index + step - BKelse if index + stepelse if index + step< < 00 index = index + step + BK index = index + step + BK

Page 30: 第三章     DSP 软件体系

如何确定循环缓冲的起始地址?如何确定循环缓冲的起始地址?

R(BK)=32 ---> 二进制 100000 ---> N=6

R(BK)=31 ---> 二进制 011111 ---> N=5

Page 31: 第三章     DSP 软件体系

应用举例应用举例 : : 计算计算 1616 阶的阶的 FIRFIR 滤波器输出滤波器输出 256256 个个点点.sect “fir-prog”STM #255, BRC ; Repeat 256 timesRPTBD fir_filter_loopSTM #16, BK ; FIR circular buffer sizeLD *AR7+, A ; load the input valueSTL A, *AR4+% ; replace oldest sample with; newest sampleRPTZ A, #16MAC *AR4+0%, *AR3+0%, A ; filteringSTH A, *AR5+ ; replace the oldest buffer valuefir_filter_loop

Page 32: 第三章     DSP 软件体系

TMS320C54x 的指令集有近两百条指令,按功能分为如下几类: 算术运算指令

逻辑运算指令 程序控制指令 装入和存储指令

§3-3 TMS320C54x§3-3 TMS320C54x 的指令集的指令集

Page 33: 第三章     DSP 软件体系

一、算术运算指令一、算术运算指令算术运算指令可分为如下几类: 加法指令 减法指令 乘法指令 乘加指令 乘减指令

双数 / 双精度指令 特殊操作指令

Page 34: 第三章     DSP 软件体系

11 、加法指、加法指令令

Page 35: 第三章     DSP 软件体系

定点定点 DSPDSP 中数据表示方法中数据表示方法 当它表示一个整数时,其最低位( D0 )表示

1 , D1 位表示 2 的 1次方,次高位( D14 )表示2 的 14 方。

如果表示一个有符号数时,最高位( D15 )为符号位, 0 表示正数, 1 表示负数。例如, 07FFFH 表示最大的正数 32767 (十进制),而 0FFFFH表示最大的负数 -1 (负数用 2 的补码方式显示)。

当需要表示小数时,小数点的位置始终在最高为后,而最高位( D15 )表示符号位。这样次高位( D14 )表示 0.5 ,然后是 0.25 ,最低位( D0 )表示。所以 04000H 表示小数 0.5 , 01000H 表示小数 0.25 ,而 0001H 表示 16 位定点 DSP 表示的最小的小数(有符号) 0.000030517578125 。

Page 36: 第三章     DSP 软件体系

实现实现 1616 位定点加法位定点加法‘C54X 中提供了多条用于加法的指令,如 ADD , ADDC , ADDM 和 ADDS 。其中 ADDS 用于无符号数的加法运算,

ADDC 用于带进位的加法运算(如 32 位扩展精度加法),而 ADDM专用于立即数的加法。

Page 37: 第三章     DSP 软件体系

使用使用 ADDADD 完成加法完成加法 ld temp1,a ;将变量 temp1装入寄存器 A add temp2,a ;将变量 temp2 与寄存器 A 相加 ;结果放入 A 中 stl a,temp3 ;将结果(低 16 位)存入变量 ; temp3 中。 注意,这里完成计算 temp3=temp1+temp2 ,我们没有特意考虑 temp1 和 temp2 是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。

Page 38: 第三章     DSP 软件体系

利用利用 ADDSADDS 实现实现 3232 位数据装位数据装入入 ld #0,dp ; 设置数据页指针 ld 60h,16,a ; 将 60H 的内容装入 A 的高 16位 adds 61h,a ; 将 61H 的内容加到 A 的低 16位

dld 60h,b ; 直接装入 32 位到 B 寄存器

Page 39: 第三章     DSP 软件体系

ADDADD 中寻址方式中寻址方式 ADD Smem [,SHIFT],src [,dst] 例如: ADD *AR0 , 1 , A , A ADD 60H , -1 , A , A ADD *AR5 , 1 , A , B ADD Xmem, SHFT, src 例如: ADD *AR5 , 1 , A ADD Xmem,Ymem, dst 例如: ADD *AR2 , *AR3 , A

Page 40: 第三章     DSP 软件体系

22 、、减减法法指指令令

Page 41: 第三章     DSP 软件体系

实现实现 1616 位定点减法位定点减法‘C54X 中提供了多条用于减法的指令,如 S

UB , SUBB , SUBC 和 SUBS 。其中 SUBS 用于无符号数的减法运算, SUBB 用于带进位的减法运算(如 32 位扩展精度的减法),而 SUBC 为移位减, DSP 中的除法就是用该指令来实现的。 SUB 指令与 ADD指令一样,有许多的寻址方式,其详细使用说明请参考《 TMS320C54X 使用教程》

Page 42: 第三章     DSP 软件体系

减法指令使用举例减法指令使用举例 stm #60h,ar3 ;将变量 temp1 的地址装入 ar3 寄存器 stm #61h,ar2 ;将变量 temp3 的地址装入 ar3 寄存器 sub *ar2+, *ar3,b ;将变量 temp3左移 16 位同时变量 ; temp2 也左移 16 位,然后相减,结 ; 果放入寄存器 B (高 16 位)中,同 ; 时 ar2 加 1 。 sth b,63h ;将相减的结果(高 16 位)存入变量 63h

Page 43: 第三章     DSP 软件体系

利用利用 SUBCSUBC 实现除法实现除法在‘ C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用 SUBC 指令,重复 16次减法完成除法运算。

Page 44: 第三章     DSP 软件体系

利用利用 SUBCSUBC 完成完成 Temp1/TemTemp1/Temp2p2

ld temp1,B ;将被除数 temp1装入 B 寄存 ;器的低 16 位rpt #15 ;重复 SUBC 指令 16次subc temp2,b ;使用 SUBC 指令完成除法stl B,temp3 ;将商( B 寄存器的低 16 位) ;存入变量 temp3sth B,temp4 ;将余数( B 寄存器的高 16 位) ;存入变量 temp4

注: 实际上是完成整数除法

Page 45: 第三章     DSP 软件体系

实现小数除法实现小数除法 在‘ C54X 中实现 16 位的小数除法与前面的整数除法基本一致,也是使用 SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于 1 ),所以被除数一定小于除数。在执行 SUBC 指令前,应将被除数装入 A或 B 寄存器的高 16 位,而不是低 16 位。其结果的格式与整数除法一样。第二,应考虑符号位对结果小数点的影响。所以应对商右移一位,得到正确的有符号数。

Page 46: 第三章     DSP 软件体系

33 、乘法指令、乘法指令

Page 47: 第三章     DSP 软件体系

实现实现 1616 定点整数乘法定点整数乘法 在‘ C54X 中提供了大量的乘法运算指令,其结果都是 32 位,放在 A 或 B 寄存器中。乘数在‘ C54X 的乘法指令很灵活,可以是 T 寄存器、立即数、存贮单元和 A 或 B 寄存器的高 16 位。如果是无符号数乘时,请使用 MPYU 指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。

Page 48: 第三章     DSP 软件体系
Page 49: 第三章     DSP 软件体系

整数乘法举例整数乘法举例rsbx FRCT ;清 FRCT标志,准备整数乘ld temp1,T ;将变量 temp1装入 T寄存器mpy temp2,a ;完成 temp2*temp1 ,结果放 ;入 A 寄存器( 32 位)

Page 50: 第三章     DSP 软件体系

实现小数乘法实现小数乘法在‘ C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。‘ C54

X 中提供了一个状态位 FRCT ,将其设置为1 时,系统自动将乘积结果左移移位。两个小数( 16 位)相乘后结果为 32 位,如果精度允许的话,可以只存高 16 位,将低 16 位丢弃,这样仍可得到 16 位的结果。

Page 51: 第三章     DSP 软件体系

小数乘法举例小数乘法举例 ssbx FRCT ; FRCT=1 ,准备小数乘法 ld temp1,16,a ;将变量 temp1装入寄存器 A 的高 16 位 mpya temp2 ;完成 temp2乘寄存器 A 的高 16 位,结 ;果在 B 中,同时将 temp2装入 T 寄存器 sth b,temp3 ;将乘积结果的高 16 位存入变量 temp3

如: 0.1(0x0ccd) x 0.7(0x599a) = 0.06997680664063(0x08f5)

注:可以使用 MPYR 完成四舍五入。 比较如下结果 mpyr temp1,b ; T * temp1 -> b

Page 52: 第三章     DSP 软件体系

44 、乘加和乘减指令、乘加和乘减指令

Page 53: 第三章     DSP 软件体系
Page 54: 第三章     DSP 软件体系

55 、、双双精精度度//双双数数操操作作指指令令

Page 55: 第三章     DSP 软件体系

66 、、特特殊殊指指令令

Page 56: 第三章     DSP 软件体系

二、逻辑运算指令二、逻辑运算指令逻辑指令包括与、或、异或、移位和测试指令

1 、与指令( AND )

Page 57: 第三章     DSP 软件体系

22 、或、异或指、或、异或指令令

Page 58: 第三章     DSP 软件体系

33 、移位和测试指令、移位和测试指令

Page 59: 第三章     DSP 软件体系

三、程序控制指令三、程序控制指令程序控制指令包括:

分支指令调用指令中断指令返回指令重复指令堆栈操作指令混合程序控制指令

Page 60: 第三章     DSP 软件体系

11 、分支指、分支指令令

Page 61: 第三章     DSP 软件体系

2 、调用与中断指令

Page 62: 第三章     DSP 软件体系

33 、返回指令、返回指令

Page 63: 第三章     DSP 软件体系

44 、重复指令和堆栈操作指令、重复指令和堆栈操作指令

Page 64: 第三章     DSP 软件体系

55 、混合程序控制指令、混合程序控制指令

Page 65: 第三章     DSP 软件体系

四、装入和存储指令四、装入和存储指令装入和存储指令包括:

一般的装入和存储指令条件存储指令并行装入和存储指令并行装入和乘法指令并行存储和加件乘指令混合装入和存储指令

Page 66: 第三章     DSP 软件体系

11 、一般的装入指令、一般的装入指令

Page 67: 第三章     DSP 软件体系
Page 68: 第三章     DSP 软件体系

22 、存贮指令、存贮指令

Page 69: 第三章     DSP 软件体系

3 并行装入和存储指令

4 、条件存储指令

Page 70: 第三章     DSP 软件体系

55 、并行存储和加、减、乘法指令、并行存储和加、减、乘法指令

Page 71: 第三章     DSP 软件体系

66 、并行装入和乘法指令、并行装入和乘法指令

Page 72: 第三章     DSP 软件体系

77 、混合装入和存储指令、混合装入和存储指令

Page 73: 第三章     DSP 软件体系

注意:同一条指令在不同存储注意:同一条指令在不同存储器中可能有不同执行时间器中可能有不同执行时间操作数在双寻址空间、单寻址空间和外部程序代码在双寻址、单寻址和外部空间操作数和代码在相同存储器块中数据空间插入了等待周期程序空间插入了等待周期

Page 74: 第三章     DSP 软件体系

FIRS 指令使用方法:FIRS *AR2+ , *AR3+ , COEF

§3-4 §3-4 特殊指令使用说明特殊指令使用说明FIRS 指令

FIRS 指令用于线性相位滤波器的处理。一个如下图的 8 阶线性相位滤波器的输出表达式:

Page 75: 第三章     DSP 软件体系

FIRFIR 滤波的两指令滤波的两指令 MACMAC 、、 FIRFIRSS

RPTZ A,#(N-1) ; 重复 MAC 指令 N次 , 先将 A清零MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 完成滤波计算。注意 FIR 滤波 ;系数存放在数据存储区

RPTZ B, #(N/2-1) 重复 FIRS 指令 N/2次 ,先将 B清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。注意 FIR 滤波系数 ;存放在程序存贮filter_coff为 ;系数起始地址

Page 76: 第三章     DSP 软件体系

ViterbiViterbi 译码指令译码指令 DADSTDADST 、、 DSADTDSADT 、、 CMPCMPSS

在信道均衡和解码中经常会使用到 Viterbi 算法, C54x 为此提供了专门的硬件和指令。根据输入信号确定分支似然概率增加量 D1/D2 ,放在 T 寄存器中, TRN 存储可能信号译码输出。

Page 77: 第三章     DSP 软件体系

相关指令应用相关指令应用

Page 78: 第三章     DSP 软件体系

最小均方运算最小均方运算 LMSLMS 在进行自适应滤波等操作中经常会使用 LMS 算法, C54x提供的 LMS 指令方便了编程。如下图所示的自适应滤波器设计中,滤波器系数修正公式为:

其中, e(i) = d(i) - y(i) 。滤波器输出:)()(

1

0kixwiy

N

kk

Page 79: 第三章     DSP 软件体系

基于基于 LMSLMS 的自适应滤波编的自适应滤波编程程

Page 80: 第三章     DSP 软件体系

数据归一化相关指令数据归一化相关指令 EXPEXP 、、 NORMNORM

归一化一个数是先求其指数,然后把它调整到最大精度格式。实现方法如下:

Page 81: 第三章     DSP 软件体系

数据块移动数据块移动 MVDDMVDD 、、 MVDPMVDP 、、 MVPDMVPD 在 C54x 系列 DSP ,数据与数据存储器、数据与程序存储器之间可以方便的进行数据传输,结合单指令循环可实现数据块移动。如 16 个系数的移动:

Page 82: 第三章     DSP 软件体系

指令效率的提高指令效率的提高 C54x 中有一些指令功能差不多,但编写出的程序效率不同,应灵活使用,如:

MPY[R] Smem , dst ; T* ( Smen ) dst

MAC[R] Smem , dst ;( Smen ) *T+src( MPY[R] +ADD ) ; src

MACD Smen , pmen , src ; pmend PAR ( MAC+DELY+LD ) ;( Smem ) * ( pmed ); + ( src ) src;( Smem ) T;( Smem ) Smem+1

Page 83: 第三章     DSP 软件体系

本章小结 本章重点介绍了 TMS320C54x的软件体系,并对特殊的寻址方式和特殊指令进行了介绍,对于各指令更详细的了解需同学自己多看书。

制作: DSP 实验室2002.10