2.5 ’C54x的存储空间结构
TMS320C54x共有192千字的可寻址存储空间。这192千字的存储空间分成3个独立的可选择空间,分别为:
● 64千字的程序存储空间;
● 64千字的数据存储空间;
● 64千字的I/O空间。
所有的’C54x芯片都包括内部随机存储器(RAM)和只读存储器(ROM)。内部 RAM 又分为单寻址RAM(SARAM)和双寻址RAM(DARAM)两种类型。
① 双寻址RAM(DARAM)由存储器内的一些分块组成。由于每个DARAM块在单周期内能被访问2次,因此在同一个周期内,CPU可以对DARAM进行读和写操作。
② 单寻址 RAM(SARAM)也由存储器分块组成。每个 SARAM 块在单周期内只能被访问1次,即每个周期只能进行1次读或写操作。
通常,DARAM和SARAM被映射到数据存储空间用来存储数据,也可以映射到程序空间用来存储程序代码。
’C54x的并行结构和内部RAM的双寻址能力,可使CPU在任何一个给定的机器周期内同时执行4次存储器操作,包括1次取指、2次读操作数和1次写操作数。与外部存储器相比,内部存储器具有以下几个优点:
● 不需要插入等待状态;
● 与外部存储器相比,成本低;
● 比外部存储器功耗小。
在’C54x 系列芯片中,不同型号的芯片其内部存储器的配置有所不同。表 2.5.1 列出了各种’C54x内部存储器的资源配置。
表2.5.1 ’C54x内部存储器的资源配置

2.5.1 存储空间结构
TMS320C54x的存储空间由可选择的3个相互独立存储空间(程序、数据和I/O空间)组成,共计192千字。在任何一个存储空间内,RAM、ROM、EPROM、E2PROM、Flash或存储器映像外围设备都可以驻留在片内或者片外。因此,’C54x的存储器结构具有很大的灵活性。
’C54x所有内部和外部程序存储器及内部和外部数据存储器分别统一编址。内部RAM总是映射到数据存储空间,但也可映射到程序存储空间。根据用户的设置,ROM可以灵活地映射到程序存储空间,同时也可以部分地映射到数据存储空间。
TMS320VC5402存储器配置结构如图2.5.1所示。

图2.5.1 TMS320VC5402存储器配置结构
从图2.5.1可以看出,’C54x的存储器结构与处理器工作方式状态寄存器(PMST)的设置有关,用户可以通过PMST中的3个控制位(MP/、OVLY和DROM)来配置存储器空间。
2.5.2 程序存储空间
程序存储空间用来存放要执行的指令和执行中所需的系数表。’C5402 共有 20 条地址线,可寻址1兆字的外部程序存储器。它的内部ROM和DARAM可通过软件映射到程序空间。当存储单元映射到程序空间时,CPU可自动地按程序存储器对它们进行寻址。如果程序地址生成器(PAGEN)产生的地址处于外部存储器,CPU可自动地对外部存储器寻址。
1.程序存储空间的配置
程序存储空间可通过 PMST 寄存器的MP/和 OVLY 控制位来设置内部存储器的映射地址。
(1)MP/控制位用来决定程序存储空间是否使用内部存储器
当MP/= 0时,4000H~EFFFH程序存储空间定义为外部存储器,而F000H~FEFFH程序存储空间定义内部ROM。FF00H~FFFFH程序存储空间定义为内部存储器。其工作方式为微型计算机模式。
当MP/= 1时,4000H~FFFFH程序存储空间全部定义为外部存储器。其工作方式为微处理器模式。
(2)OVLY控制位用来决定程序存储空间片内和片外的分配以及是否使用内部DARAM
当OVLY= 0时,0000H~3FFFH全部定义为外部程序存储空间,程序存储空间不使用内部DARAM,此时内部DARAM只作为数据存储器使用;
当OVLY= 1时,0000H~007FH保留,程序无法占用。0080H~3FFFH定义为内部DARAM。即内部DARAM同时被映射到程序存储空间和数据存储空间。
2.程序存储空间的分页扩展
在TMS320C54x系列芯片中,有些芯片采用分页扩展的方法,使程序存储空间可扩展到1兆字~8兆字,如TMS320VC5409和TMS320VC5416可扩展到8兆字,而TMS320VC5402只有 20 条外部程序地址总线,其程序空间只能扩展到 1 兆字。为了实现分页扩展,这些DSP芯片增加了一个额外的存储器映像寄存器——程序计数器扩展寄存器XPC,以及6条寻址扩展程序空间的指令(FB[D]、FBACC[D]、FCALA[D]、FCALL[D]、FRET[D]和FRETE[D])。
TMS320VC5402 的整个程序存储空间(1 兆字)分成 16 页,每页共计 64 千字。图 2.5.2为TMS320VC5402扩展程序存储空间结构图。
从图 2.5.2 可以看出,在第 1~15 页中,每页分为两部分,低 32 千字和高 32 千字。如果MP/= 0,内部ROM只能在第0页被寻址,不能映射到程序空间的其他页。
如果OVLY=1,程序存储空间使用内部DARAM。此时,不论XPC为何值,扩展程序存储空间的所有低32千字(x 0000H~x 7FFFH)都被映射到内部RAM(0000H~7FFFH)中。
扩展程序存储器的页号由XPC寄存器设定,XPC映射到数据存储器的001EH单元。硬件复位时,XPC被置0。
3.内部ROM
从表2.5.1可以看出,不同型号的芯片其内部ROM的配置有所不同,其容量在2~48千字之间。’C5402有4千字的内部ROM。当MP/= 0,这4千字的ROM被映射到程序空间的地址范围为F000H~FFFFH,其中高2千字ROM中的内容是由TI公司定义,如图2.5.3所示。这2千字程序空间(F800H~FFFFH)中包含如下内容:

图2.5.2 TMS320VC5402扩展程序存储空间结构图
● 引导程序。从串行口、外部存储器、I/O口、主机接口进行自动加载引导程序。
● 256字μ律扩展表。
● 256字A律扩展表。
● 256字正弦函数值查找表。
● 中断向量表。
当处理器复位时,复位、中断及陷阱向量将被映射到程序空间的FF80H。复位后,这些向量可以被重新映射到程序存储空间的任何一页的开头。利用这种特性,可以很方便地将中断向量表从引导ROM中转移到其他存储区域,然后再从存储器映射中移走ROM。

图2.5.3 ’C5402内部ROM的内容
2.5.3 数据存储空间
数据存储空间用来存放执行指令所使用的数据,包括需要处理的数据或数据处理的中间结果。
1.数据存储空间的配置
’C54x的数据存储空间共有64千字,采用片内和片外存储器统一编址。除了含有SARAM和DARAM外,还可通过软件将内部ROM映射到数据存储空间。用户可以通过设置PMST中的DROM位,将部分内部ROM映射到数据存储空间。若DROM=0,内部ROM不映射到数据存储空间;若DROM=1,部分内部ROM映射到数据存储空间,并且当MP/MC= 0时,内部ROM同时映射到数据存储空间和程序存储空间。每次复位时,处理器将对DROM位清零。
图2.5.1给出了TMS320VC5402数据存储空间的结构,0000H~005FH为存储器映像寄存器(MMR)空间,0060H~007FH为暂存寄存器空间,0080H~3FFFH为片内DARAM数据存储空间,4000H~EFFFH为外部数据存储空间,F000H~FFFFH由DROM设定的数据存储空间。DROM控制位用来决定数据存储空间是否使用内部ROM:
当DROM=0时,F000H~FEFFH定义为外部ROM,FF00~FFFFH为外部数据存储空间,此时数据存储空间不使用内部ROM;

图2.5.4 前1千字数据空间配置
当 DROM=1 时,F000~FEFFH 定义内部 ROM,FF00~FFFFH保留。
在’C54x的数据存储空间中,前1千字的数据存储空间包括存储器映像CPU寄存器(0000H~001FH)和片内外设寄存器(0020H~005FH)、32字暂存寄存器(0060H~007FH)以及896字DARAM(0080H~03FFH),这部分的配置如图2.5.4所示。
从0080H开始,按每80H(128)个存储单元为一个数据块,将DARAM分成若干个数据块,其目的是便于CPU的并行操作,提高芯片的高速处理能力。分块以后,用户可以在同一个周期内从同一块DARAM中取出两个操作数,并将数据写入到另一块DARAM中。
数据存储器可以驻留在片内或映射到片外RAM中。当处理器发出的数据地址处于片内数据存储空间范围内时,可直接对片内数据存储器寻址。当数据存储器地址产生器(DAGEN)发出的地址不在片内数据存储空间范围内,处理器就会自动地对外部数据存储器寻址。
2.存储器映像寄存器
在’C54x的数据存储空间中,前80H个单元(数据页0)包含有的CPU寄存器和片内外设寄存器。这些寄存器全部映射到数据存储空间,所以也称作存储器映像寄存器 MMR。采用寄存器映射的方法,可以简化CPU和片内外设的访问方式,使程序对寄存器的存取、累加器与其他寄存器之间的数据交换变得十分方便。
’C5402的CPU寄存器共有27个,映射到数据存储空间的地址为0x0000H~0x001FH,主要用于程序的运算处理和寻访方式的选择及设定。CPU访问这些寄存器时,不需要插入等待时间。表2.5.2列出了27个CPU寄存器的名称和地址。
表2.5.2 存储器映射的CPU寄存器

’C5402的片内外设寄存器主要用来控制片内外设电路,映射在数据存储空间的20H~5FH,可作为外设电路的数据存储器。包括串行口通信控制寄存器组、定时器定时控制寄存器组、时钟周期设定寄存器组等。对它们寻址时,需要2个机器周期。
表2.5.3列出了TMS320C5402的片内外设寄存器。
表2.5.3 TMS320C5402的片内外设寄存器

2.5.4 I/O空间
’C54x除了程序和数据存储空间外,还提供了一个具有64千字的I/O空间,主要用于对片外设备的访问。可以使用输入指令PORTR和输出指令PORTW对I/O空间寻址。在对I/O空间访问时,除了使用数据总线和地址总线外,还要用到、
和R/
控制线。其中,
和
用于选通I/O空间,R/
用于控制访问方向。