TMS320C54X芯片介绍
1. 概述
TI公司在原来已被人们熟知的TMS320C1X、TMS320C25、TMS320C3X/4X、TMS320C5X、TMS320C8X的基础上发展了三种新的DSP系列,它们是:TMS320C2000、TMS320C5000、TMS320C6000系列,成为当前和未来相当长时期内TI DSP的主流产品,前面提到的那些老型号产品均将被这三种新系列产品替代。
三种新型TMS320 DSP系列的特点
1.TMS320C2000——作控制用的最佳DSP,可以替代老的’C1X和’C2X。现在有趋势集中在以下两个方向上:
(1)’C20X 16位定点DSP,速度为20MIPS,主要用途是电话、数字相机、售货机等,其中:’F206带有闪速存储器。
(2)’C24X 16位定点DSP,速度为20MIPS,用作数字马达控制、工业自动化、电力转换系统、空调等。
2.TMS320C5000——低功耗高性能DSP,16位定点,速度40~200MIPS。主要用途是有线和无线通信、IP、便携式信息系统、寻呼机、助听器等。
目前’C5000系列中又有三种新成员,一种是’C5402,这是廉价型的DSP,目标价格是每片5美元(50K批量),速度保持100MIPS,片内存储空间稍小一些,RAM为16K、ROM为4K。主要应用对象是无线Modem、新一代PDA、网络电话和其它电话系统以及消费类电子产品。
第二种是’C5420,它拥有两个DSP核,速度达到200MIPS,200K片内RAM,功耗0.32mA/MIPS,200MIPS全速工作时不超过120mW,为业内功耗最低的DSP。’C5420是当今集成度最高的定点DSP,适合于做多通道基站、服务器、Modem和电话系统等要求高性能、低功耗、小尺寸的场合。
第三种是’C5416,它是TI公司0.15μm器件中的第一款,速度为160MIPS,有三个多通道缓冲串行口(McBSPs),能够直接与T1或E1线路联接,不需要外部逻辑电路,有128K片内RAM。应用对象是VoIP、通信服务器、PBX(专用小交换机)和计算机电话系统等。
3.TMS320C6000——这是TI公司1997年2月推向市场的高性能DSP,综合了目前DSP的所有优点,具有最佳的性价比和低功耗。’C6000系列中又分成定点和浮点两类。
(1)C62XX 16位定点DSP,速度为1200~2000MIPS,用于无线基站、ADSL Modem、网络系统、中心局交换机、数字音频广播设备等。
(2)C67XX 32位浮点DSP,速度为1Gflops,用于基站数字波束形成、医学图像处理、语音识别、3-D图形等。
上面所介绍的TI公司的新一代DSP已经替代80年代和90年代初的老一代产品,在电子信息产业方面获得了广泛的应用。’C2000系列已用于数字马达控制、数字照相机、PC照相机;’C5000系列用于蜂窝网手机、程控交换;’C6000系列用于基站、ADSL、V.90 56K Modem。
本设计所采用的芯片是’C5000系列重的一款TMS320C54X芯片。下面着重介绍。
2. TMS320C54x芯片综述
2.1 总线结构
C54x 包括8 条16 比特宽度的总线,其中:
l 一条程序总线(PB)
l三条数据总线(CB、DB、EB)
l 四条地址总线(PAB CAB DAB EAB)
2.2 C P U
C54x 的CPU 结构包括:
l 40 比特的ALU ,其输入来自16 比特立即数、16 比特来自数据存储器的数据、暂时存储器、T 中的16 比特数、数据存储器中两个16 比特字、数据存储器中32 比特字、累加器中40 比特字。
l 2 个40 比特的累加器,分为三个部分,保护位(39- 32 比特)、高位字(31-16 比特)、低位字(15-0 比特)。
l桶型移位器,可产生0 到31 比特的左移或0 到16 比特的右移。
l 17x17 比特的乘法器
l 40 比特的加法器
l比较选择和存储单元CSSU
l数据地址产生器DAGEN
l程序地址产生器PAGEN
2.3 外设
C54x 包括
l通用I/O 引脚,XF 和BIO
l定时器
l PLL 时钟产生器
l HPI 口8 比特或16 比特
l同步串口
l带缓存串口BSP
l多路带缓存串口McBSP
l时分复用串口TDM
l可编程等待状态产生器
l可编程bank switching 模块
l 外部总线接口
l IEEE1149.1 标准JTAG 口
3.存储器
一般而言,C54x 的存储空间可达192K16 比特字,64K 程序空间,64K 数据空间,64KI/O 空间。
依赖其并行的工艺特性和片上RAM 双向访问的性能,在一个机器周期内,C54x 可以执行4 条行并行存储器操作:取指令,两操作数读,一操作数写。
使用片内存储器有三个优点:高速执行(不需要等待),低开销,低功耗。
3.1 存储空间分配图(以C 5 4 9 为例)
图2-1 ’C54x存储空间分配图
复位后,中断矢量表位于程序区FF80H 位置,可重新定位于程序空间任何一个128 字的页面(其地址高9 比特即页号由PMST 中IPTR确定)。
3.2 程序存储区
C54x 有片内ROM 、DARAM、 SARAM ,这些区域可以通过软件配置到程序空间。当地址落在这些区域内,自动对这些区域进行访问,当地址落在这些区域以外,自动产生对外部存储器的访问。
3.2 .1 片内 R O M
片内ROM( 4K 16K 24K 28K 或48K 字)可能包括的内容有:
l引导程序,可以从串口、外部存储器、I/O 口或HPI 口引导
l256 字的率扩展表
l256 字的A 率扩展表
l 256 字的正弦表
l中断矢量表
3.2.2 扩展程序存储器
‘548 、’549 ’、5410 、’5420 采用分页扩展的方式使可寻址程序空
间达到8192K 字,这一功能的实现有赖于:
l 23 条地址线
l扩展程序计数器XPC
l6 条访问外部程序空间的指令
当程序空间可以使用片内RAM 时,程序空间的每一页分为以下两部分:最大32K 字的通用块和32K 字的专有块,通用块为所有页共享。
XPC 寄存器指示选定页,复位后,初始化为0, 影响XPC 的6 条指令是:
l FB[D] 长跳转指令
l FBACC[D] 长跳转指令,跳转地址由A 或B 中内容确定
l FCALA[D] 长调用指令,子程序地址由A 或B 中内容确定
l FCALL[D] 长调用指令
l FRET[D] 长返回指令
l FRETE[D] 长中断返回指令
其它的指令不修改XPC 寄存器,而在当前页中做内部访问。
3.3 内存映象寄存器(以5 4 9 为例)
0
IMR
中断屏蔽寄存器
1
IFR
中断标志寄存器
2 - 5
-
测试保留
6
ST0
状态寄存器0
7
ST1
状态寄存器1
8
AL
累加器A 低字(15-0 )比特
9
AH
累加器A 高字(31-16)比特
A
AG
累加器A 保护位(39-32 比特)
B
BL
累加器B 低字(15-0 比特)
C
BH
累加器B 高字(31-16 比特)
D
BG
累加器B 保护位(39-32 比特)
E
T
乘法寄存器
F
TRN
传送寄存器
1 0-1 7
AR0-AR7
辅助寄存器ARn n=0~7
1 8
SP
堆栈指针
1 9
BK
循环缓存区大小寄存器
1 A
BRC
块重复计数器
1 B
RSA
块重复开始地址
1 C
REA
块重复结束地址
1 D
PMST
状态寄存器
1 E
XPC
PC 扩展寄存器
1 E-1 F
-
保留
2 0
BDRR0
带缓存串口0 数据接收寄存器
2 1
BDXR0
带缓存串口0 数据发送寄存器
2 2
BSPC0
带缓存串口0 控制寄存器
2 3
BSPCE0
带缓存串口0 控制扩展寄存器
2 4
TIM
定时器计数器
2 5
PRD
定时器周期寄存器
2 6
TCR
定时器控制寄存器
2 7
-
保留
2 8
SWWSR
等待状态产生寄存器
2 9
BSCR
Bank-switching 控制寄存器
2 A
-
保留
2 B
XSWR
扩展等待状态寄存器
2 C
HPIC
主机接口控制寄存器
2 D-2 F
-
保留
3 0
TRCN
TDM 串口数据接收寄存器
3 1
TDXR
TDM 串口数据发送寄存器
3 2
TSPC
TDM 串口控制寄存器
3 3
TCSR
TDM 串口通道选择寄存器
3 4
TRTA
TDM 串口接收发送寄存器
3 5
TRAD
TDM 串口接收地址寄存器
3 6-3 7
-
保留
3 8
AXR0
ABU0 发送地址寄存器
3 9
BKX0
ABU0 发送缓冲大小寄存器
3 A
ARR0
ABU0 接收地址寄存器
3 B
BKR0
ABU0 接收缓冲大小寄存器
3 C
AXR1
ABU1 发送地址寄存器
3 D
BKX1
ABU1 发送缓冲大小寄存器
3 E
ARR1
ABU1 接收地址寄存器
3 F
BKR1
ABU1 接收缓冲大小寄存器
4 0
BDRR1
带缓存串口1 数据接收寄存器
4 1
BDXR1
带缓存串口1 数据发送寄存器
4 2
BSPC1
带缓存串口1 控制寄存器
4 3
BSPCE1
带缓存串口1 控制扩展寄存器
4 4-5 7
-
保留
5 8
CLKMD
时钟方式寄存器
5 9-5 F
-
保留
下面着重对三个状态寄存器作一简要说明
3.3 . 1 S T 0 寄存器
ST0 结构为
l ARP 辅助寄存器指针
l TC 测试/控制位,存储了ALU 测试位操作的结果,受BIT,BITF, CMPM ,CMPR, CMPS, SFTC 指令的影响
l C 如果加法产生进位C 为1, 减法产生借位C 为0, ADD 指令
只能置位C ,而SUB 指令只能清C
l OVA 累加器A 溢出标志
l OVB 累加器B 溢出标志
l DP 数据存储空间页标志,由DP 指定页,在此页中采用直接寻址指令,其绝对地址为DP 指示的高9 位加上直接寻址指令中的地址为其低7 位构成。
3.3 . 2 S T 1 寄存器
ST1 结构为
l
BRAF 块重复指示,
BRAF=1, 块重复操作。
l CPL 编译器模式,指示相关直接寻址选用指针。CPL=0, 使用DP 指针;CPL=1, 使用SP 指针。
l XF 指示外部引脚XF 状态。
l HM 挂起方式,指示CPU 响应 信号的方式HM=0, 外部接口呈高阻;HM=1, CPU 停机。
l INTM 全局中断控制位。INTM=0, 开中断;INTM=1,屏蔽可
屏蔽中断。
l 0 读出值总为0。
l OVM 溢出处理方式。指示发生溢出时对累加器中数值的处理OVM=0 ,溢出值不变;
OVM=1 ,载入正向最大值007FFFFFFFH或负向最大值0080000000H。
l SXM 符号扩展方式,SXM=0, 符号不扩展;SXM=1,数据被ALU 使用前先行符号扩展。
l C16 C16=0 ALU 操作采用双精度方式全32 位方式C16=1, ALU 操作采用双16 位方式。
l FRCT 小数模式,FRCT=1, 乘法器输出左移一位补偿多余的符号位。
l CMPT 兼容模式,CMPT=0, ARP 在只有单数据存储器操作数的间接寻址方式中不更新,在这种方式下,ARP 必须总置0;CMPT=1 ,ARP 在上述条件下更新,除非使用AR0。
l ASM 累加器移位数。规定了移位范围16-15 ,用于并行存储指令STH 、STL、 ADD 、SUB 和LD。
3.3 . 3 PMST 寄存器
ST1 结构为:
l IPTR 中断矢量指针,此9 位指向内存空间中以128 字为单位的页首址。即中断矢量必须位于页的起始部分。复位后IPTR为1FFH ,指向FF80H 的位置,可重新定义到任何页。
l 微机/微处理器模式 =0 ,微机模式片,内ROM 可访问; =1, 微处理器模式,片内ROM 不可访问。
l OVLY 片内RAM 是否配置入程序空间。OVLY =0, 片内RAM 不配置入程序空间;OVLY= 1, 除00-7FH 外,片内RAM 配置入程序空间。
l AVIS 地址显示模式,控制对内部程序访问时,地址数据是否显示在地址线上。AVIS= 0 ,不显示;AVIS=1, 显示。
l DROM 数据ROM 配置,DROM=0, 片内ROM 不配置在数据空间;DROM=1, 部分片内ROM 配置在数据空间。
l CLKOFF CLKOUT 关闭,CLKOFF=1, CLKOUT 输出禁止,保持高电平。
l SMUL 乘法溢出处理。当SMUL=1, 且OVM=1, FRCT=1 时,对MAC (乘累加)和MAS( 乘累减)指令的操作基于ETSI GSM规范,体现在在小数模式下,在进行后续加/减之前,8000Hx8000H 的结果被调整为7FFFFFFH, 这等同于在OVM=1 下MPY+ADD 指令,如果只有OVM=1, 而SMUL 不为1, 只在加/减结果后作溢出调整。
l SST 存储溢出处理。当SST=1, 累加器中数据在存储到数据空间之前进行溢出调整。影响指令有:STH ,STL, STLM, DSTST||ADD ,ST||LD ,ST||MACR[R] ,ST||MAS[R] ,ST||MPY 和ST||SUB.步骤是:
1)依据指令,累加器中数据完成左移或右移。
2)40 比特值根据SXM 位调整为32 。位SXM=0 (不符号扩展),若值大于7FFFFFFFH ,取7FFFFFFFH ;若SXM=1(符号扩展),若值大于7FFFFFFFH,取7FFFFFFFH, 若值小于80000000H, 取80000000H。
3) 调整后数据存入数据空间。
4) 在调整过程中,累加器中数据不改变。
3.3 . 4 累加器的存储操作
累加器中数据存储,AH 和AL 部分比较好办采用STH、 STL 和STLM即可完成。要存储AG 中的内容,则需要采用间接方式,如累加器A。
4. 数据寻址
C54x 提供七类寻址方式:
l立即数寻址
l绝对地址寻址
l累加器寻址
l直接寻址
l间接寻址
l内存映象寄存器寻址
l堆栈寻址
下面着重介绍以下几种方式。
4.1 绝对地址寻址
术语解释:dmad- 数据存储地址;pmad- 程序存储地址;PA -口地址;lk- 长整数。
绝对地址寻址包括四类:
l dmad 寻址
l pmad 寻址
l PA 寻址
l *(lk)寻址
4.1.1 d m a d 寻址
dmad 寻址用一标号标记数据空间地址,这类指令有:
l MVDK Smem,dmad
l MVDM dmad,MMR
l MVKD dmad,Smem
l MVMD MMR,dmad
如:MVKD SAMPLE,*AR5. 此处SAMPLE 即是dmad.
4.1.2 p m a d 寻址
pmad 寻址用一标号标记程序空间地址,这类指令有:
l FIRS Xmem,Ymem,pmad
l MACD Smem,pmad,src
l MACP Smem,pmad,src
l MVDP Smem,pmad
l MVPD pmad,Smem
如:MVPD TABLE,*AR7- 此处TABLE 即为pmad。
4.1.3 PA 寻址
PA 寻址用一标号标记外部I/O 口地址,这类指令有:
l PORTR PA,Smem
l PORTW Smem,PA
如:PORTR FIFO,*AR5 此处FIFO 即为PA.
4.1.4 *(lk) 寻址
*(lk)寻址也是用标号标记数据空间地址。
如:LD *(BUFFER),A 。使用这类指令的好处在于不用修改DP 和AR 值。但有一点要注意的是,这类指令不能用于重复执行单指令中(RPT, RPTZ)。
4.2 直接寻址
在这类指令中,指令中的地址标号构成dmad 的低7 位(DP 方式)或作为正向偏移量(SP 方式),所以指令中地址标号不得超过7。 位采用DP 或SP, 方式由ST1 中CPL 位决定。
CPL=0, 采用DP ;方式CPL=1 ,采用SP 方式。
4.2.1 DP 方式
DP 方式,DP 中内容作为dmad 地址高9 位,指令中地址标号作为低7 位构成dmad 地址。
4.2.2 SP 方式
SP 方式,以SP 中内容作为dmad 基地址,指令中地址标号作为正向偏移量,二者相加构成dmad 地址。
4.3 间接寻址
间接寻址是指dmad 由辅助寄存器AR0-AR7 内容构成。使用间接寻址的灵活性不仅在于一条指令完成读或写数据存储区(单操作数),还在于一条指令可以完成两个不同存储区的读操作,或两个不同存储区的写操作,或对两个不同位置的一读一写操作。
4.3.1 对S A R A M 的访问
对SARAM 访问使用寄存器AR0-AR7 ,其中AR0 为变址寄存器,用法见下表:
语法
功能
描述
*ARx
dmad=ARx
ARx 包含dmad
*ARx-
dmad=ARx
ARx=ARx-1
访问后,ARx 中地址内容减1
*ARx+
dmad=ARx
ARx=ARx+1
访问后ARx 中地址内容加1
*+ARx
dmad=ARx+1
ARx=ARx+1
访问前ARx 中地址内容加1
*ARx-0B
dmad=ARx
ARx=B(ARx-AR0)
访问后,ARx 中内容减去AR0 中内容,并产生反向借位翻转(用于FFT 算法)
*ARx-0
dmad=ARx
ARx=ARx-AR0
访问后,ARx 中内容减去AR0 中内容
*ARx+0
dmad=ARx
ARx=ARx+AR0
访问后,ARx 中内容减去AR0 中
内容
*ARx+0B
dmad=ARx
ARx=B(ARx+AR0)
访问后,ARx 中内容加上AR0 中内容,并产生反向进位翻转(用于FFT 算法)
*ARx-%
dmad=ARx
ARx=circ(ARx-1)
访问后,ARx 中内容按循环寻址方式减1
*ARx-0%
dmad=ARx
ARx=circ(ARx-AR0)
访问后,ARx 中内容按循环寻址方式减去AR0 中内容
*ARx+%
dmad=ARx
ARx=circ(ARx+1)
访问后,ARx 中内容按循环寻址
方式加1
*ARx+0%
dmad=ARx
ARx=circ(ARx+AR0)
访问后,ARx 中内容按循环寻址
方式加上AR0 中内容
*ARx(lk)
dmad=ARx+lk
ARx=ARx
ARx 中内容加上16 位长偏移
(lk) 为dmad ,ARx 不更新
*+ARx(lk)
dmad=ARx+lk
ARx=ARx+lk
ARx 中内容加上16 位长偏移
(lk) 为dmad, ARx 更新
*+ARx(lk)%
dmad=circ(ARx+lk)
ARx=circ(ARx+lk)
ARx 中内容按循环寻址方式加上
16 位长偏移(lk) 为dmad, ARx
更新
*(lk)
dmad=lk
16 位绝对地址寻址
循环寻址操作如下:
寄存器BK 作为循环缓存区大小(R),循环缓存区基地址的低N 位必须为0, R 和N 满足以下关系: , 末地址为基地址+R, 步进值 , 变址index 由以下算法确定:
4.3.2 对D A R A M 的访问
对DARAM 访问使用辅助寄存器AR2-AR5 用法见下表:
语法
功能
描述
*ARx
dmad=ARx
ARx 包含dmad
*ARx-
dmad=ARx
ARx=ARx-1
访问后,ARx 中地址内容减1
*ARx+
dmad=ARx
ARx=ARx+1
访问后,ARx 中地址内容加1
*ARx+0%
dmad=ARx
ARx=circ(ARx+AR0)
访问后ARx 中内容按循环寻址方式加上AR0 中内容
5. 中断系统
硬件和软件驱动都可以使C54x 产生中断软件中断,是指由程序指令引起的中断,这类指令有:INTR 、TRAP、 RESET。硬件中断可由外部硬件引发,或由片内外设内部引发,无论软件中断还是硬件中断都可分为可屏蔽中断和不可屏蔽中断。C54x 处理中断按以下三个步骤:
l接收中断请求
l响应中断
l执行中断服务程序
5.1 中断标志寄存器I F R( 以C 5 4 9 为例)
IFR 中某位为1 表明有相应中断再次写1 清除中断
5.2 中断屏蔽寄存器I M R (以C 5 4 9 为例)
要打开某个中断只需向IMR 中相应某位写1 而ST1 中INTM 位为中断总开关
5.3 中断位置与优先级(以C 5 4 9 为例)
中断号
优先级
名称
位置
功能
0
1
RS/SINTR
0
复位(软硬件)
1
2
NMI/SINT16
4
非屏蔽中断
2
-
SINT17
8
软件中断17
3
-
SINT18
C
软件中断18
4
-
SINT19
10
软件中断19
5
-
SINT20
14
软件中断20
6
-
SINT21
18
软件中断21
7
-
SINT22
1C
软件中断22
8
-
SINT23
20
软件中断23
9
-
SINT24
24
软件中断24
10
-
SINT25
28
软件中断25
11
-
SINT26
2C
软件中断26
12
-
SINT27
30
软件中断27
13
-
SINT28
34
软件中断28
14
-
SINT2
38
软件中断29
15
-
SINT30
3C
软件中断30
16
3
INT0/SINT0
40
外部中断0
17
4
INT1/SINT1
44
外部中断1
18
5
INT2/SINT2
48
外部中断2
19
6
TINT/SINT3
4C
定时器中断
20
7
BRINT0/SINT4
50
带缓存串口0 接收中断
21
8
BXINT0/SINT5
54
带缓存串口0 发送中断
22
9
TRINT/SINT6
58
TDM 串口接收中断
23
10
TXINT/SINT7
5C
TDM 串口发送中断
24
11
INT3/SINT8
60
外部中断3
25
12
HINT/SINT9
64
HPI 口中断
26
13
BRINT1/SINT10
68
带缓存串口1 接收中断
27
14
BXINT1/SINT11
6C
带缓存串口1 发送中断
28
15
BMINT0/SINT14
70
BSP0 失步检测中断
29
16
BMINT1/SINT13
74
BSP1 失步检测中断
30-31
-
78-7F
保留