第3章 C54x DSP系统硬件结构 DSP芯片是一种特殊结构的微处理器,为了快速地实现数字信号处理运算,采用了流水线指令执行结构和相应的并行处理结构,可在一个周期内对数据进行高速的算术运算和逻辑运算。本章主要介绍C54x DSP芯片的硬件结构,重点对芯片的引脚功能、CPU结构、内部存储器、片内外设电路、系统控制以及内、外部总线进行讨论。 3.1 C54x DSP的基本架构 TMS320 C54x DSP(简称C54x)是TI公司为实现低功耗、高速实时信号处理而专门设计的16位定点数字信号处理器。其内核包含在第1章已经讨论过的哈佛结构和高级算术特点中。另外,C54x还具有多总线结构以及强大的片上外设,具有高度的操作灵活性和运行速度,适应远程通信等实时嵌入式应用的需要,现已广泛地应用于无线通信系统中。 3.1.1 C54x DSP的基本结构图 一块DSP芯片上集成CPU、片内存储器、外围电路、总线以及外部总线接口。图3-1所示为TMS320C54x基本结构框图,它包含了主要模块和总线结构。图3-2所示为TMS320C54x功能结构图。与传统微处理器相比较,DSP最显著的结构特点是具有高效存取数据、单周期乘法器和零开销硬件循环等。 3.1.2 C54x DSP的主要特征 1. 具有快速处理性能的CPU部分 CPU是DSP芯片中的核心部分,CPU内的硬件构成决定其指令系统的性能。采用了流水线指令执行结构和相应的并行处理结构,可在一个周期内对数据进行高速的算术运算和逻辑运算,TMS320C54x的CPU包括以下几部分: (1) 先进的多总线结构,包括1条程序总线、3条数据总线、4条地址总线和外设总线; (2) 40位算术逻辑单元(ALU) ,包括1个40位的桶形移位寄存器和2个独立的40位累加器; (3) 17×17的并行乘法器,并与1个40位的专用加法器配合,用于非流水线的单周期乘/累加操作;DSP芯片技术及工程实例第3章 C54x DSP系统硬件结构图3-1 TMS320C54x基本结构框图 图3-2 TMS320C54x功能结构图 (4) 比较、选择和存储单元,用于维特比运算中的加/比较选择; (5) 指数编码器,可以在单周期内计算40位累加器的指数值; (6) 2个地址生成器,包括8个辅助寄存器和2个辅助寄存器算术单元; (7) 双内核结构(只适用于C5420) . 2. 具有哈佛结构的存储器系统 (1) 具有独立的程序存储器和数据存储器,可同时访问,使许多处理运算比传统的冯·诺依曼结构有效得多。 (2) 具有192K字可寻址存储空间,包括片内、外64K字程序存储空间,片内、外64K字数字存储空间和片外64K字的I/O空间。其中一些型号DSP的程序存储器空间可扩展至8M字,例如TMS320C548、TMS320C549、TMS320C5402、TMS320C5410和TMS320C5420. (3) 提供一定容量的片内存储器,片内存储器配置因型而异,包括片内ROM和RAM,通过内部多总线,CPU可以同时、快速地访问它们,以实现并行处理。但对于外部存储器,DSP提供了外部接口,它与内部多总线结构复接,但外部只有一组I/O接口线,所以不能在单周期内并行实现读写操作。 3. 片内外设和专用电路 除了DSP内核外,DSP芯片上还需配置一些外设专用器件。这些器件可以与DSP内核平行操作,只占用很小的内核指令周期,依靠这些器件无缝出入DSP处理内核的能力,可大大提高DSP处理数据的能力。TMS320C54x的片内外设和专用电路采用模块化的结构设计,常见的外设包括以下几种。 (1) 可编程软件等待状态发生器。 (2) 可编程分区转换逻辑电路。 (3) 可采用内部振荡器或外部时钟源的片内锁相环(PLL)时钟发生器。 (4) 外部总线接口可以禁止或允许外部数据总线、地址总线和控制线的输出。 (5) 数据总线具有总线保持功能。 (6) 可编程定时器。 (7) 8位并行主机接口(HPI) ,有些产品还包括扩展的8位并行主机接口(HPI8)和16位并行主机接口(HPI16) . (8) 片内的串行口按不同的型号分为全双工串口(支持8位和16位数据传送)、时分多路(TDM)串口和缓冲(BSP)串口。 C54x系列定点DSP芯片共享同样的CPU内核和总线结构,但每一种器件片内存储器的配置和片内外设不尽相同。表3-1列出了TMS320C54x系列DSP基本配置汇总。表3-1 TMS320C54x系列DSP基本配置汇总表型 号电压/VcoreI/O片内存储器RAM/ KBROM/ KBDAT/ PRO/B外 设McBSPTimerHPIDMAMIPS封 装C54011.83.384128K/2M228位6通道50144LQFP/ 144BGAC54021.6/ 1.83.3328/32128K/2M/ 128K/16M2/31/28位6通道100/ 160144LQFP/ 144BGAC54041.53.332128128K/16M328/16位6通道120144LQFP/ 144BGA续表型 号电压/VcoreI/O片内存储器RAM/ KBROM/ KBDAT/ PRO/B外 设McBSPTimerHPIDMAMIPS封 装C54071.63.380256128K/16M328/16位6通道120144LQFP/ 144BGAC54091.5~ 1.83.36432128K/16M318/16位6通道80~ 160144LQFP/ 144BGAC54101.5~ 2.53.312832128K/16M318/16位6通道100~ 160144LQFP/ 144BGAC54161.5/ 1.63.325632128K/16M318/16位6通道120/ 160144LQFP/ 144BGAC54201.83.32000128K/16M6216位12通道200144LQFP/ 144BGA4. 指令系统 在TMS320C54x的指令系统中,具有单指令重复和块指令重复操作指令,32位长操作数指令,同时读入2个或3个操作数的算术指令。支持存储器块传送指令,能并行存储和并行加载的算术指令,支持条件存储指令及中断快速返回指令。 5. 执行速度 对TMS320C54x而言,其执行单周期定点指令时间为25/20/15/12.5/10ns(对应每秒指令数分别为40/50/66/80/100MIPS) . 6. 电源和功耗 TMS320C54x DSP芯片可采用5V、3.3V、3V和1.5V、1.8V或2.5V的超低电压供电。而且其功耗可采用下降指令IDLE1、IDLE2和IDLE3来控制,以便使DSP工作在节电模式下可控制关断CLKOUT信号。 7. 芯片仿真功能 具有符合IEEE 1149.1标准的片内仿真JTAG接口,其主要功能是用于与主机相连接,实现芯片的仿真与测试。 3.2 总线结构 按照结构来区分,又可将总线分成内部总线和外部总线,本节只介绍内部总线,外部总线的结构和功能将在3.8节介绍。 为了提高CPU高度的并行性,达到最大的处理能力,例如在单周期内完成算术、逻辑和位操作等运算,TMS320C54x DSP片内采用多总线结构,用8条总线,可同时对程序指令和数据进行双访问,这8条16位的总线包括4条程序/数据总线和4条地址总线。另外,CPU访问片内外设是通过在片双向总线来实现的,如图3-2所示的功能结构图。正是这种改进型哈佛总线结构,形成了支持高速指令执行的硬件基础。 (1) 程序总线(PB) : 传送来自程序存储器的指令代码和立即数。 (2) 3组数据总线(CB、DB和EB): 负责将片内的各种元器件相互连接,如CPU、数据地址产生逻辑、程序地址产生逻辑、片内外设和数据存储器等。其中,CB和DB总线传送从存储器读出的数据,即“读”操作使用的数据总线;EB总线传送向存储器写入的数据,即“写”操作使用的数据总线。 (3) 地址总线(PAB、CAB、DAB、EAB) : 负责传送执行指令所需的地址。 (4) 在片双向总线: TMS320C54x用一组双向的片内总线访问片内外设,这组总线轮流使用DB和EB与CPU连接。用这组总线进行读/写操作需要两个或更多的周期,具体所需周期数取决于片内外设的结构。 TMS320C54x能利用两个辅助寄存器算术单元(ARAU0和ARAU1)在同一个周期内生成两个数据存储器地址,可实现片内RAM 的双访问功能。 表3-2列出了各种不同类型的总线访问形式。从表中看到,C54x器件在任何给定的机器周期内可执行4个并行存储器操作: 1次取指、读取2个操作数和写1个操作数。或通过CB、DB、PB总线同时取操作数,可在一个机器周期内完成从数据存储器读双数据同时从程序存储器读一个常数的3个操作数读取,而片上外设的读、写则是通过DB和EB总线轮流与CPU连接完成,所以使用这组总线进行读/写操作需要两个或更多的周期。表3-2 C54x DSP读/写操作占用总线情况读/写方式地 址 总 线PABCABDABEAB程序总线 PB数 据 总 线CBDBEB程序读√√程序写√√单数据读√√双数据读√√√√32位长数据读√(hw)√(lw)√(hw)√(lw)单数据写√√数据读/数据写√√√√双数据读/系数读√√√√√√外设读√√外设写√√3.3 存储器结构 TMS320C54x DSP存储器采用改进型哈佛结构。与冯·诺依曼结构的存储器相比较,哈佛结构的程序/数据总线和空间是分开的,冯·诺依曼结构的程序/数据总线和空间是合二为一的,而改进型哈佛结构的部分程序/数据空间可交叉,因此提供了高度的并行性。 3.3.1 DSP存储器空间的划分 C54x DSP的存储空间共192K字,由3个独立可选的存储空间组成,包括64K字的程序存储空间、64K字的数据存储空间和64K字的I/O空间。其中有些型号芯片的程序空间还可以进一步扩展。 存储器分为片内存储器和片外存储器。片内存储器有3种类型: 双访问RAM (DARAM) 、单访问RAM(SARAM)和ROM. RAM总是安排到数据存储空间,但也可以配置在程序存储空间。C54x片上还有26个映射到数据存储空间的CPU寄存器和外设寄存器。ROM一般映射到程序存储空间,也可以部分地映射到数据存储空间。在TMS320C54x DSP中,片外存储器主要包括程序存储器、数据存储器、I/O空间。与片外存储器相比,片内存储器不需插入等待状态,成本低,功耗低。但是,片外存储器具有寻址较大存储空间的能力,而片内存储器寻址存储空间较小。 C54x通过设置处理器工作方式状态寄存器(PMST)中的3个状态位MP/MC、OVLY和DROM(详见3.4.1节),可以很方便地“使能”和“禁止”程序与数据空间中的片内存储器。 (1) MP/MC位 MP/MC位决定是否使用片内ROM. 若MP/MC=0,称微计算机模式,片内ROM使能并能够访问。 若MP/MC=1,称微处理器模式,表示片内ROM无法访问。 (2) OVLY位 OVLY位决定是否让数据存储器映射到程序存储器空间。 若OVLY=0,片内RAM只映射到数据存储空间。 若OVLY=1,片内RAM同时映射到程序和数据存储空间。 (3) DROM位 DROM位决定是否让部分程序存储器映射到数据存储器空间。 若DROM=0,片内ROM不映射到数据存储空间。 若DROM=1,部分片内ROM映射到数据存储空间。 DROM位的用法与MP/MC位的用法无关。不同的C54x的数据和程序存储区分配并不完全相同。图3-3(a)所示为TMS320C549存储器空间分配图,图3-3(b)所示为TMS320C5416存储器空间分配图,从图中可以看到在任何一个存储空间内,RAM、ROM都可以驻留在片内或者片外,但需要通过对3个状态位MP/MC、OVLY和DROM的设置来配置。 图3-3 存储器空间分配图 图3-3(续) 所有C54x DSP器件提供一定数量的片内ROM和RAM, DSP有两种类型的RAM,包括双寻址RAM (DARAM)和单寻址RAM (SARAM) 。表3-3列出了不同C54x系列DSP 片内各种存储器的配置。 1. 片内ROM 片内ROM是程序存储器的一部分,对某些DSP器件来说,也可是数据存储空间的一部分,如C5402。当MP/MC设置为0时,可以映射到程序存储空间的ROM为4KB;当DROM设置为1时,可以映射到数据存储器空间的ROM为4KB。不同芯片的片内可用ROM容量是不一样的,见表3-3。对于ROM少的DSP器件(2KB) , ROM中含有自举加载器,在程序启动时,将用户的代码从慢的外部ROM、串口,或JTAG加载到内部存储器,这样可以加快程序的运行速度。对于具有较大ROM的器件,部分ROM可以映射到数据和程序空间,用户提供的代码或数据以目标文件格式写入ROM, TI公司可以将程序掩膜到该ROM中。 2. 片内双寻址RAM(DARAM) 所谓DARAM,就是在一个指令周期内,CPU可对其进行读和写两次存取操作,DARAM由块组成,CPU能在每个周期内对同一块DARAM进行读和写。DARAM总是映射在数据存储器空间,用于存储数据,当OVLY设置为1时,它也可同时映射在程序存储器空间,用于存储程序代码。 表3-3 常见的C54x系列DSP片内存储器配置KB存储器类型C541C542C543C545C546C548C549C5402C5416C5420ROM282248482164160程序ROM202232322164160程序/数据ROM800161600400DARAM510106688166432SARAM0000024240641603. 片内单寻址RAM(SARAM) 在一个指令周期内只能进行一次读或写操作。SARAM也由块组成,与DARAM一样,SARAM总是映射在数据存储器空间,用于存储数据,当OVLY设置为1时,也可同时映射在程序存储器空间,用于存储程序代码。 4. 存储器映射寄存器 CPU内部专用寄存器和片上外设寄存器总是映射在数据存储器的0页上,对它们的访问很简单,存储器映射访问提供了一种方便途径,用于寄存器的存储和恢复,也用于累加器与其他寄存器之间的信息传递。 3.3.2 程序存储器 程序存储器空间存放要执行的指令和执行中所用的系数表。C54x DSP可以寻址64 K字的程序存储空间。但也有一些型号的DSP可以扩展到8 M字,如C548、C549、C5410、C5402和C5420。下面分别讲述程序存储器的组织、片内ROM 的安排、扩展程序存储器等内容。 1. 程序存储器空间的配置 程序存储器空间由片内和片外程序存储器组成。如前所述,片内程序空间的组织主要通过设置MP/MC、OVLY位来实现。表3-4列出了各种C54x芯片片内程序存储器配置情况。MP/MC和OVLY 位决定了哪个片内存储器在程序空间中可用。例如,当OVLY设置为1时,DARAM或SARAM才能被配置到程序存储器空间;而只有当MP/MC设置为0时,片内ROM才可用。MP/MC是DSP的一个外部引脚,设置MP/MC状态有两种方法,一种是直接给MP/MC引脚低电平或高电平,当DSP器件复位时,MP/MC引脚的逻辑状态被传送到PMST寄存器的MP/MC位。另一种方法是用户通过软件来设置或清除PMST寄存器的MP/MC位,以便禁止或使能片内ROM。如果片内存储器配置到程序存储器中,则芯片在访问程序存储器时会自动访问这些存储单元。当PAGEN产生了一个不在片内存储器的地址时,会自动使用一个外部总线操作。C54x器件程序存储器空间配置图如图3-3(a)和图3-3(b)所示。表3-4 TSM320C54x芯片片内程序存储器配置KB型 号ROMDARAM (OVLY=1) SARAM (OVLY=1) TMS320C541285-TMS320C542210-TMS320C543210-TMS320C545486-TMS320C546486-TMS320C5482824TMS320C54916824TMS320C5402416-TMS320C541616856TMS320C5420-32168 2. 片内ROM 的组织和内容 为了增强处理器的性能,将片内ROM再细分为若干块,这样就可以在片内ROM的一个块内取指的同时又在别的块中读数据。图3-4所示为各种C54x器件的片内ROM分块图。根据C54x器件的不同,ROM可以组织为2KB、4KB或8KB的块。 图3-4 C54x 器件片内ROM分块图 (1) 对于2K-ROM器件,其ROM 块为2K字。 (2) 对于4K-ROM和28K-ROM 器件,其ROM块为4K字。 (3) 对于16K-ROM和48K-ROM器件,其ROM块为8K字。 C54x的片内ROM容量有大(28K或48K字)有小(2K或4K字),但对于程序存储器空间的最高2K字程序空间(F800h~FFFFh) ,容量大的片内ROM (C541/C545/C546)可以把