《DSP微控制器原理》第二章DSP控制器的CPU功能结构第二章DSP控制器的CPU功能结构TMS320LF240xA系列DSP控制器是在C24X控制器的基础上改进而成的。TMS320LF240xA系列DSP控制器组成:(1)CPU;(2)存储器(程序存储器ROM/FlashEEPROM和数据存储器DARAM、SARAM);(3)功能外设(模数转换器ADC模块、串行通讯接口SCI、系统监控WDT模块、事件管理器模块、中断控制器模块、串行外设接口SPI、现场总线控制器CAN模块等)。(4)外部信号模块(时钟模块、系统接口模块、JTAG/测试模块)第二章DSP控制器的CPU功能结构按其组成结构,可将其分为三大部分。1、CPU模块、片内存储器模块、程序控制器模块;2、片上外设模块(模数转换器ADC模块、串行外设接口SPI、串行通信接口SCI、现场总线控制器CAN、看门狗定时器WD模块)3、外部信号模块(时钟模块、系统接口模块、JATG/测试模块)。这三组模块通过总线将其连接构成一个完整的DSP控制器。这里值得注意的是:TMS320LF240xA系列DSP控制器分为两组总线(内部总线和外部总线)。上述第一部分模块均挂接在内部总线上;第二部分模块均挂接在外部总线上。第三部分是与外部信号连接控制系统运行的模块。2.1CPU总线结构与流水线作业的特点2.1.1、总线结构TMS320LF240xA控制器对数据的处理速度快、效率高与其内部总线结构有着密切的关系。它们均采用的是改进的哈佛总线结构,具有两套相互独立的程序操作总线和数据操作总线,共由6组16位的内部地址和数据总线组成。其结构如图2.1所示。哈佛结构哈佛结构是不同于传统的冯·诺曼(VonNeuman)结构的并行体系结构,其主要特点:(1)将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。(2)与两个存储器相对应的是系统中设置了程序总线和数据总线两条总线,从而使数据的吞吐率提高了一倍。冯·诺曼结构则是将指令、数据、地址存储在同一存储器中,统一编址,依靠指令计数器提供的地址来区分是指令、数据还是地址。取指令和取数据都访问同一存储器,数据吞吐率低。2.1.1、总线结构哈佛结构:程序存储器与数据存储器分离的体系结构称为哈佛结构。特点:计算机具有独立的数据存储空间和程序存储空间。独立的数据总线和程序总线使得程序存储器和数据存储器单独编址、独立访问。优点:允许CPU同时执行取指令和取数据操作,从而提高了数据吞吐率。增强型哈佛结构:(1)允许数据存放在程序存储器中,并被算术运算指令直接使用;(2)指令存储在高速缓冲器(Cache)中,当执行此指令时,不需要再从存储器中读取指令。一种多总线结构,可以实现对多个数据存储器的访问操作,允许在一个存储周期内同时读取指令和两个操作数。Flash/ROMSARAMB0DARAMB1,B2DARAM存储器映射寄存器PAB外部地址总线外部数据总线PAB中央处理器(CPU)片上外设外部信号DRABDWABPRDBDRDBDWDB控制总线图2.1总线结构框图2.1.1、总线结构①PAB:程序地址总线,提供程序存储器的读/写地址;②PRDB:程序读数据总线,将指令代码、立即操作数以及表信息从程序存储器送到CPU;③DWAB:数据写地址总线,提供写数据存储器的地址;④DRAB:数据读地址总线,提供读数据存储器的地址;⑤DRDB:数据读数据总线,将数据存储器中的数据送到中央算术逻辑单元和辅助寄存器算术单元。⑥DWDB:数据写数据总线,发送数据到程序存储器和数据存储器。2.1.1、总线结构总线结构的优点:(1)分离的程序和数据总线,允许CPU同时访问程序指令和数据存储器;(2)有独立的数据读/写地址总线和数据读/写数据总线,使CPU对数据存储器的读、写访问可在同一机器周期内完成;(3)分离的程序和数据空间及独立的总线结构,支持CPU在单机器时钟内并行执行算术、逻辑和位处理操作等;(4)采用改进的哈佛型总线结构,使运行速度得以大幅度提高,处理能力得以优化。2.1.2流水线操作为了进一步提高芯片的性能,TMS320LF240xDSP系列控制器除采用了改进的哈佛总线结构外,还采用了指令流水线操作技术。指令流水线由发生在指令执行期间内的一系列总线操作序列组成。其特点是将指令的执行过程分为4个独立的阶段:(1)取指令(Fetch)(2)指令译码(Decode)(3)取操作数(Operand)(4)指令执行(Execute)2.1.2流水线操作上述4个阶段是相互独立的,所以这些操作同一时间段内可以并行进行,也就是这四种操作在同一时刻是分别使用内部的6条总线。因此,在任何给定的时钟周期内,可以同时有1——4条不同的指令被使能,而每条指令处于不同的执行阶段。图2.3是一个单字、单周期且无等待状态插入指令的操作流水线操作的例子。图2.2四级流水线操作示意图取指译码取操作数执行时钟NN-1N-2N-3N+1NN-1N-2N+2N+1NN-1N+3N+2N+1N2.2、CPU(中央处理器)的结构组成在TMS320LF240xA系列DSP控制器中,中央处理单元(CPU)主要由32位中央算术逻辑单元(CALU)、用于CALU的输入、输出数据比例移位器、32位累加器(ACC)、16×16位乘法器(MPY)、辅助寄存器算术单元、地址产生逻辑、程序控制逻辑和一些状态、配置寄存器组成。CPU的功能模块如图2.4所示2.2.1、系统控制器系统控制器是CPU内核与外部引脚的接口单元,根据输入逻辑信号产生相应的输出逻辑,其中输入信号有时钟信号(XTAL)、复位信号(RS)、运行方式(MP/MC)、等待状态逻辑信号(READY)等,输出信号有读写控制信号(R/W、RD、WE)、特殊引脚控制信号(XF)、存储器空间选择信号(PS、DS、IS)等。其结构如图2.4所示。2.2.2、程序控制系统(地址产生逻辑)程序控制是控制一条或多条指令的执行次序。其结构如图2.4所示。NPAR下一个程序地址寄存器,保存着下一个指令周期要执行的指令所在的程序地址。PAR程序地址寄存器,保存当前程序地址。PC16位程序计数器,保存下一条指令代码所在地址。当程序顺序执行时,PC(NPAR)+1。2.2.2、程序控制系统(地址产生逻辑)MSTACK微堆栈寄存器,堆栈宽度为16位、深度为1级。作用是:在执行某些指令(如BLDD、MAC、MACD、TBLR和TBLW等,详见第四章指令系统)之前,程序地址产生逻辑用它来存储返回地址。MSTACK的操作对用户是不可见的。与堆栈不同,MSTACK只能被用于程序地址产生逻辑,而不允许用户把MSTACK用于存储指令。PCTRL程序控制器,用于对指令进行译码、管理流水线和存储状态位。2.2.3、输入定标移位器算术运算中的数据定标和逻辑运算中的位屏蔽等操作都需要进行数据位数的调整。这些都可以通过数据定标移位器来完成。一个32位输入数据定标移位器(简称为输入移位器)的结构如图2.6所示。输入移位定标器的主要功能是对来自数据存储器或程序存储器的16位数值调整成32位数,然后送至32位的中央算术逻辑单元(CALU)。尽管输入移位器是数据存储空间或程序存储空间与CALU间数据通路的一部分,但数据在输入移位器中处理时并不需要额外的时间开销。2.2.3、输入定标移位器MUX3116150输入移位器(32位)来自程序存储器(PRDB)来自数据存储器(DRDB)输入定标部分送至CALU图2.6输入定标移位器结构图161616322.2.1、输入定标移位器从图2.6中可以看出,输入移位器具有两个数据源。1、通过DRDB(数据读总线)可输入由指令操作数所指出的数据存储器单元中的数值;2、通过PRDB(程序读总线)输入来自指令中给出的立即数。当数据写到输入移位器的低16位后,输入移位器执行由程序指令指定的左移位操作,对该数值进行调整,然后将调整结果送至CALU的32位输入总线。2.2.3、输入定标移位器输入移位器移位的位数也有两个来源:(1)在所执行的指令中给定移位常数;(2)在临时寄存器(TREG)的低4位给移位常数。2.2.3、输入定标移位器输入移位器将输入的16位值左移0~16位。当移位操作的具体执行时,左移的位数由用户程序指令字中设置或临时寄存器(TREG)最低4位的值决定。移位器未使用的低位(LSBs)段自动填0;而未用到的高位(MSBs)或填0或进行符号扩展,具体操作取决于状态寄存器(ST1)中的符号扩展方式位(SXM)的值。对于大多数指令而言,符号扩展方式位(SXM,状态寄存器ST1的第10位)决定了输入移位器在移位期间是否对数据进行符号扩展。(1)当SXM=0时,不进行符号扩展,输入移位器未使用的高位填0,然后送至32位的CALU输入总线:(2)当SXM=1时,输入移位器对数据进行符号扩展,然后送至32位的CALU输入总线。符号扩展将低位数的二进制数转换成高位数的转换过程称为符号扩展(Signextension)。例:-648位二进制补码:11000000,16位二进制补码:11111111110000带符号数变换时是将其取补加1就是负数结果。2.2.3、输入定标移位器图2.7分别给出了当SXM=0和SXM=1时输入移位器对输入数据AF11执行移位操作的例子。例设累加器ACC原始值为3h,状态寄存器ST1中的符号扩展方式位SXM=0;试问执行指令ADD#1212h,1后累加器ACC的值是多少?(指令中的1便是移位的位数)答:因为指令要求将立即数1212h左移1位(1212h×21)再和ACC中的内容相加。所以3h2427h0X指令执行前指令执行后ACCCC图2.7输入定标移位器操作举例AF11XXXX输入移位器接收值左移8位输出值(SXM=0)00AF1100AF111632AF11XXXXAF11左移8位输出值(SXM=1)FFAF11001632输入移位器接收值2.2.4、乘法单元(MUL)数字信号处理方面的算法主要由乘加运算构成。在常用的微处理器芯片中,一般采用软件子程序来实现乘法运算,因而限制了该类芯片在实时信号处理中的应用。x24x系列DSP控制器将DSP内核与实现控制功能的外设集成于单一芯片中,在实现控制功能的同时,利用DSP内核中的16位×16位乘法单元,可高速执行乘法运算,在单机器周期内产生带符号或无符号的32位乘积。乘积单元的结构如图2.5所示,主要包括以下部件:(1)16位临时寄存器(TREG),用于保存一个乘数。(2)16位×16位的硬件乘法器(Multiplier),执行乘法运算。(3)32位乘积寄存器(PREG),存储乘法运算的结果。(4)乘积定标移位器,在PREG的值送至CALU之前,对乘法运算的结果进行移位操作。2.2.4、乘法单元16位×16位的硬件乘法器可以在单机器周期内产生带符号或无符号的32位乘积结果。在硬件乘法器中,除了执行由无符号乘法指令(MPYU)所调用的无符号乘法操作外,其它乘法指令都执行的是带符号的乘法操作,进行运算的两个16位数都被看作具有二进制补码格式。2.2.4、乘法单元硬件乘法器的两个16位输入分别来自:(1)16位暂时寄存器(TREG)。在执行乘法运算以前,TREG从数据读总线(DRDB)装入一个数据值作为乘数之一。(2)来自数据读总线(DRDB)的数据存储器值或来自程序读总线(PRDB)的程序存储器值。两个输入值相乘后,32位乘积被暂时存放在乘积寄存器(PREG)中。PREG的输出连至32位乘积定标移位器,执行定标移位操作以后,乘积被送往CALU进行再运算或通过SPH或SPL指令(存储乘积的高16位或低16位)送往数据存储器进行保存。32位的乘积定标移位器(乘积移位器)简化了乘积的定标操作。乘积移位器共有4种乘积移位方式,如表2.1所示。PM移位方式说明00无移位乘积送往CALU或数据写总线(DWEB)前,不进行移位操作01左移1位将二进制补码乘积中多余的1位符号位去掉