第2章 TMS320C54x DSP体系结构总体介绍
本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU)、存在器和片内外设。
C54x DSP采用了高级的改进哈佛结构,用8条总线达到最大的处理能力。其独立的程序和数据空间允许同时对程序指令和数据进行访问,提供了高度的并行性。例如,在单周期内可以完成3个读操作和1个写操作,并行存储指令和专用指令充分利用了这种结构。另外,数据可以在数据空间和程序空间之间传送。这种并行支持一套功能强大的在单机器周期内完成的算术、逻辑和位操作运算。另外,C54x DSP包含有中断管理、重复操作和函数调用的控制机制。图2-1所示为C54x DSP功能框图,它包含了主要的模块和总线结构。
2.1 总线结构
C54x DSP结构主要是围绕8条16位总线而建立的(1条程序存储器总线、3条数据存储器总线和4条地址总线)。
- 程序总线(PB)传送从程序存储器读取的指令码和立即数。
- 3条数据总线(CB、DB和EB)连接各个组成部分,例如CPU、数据地址产生逻辑、程序地址产生逻辑、片内外设和数据存储器。
- CB和DB传送从数据存储器读出的操作数。
- EB传送要写入存储器的数据。
- 4条地址总线(PAB、CAB、DAB和EAB)传送指令执行所需要的地址。
C54x DSP可以利用两个辅助寄存器算术单元(ARAU0和ARAU1)在单周期内产生最多两个数据存储器地址。
PB能够把存储在程序空间的数据操作数(比如系数表)传送到乘法器和加法器做乘/累加操作,或者在执行数据移动指令(如MVPD和READA)时将数据传到数据空间的某个目的地。这种传送能力再加上对偶读操作的特点,可以支持单周期内执行3操作数的指令,如FIRS指令。
C54x DSP还有一条访问片内外设的片内双向总线,这条总线通过CPU接口中的总线变换器连到DB和EB上。使用这条总线的访问过程要求两个或更多个周期来读和写,这取决于外设的结构。表2-1总结了各种不同访问所使用的总线的情况。
2.2 内部存储器组织
C54x DSP存储器组织成3个独立可选的空间:程序空间、数据空间和I/O空间。用户可以将DARAM或SARAM设置成数据存储器或程序/数据存储器。C54x DSP还有26个CPU寄存器加上外设寄存器映射到数据存储器空间。
2.2.1 片内ROM
片内ROM是程序存储器空间的一部分,在某些情况下,也可以是数据存储器空间的一部分。
在大多数器件中,ROM包含一个引导装入程序,可以用来对更快的片内RAM或片外RAM进行引导。在ROM容量比较大的器件中,ROM中的一部分可以被同时映射到数据和程序空间。
2.2.2 片内双存取RAM(DARAM)
因为每块DARAM在单周期可以存取两次,所以CPU或外设,例如缓冲串口(BSP)和主机接口(HPI),可以在同一个周期对同一个DARAM地址进行读和写操作。DARAM总是映射到数据空间,主要是用来存储数据。它也可以映射到程序空间,用来存储程序代码。
2.2.3 片内单存取RAM(SARAM)
每一块SARAM块在单机器周期内只能进行一次读访问或写访问。SARAM总是映射到数据空间,主要是用来存储数据。它也可以映射到程序空间,用来存储程序代码。
2.2.4 片内双向共享RAM
带有多CPU核的器件中包含了双向共享RAM块,允许两个CPU核同时访问程序空间。
2.2.5 片内存储器保护
C54x可屏蔽的存储器保护选项可以保护片内存储器中的内容。不是所有的C54x DSP都提供存储器保护这个特性。
2.2.6 存储器映射寄存器
数据存储器中包含有CPU和片内外设中的存储器映射寄存器。这些寄存器位于数据0页,可以方便地对它们进行访问。存储器映射的访问方式便于现场转换时存取器,也便于在累加器和其它寄存器间传送信息。
2.3 中央处理单元(CPU)
所有的C54x器件的CPU都是相同的,它包括:
- 40-bit arithmetic logic unit (ALU)
- Two 40-bit accumulators
- Barrel shifter
- 17 × 17-bit multiplier
- 40-bit adder
- Compare, select, and store unit (CSSU)
- Data address generation unit
- Program address generation unit
2.3.1 算术逻辑运算单元(ALU)
C54x有一个40位算术逻辑运算单元(ALU)和两个40位累加器(累加器A和B),可进行二进制补码算术运算。ALU还可以进行布尔操作。ALU的输入数据有以下来源:
- 16-bit immediate value
- 16-bit word from data memory
- 16-bit value in the temporary register, T
- Two 16-bit words from data memory
- 32-bit word from data memory
- 40-bit word from either accumulator
ALU也可以用作两个16位的ALU,可同时完成两个16位操作。
2.3.2 累加器
累加器A和B存储来自ALU或乘法器/加法器的结果。它们也可以给ALU提供第二个输入。累加器A可以作为选举法器/加法器的一个输入,每一个累加器可分成如下3部分:
- Guard bits (bits 39–32)
- High-order word (bits 31–16)
- Low-order word (bits 15–0)
C54x器件提供了相关的指令,可以在数据存储器里存储保护位、累加器高位和低位字,可以传送32位累加器字进出数据存储器。每一个累加器可以暂存另一个累加器的内容。
2.3.3 桶形移位器
C54x DSP桶形移位器有一个40位输入端连到累加器或数据存储器(用CB或DB),有一个40位输出连到ALU或数据存储器(用EB)。桶形移位器可以对输入数据进行0~31位的左移和0~16位的右移操作。所要求的移位数要定义在指令的移位计数字段、状态寄存器ST1中的移位计数字段(ASM)或暂存寄存器T中(当T被指定为一个移位计数寄存器时)。
桶形移位器和指数编码器(是一个硬件部件,用来计算累加器的指数值)可以在单周期内对累加器中的值进行标准化操作。
2.3.4 算法器/加法器单元
乘法器/加法器单元可以在单指令周期内完成一个17位$ imes$17位的二进制补码乘法运算和40位加法。快速的片内乘法器允许C54x有效地进行诸如相关、卷积和滤波等操作。另外,在单指令周期内,乘法器和ALU共同执行的乘/累加(MAC)运算与ALU的操作可以并行。
2.3.5 比较、选择和存储单元(CSSU)
比较、选择和存储单元(CSSU)在累加器的高低字之间比较最大值 ,它允许状态寄存器ST0中的检测/控制标志位(TC)和转换寄存器(TRN)保持其转换历史,并且选择累加器中较大的字节存入数据存储器。CSSU以最优的片内硬件加速Viterbi蝶式运算。
2.4 数据寻址
C54x DSP提供了如下7种基本数据寻址方式:
- 立即数寻址:用指令指定一个固定值 。
- 绝对寻址:用指令指定一个固定地址。
- 累加器寻址:用累加器A访问程序存储器的一个单元作数据。
- 直接寻址:用指令的7位来指定一个地址的低7位,这7位和数据页指针(DP)或堆栈指针(SP)一起决定实际的存在器地址。
- 间接寻址:用辅助寄存器访问存储器地址。
- 存储器映射寄存器寻址:用存在器映射寄存器(如何理解呢?),不改变当前DP值 或SP值。
- 堆栈寻址:管理系统堆栈中增加和消除某些项的操。
在运行直接、间接或存储器映射寄存器寻址的指令期间,数据地址产生逻辑(DAGEN)计算数据存储器操作数的地址。
2.5 程序存储器寻址
C54x DSP器件中的程序存储器通常是用程序计数器(PC)寻址。但是,某些指令也可用绝对寻址来访问存在程序存储器中的数据项。PC由程序地址产生逻辑(PAGEN)装载,常用来取单独的指令。比较典型的是在读取顺序指令时,PAGEN增加PC的值 。但是,由于某些指令或操作的结果,PAGEN也可以给PC装载不按顺序的值。这些引起PC值不连续的操作包括跳转、调用、返回、条件操作、单指令重复、多指令重复、复位和中断。对于调用和中断,当前的PC值被存到堆栈里,堆栈由堆栈指针(SP)指示。当被调函数或中断服务程序完成时,通过一条返回指令,被保存的PC值从堆栈中恢复。
2.6 流水线操作
一条指令流水线包括一条指令执行过程中出现的一系列操作步骤。C54x DSP流水线有6段——预取、取指、译码、访问、读取和执行,每一段都可以执行一个独立的操作。最典型的情况是流水线被一系列指令完全占满,每一条指令处于6段中的一段。当PC中出现了不连续的情况,例如在跳转、调用或返回期间,流水线中的一段或多段可能被暂时闲置。
2.7 片内外设
所有C54x器件有相同的CPU,但是连接的外设不同。C54x器件有以下片内外设可供选择:
2.7.1 通用的I/O引脚
C54x器件提供了可以通过软件控制进行读或写的通用I/O引脚。所有C54x器件都支持两个通用的I/O(GPIO)引脚。
- $ overline {BIO} $——A general input upon which conditional instructions can be based.
- XF——An external flag output that can be driven low or high under software control.
2.7.2 软件可编程等待状态寄存器
软件可程序等待状产生器可将外部总线周期延长到7个机器周期(部分器件是14个机器周期),以便与慢速的片外存在器和I/O设备接口。在访问片外存在器时,无论是对32K字的程序存储器和数据存储块的访问,还是对64K字的I/O空间的访问,都可在软件等待状态寄存器(SWWSR)中设置0~7个等待状态。
2.7.3 可编程的块切换逻辑
在程序存在器或数据存储器中,当存取越过了存在块的边界时,可编程块切换逻辑可以自动地插入一个周期。同样,当存取从程序存储器跳到数据存储器,或者存取从某些器件的程序存储器的某一页跳到另一页时,也会插入一个周期。这个附加周期可防止总线竞争,它使得存储器在其它器件驱动总线之前,先释放掉总线。块切换逻辑可控制的存储块的大小是由存储开关控制寄存器(BSCR)确定的。
2.7.4 硬件定时器
C54x器件有16位的定时电路及4位的预标定器。定时计数器每个CLKOUT周期减1。一旦定时计数器减到0,就产生一个定时中断。可通过专用的状态位的设置使定时器停止、重启、复位或无效。
2.7.5 时钟产生器
C54x器件上有两种基本的时钟产生器选项:内部振荡器或锁相环(PLL)电路。在第一个选项中,CPU的时钟是通过将X2/CLKIN输入时钟除以系数1、2或4产生的。第二个选项中采用了一个PLL电路来产生CPU时钟,该时钟是输入时钟的倍频信号。
2.7.6 直接存储器访问(DMA)控制
直接存储器访问 (DMA)控制器可在存储嚣中的多个点之间传输数据,而不影响CPU的操作。DMA操作允许在CPU操作的背之下,进行数据移入和移出内部程序/数据存储器、片内外设或外部存储器的操作。DMA有6个独立可编程的通道,支持6个不同的DMA操作现场。
2.7.7 主机接口(HPI)
主机接口(HPI)是可以与一个主机进行连接的并行口。通过C54x片内既能被主机访问又能被C54x器件访问的存储器,可在C54x和主机之间交换信息。C54x器件中有3种基本的HPI选项:8位标准HPI、8位增强HPI或16位增强HPI。表2-3列出了配备HPI的C54x器件的情况。
2.8 串行口
The serial ports on the C54x DSP vary by device, and are represented by four types: synchronous, buffered, multichannel buffered (McBSP), and timedivision multiplexed (TDM). See Table 2–4 for the umber of each type on the various C54x devices. The sections that follow provide an introduction to the four types of serial ports. For more details about these ports, see Chapter 9, Serial Ports. For detailed information about the McBSPs, see TMS320C54x DSP Enhanced Peripherals Reference Guide (SPRU302).
2.8.1 同步串口
同步串口是调整、全双工串口,可提供串行器之间的直接通信,例如编解码器、A/D转换器和其它踵系统。当C54器件中有多个同步串口时,这些串口是相同的但相互独立。每个两步串口最高可以1/4的机器周期(CLKOUT)速率运行。同步串口发送器和接收器是双缓冲的,它们分别被可屏蔽的外部中断信号控制。数据可以以字节或字为单位组成帧。
2.8.2 缓冲串口(BSP)
缓冲串口(BSP)是同步串口增加了一个自动缓冲的部件,它的时钟可达CLKOUT的速率。这种全双工、双缓冲的串口可提供灵活可变的数据流长度。自动缓冲部件支持高速传输,减少中断服务的开销。
2.8.3 多通道缓冲串口(McBSP)
多通道缓冲串口是一种增强型的缓冲串口,它具有以下一些特点——缓冲数据寄存器、全双工通信、独立的接收和发送时钟及帧同步。另外McBSP还有一些增强功能——内部可编程时钟和帧产生器、多通道模式和通用I/O。
2.8.4 时分复用(TDM)串口
时分复用(TMDM)串口是同步增加了数据时分复用功能,它最多可以和7个带有TDM串口的其它C54x器件连接。TDM串口既可被设置为同步操作也可被设置为TDM操作。通常用于多处理器的应用中。
2.9 外部总线接口
C54x DSP最多可寻址64K字数据存储器、64K字程序存储器(某些器件最多达8M字)和64字16位的并行I/O口。对外部存储器或I/O口的访问通过外部接口进行。空间选择信号$overline {DS}$、$overline {PS}$和$overline {IS}$可以用来选择不同的物理空间。
接口中有外部准备就绪输入信号和软件产生的等待状态,它们可使处理器与多种不同速度的存储器和I/O设备连接。接口中的HOLD模式允许外部器件控制C54x DSP的总结,在这种情况下,一个外部器件可以访问程序、数据和I/O空间里的资源。
大多数C54x DSP指令都可访问外部存储器,但是访问I/O口需要特殊的指令PORTR和PORTW。
2.10 IEEE 1149.1扫描逻辑标准
The IEEE Standard 1149.1 scanning-logic circuitry is used for emulation and testing purposes only. This logic provides the boundary scan to and from the interfacing devices. Also, it can be used to test pin-to-pin continuity as well as to perform operational tests on devices peripheral to the C54xE DSP. The IEEE Standard 1149.1 scanning logic is interfaced to internal scanning-logic circuitry that has access to all of the on-chip resources. Thus, the C54x DSP can perform on-board emulation using the IEEE Standard 1149.1 serial scan pins and the emulation-dedicated pins. For more information, see Appendix A, Design Considerations for Using XDS510 Emulator.