TMS320C2X/C5X 软件应用
1软件编程技巧:
A.充分利用片内RAM
TMS320C2X大部分指令的执行时间是一个指令周期,但是在实际实现时由于采用的程序存储器和数据存储器是片内还是片外,实际执行的时间是不相同的。按照指令在内部存储器和外部存储器以及数据在内部存储器和外部存储器,可以分为四种情况,即:
(1)指令在内部存器、数据在内部存储器(PU/DI);
(2)指令在内部存储器、数据在外部存储器(PI/DE);
(3)指令在外部存储器、数据在内部存储器(PE/DI);
(4)指令在外部存储器、数据在外部存储器(PE/DE)。
设P表示外部程序存储器所需的等待状态数,d表示外部数据存榜器所需的等待状态数,则执行LAC指令在四种情况下所需的周期数。
- 表2.1 LAC指令周期数
- PI/DI PI/DE PE/DI PE/DE
- 1 2+d 1+p 2+P+d
复制代码
显然,即使外部的存储器是高速存储器不需要等待态,在PI/DE和PE/DE两种情况下,执行LAC所需的时间是两个指令周期,而不是一个指令周期。PI/DI和PE/DI两种情况是一个指令周期。因此,在程序在外部存储器中运行的情况下,应尽量使用片内RAM存储器存储数据。虽然一条指令只相差一个周期,但当指令在多级嵌套循环内部时就相当可观了。
B,利用单指令重复指令。
TMS320C2x提供了重复指令RPT和RPTK,这两条指令可以使下一条指令重复执行指定的次数而不增加额外的执行时间。TMS320C2X的重复计数器为8位,因此最大值为255,即最多可以便下一条指令执行256次。 RPT和RPTK与TBLR/TBLW、BLKD/BLKP、IN/OUT及MAC、MACD等指令结合使用可以提高程序运行的效率。例如下面的一段程序将存放在外部数据存储器地址400H开始的256个数据搬移至片内的Bl块。
- LARP AR1
- LRLK AR1,300H
- RPTK 255
- BLKD 400H,* +
复制代码
C.利用高效指令和特殊寻址方式、
TMS320C2X的指令集中提供了一些高效的指令。如乘累加并移位的MACD指令、平方并累加或减指令SQRS以及LACT、LTA、LTD、SPAC、APAC等。除了常用的寻址方式外,还提供了用于FFT的比特反转寻址方式。灵活使用这些指令和寻址方式可以提高程序的效率。
2提高TMS320C5x软件效率
TMSS320C5X是TMS320C2X的增强型DSP芯片,其增强的并行结构使得TMS320C5X的速度是TMS320C25的二倍以上。TMS320C2X的汇编语言在源代码级与TMS320C5X向上兼容,TMS320C2X的汇编程序稍作修改并用TMS320C5X的汇编器重新汇编后就可以在TMS320C5X上运行。TMS320C5X的指令集是TMSS320C25指令集的超集,它在TMS320C2X的基础上作了改进并增加了一些功能更强的指令,充分利用这些增强特性可大大提高TMS320C5X的程序效率。
A.利用片内存储器的双映射特性
TMS320C5X具有1O56字的片内双存取存储器,比TMS320C25多5l2字。虽然使用这种类型存储器的效率很高,但同时成本也较高。TMS320C5X内部另一种存储器是单存取存储器,TMS320C53和C5l分别具有3K和IK字的单存取存储器,而C50具有8K字。这种存储器块的一个特点是同时可以映射至程序和数据空间。这种双映射的特点对于实现诸如自适应FIR滤波器(如横向滤波器)非常有用。乘/加循环要求F1R滤波器的系数在程序空间中,但同时相同的系数表需在数据空间中被更新。将这个系数表存放于片内的单存取存储器中并利用其双映射特点可使横向滤波器实现的效率更高。’
B.利用无开销循环。
在TMS320C25中,只提供了用于单指令重复的RPR/RPTK指令,要实现多于一条指令的循环必须来用寄存器不为零跳转的BANZ指令,这样每次循环实际上增加了3个指令周期。 TMS320C5X不仅提供了单指令重复指令RPT,而且提供了块指令重复指令RPTB,因此, TMS320C5X可以实现块指令的无开销循环。例如。
- LACL #99
- SAMM BRCR ;循环100次
- RPTB LOOP-1
- LAC *,16,AR1
- MPYA *,+AR2
- SACH *0-
- LOOP:
复制代码
C.嵌套循环的商效编程
在许多DSP应用程序中需要用到嵌套循环。如求10阶自相关需要用到二级嵌套循环,内循环计算每个自相关系数,外循环进行计数。如果内循环可以用RPT实现,则外循环可以用RPTB指令实现。如果内循环不能用一个RPT实现循环,也可以用延迟跳转循环来实现(如AR不为零延迟跳转BANZD)。最多可以有8个这佯的BANZD循环嵌套,每个循环用一个辅助寄存器作循环计数器。
D.使用CRGT和CRLT搜索最大/最小值
TMS320C5X提供了用于高效搜索最大和最小值的特殊指令CRGT和CRLT,这两个指令比较累加器ACC和累加器缓冲器ACCB之间的大小,比较之后将最大或最小值存放于ACCB中。例如下面一段程序用于在300H至309H存储单元中搜浆最大值并得到其地址。
- MAXADR .set 60H
- MAXVAL .set 61Hu
- .TEXT
- LDP #0 ;DP=0
- LAR AR0,0300H
- SETC SXM
- LACC #0800H ;装人-个是小值
- ;(如果找最小值则装入7FFFH)
- SACB ;送至ACCB
- SPLK #9,BRCR ;重复10次。。
- RPTB endb-1
- LACC * ;取数至ACC
- CRGT ;比较(如果找到最小值CRGT指令)
- SACL MAXVAL ;保存具大值
- XC #1.c
- SAR AR0,MAXADR ;保存地址
- MAR *+
- Endb: RET。
复制代码
E.利用循环寻址方式
TMS320C5X提供了循环寻址方式,这种寻址方式在实现F1R滤波器时非常有用。一般实现自适应FIR滤波器采用具有数据移动操作的乘/加指令MACD,在C5X中,可以用循环寻址方式代替数据移动操作来更新滤波器的铀头系数。如果滤波器的抽头在片内的单存取存储器,则这种方式的运行速度更快。
F.利用延迟跳转和条件运行
TMS320C2x具有3级深度的流水线,而C5X具有4级深度的流水线。C5X 4级深度的流水线使芯片的并行性能更强。然而,流水线越深,清空流水线的周期越长。正常眺转时,由于需要清空流水线,因此需要4个周期才能实现。相比而言,C2X仅需3个周期。但是,对C5X而言,所有需要清空流水线的指令都支持延迟执行功能,使运行开销降低至2个周期。此外果是仅跳转一个或两个指令这种特殊情况,可以使用速度更快的条件运行指令XC,此时仅一个周期。
G.并行进辑单元
TMS320C5X的比特操作单元与算术逻辑单元是独立运行的。这可使C5X在没有ACC或ACCB参与的倩说下对片内或片外存储器单元(包括存储器陕射的寄存器)进行进辑操作。例如:
- SMMR DRR, #DRR_DATA
- LMMR DXR, #DXR_DATA
- 0PL #RXDATA, SP_**
- APL #TXDATA, SP_**
复制代码
H,增强的移位功能
TMS320C2X具有较强的移位功能,如取操作数至ACC时带0--16位左移、存ACC时带0--7位左移、根据TREG1寄存器进行左移的取数指令LACT、ACC左移一位ROL和ACC右移一位ROR等。TMS320C5X在此基础上增加了ACC右移1--16位的指令BSAR和根据TREGl寄存
器值进行16位右移指令SATH及0--15位右移指令SATL。例如:
- BASR 7 ;ACC=ACC >> 7
- LMMR TREG1,1BH
- SATH ;ACC=ACC >> 16,因为TREG1.4=1
- SATL ;ACCC=ACCD >> ll
复制代码
此外,C5X还具有对ACC、ACCB和进位位组成的65位数据进行移位的指令。
I.存储器映射寄存器
TMS320C5X提供了累加器与寄存器之间的直接通路,这是将寄存器映射至数据存储器而实现的。同时,TMS320C5X也支持存储器和寄存器之间的直接数据交换。例如:
复制代码
[color=rgb(51, 102, 153) !important]
|