TMS320C54xDSP精.docx
《TMS320C54xDSP精.docx》由会员分享,可在线阅读,更多相关《TMS320C54xDSP精.docx(16页珍藏版)》请在冰豆网上搜索。
TMS320C54xDSP精
TMS320C54xDSP
CPU与外设
第一章综述
1总线结构
C54x包括8条16比特宽度的总线,其中:
●一条程序总线(PB)
●三条数据总线(CB、DB、EB)
●四条地址总线(PAB、CAB、DAB、EAB)
2CPU
C54x的CPU结构包括:
●40比特的ALU,其输入来自16比特立即数、16比特来自数据存储器的数据、暂时存储器、T中的16比特数、数据存储器中两个16比特字、数据存储器中32比特字、累加器中40比特字。
●2个40比特的累加器,分为三个部分,保护位(39-32比特)、高位字(31-16比特)、低位字(15-0比特)。
●桶型移位器,可产生0到31比特的左移或0到16比特的右移。
●17×17比特的乘法器
●40比特的加法器
●比较选择和存储单元CSSU
●数据地址产生器DAGEN
●程序地址产生器PAGEN
3外设
C54x包括:
●通用I/O引脚,XF和
●定时器
●PLL时钟产生器
●HPI口,8比特或16比特
●同步串口
●带缓存串口,BSP
●多路带缓存串口,McBSP
●时分复用串口,TDM
●可编程等待状态产生器
●可编程bank-switching模块
●外部总线接口
●IEEE1149.1标准JTAG口
第二章存储器
一般而言,C54x的存储空间可达192K16比特字,64K程序空间,64K数据空间,64KI/O空间。
依赖其并行的工艺特性和片上RAM双向访问的性能,在一个机器周期内,C54x可以执行4条并行并行存储器操作:
取指令,两操作数读,一操作数写。
使用片内存储器有三个优点:
高速执行(不需要等待),低开销,低功耗。
1存储空间分配图(以C549为例)
复位后,中断矢量表位于程序区FF80H位置,可重新定位于程序空间任何一个128字的页面(其地址高9比特即页号由PMST中IPTR确定)。
2程序存储区
C54x有片内ROM、DARAM、SARAM,这些区域可以通过软件配置到程序空间。
当地址落在这些区域内,自动对这些区域进行访问;当地址落在这些区域以外,自动产生对外部存储器的访问。
2.1片内ROM
片内ROM(4K,16K,24K,28K或48K字)可能包括的内容有:
●引导程序,可以从串口、外部存储器、I/O口或HPI口引导
●256字的μ率扩展表
●256字的A率扩展表
●256字的正弦表
●中断矢量表
2.2扩展程序存储器
‘548、’549、’5410、’5420采用分页扩展的方式使可寻址程序空间达到8192K字。
这一功能的实现有赖于:
●23条地址线
●扩展程序计数器XPC
●6条访问外部程序空间的指令
当程序空间可以使用片内RAM时,程序空间的每一页分为以下两部分:
最大32K字的通用块和32K字的专有块。
通用块为所有页共享。
XPC寄存器指示选定页,复位后,初始化为0。
影响XPC的6条指令是:
●FB[D]-长跳转指令
●FBACC[D]-长跳转指令,跳转地址由A或B中内容确定
●FCALA[D]-长调用指令,子程序地址由A或B中内容确定
●FCALL[D]-长调用指令
●FRET[D]-长返回指令
●FRETE[D]-长中断返回指令
其它的指令不修改XPC寄存器,而在当前页中做内部访问。
3内存映象寄存器(以‘549为例)
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
传送寄存器
10-17
AR0-AR7
辅助寄存器ARnn=0~7
18
SP
堆栈指针
19
BK
循环缓存区大小寄存器
1A
BRC
块重复计数器
1B
RSA
块重复开始地址
1C
REA
块重复结束地址
1D
PMST
状态寄存器
1E
XPC
PC扩展寄存器
1E-1F
-
保留
20
BDRR0
带缓存串口0数据接收寄存器
21
BDXR0
带缓存串口0数据发送寄存器
22
BSPC0
带缓存串口0控制寄存器
23
BSPCE0
带缓存串口0控制扩展寄存器
24
TIM
定时器计数器
25
PRD
定时器周期寄存器
26
TCR
定时器控制寄存器
27
-
保留
28
SWWSR
等待状态产生寄存器
29
BSCR
Bank-switching控制寄存器
2A
-
保留
2B
XSWR
扩展等待状态寄存器
2C
HPIC
主机接口控制寄存器
2D-2F
-
保留
30
TRCN
TDM串口数据接收寄存器
31
TDXR
TDM串口数据发送寄存器
32
TSPC
TDM串口控制寄存器
33
TCSR
TDM串口通道选择寄存器
34
TRTA
TDM串口接收发送寄存器
35
TRAD
TDM串口接收地址寄存器
36-37
-
保留
38
AXR0
ABU0发送地址寄存器
39
BKX0
ABU0发送缓冲大小寄存器
3A
ARR0
ABU0接收地址寄存器
3B
BKR0
ABU0接收缓冲大小寄存器
3C
AXR1
ABU1发送地址寄存器
3D
BKX1
ABU1发送缓冲大小寄存器
3E
ARR1
ABU1接收地址寄存器
3F
BKR1
ABU1接收缓冲大小寄存器
40
BDRR1
带缓存串口1数据接收寄存器
41
BDXR1
带缓存串口1数据发送寄存器
42
BSPC1
带缓存串口1控制寄存器
43
BSPCE1
带缓存串口1控制扩展寄存器
44-57
-
保留
58
CLKMD
时钟方式寄存器
59-5F
-
保留
下面着重对三个状态寄存器作一简要说明。
3.1ST0寄存器
ST0结构为:
15-13
12
11
10
9
8-0
ARP
TC
C
OVA
OVB
DP
●ARP-辅助寄存器指针
●TC-测试/控制位,存储了ALU测试位操作的结果,受BIT,BITF,CMPM,CMPR,CMPS,SFTC指令的影响
●C-如果加法产生进位C为1,减法产生借位C为0。
ADD指令只能置位C,而SUB指令只能清C
●OVA-累加器A溢出标志
●OVB-累加器B溢出标志
●DP-数据存储空间页标志,由DP指定页,在此页中采用直接寻址指令。
其绝对地址为DP指示的高9位加上直接寻址指令中的地址为其低7位构成。
3.2ST1寄存器
ST1结构为:
15
14
13
12
11
10
9
8
7
6
5
4-0
BRAF
CPL
XF
HM
INTM
0
OVM
SXM
C16
FRCT
CMPT
ASM
●BRAF-块重复指示。
BRAF=1,块重复操作。
●CPL-编译器模式,指示相关直接寻址选用指针。
CPL=0,使用DP指针;CPL=1,使用SP指针。
●XF-指示外部引脚XF状态。
●HM-挂起方式。
指示CPU响应信号的方式。
HM=0,外部接口呈高阻;HM=1,CPU停机。
●INTM-全局中断控制位。
INTM=0,开中断;INTM=1,屏蔽可屏蔽中断。
●0-读出值总为0。
●OVM-溢出处理方式。
指示发生溢出时,对累加器中数值的处理。
OVM=0,溢出值不变;OVM=1,载入正向最大值007FFFFFFFH或负向最大值0080000000H。
●SXM-符号扩展方式。
SXM=0,符号不扩展;SXM=1,数据被ALU使用前先行符号扩展。
●C16-C16=0,ALU操作采用双精度方式(全32位方式),C16=1,ALU操作采用双16位方式。
●FRCT-小数模式。
FRCT=1,乘法器输出左移一位补偿多余的符号位。
●CMPT-兼容模式。
CMPT=0,ARP在只有单数据存储器操作数的间接寻址方式中不更新,在这种方式下,ARP必须总置0;CMPT=1,ARP在上述条件下更新,除非使用AR0。
●ASM-累加器移位数。
规定了移位范围-16-15,用于并行存储指令STH、STL、ADD、SUB和LD。
3.3PMST寄存器
ST1结构为:
15-7
6
5
4
3
2
1
0
IPTR
MP/MC
OVLY
AVIS
DROM
CLKOFF
SMUL
SST
●IPTR-中断矢量指针。
此9位指向内存空间中以128字为单位的页首址。
即中断矢量必须位于页的起始部分。
复位后IPTR为1FFH,指向FF80H的位置,可重新定义到任何页。
●-微机/微处理器模式。
=0,微机模式,片内ROM可访问;=1,微处理器模式,片内ROM不可访问。
●OVLY-片内RAM是否配置入程序空间。
OVLY=0,片内RAM不配置入程序空间;OVLY=1,除00-7FH外,片内RAM配置入程序空间。
●AVIS-地址显示模式。
控制对内部程序访问时,地址数据是否显示在地址线上。
AVIS=0,不显示;AVIS=1,显示。
●DROM-数据ROM配置。
DROM=0,片内ROM不配置在数据空间;DROM=1,部分片内ROM配置在数据空间。
●CLKOFF-CLKOUT关闭。
CLKOFF=1,CLKOUT输出禁止,保持高电平。
●SMUL-乘法溢出处理。
当SMUL=1,且OVM=1,FRCT=1时,对MAC(乘累加)和MAS(乘累减)指令的操作基于ETSIGSM规范。
体现在在小数模式下,在进行后续加/减之前,8000H×8000H的结果被调整为7FFFFFFH。
这等同于在OVM=1下MPY+ADD指令。
如果只有OVM=1,而SMUL不为1,只在加/减结果后作溢出调整。
●SST-存储溢出处理。
当SST=1,累加器中数据在存储到数据空间之前进行溢出调整。
影响指令有:
STH,STL,STLM,DST,ST||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.4累加器的存储操作
累加器中数据存储,AH和AL部分比较好办,采用STH,STL和STLM即可完成。
要存储AG中的内容,则需要采用间接方式,如累加器A中内容为0FF43211234H,要存储AG部分内容至TEMP存储器中,可用“STHA,-8,TEMP”指令来完成,TEMP=FF43H。
第三章数据寻址
C54x提供七类寻址方式:
●立即数寻址
●绝对地址寻址
●累加器寻址
●直接寻址