版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章TMS320‘C2000DSP的硬件结构
2.1TMS320‘C2000的总线结构2.2TMS320‘C2000的CPU结构2.3TMS320‘C2000的存储器与I/O空间2.4TMS320‘C2000的程序控制2.5TMS320‘C20x的片内外设2.6TMS320‘C24xx的功能结构2.7小结
TMS320‘C2000系列芯片是16位定点DSP芯片,属于第二代定点DSP的衍生代产品,具有优化的内部结构、更快的速度、更多的片内资源及更小的体积和功耗,适合数字采集、快速控制、音频等多种应用。
TMS320C'2000DSP的体系结构采用改进型哈佛结构,其程序存储器和数据存储器分别独立且有各自的总线结构。TMS320'C2000系列芯片有3个主要的组成部分,即中央处理单元(CPU)、片内存储器和片内外设。图2.1为TMS320'C2000的内部结构框图,图中清晰地表明了CPU的结构及CPU各部件之间的关系。所有的TMS320'C2000系列器件都采用同样的中央处理单元、总线结构和指令集,不同的器件则具有不同的片内存储器配置和片内外设。图2.1TMS320'C2000的内部结构框图
2.1TMS320‘C2000的总线结构
6条各自独立的16位总线的总线结构赋予TMS320’C2000DSP强大的内部数据通信功能,使数据在各部件间交换顺畅,并可在同一时钟周期内并发使用,从而得到优越的性能。图2.2给出了TMS320‘C2000DSP总线结构框图,TMS320’C2000内部正是围绕着这6条16位总线构造的,分别介绍如下:
(1) PAB(ProgramAddr.Bus):程序地址总线,提供读/写程序存储器的地址。
(2) DRAB(Data-ReadAddr.Bus):数据读地址总线,提供读数据存储器的地址。
(3) DWAB(Data-WriteAddr.Bus):数据写地址总线,提供写数据存储器的地址。
(4) PRDB(ProgramReadBus):程序读总线,承载指令码,传送立即操作数及表信息,实现从程序存储器到CPU的传输。图2.2TMS320'C2000总线结构框图
(5) DRDB(DataReadBus):数据读总线,提供数据传送通道,把源操作数从数据存储器或程序存储器传送(读入)到CPU(如中央算术逻辑单元CALU、硬件乘法器和辅助寄存器算术单元ARAU等)中。
(6) DWEB(DataWriteBus):数据写总线,提供数据传送通道,把目标操作数(或运算结果)从CPU(如中央算术逻辑单元CALU、硬件乘法器和辅助寄存器算术单元ARAU等)传送(写出)到数据存储器或程序存储器中。
TMS320‘C2000总线结构特点如下:
(1)采用各自独立的数据地址总线分别用于读数据(DRAB)和写数据(DWAB),因此,CPU的读和写可在一个周期内进行。
(2)独立的程序空间和数据空间允许CPU同时访问程序指令和数据。
由以上的总线结构特点可以看出:读程序、读数据和写数据分别采用各自分开的地址总线及数据传送总线,将取指、读数据、写数据分成3个不同的空间,这样在1个时钟周期内可进行访问指令代码、读数据、保存运算结果3种不同的操作,前提是程序代码和读/写片内数据存储器不在同一区块上,而程序置于片外也无妨。又因为ARAU与CPU的其它运算部件可并行运作,所以在同一周期内将产生出新的地址。这种并行机制可以支持在单个机器周期内完成一组算术、逻辑、位操作运算。例如,单周期乘累加指令(如MPYA)在1个周期里完成操作数(乘数)的读入、与被乘数(T寄存器值)的乘积、前次乘积与累加器值的累加、下次操作数地址的变更、后面指令代码的读入等多个操作,而在重复执行的MACD指令里还要做一次当前操作数向高存储单元移位的操作。这种并行操作既离不开硬件乘法器和中央算术逻辑单元,又依赖于多总线结构。
在这里需要指出的是,由于TMS320'C2000具有丰富的片内存储资源,为了减少其外部引脚和减小体积,将3套内部总线合并为1套外部扩展总线,分离的程序和数据空间在外存储器中通过1套地址/数据总线分时复用,因此,同时使用外部扩展程序/数据存储器会降低TMS320'C2000DSP的性能。
2.2TMS320‘C2000的CPU结构
CPU部分是DSP的核心,是整个芯片的指挥部件。所有的TMS320’C2000系列DSP都具有相同的CPU结构。TMS320‘C2000DSP的CPU主要包括以下几个部分:
(1) 32位中央算术逻辑单元CALU;
(2) 32位累加器ACC;
(3)用于CALU的输入与输出数据定标移位器;
(4) 16位×16位硬件乘法器MUL;
(5)乘积比例移位器;
(6)数据地址产生逻辑,含8个辅助寄存器和1个辅助寄存器算术单元ARAU;
(7)程序地址产生逻辑。
TMS320'C2000CPU的运算部件结构如图2.3所示。显然,该CPU运算部件包括以下3个主要部件:输入定标部分、乘法部分和中央算术逻辑部分。CPU的运算部件是DSP最核心的部分,我们将对DSP的运算部件进行详细介绍。数据地址发生器在CPU中是一个重要而较为独立的单元部件,有必要专门作为一个小节讨论;同样,程序地址产生逻辑也将作为一个专门的部分,在程序控制一节讲述。而CPU中的状态寄存器ST0和ST1除提供运算的标志位外,还提供对整个DSP的工作模式、直接寻址等的控制,因此这部分也单列出来分析。图2.3TMS320'C2000CPU的运算部件2.2.1输入定标部分
32位输入数据定标移位器(ISCALE)的功能是把来自存储器的16位数据左移0~16位变成32位送往中央算术逻辑单元(CALU),以与32位的CALU对齐。为了进行数据的比例运算和逻辑操作,这种对齐是必要的。作为程序或数据空间与CALU之间数据通路的一部分,输入数据定标移位器的操作无需额外的时钟周期开销。图2.4示出了输入数据定标移位器的输入、输出和移位计数的关系。图2.4输入数据定标移位器的输入、输出和移位计数的关系输入数据定标移位器(输入移位器)的16位输入来自于复工器MUX,而MUX根据指令代码可选择两种来源的输入:
(1)数据读总线(DRDB),该输入值来自于存放指令操作数的数据存储器。
(2)程序读总线(PRDB),该输入值为指令操作数给出的常数值。
输入数据定标移位器的输出则是经移位后的32位输出,和CALU已经对齐,作为CALU运算的一个输入量。移位方式如下:
(1)均进行左移:左移时,没有使用的低位LSB以0填充,而没有用到的高位MSB则根据状态寄存器ST1中的符号扩展模式位(SXM)的设置情况决定填入0还是进行符号扩展。当SXM = 0时,不做符号扩展,此时未用到的高位(MSB)填入0;当SXM = 1时,做符号扩展,此时将输入数据的符号位(最高位)扩展到未用到的高位(MSB)上。这两种情况下的移位操作分别如图2.5和图2.6所示。图2.5SXM = 0时输入数据定标移位器的操作图2.6SXM = 1时输入数据定标移位器的操作
(2)移位次数确定:该输入移位器可做0~16位的左移操作,次数N可在指令中以常数的方式确定,也可以由T寄存器的低4位给出。而后者,由于T寄存器的值随时可以修改(动态确定),因此更能满足系统的性能要求。2.2.2乘法部分
借助于16位×16位的硬件乘法器,TMS320‘C2000系列DSP可以在一个周期内完成带符号数或无符号数的2的补码的乘法运算。图2.7给出了乘法部件的示意图。可见,硬件乘法器包括4个部件,即T寄存器(TREG)、乘法器、P寄存器(PREG)和乘积移位器(ProductShifter)。图2.7TMS320'C2000CPU的乘法部件
(1) T寄存器(TREG):16位的暂存寄存器,用来保存乘法运算中的其中一个乘数。此外,它也可作为输入移位器的移位次数。T寄存器可直接加载。
(2)乘法器:16位×16位,结果为32位,单周期完成。其中,一个16位输入值为T寄存器内容,T寄存器在乘法实现之前预先加载。另一个16位输入值为来自于数据存储器的直接/间接寻址的操作数,或来自于程序存储器的立即操作数。乘积结果送到32位P寄存器中。
(3)P寄存器(PREG):32位的乘积寄存器,用来保存32位乘积结果,也可预先加载而提供乘累加指令的初值,这样就可避免由于初值的不确定而出现的混乱。输出时其值被复制到乘积移位器。
(4)乘积移位器(ProductShifter):通过乘积移位器对32位乘积结果先进行定标移位,然后再将全部的32位送进CALU去累加,或经指令SPH(或SPL)将乘积移位器的高位字或低位字分别保存到数据存储器中。乘积移位器有4种移位模式,由状态寄存器ST1中的乘积移位模式位(PM)的设置情况决定,如表2.1所示。
利用乘法器、TREG和PREG,TMS320'C2000可高效地实现基本的DSP运算,如卷积、相关和滤波等。每条乘法指令有效的执行时间短至一个CPU周期。
表2.1乘积移位器的移位模式注:Q31格式是一种二进制小数格式,该格式是在二进制小数点的后面有31位二进制数。2.2.3中央算术逻辑部分
中央算术逻辑部分为CPU中使用次数最多的运算部件,包括中央算术逻辑单元(CALU)、累加器(ACC)和输出移位器(OutputShifter)3个部分。图2.8为中央算术逻辑部分示意图。图2.8TMS320'C2000CPU的中央算术逻辑部分
1.中央算术逻辑单元(CALU)
CALU的功能是完成各种算术运算和逻辑操作,包括16位加法运算、16位减法运算、布尔逻辑操作、位操作(位测试、移位和循环移位,其中移位和循环移位由ACC完成)。这些操作大多数可在单周期内完成。
CALU的输入为ACC和一个操作数,该操作数可来自于输入移位器(InputShifter)或乘积移位器(ProductShifter),由不同的指令来选取。
CALU的输出直接送ACC,再通过输出移位器送数据存储器保存。
CALU中的大多运算受符号扩展模式位SXM的影响,当SXM = 0时,进行无符号数运算操作;当SXM = 1时,进行有符号数运算操作,要做符号扩展。
2.累加器(ACC)
累加器ACC的功能是存储CALU的操作结果,它可分为高16位部分(ACCH)和低16位部分(ACCL)。在ACC中可完成移位和循环移位(包含进位位)的位操作,以实现数据的定标或逻辑位的测试控制。与ACC关联的状态位有以下4个:
(1)进位位(C):当CALU进行加法或减法运算时,若相加不产生进位或相减产生借位,则C被复位(C = 0)(例外:高16位加指令若相加不产生进位,则不影响C);若相加产生进位或相减不产生借位,则C被置位(C = 1)(例外:高16位减指令若相减不产生借位,则不影响C)。另外,ACC做位操作时,左移或循环左移,ACC的最高位进入C,且循环左移时C进入ACC的最低位;右移或循环右移,ACC的最低位进入C,且循环右移时C进入ACC的最高位。
(2)溢出模式位(OVM):决定ACC进行运算时产生溢出的方式。当OVM = 0时,正常溢出;当OVM = 1时,极值溢出(正溢出为7FFFFFFFh;负溢出为80000000h)。
(3)溢出标志位(OV):运算时若累加器不产生溢出,则清零(OV = 0);若产生溢出(不管是正溢出还是负溢出),则置位(OV = 1)。
(4)测试/控制标志位(TC):根据测试指令及被测位的值设置TC为0或1。
3.输出移位器(OutputShifter)
输出移位器(或称为输出数据定标移位器)的32位输入接累加器的32位输出,而其16位输出接到写数据总线。该输出移位器的功能是首先拷贝累加器的32位值,然后对其左移,移位时高位丢弃,低位补0。具体移位数由指令指定,可移动0~7位。最后将移位器中的高位字或低位字保存到数据存储器中(用SACH指令可保存ACC高位字,用SACL指令可保存ACC低位字),而累加器的内容保持为移位前的值不变。图2.9和图2.10分别表示了这两种关系。移位不单独占用周期。图2.9移位并保存ACC高位字图2.10移位并保存ACC低位字2.2.4辅助寄存器算术单元(ARAU)和辅助寄存器
CPU还有一个与中央算术逻辑单元(CALU)无关的算术单元,这就是辅助寄存器算术单元(ARAU)。ARAU的主要功能是对8个16位辅助寄存器(AR7~AR0)执行算术运算,该操作可与CALU中的操作并行进行。图2.11提供了ARAU及相关逻辑的结构示意图。图2.11TMS320'C2000CPU的ARAU及相关逻辑的结构示意图
8个辅助寄存器(AR7~AR0)提供了灵活而有效的间接寻址(后续章节将专门讨论),此时ARAU可用来产生数据存储器地址。通过辅助寄存器中的16位地址可以访问64KW数据存储器地址空间的任意单元。
状态寄存器中有两个专用的3位(bit15~bit13),分别用做辅助寄存器指针(ARP)和辅助寄存器指针缓冲器(ARB)。ARP用于选择8个辅助寄存器中的其中一个,ARP = 0时选择AR0,ARP = 1时选择AR1,…,ARP = 7时选择AR7。被ARP选中的辅助寄存器称为当前辅助寄存器。ARP可通过指令直接加载或修改,也可通过间接寻址的辅助操作来修改或加载。ARB为ARP的缓冲寄存器,它总是复制当前ARP的值,其用途主要是避免状态寄存器进、出软堆栈时破坏ARP。
ARAU的输出有3条通道。当处理一条指令时,当前AR的内容用做访问数据存储器的地址。如果是读数据指令,ARAU就把该地址送到数据读地址总线(DRAB);如果是写数据指令,ARAU就把该地址送到数据写地址总线(DWAB)。指令执行完后,当前AR的内容通过ARAU进行无符号的算术运算,从而被更新。当需保存某个辅助寄存器(ARx)的值时,便接通数据写总线(DWEB)。
ARAU对ARx进行运算以产生指令所要求的地址,其运算包括以下几种情况:
(1)对辅助寄存器线性增量或减量:+/-1或+/-AR0;
(2)对辅助寄存器加一个常数或减去一个常数,该常数为8位常数;
(3)把AR0的内容与当前AR的内容进行比较(CMPR指令),结果影响TC标志(通过DWEB修改状态寄存器ST1中的TC位)。通常ARAU在流水线的译码阶段(指定操作的指令正在被译码时)进行它的算术运算,这就能在下条指令译码之前产生地址。有一例外情况,就是在处理NORM指令时,在流水线的执行阶段修改辅助寄存器和/或ARP。
辅助寄存器除用来产生数据存储器地址外,还有其它用途。例如:①通过CMPR指令,使辅助寄存器支持条件分支、调用和返回,即上面的(3)运算;②当做通用寄存器或软件计数器使用。2.2.5状态寄存器ST0与ST1
两个16位的状态寄存器ST0、ST1是用来表明操作的当前状态和操作控制的。它们既可保存在数据存储器中,也可由数据存储器来加载。因此可用指令对这两个寄存器进行读和写,从而可保存或恢复子程序的操作/执行状态。
用LST(加载状态寄存器)指令可对ST0和ST1进行写(INTM位除外,它不受LST的影响),而用SST(保存状态寄存器)指令可对ST0和ST1进行读并保存。可用SETC或CLRC指令对ST1、ST2中的某些位单独置位或清零。例如,可用SETCSXM指令将符号扩展模式置1,用CLRCSXM将其清0,而其它位不受影响。图2.12和图2.13分别给出了状态寄存器ST0、 ST1各位的定义。其中有些位是保留的(阴影部分),读出时为1,写入时不受影响。R表示可读,W表示可写,-x表示不受复位影响,-0表示复位时清零,-1表示复位时置位。图2.12状态寄存器ST0各位的定义图2.13状态寄存器ST1各位的定义
1.状态寄存器ST0
状态寄存器ST0各位的功能介绍如下:
● D15~D13
ARP——辅助寄存器指针(AuxiliaryRegisterPointer)。在间接寻址模式中该位用于选择当前使用的辅助寄存器AR0~AR7。使用MAR指令、LST指令和间接寻址访问存储器指令可以加载ARP。当ARP被装载时,先前的ARP值被复制到ARB缓冲器中(LST指令除外)。
● D12
OV——溢出标志位(OverflowFlagBit)。OV=1,表示CALU运算发生了溢出。溢出时,OV位保持置位状态,直到被复位指令、条件转移指令或LST指令清0。● D11
OVM——溢出模式位(OverflowModeBit)。OVM决定当CALU发生溢出时的处理方式。当累加器处于溢出方式(OVM = 1)且发生溢出时,产生下面两种情况:
(1)溢出方向为正(正向溢出),累加器被最大正数(7FFFFFFFh)填充。
(2)溢出方向为负(负向溢出),累加器被最小负数(80000000h)填充。
当OVM=0时,按正常情况处理累加器,用SETCOVM或CLRCOVM指令可将该位置1或清0,LST指令可修改OVM。● D9
INTM——中断模式位(InterruptModeBit)。该位用来允许或禁止所有的可屏蔽中断。INTM = 0,使能所有可屏蔽中断;INTM = 1,禁止所有可屏蔽中断。
用SETCINTM或CLRCINTM指令可对该位置1或清0; LST指令不能影响INTM位;INTM不影响不可屏蔽中断、复位以及软件启动的中断;发生中断(TRAP指令除外)及复位时INTM置1。
● D8~D0
DP——数据存储器页指针(DataPagePointer)。当一条指令采用直接寻址方式时,这个9位的DP字段与指令中的低7位拼接起来形成数据存储器的16位地址。
2.状态寄存器ST1
状态寄存器ST1各位的功能介绍如下:
● D15~D13
ARB——辅助寄存器指针缓存器(AuxiliaryRegisterPointerBuffer)。除LST指令外,每当加载辅助寄存器指针(ARP)时,ARP原来的值就拷贝到ARB。当用LST指令加载ARB时,同样的值也拷贝到ARP。
● D12
CNF——片内DARAM配置位(On-chipDARAMConfigurationBit)。该位决定可配置的双访问RAM(B0)块映射到数据空间(CNF = 0)还是映射到程序空间(CNF = 1)。SETCCNF或CLRCCNF可对该位置1或清0,复位时CNF = 0。● D11
TC——测试/控制标志位(Test/ControlFlagBit)。TC在以下情况下置1:由BIT或BITT测试的位是1时置1;被CMPR测试的当前辅助寄存器和AR0之间的比较条件成立时置1;用NORM指令测试时,累加器最高两位异或结果为1(相异)时置1。LST指令可改变TC值。
● D10
SXM——符号扩展模式位(InterruptModeBit)。若SXM = 0,禁止符号扩展;若SXM = 1,则移位时进行符号扩展。某些指令不受SXM的控制,例如ADDS指令,不管SXM如何,都禁止符号扩展。SETCSXM或CLRCSXM指令将该位置1或清0,通过LST指令可对其加载,复位时SXM置1。
● D9
C——进位位(CarryBit)。C = 0时,相减有借位或相加无进位;C = 1时,相加有进位或相减无借位。
累加器的值循环移动:左移时,最高位进入C;右移时,最低位进入C。用SETC、CLRC、LST指令可影响C,复位时C位置1。● D4
XF——XF引脚状态位(XFPinStatusBit)。SETCXF将XF置1,CLRC将XF清0,LST指令可修改XF,复位时XF置1。
● D1~D0
PM——乘积移位模式(ProductShiftMode)。PM决定乘积寄存器(PREG)的值在送往CALU或数据存储器时如何进行移位。移位模式见表2.1。复位时PM置00。2.2.6系统配置寄存器
TMS320‘C20x器件没有系统配置寄存器。TMS320LF/LC240x的系统配置寄存器包括两个系统控制和状态寄存器(SCSR1和SCSR2),这两个寄存器均为存储器映射寄存器,它们分别对TMS320’C240x的系统信号和片内外设模块进行选择配置。
1.系统控制和状态寄存器1(SCSR1)——地址7018h
图2.14为SCSR1各位的定义,其中各符号的意义同图2.12和图2.13,图2.15也是如此。图2.14SCSR1各位的定义
SCSR1各位的功能如下:
● D15
Reserved——保留位。
● D14
CLKSRC——CLKOUT引脚时钟源选择位。CLKSRC为0时,CLKOUT引脚输出CPU时钟;CLKSRC为1时,CLKOUT引脚输出看门狗时钟WDCLK。
● D13~D12
LPM——低功耗模式选择位,指明CPU在执行IDLE指令时芯片进入哪一种低功能模式。LPM1、LPM0的状态及对应的低功耗模式如下:
LPM1LPM0 模式
0 0 IDLE1(LMP0)模式
0 1 IDLE2(LPM1)模式
1 x HALT(LPM2)模式
● D11~D9
CLKPS——PLL时钟预定标选择位,这3位对输入时钟频率fin选择PLL倍频系数,其状态及对应的系统时钟频率如下:
CLKPS2
CLKPS1 CLKPS0 系统时钟频率
0 0
0
4×fin
0 0
1
2×fin
0 1
0
1.33×fin
0 1
1
1×fin
1 0
0
0.8×fin
1 0
1
0.66×fin
1 1
0
0.57×fin
1 1
1
0.5×fin
● D8
Reserved——保留位。● D7
ADCCLKEN——模/数转换(ADC)模块时钟使能控制位。该位为0时,禁止ADC模块的时钟;该位为1时,使能ADC模块的时钟,且正常运行。
● D6
SCICLKEN——串行通信接口(SCI)模块时钟使能控制位。该位为0时,禁止SCI模块的时钟;该位为1时,使能SCI模块的时钟,且正常运行。
● D5
SPICLKEN——串行外设接口(SPI)模块时钟使能控制位。该位为0时,禁止SPI模块的时钟;该位为1时,使能SPI模块的时钟,且正常运行。● D4
CANCLKEN——控制器局域网(CAN)模块时钟使能控制位。该位为0时,禁止CAN模块的时钟;该位为1时,使能CAN模块的时钟,且正常运行。
● D3
EVBCLKEN——事件管理器B(EVB)模块时钟使能控制位。该位为0时,禁止EVB模块的时钟;该位为1时,使能EVB模块的时钟,且正常运行。
● D2
EVACLKEN——事件管理器A(EVA)模块时钟使能控制位。该位为0时,禁止EVA模块的时钟;该位为1时,使能EVA模块的时钟,且正常运行。● D1
Reserved——保留位。
● D0
ILLADR——无效地址检测位。当检测到一个无效地址时,该位被置1。被置1后该位需要通过用户软件清0。向该位写1可将其清0。在初始化程序中应将该位清0。检测到一个非法地址时将会产生一个不可屏蔽中断(NMI)。
2.系统控制和状态寄存器2(SCSR2)——地址7019h
图2.15为SCSR2各位的定义。
SCSR2各位的功能如下:
● D15~D7
Reserved——保留位。图2.15SCSR2各位的定义● D6
I/PQUAL——输入时钟限定器,用来限定输入到CAP1~6、XINT1~2、ADCSOC及PDPINTA/B引脚上的信号被正确锁存需要的最小脉冲宽度,引脚内部的输入状态只有在脉冲达到这个宽度之后才改变。当这些引脚作为I/O功能使用时,该位无效。
D6 输入时钟限定
0至少5个时钟周期
1至少11个时钟周期
该位仅针对240xA器件,不针对240x器件。● D5
WDOVERRIDE——WD保护位。复位后为1,向该位写1可将其清0。但不能通过软件使该位为1。该位用来控制是否允许用户用软件禁止WD工作(将程序监视控制器寄存器WDCR中的WDDIS位置1)。当该位为0时,用户不能通过软件来禁止WD;当该位为1时,复位值,用户可以通过软件来禁止WD工作。
● D4
XMIFHi-Z——外部存储器接口信号(XMIF)高阻控制位。当该位为0时,所有XMIF信号为正常驱动模式;当该位为1时,所有XMIF信号为高阻态。● D3
引导ROM使能位。该位反映了/XF引脚在复位时的状态,该位可被软件改变。当该位为0时,使能引导ROM,地址空间0000h~00FFh被片内引导ROM块占用。该方式禁止使用Flash存储器。当该位为1时,禁止引导ROM,对TMS320LF2407A和TMS320LF2406A片内Flash程序存储器映射地址范围为0000h~7FFFh,对TMS320LF2402A地址范围为0000h~1FFFh。● D2
微处理器/微控制器选择位。该位反映了器件复位时引脚上的状态。复位之后,可通过软件来改变这一位以控制存储器映射到片内或片外。当该位为0时,器件设置为微控制器方式,程序地址0000h~7FFFh被映射到片内(即Flash);当该位为1时,器件设置为微处理器方式,程序地址0000h~7FFFh被映射到片外(用户需提供外部存储器)。
● D1~D0
DONPON——程序/数据空间选择位。 DON
PON SARAM状态
0 0 地址空间不被映射,该空间被分
配到外部存储器
0 1 SARAM被映射到片内程序空间
1 0 SARAM被映射到片内数据空间
1 1 SARAM既被映射到片内程序空
间又被映射到片内数据空间
2.3TMS320‘C2000的存储器与I/O空间
TMS320'C2000DSP的存储器结构基于改进型哈佛结构,采用独立的程序存储器、数据存储器和I/O空间,即它们可以有相同的地址,而它们的访问通过控制线来区分。除此之外,数据存储器还分为局部数据存储器和全局数据存储器,这二者也可共用相同的地址空间,它们的访问除了通过不同的控制线来区分以外,还受全局存储器分配寄存器(GREG)的控制。程序、数据、I/O这三个存储空间可以通过三组16位并行地址总线(PAB、DRAB、DWAB)来访问。其中的任意一组可访问不同的空间,以实现不同的器件操作。由于总线工作是分离的,因此可以同时访问程序和数据空间。在一个给定的机器周期内,CALU可以执行多达3次的并行存储器操作。由此可以看出,TMS320‘C2000的224KW寻址空间分为以下四种可独立选择的空间:
(1) 64KW的程序存储器空间,存放要执行的指令及程序执行时使用的数据。
(2) 64KW的局部数据存储器空间,存放指令使用的数据。
(3) 32KW的全局数据存储器空间(通过扩展得到),存放与其它处理器共用的数据,或者作为一个附加的数据空间。局部数据空间中的高32KW地址(8000h~FFFFh)可作为全局数据空间。局部数据存储器和全局数据存储器可以是两个不同的物理存储器,通过修改GREG的内容来控制当前使用何种数据存储器。
(4) 64KW的I/O访问空间,用于与外部的设备接口和寻址片内外设寄存器。
上述224KW寻址空间包括一定数量的片内存储器、外部存储器和I/O设备,而其物理存储器类型又可以是RAM、ROM、Flash等。事实上,由于芯片中有些空间作为专用空间,而有些空间则保留以备日后升级用,例如程序空间中中断向量表要占用部分存储空间,数据空间中有专用的内存映射寄存器和保留段,而I/O空间中有专用的I/O空间映射寄存器和保留段,因此实际可用地址空间不足224KW。2.3.1与外部存储器和I/O空间接口的信号
表2.2给出了与外部存储器和I/O空间接口的信号。微处理器/微计算机选择信号决定工作模式。当使用外部程序存储空间时,DSP可工作在两种模式下:高电平为微处理器模式,此时内部程序ROM/Flash不可用;低电平为微计算机模式,内外存储器共用程序存储空间。当只使用内部存储空间时,DSP工作在微计算机模式,此时应置为低电平。I/O操作与此信号无关。表2.2与外部存储器和I/O空间接口的信号注:表中电特性一栏中,“I”表示输入,“O”表示输出,“Z”表示高阻Hiz。不管使用何种工作模式,当CPU使用内部资源时,相应的对外控制信号会变为高阻。例如使用内部程序存储器时,地址总线A15~A0、数据总线D15~D0变为高阻Hiz,程序选通信号、选通指示信号变为无效(高电平状态);使用内部数据存储器时,地址总线A15~A0、数据总线D15~D0变为高阻Hiz,数据选通信号、选通指示信号
变为无效(高电平状态);使用内部I/O映射寄存器时,地址总线A15~A0、数据总线D15~D0变为高阻Hiz,I/O选通信号、选通指示信号变为无效(高电平状态)。
另外,当输入信号被激活(为低有效)时,地址总线、数据总线以及相应的控制信号全部变为高阻。当只使用外部局部数据存储器时,可不需信号;当使用局部和全局数据存储器时,必须使用信号来区分二者。为高时为局部数据存储器,为低时则为全局数据存储器。
是为与早期产品兼容而设计的,纯粹是选通指示信号,在硬件电路中可不用。
读写选择信号也是冗余信号,但可作为外接双向缓冲器的方向选择信号使用。
就绪信号READY为外部硬件等待状态发生之用。除非等待时间很长,否则一般只使用内部等待状态发生器,此时,应将READY拉高,上拉可用10~100kΩ的电阻实现。2.3.2存储器的类型
所有的TMS320'C2000器件都包括288W的双访问数据RAM(DARAM)和256W的数据/程序DARAM。随着具体型号的不同,TMS320'C2000器件可能具有数据/程序单访问RAM(SARAM)、只读存储器(ROM)或者闪烁存储器(Flash)。
TMS320'C2000还具有映射在数据存储器空间的CPU寄存器和映射在片内I/O空间的外设寄存器。
1.片内双访问RAM(DARAM)
DARAM是每个机器周期可被访问两次的存储器。所有的TMS320'C2000器件都具有544W的片内DARAM,544W的DARAM被分成B0[256W]、B1[256W]和B2[32W]3块,它们主要被配置成数据存储器(可双访问操作)。但在需要时也可将B0配置成程序存储器(B1、B2块不行,它们只能用做数据空间)。B0块是配置成程序存储空间还是数据存储空间,要根据状态寄存器ST1的CNF位的值判断决定。由于DARAM可以在一个周期内访问两次,因而改善了CPU的速度。该CPU运行于4周期流水方式。在这种流水方式下,CPU在第3个周期读数据,在第4个周期写数据。然而,DARAM允许CPU在一个周期内读写数据,CPU在该周期的主(正)相内向DARAM写数据,而在从(负)相内从DARAM读数据。例如,设有两条指令A和B,指令A在CPU周期的主相内将累加器的值存入DARAM中,指令B在从相内从DARAM中将一个新的值装入累加器。因为双访问的操作包括写,所以它只能是RAM,而不能是ROM。
2.片内单访问程序/数据RAM(SARAM)
一个时钟周期只能访问一次的存储器称为单访问存储器(SARAM),如TMS320C206和TMS320F206等型号的DSP器件中具有4KW的SARAM。这些SARAM可以被用做程序存储器或/和数据存储器,通过I/O映射寄存器PMST的DON和PON两位来选定,DON和PON为非互斥关系。加载到SARAM中的程序代码可以全速执行。当DON被置成1时,SARAM被用做数据存储器,要占用从800h开始的一段数据存储器空间;当DON被置成0时,SARAM不被用做数据存储器,不占用数据存储器空间(留作外部数据存储器扩展用)。PON的情形类似,但地址是从8000h开始的。可见,SARAM可单独用做数据存储器(DON = 1,PON = 0),或单独用做程序存储器(DON = 0,PON = 1),或既用做数据存储器,又用做程序存储器(DON = 1,PON = 1),或废弃不用(DON = 0,PON = 0)。SARAM既用做数据存储器又用做程序存储器时,映射到数据存储空间的地址(从800h开始)和映射到程序存储空间的地址(从8000h开始)是不同的。虽然具有双倍地址空间,但由于SARAM的物理存储器只有一个,因此实际应用中应该按SARAM的物理空间分开使用,如4KW的SARAM,程序存储器用8000h~0fffh空间,而数据存储器可用1000h~17ffh空间。
3.工厂掩模的片内ROM
TMS320‘C2000器件中有些片种具有片内掩模型ROM来作为程序存储器,例如TMS320C204和TMS320C209配置4KWROM,TMS320C206则配置32KWROM等。复位(reset)时驱动引脚为低,即可选中该ROM。若不选该ROM,器件将从片外存储器开始启动执行。如果用户希望使用自己的ROM,则可以按目标文件(.obj)格式提供希望装入ROM的代码或数据(表格),TI公司将产生相应的掩膜来对该ROM编程。
4.闪烁存储器Flash
TMS320‘C2000器件中一些片种具有片内Flash,它是电可擦除、可编程、非易失性(可长久保存)的存储器。每块Flash都有一组控制寄存器,用来擦除、编程和测试该Flash块。这些Flash块可以通过在复位期间驱动引脚为低来选择。若不选Flash,器件将从片外的存储器开始执行。
有的器件片内Flash带有加密位,如TMS320LF/LC240XA系列就带有加密位。2.3.3程序存储器
程序存储器空间用于存放应用程序的代码、数据表信息及常量。TMS320'C2000程序存储器空间的寻址范围为216 = 64 KW,可对片内存储器或片外存储器寻址。每个TMS320'C2000器件都有片内DARAM块B0,B0可配置为程序存储器和数据存储器,片内其它程序存储器可能是SARAM、ROM或Flash。TMS320'C2000程序存储器地址空间的具体分布依型号的不同有所差异,主要表现在ROM/Flash的使用及其容量的大小上。为了便于说明,本节以最常用的TMS320F206DSP为例加以介绍,TMS320F206的程序存储器空间的分布如图2.16所示。图2.16TMS320F206的程序存储器空间分布
64KW的程序存储器空间被分为两大部分,32KW为片内Flash,另外32KW为片外存储器。片内Flash的0000h~003fh空间用于存放中断向量(InterruptVectors),其它部分(0040h~7fffh)则是存放程序代码和数据表。对绝大多数应用系统来说,这些程序存储器已经足够,不必另加外部扩展。8000h~0ffffh的另外32KW为片外存储器空间,当PON = 1时,片内的SARAM被映射到程序存储器空间的8000h~8fffh区段,这时片外程序存储器空间的8000h~8fffh区段不能使用(不被选中);当CNF = 1时,片内DARAM中的B0块被映射到程序存储器空间的0ff00h~0ffffh区段,这时片外程序存储器空间的0ff00h~0ffffh区段不能使用(不被选中)。如确实需要,可对程序存储器加以扩展,一个8KW的程序存储器扩展电路如图2.17所示,图中用两片8K×8b的存储器扩展成8K×16b的静态存储器,然后与TMS320'C2000芯片相连。TMS320'C2000的外部存储器一般使用静态存储器SRAM,这样可省去刷新电路,但成本稍高。使用随机存储器RAM,利于程序的反复加载和调试,但是若无需调试,也可用EPROM/EEPROM/Flash等可编程只读存储器,这时信号不必使用。图2.178KW程序存储器的扩展电路当TMS320‘C2000芯片的CPU访问片内程序存储器时,外部程序存储器选通信号和处于无效状态。仅当CPU在映射到外部存储器的地址范围内进行访问时,外部总线才有效。此时,=0,=0,选通外部程序存储器(
= 0)。
得注意的是,使用外部存储器时,应考虑其速度因素。由于DSP速度较快,当使用外部存储器时,要选择高速的存储器。若外部存储器速度不足以胜任实时单周期操作,应通过软件等待发生器或READY信号插入等待周期。使用程序存储器可按以下惯例考虑:
(1)在程序调试过程中,一般可用SARAM和B0块作为部分或全部程序存储器,这样加载和修改程序都很方便。对无SRAM的DSP,应将B0块作为程序存储器的活动区,以便适时修改代码,给调试带来方便。当程序确实太长时,可考虑使用扩展程序(静态随机)存储器,等程序调试可行后,再换成只读存储器。
(2)在实际使用时,单独用片内Flash作为程序存储器,而SARAM和DARAM全部用做数据存储器,特别是DARAM应用在频繁读写的数据区,这样可提高程序执行速度,同时充分利用片内资源,降低系统成本。
(3)对于某些常数、初始化数据段、信号处理使用的系数等,可设计成数据表存放在程序存储器中。这些数据表可作为操作数使用,也可通过指令将其转移到数据存储器中,再进行使用。2.3.4数据存储器
TMS320'C2000DSP的数据存储器空间有两大类,一类是局部数据存储器,另一类是全局数据存储器。局部数据存储器包括片内数据存储器和外部扩展数据存储器,共64KW的容量。而全局数据存储器则必须通过外部扩展,主要用于处理器或系统之间的数据通信,可以像邮箱一样使用。全局数据存储器的容量最大为32KW,可根据需要由寄存器GREG确定实际容量。唯一区分局部数据存储器和全局数据存储器的控制信号是总线请求信号,因此在使用外部扩展局部数据存储器和全局数据存储器时,必须有此信号存在,方能正确操作。
TMS320'C2000的数据存储器空间分布如图2.18所示,图中上半部分为局部数据存储器空间,下半部分为全局数据存储器空间。访问数据存储器有直接寻址模式和间接寻址模式。当使用直接寻址模式对局部数据存储器寻址时,将局部数据存储器按地址分块,每块128W为一页。64KW的局部数据存储器可分为512页,记为0~511。局部数据存储器的分页及第0页的地址映射如图2.19所示。图2.18数据存储器空间分布图2.19TMS320'C2000数据存储器的数据页配置及第0页的地址映射局部数据存储器空间中,地址0000h~005fh存储块为存储器映射寄存器使用;地址0060h~007fh存储块为片内双访问存储器DARAM的B2块;地址0080h~01ffh存储块为TMS320'C2000保留段,以备将来系统升级使用;当CNF = 0时,地址0200h~02ffh存储块为片内双访问存储器DARAM的B0块,而当CNF = 1时,地址0200h~02ffh存储块为保留段;地址0300h~03ffh存储块为片内双访问存储器DARAM的B1块;地址0400h~07ffh存储块为保留段;对于具有片内SARAM的DSP,当DON = 1时,地址0800h~17ffh存储块为片内单访问存储器SARAM,当DON = 0或DSP无片内SARAM时,数据存储器0800h~0ffffh可全部用做外部扩展。需说明的是,即使外部存储器用做全部数据空间(0000h~0ffffh),在片内使用或保留的区段,外部空间是不会被寻址的(相应的控制信号在片内操作时无效)。因此,最大扩展外部局部数据存储器空间为58KW(当使用SARAM作为数据存储器时)或62KW(当不使用或无SARAM作为数据存储器时)。在TMS320‘C2000DSP中,DON和PON可同时有效,即SARAM可同时被用做程序存储器和数据存储器,这时在这一区段出现数据与程序存储区的物理重叠,但逻辑上是分开的。
数据和程序的存放应在物理位置上有所区分,否则数据的存储将可能破坏程序代码。物理位置的区分可按低4KW地址来划分。当程序使用8000h~87ffh的2KW段时,数据则可使用1000h~17ffh的2KW段。虽然局部数据存储器和全局数据存储器各有64KW和32KW的独立空间, 但由于只有信号作为区分,因此局部数据存储器和全局数据存储器不能同时同址使用。表2.3给出了由GREG寄存器配置全局数据存储器容量的情况。GREG连到内部数据总线的低8位,GREG的高8位为任意值。GREG是存储器映射寄存器,它被分配到数据存储单元的0005h处。由表2.3可知,当局部和全局数据存储器共享64KW存储空间,可方便地操作局部和全局数据存储器,无需频繁修改GREG;但当二者均使用最大容量,或出现地址的逻辑重叠区时,必须借助修改GREG来切换对局部和全局数据存储器的读写操作控制。信号在GREG分配的全局数据存储器操作时有效。表2.3GREG寄存器与局部和全局数据存储器的关系表2.3列出了GREG的可用值及相应的地址范围。注意:只能选择该表所列的GREG值,选择其它值会使存储器映射分成碎片。
局部和全局数据存储器的扩展与程序存储器的扩展方法相同,只需将信号换成即可。 图2.20描述了8000h~ffffh 段32KW的局部数据存储器和8000h~ffffh段32KW的全局数据存储器扩展电路。事实上,局部数据存储器可增大至64KW,做最大容量扩展。全局存储器中,只有当A15 = 1时才有效变低,因此,A15不必用做译码。图2.20数据存储器的扩展2.3.5I/O空间
I/O空间用于对片内外设和片外设备(如模拟数字接口、编码解码接口等)的访问。TMS320‘C2000器件支持64K×16b的I/O地址空间,如图2.21所示。I/O地址空间被划分成3块,地址段0000h~feffh为外部端口使用;地址段ff00h~ff0fh为片内I/O空间,用于测试保留,用户不得使用;地址段ff10h~ffffh为片内使用,作为I/O映射寄存器。表2.4列出了TMS320F206上映射到片内I/O空间的寄存器。其它TMS320'C2000DSP器件的I/O映射寄存器与此表有所差异。两条特殊的指令IN和OUT用于对这些空间(包括外部I/O端口和片内I/O寄存器)进行访问。访问外部并行I/O端口与访问程序存储器、数据存储器复用同样的地址总线和数据总线。DSP对I/O端口的操作指令为I/O端口与存储空间交换数据,因此其执行时间较长,需2(IN)/3(OUT)个或以上的周期才能完成。若需要单周期的快速端口操作,可将数据存储空间的一小部分分配给外设,以存储器方式的操作代替I/O慢速操作,即可实现快速外设数据交换。但应注意这是以牺牲数据存储器容量为代价的。图2.21I/O空间分布表2.4映射到I/O空间的片内寄存器进行外部I/O端口操作时,I/O选通信号被激活有效。TMS320‘C2000DSP的I/O操作是16位的,若只用8位,则可选高字节或低字节。图2.22给出了一个8位输入(I/O地址为0000h,使用低字节)和一个8位输出(I/O地址为0001h,使用低字节)的I/O接口的例子。图中用和片选逻辑一起形成外部设备的写允许信号。当地址为0000h时,选中74AC244,使外部输入到达数据总线;当地址为0001h时,选中74AC273,数据总线上的数据输出到外部设备。由于读端口不进行写操作,因此可省略部分信号(未用信号)参与译码。又由于内部I/O操作不产生有效的信号,故可采用部分译码电路。这种简化方法可节省硬件开销。图2.22上的译码电路可以驱动8个外设。图2.22I/O端口的扩展举例2.3.6TMS320F206/LF2407的地址映射与存储器配置
1.TMS320F206的地址映射与存储器配置
图2.23给出了TMS320F206存储器地址分配示意图,表2.5为该存储器分配表。
注:①当CNF = 1时,程序存储器中的地址为fe00h~feffh和ff00h~ffffh的区域分配给了同一物理块DARAMB0。例如,写fe00h与写ff00h的效果是相同的。为简单起见,当CNF = 1时,将fe00h~feffh作为保留区。
②当CNF = 0时,数据存储器中的地址为0100h~01ffh和0200h~02ffh的区域分配给了同一物理块DARAMB0。例如,写0100h与写0200h的效果是相同的。为简单起见,当CNF = 0时,将0100h~01ffh作为保留区。
③数据存储器中地址为0300h~03ffh和0400h~04ffh的区域分配给了同一物理块DARAMB1。例如,写0400h与写0300h的效果是相同的。为简单起见,将0400h~04ffh作为保留区。
注意:不要写保留地址。为避免处理器的不可预测的操作,不能向任何已标明为保留的地址写数据。这包括未指定给任何片内寄存器的0000h~005fh范围内的数据存储器地址,以及未指定给任何片内寄存器的ff00h~ffffh范围内的I/O地址。
图2.23TMS320F206存储器地址分配示意图
DON和PON是F206器件中PMST寄存器的bit2和bit1,通过写操作可设置它们,将SARAM分配到程序存储器或数据存储器,其逻辑关系如下:
DONPON SARAM的分配
0 0 SARAM不映射,地址在外部存储器(复位值)
0 1 SARAM在片内程序存储器8000h~8fffh
1 0 SARAM在片内数据存储器0800h~17ffh
1 1 SARAM同时被分配到程序存储器和数据存储器,
地址同上
PMST寄存器的bit0位锁定在引脚上, 对其进行写操作可设置为微处理器(高)或微计算机(低)模式。表2.5TMS320F206存储器分配表
2.TMS320LF2407的地址映射与存储器配置
图2.24给出了TMS320LF2407存储器地址分配示意图。
TMS320LF2407的片内外设均由相应的寄存器进行管理,这些寄存器都是16位的数据存储器映射寄存器,表2.6给出了TMS320LF2407数据存储器映射寄存器的配置表。注:如果 = 0,为片内Flash程序存储器;如果 = 1,则为外部程序存储器。
引导ROM:如果使能引导ROM,则程序存储器0000h~00ffh区域将被引导ROM占用。
①片内程序存储器0040h~0043h区域为保留空间。
②当CNF = 1时,程序存储器中的地址为fe00h~feffh和ff00h~ffffh的区域分配给了同一物理块DARAM(B0)。例如,向fe00h写数和向ff00h写数的效果是相同的。为简单起见,将fe00h~feffh作为保留区。
③当CNF = 0时,数据存储器中的地址为0100h~01ffh和0200h~02ffh的区域分配给了同一物理块DARAM(B0)。例如,向0100h写数和向0200h写数的效果是相同的。为简单起见,将0100h~01FFh作为保留区。
④数据存储器中地址为0300h~03ffh和0400h~04ffh的区域分配给了同一物理块DARAM(B1)。例如,向0300h写数和向0400h写数的效果是相同的。为了简单起见,将0400h~04FFh作为保留区。
图2.24TMS320LF2407存储器地址分配示意图注:非法区域是指如果对这些区域进行访问,将会产生一个不可屏蔽中断(NMI)。保留区域用于测试,如果对这些区域进行访问,将会产生不可预测的结果。
2.4TMS320‘C2000的程序控制
TMS320'C2000DSP的改进型哈佛结构和内部多总线的应用,使DSP具有并行操作的基础;而取指、译码、取操作数及执行的重叠流水线结构,使指令的执行效率大大提高,指令平均执行时间降低,与单周期指令具有相同的执行效果;硬件乘法单元和加法单元的有机组合,使单周期完成乘法和加法的指令成为可能;主运算单元(中央算术逻辑单元(CALU))以外的辅助寄存器算术单元(ARAU),使DSP在进行算术逻辑操作的同时,能及时产生源或目标操作数的地址,这使指令的功能得以提高,特别是进行FFT运算时,存储单元的位倒序相当方便,且无需额外的周期。基于TMS320'C2000如此特殊的结构,了解其指令执行的程序控制,有助于进行有效编程,并提高程序的执行效率。程序控制一般指的是控制一个或多个指令块的执行次序,内容包括程序地址的产生,流水线顺序执行,无条件及有条件的分支、调用、返回,指令重复执行以及中断系统等(在高级的DSP器件中还包括指令块的重复、Cache的使用控制、多处理器的协调等内容)。2.4.1TMS320‘C2000DSP的程序地址产生
通常CPU顺序执行程序。也就是说,CPU一般是顺序地从程序存储器的连续地址单元中取出指令,即当前地址加1。但在某些情况下,CPU非顺序执行程序,必须转移到不连续的新地址去执行程序,例如分支程序、子程序调用、响应中断等。紧接着的下一指令的地址来源于指令操作字、累加器低半部分ACCL(分支或调用)、堆栈(返回)、微堆栈(块操作)、向量表(中断)等。这就要求CPU在执行当前指令的同时,能够生成下一个指令机器码所在的程序存储器地址。为此,在TMS320'C2000的CPU内部设置了一套程序地址产生逻辑,如图2.25所示。程序地址产生逻辑由程序计数器PC、程序地址寄存器PAR、堆栈STACK及微堆栈MSTACK等部件组成,下面分别加以介绍。图2.25程序地址产生逻辑原理图
1.程序计数器PC
程序地址产生逻辑利用16位的程序计数器PC寻址内部和外部程序存储器,PC含有要执行的下条指令的地址,经程序地址总线PAB从程序存储器中取出该地址的指令,并将其加载到指令寄存器。此时,PC的值被更新为下一指令的地址。
PC的新值总是等于下一条指令所在的地址。当CPU顺序执行时,若当前指令字长为1W,则PC值 = 当前值+1;若当前指令字长为2W,则PC值 = 当前值+2;当分支(跳转)时,则将指令后的长立即数或累加器低半部分ACCL加载到PC;当子程序调用时,将PC中下一条指令的地址首先压入堆栈,然后将调用指令后的长立即数或累加器低半部分ACCL直接加载到PC,当子程序返回时,则将栈顶内容(即返回地址)从堆栈中弹出到PC;当中断调用时,也是首先将刚执行完的指令的下条指令地址入栈,然后把中断向量表的内容(中断向量地址)装入PC。
2.堆栈STACK
TMS320'C2000DSP具有一个宽为16、深度为8级的硬件堆栈,当调用子程序或发生中断时,程序地址产生逻辑利用该堆栈保存返回地址,如图2.26所示。当程序中有少于8级嵌套的子调序调用和中断时,堆栈也可用于保存子程序或中断服务程序中的数据,或用于其它目的。访问硬件堆栈可以用指令PUSH和POP来实现,这两条指令将栈顶的值与累加器低半部分ACCL之间相互传送。当多于8级嵌套时,会发生堆栈溢出,这时会使程序的执行发生混乱。为了解决这一问题,DSP提供了一个使用软堆栈的办法。利用PSHD和POPD指令将数据从数据存储器压入栈顶或从栈顶弹出数据到数据存储器,这个数据存储器一般使用片内双访问存储器,常用B2块(0060h~007Fh),经堆栈软扩展后可适用于多级嵌套的复杂程序。图2.26堆栈操作示意图
3.微堆栈MSTACK
当CPU执行块操作时,要使用PC作为第一个操作数的地址增量,而用ARAU产生第2个操作数地址,这时要使用一个微堆栈(只有一级的堆栈)MSTACK来暂时保存返回地址(下条指令对应的PC值)。这种操作开始时,首先将PC+1(或PC+2)的地址送到微堆栈MSTACK保存,然后将首操作数的地址存入PC中,用ARAU产生第2个操作数地址。当这些指令重复执行时,PC可使首操作数的地址自动增量,ARAU使第2个操作数的地址改变,到所重复的指令完成时再将微堆栈弹回到PC。2.4.2TMS320‘C2000DSP的流水线
指令流水线包括指令执行时发生的一系列总线操作。TMS320'C2000DSP的流水线有4级,如图2.27所示。图2.27TMS320'C2000DSP的4级流水线操作
4级流水线把一个指令分解成4个独立的阶段:取指令(Fetch)、译码(Decode)、取操作数(Operand)、执行(Execute)。由于这4个操作阶段是相互独立的,因此,这些操作可以重叠执行。在任意的指定周期内,1~4条不同的指令均可有效(均被激活),每条被激活的指令均处于一个不同的操作阶段。对于指令流,指令的4个阶段在同一时间上的重叠使指令的平均执行时间减少。在无流水线时,一条指令的执行时间为4个周期,有了流水线后,指令的平均执行时间 = 无流水线执行时间÷流水线级数 = 4÷4 = 1,即一条指令只需单周期执行的时间。
分支、调用、中断等操作会破坏流水线,而流水线的建立需4个周期才能完成,因此在这种情况下,指令的平均执行时间会加长。在多重循环的情况下,由于流水线被破坏,因此会耗费掉相当多的时间。为了解决这一问题,可采用空间换时间的技术(在高级DSP中,有块重复指令,可很方便地实现程序块的重复执行而不影响流水线),把要重复的指令段重复排列在程序存储器中,这样利用流水线的特性可使程序按单周期的方式运行。这在TMS320F206中容易实现,因为32KW的程序Flash对大多数应用而言已足够。若是单指令反复执行,则可用单指令重复指令RPT方便地重复执行某条指令,而不会破坏流水线。2.4.3TMS320‘C2000DSP的非顺序执行
TMS320'C2000DSP的CPU有指令重复、分支、调用、返回、中断等非顺序执行方式,除指令重复不会破坏流水线(使流水线暂停)外,其它情况均会破坏流水线,但只有这样才能完成程序要求的功能。因此在高级DSP中设置了延迟分支、调用、返回等模式,以弥补破坏流水线带来的时间损失。
1.分支、调用和返回
除了无条件分支、调用和返回外,TMS320'C2000DSP还提供了一种带条件判断的分支、调用和返回指令,这给程序的编制和控制带来了很大的方便。无条件分支直接控制程序的流向,由指令字的长立即操作数或累加器的低半部ACCL直接无条件给出程序跳转地址,CPU转移到该地址继续往下执行。无条件调用则是直接无条件地转移到指令字的长立即数或累加器的低半部ACCL指定的地址执行,完成后返回原断点处执行,这种操作要借助堆栈保存断点(PC值入栈)。无条件返回则是无条件地将由于子程序调用(无论有无条件)或中断调用而转移到新程序地址处的PC再转回到原断点处(栈顶弹出值)继续往下执行。在TMS320'C2000中,条件分支、调用和返回所完成的功能与无条件分支、调用和返回是完全一致的,区别仅在于前者的执行是有条件的,只有条件成立时才执行该操作,否则CPU顺序往下执行。这种条件可以是无条件、单条件或多条件的组合。多条件时只有全部条件都成立,才认为是条件满足,只要有一个条件不成立,就认为条件不满足。可测试(判断)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版业务佣金合同范本
- 家长参与下学生饮食健康的实践案例分析
- 编程课课程设计要求
- 沉箱码头课程设计
- 2025版企业独栋办公楼租赁合同2篇
- 2024年美容院人力资源共享与人才租赁合同
- 触觉早教课程设计
- 家居环境下的室内花园打造
- 短轴课程设计
- 语义学课程设计
- 模具管理程序文件
- 女子水晶乐坊
- 汉语中的词语词性分类(课堂)课件
- 骨盆骨折PPT完整版
- 2023-2024学年广西壮族自治区南宁市小学语文五年级期末高分试题附参考答案和详细解析
- 事业单位登记管理讲座课件
- DB44T 1315-2014物业服务 档案管理规范
- 基本医疗保险异地就医登记备案申请表
- 非线性光纤光学六偏振效应PPT
- 雪夜的老人阅读答案6篇
- 2022数学课程标准解读及实践:八下平行四边形大单元设计
评论
0/150
提交评论