2.4 中央存储器
TMS320C54x的片内存储空间分为3个可选择的存储空间:64KW(千字)的程序存储空间、64KW的数据存储空间和64KW的I/O存储空间。所有的TMS320C54x芯片都包括随机访问存储器(RAM)和只读存储器(ROM)。RAM 又分两种:一种是只可一次寻址的RAM(SARAM),另一种是可以两次寻址的RAM(DARAM)。不同芯片的存储空间大小、配置不同,表2-3给出了
不同TMS320C54x芯片中的ROM、DARAM和SARAM配置。
表2-3 TMS320C54x系列片内程序和数据存储空间配置
TMS320C54x还有数据存储器0页映射的26个特殊功能寄存器。CPU的并行结构和片上DARAM的配合,可使TMS320C54x在1个指令周期内同时执行4次操作,包括1次取指、2次读操作数和1次写操作数。
TMS320C54x所有片内和片外程序存储器及片内和片外数据存储器分别统一编址。因此,通过工作方式控制寄存器PMST的3个位控信息MP/MC、OVLY和DROM,可以方便地将片内RAM定义为程序或数据存储器。
1.存储器地址、空间分配
图2-11所示为TMS320C5402的位控程序/数据存储器地址、空间分配图。
图2-11 TMS320C5402的位控程序/数据存储器地址、空间分配图
由图2-11可见,程序存储空间定义在片内还是片外是由MP/MC和OVLY决定的。CPU工作方式控制位MP/MC决定4000H~FFFFH程序存储空间的片内、片外空间分配。
MP/MC=1,4000H~FFFFH程序存储空间全部定义为片外存储器。
MP/MC=0,4000H~EFFFH程序存储空间定义为片外存储器,FF00H~FFFFH程序存储空间定义为片上存储器。
OVLY位决定0000H~3FFFH程序存储空间的片内、片外分配控制。
OVLY=1,0000H~007FH保留,程序无法占用,0080H~3FFFH定义为片内DARAM。
OVLY=0,0000H~3FFFH全部定义为片外程序空间。
数据存储空间片内、片外存储器统一编址,0000H~007FH为特殊功能寄存器空间,0080H~3FFFH为片内DARAM数据存储空间,4000H~EFFFH为片外数据存储空间,F000H~FFFFH由DROM位控制数据存储空间的片内和片外分配。
DROM=1,F000H~FEFFH定义只读存储空间,FF00H~FFFFH保留。
DROM=0,F000H~FEFFH定义片外数据存储空间。
TMS320C5402有23条外部程序地址线,其程序空间可扩展至1MW(兆字)。为此,TMS320C5402增加了一个额外的存储映射程序计数扩展寄存器XPC,以及6条扩展程序空间寻址指令。整个程序空间分成16页,每页程序存储内容顺序安排如图2-12所示。
图2-12 TMS320C5402扩展程序存储器结构图
第1~15页,每页的前512KW(千字)存储器存放低32KW,后512KW存储器存放高32KW。如果片内程序区被寻址,则它只能在第0页。扩展存储器的页号由XPC寄存器设定,XPC映射到数据存储单元001EH,硬件复位时,XPC=0。
2.程序存储器
TMS320C5402可寻址1MW(兆字)的片外存储器的存储空间。它的片内ROM、DARAM、SARAM都可通过软件映射到程序空间,此时CPU可以自动地按程序空间方式对它寻址。如果程序地址生成器PAGEN产生的地址处于片外存储器上,CPU可以自动地对片外存储器寻址。
为了增强处理器的性能,对片内程序区以512KW(千字)为单位分成若干块,CPU可以同时对不同的块进行取指或读数操作。复位时,中断向量映射到程序空间的FF80H,复位后,这些向量可被重新定位到程序空间的任何一个512KW的起始点。根据型号不同,配置不同,TMS320C54x的片内ROM的容量范围为4~48KW之间,容量大的ROM可以写入用户程序。TMS320C5402有4KW片内ROM,如图2-13所示。4KW ROM的地址范围为F800H~FF80H,其中内容由TI公司定义。用户程序不能占用片上ROM空间。
图2-13 TMS320C5402 ROM内容
如果MP/MC=0,这4KW内容将自动映射到片上ROM F800H~FFFFH内。有些TMS320C54x器件,ROM中只有中断矢量表,用户程序代码需提交给TI公司,由TI公司将程序固化在ROM上。
3.数据存储器
TMS320C54x的片内数据存储器根据型号的不同,其容量范围为10~200KW(千字),包括片上ROM、DARAM、SARAM。当CPU产生的数据地址在片内数据存储器范围内时,便直接对片内数据存储器寻址;当CPU产生的数据地址不在片内数据存储器范围内时,CPU自动对片外数据存储器寻址。
为了提高CPU的并行处理能力,片内DARAM和数据ROM细分成80H个存储单元构成若干数据块。用户可在一个指令周期内从同一块DARAM或ROM中取出两个操作数,且将数据写入另一块DARAM或ROM中。图2-14为DARAM前1KW的数据存储器配置图。0000H~001FH中的26个存储单元为CPU的特殊功能寄存器。0020H~005FH中的存储单元为片上外设处理寄存器。0060H~007FH为32字的暂存寄存器。从0080H开始将DARAM分成每80H(128)个存储单元为一个数据块,以便于CPU的并行操作,提高芯片的高速处理能力。寻址存储器映射CPU寄存器无须等待周期,存储器映射外设寄存器至少需要两个机器周期,由片内外设电路决定。
图2-14 DARAM前1KW的数据存储器配置图
4.特殊功能寄存器
特殊功能寄存器是非常重要的。对于DSP的使用者来说,掌握了这些寄存器的用法,就基本上掌握了DSP的应用要点。
(1)第一类特殊功能寄存器
TMS320C54x的第一类特殊功能寄存器为26个,连续分布在数据存储区的0H~1FH地址范围内,其地址、符号及功能见表2-4。
这一类寄存器主要用于程序的运算处理和寻址方式的选择及设定。对于这些寄存器的了解程度,将直接影响所设计的程序的运行速度、可靠性、代码效率等关键技术指标。尤其是对DSP芯片的合理应用及高效算法的设计,均来自于对硬件结构的深入了解。
累加器A和B是一个40位寄存器,它们分别由低16位、高16位及8位运算保护位构成。保护位主要用于计算时的数据位余量,防止迭代运算的溢出。它们可以配置成乘法器、加法器或目的寄存器。尤其在某些特殊运算指令中,例如,MIN(求最小值)、MAX(求最大值)及并行运算指令,都要用到它们。此时,一个累加器加载数据,另一个累加器完成运算。两个累加器的差别在于,累加器A的高16位可以用做乘法器的输入。
表2-4 第一类特殊功能寄存器地址、符号及功能
堆栈指针SP是一个16位专用寄存器,它指示出堆栈顶部在数据存储空间的位置。系统复位后,SP初始化为0H,使得堆栈由0000H开始。程序设计中可以重新设置堆栈位置,TMS320C54x的堆栈是向下生长的。
【例2-4】假设 SP=3FFH,CPU执行一条程序调用或响应中断后,程序计数器PC进栈,其低位PCL=3FCH,高位PCH=3FEH。
(2)第二类特殊功能寄存器
TMS320C54x的第二类特殊功能寄存器连续分布在20H~5FH的存储区内,主要用于控制片内外设,包括串口通信控制寄存器组、定时器定时控制寄存器组、机器周期设定寄存器组等。其地址、符号及功能分别列于表2-5中。这些寄存器的具体功能将在第8章中详细介绍。
表2-5 第二类特殊功能寄存器地址、符号及功能