第2章_CPU内部结构与时钟系统_第1页
第2章_CPU内部结构与时钟系统_第2页
第2章_CPU内部结构与时钟系统_第3页
第2章_CPU内部结构与时钟系统_第4页
第2章_CPU内部结构与时钟系统_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,DSP原理与应用技术,第二章CPU内部结构与时钟系统,.,学习要点,1.CPU的组成结构和总线类型2.CPU寄存器及其作用3.CPU时钟类型及使用方法4.看门狗模块的作用及使用方法5.程序流的种类,.,2.1中央处理单元CPU概述,在TMS320C2000系列中,CPU内核为:C20 x/C24xC240 xC27x/C28xTMS320C28x系列芯片有3个主要组成部分:中央处理单元CPU存储器片内外设TMS320C28x系列芯片的功能框图,.,C281xBlockDiagram,32x32bitMultiplier,SectoredFlash128K16b,A(18-0),D(15-0),ProgramBus,DataBus,RAM18K16b,BootROM4K16b,22,32-bitAuxiliaryRegisters,332bitTimers,RealtimeJTAG,CPU,RegisterBus,R-M-WAtomicALU,PIEInterruptManager,32,32,32,EventManagerA,EventManagerB,12-bitADC,Watchdog,McBSP,CAN2.0B,SCI-A,SCI-B,SPI,GPIO,片内外设,L0,L1:4K16bH0:8K16bMO,M1:1K16b,3个32位定时器T0,T1,T2,外部中断扩展模块,支持96个中断,只使用45个,2个事件管理器其中的PWM单元,用于电机控制,16通道,分辨率为12位的模数转换模块,作用是防止程序跑飞或进入死循环,,多通道缓冲串行接口,增强型局域网络,串行通信接口,串行外围接口,通用并行接口,支持片上调试功能,.,TMS320C28x的CPU是一种低功耗的32位定点数字信号处理器,集中了数字信号处理器和微控制器的诸多优秀特性。采用改进型哈佛结构和循环寻址方式,精简指令集RISC(ReductionInstructionSetComputer)、支持字节的组合与拆分、位操作等。改进型哈佛结构可以并行地执行指令和读取数据。,2.1中央处理单元CPU概述,.,2.1.1兼容性TMS320C2000系列CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。C28x芯片具有3种操作模式:C27x目标-兼容模式C28x模式C2xLP源-兼容模式,2.1中央处理单元CPU概述,.,C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统,因此,一般应使C28x芯片工作于该种模式。C27x目标兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式下,目标码与C27xCPU完全兼容,且它的循环计数也与C27xCPU兼容。C2xLP源兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x代码生成工具编译生成的。,2.1中央处理单元CPU概述,.,可通过状寄存器STl(P38)的位OBJMODE(D9)和位AMODE(D8)组合,选定模式。,2.1中央处理单元CPU概述,.,2.1.2CPU组成及特性1.CPU的组成,CPU,仿真逻辑,存储器接口信号,时钟和控制信号,复位和中断信号,仿真信号,产生数据和程序存储地址:编码和运行指令;执行算术、逻辑和移位操作;控制寄存器阵列内的数据转移、数据存储和程序存储等。,监视和控制DSP芯片内不同部件的工作,并且测试设备的操作情况。,2.1中央处理单元CPU概述,.,2.CPU的主要特征(1)保护流水线(Pretectedpipeline):CPU具有八级流水线,可以避免从同一地址进行读写而造成的秩序混乱。(2)独立寄存器空间(Independentregisterspace):在CPU中含有一些被映像至数据空间的寄存器。这些寄存器可以作为系统控制寄存器、数学寄存器和数据指针。系统控制寄存器可由特殊的指令进行操作,而其他寄存器则通过特殊指令或寄存器寻址模式来操作。,2.1中央处理单元CPU概述,.,(3)算术逻辑单元ALU(ArithmeticLogicUnit):32位的ALU完成二进制补码算术和布尔逻辑操作。(4)地址寄存器算术单元ARAU(AddressRegisterArithmeticUint):ARAU产生数据存储地址以及与ALU并行操作的增量和减量指针。(5)循环移位器(Barrelshifter):执行最多16位的数据左移位和右移位操作。(6)乘法器(Multiplier):执行32位32位的二进制补码乘法运算,获得64位的乘积。乘法可以在有符号数和无符号数之间进行。,2.1中央处理单元CPU概述,.,2.1.3CPU信号CPU有4种主要信号(1)存储器接口信号(Memory-interfacesignals):这些信号在CPU、存储器和外围设备之间进行数据传送;进行程序存储器的访问和数据存储器的存取;并能根据不同的字段长度区分不同的存取操作(16位或32位)。(2)时钟和控制信号(Clockandcontrolsignaks):这些信号为CPU和仿真逻辑提供时钟,它们可以用来监视和控制CPU。,2.1中央处理单元CPU概述,.,(3)复位和中断信号(Resetandinterruptsignals):这些信号用来产生硬件复位和中断,并用来监视中断的状态。(4)仿真信号(Emulationsignals):这些信号用来仿真和调试。,2.1中央处理单元CPU概述,.,2.2CPU的结构及总线,2.2.1CPU结构CPU的主要单元有:(1)程序和数据控制逻辑:用来存储从程序存储器中取出的指令队列(2)实时仿真逻辑:实现可视化操作(3)地址寄存器算术单元ARAU:为从数据存储器中取出的值分配地址。对于数据读操作,它把地址放在数据读地址总线DRAB上对于数据写操作,它把地址装入数据写地址总线DWAB上ARAU也可以改变SP和辅助寄存器XAR7XAR0的值,.,(4)算术逻辑单元ALU:32位的ALU可以完成二进制补码运算和布尔运算。运算之前,ALU从寄存器、数据存储器或程序控制逻辑中接收数据;运算之后,ALU将数据存入寄存器和数据存储器(5)预取队列和指令译码:(6)程序和数据地址发生器(7)定点乘法器:完成32位32位的二进制补码乘法运算,获得64位的乘积。(8)中断处理,2.2CPU的结构及总线,.,.,2.2.2地址和数据总线存储器接口有3组地址总线:1PAB(ProgramAddressBus)程序地址总线:PAB用来传送来自程序空间的读/写地址。PAB是一个22位的总线。2DRAB(Data-ReadAddressBus)数据读地址总线:32位的DRAB用来传送来自数据空间的读地址。,2.2CPU的结构及总线,.,3DWAB(Data-WriteAddressBus)数据写地址总线:32位的DWAB用来传送来自数据空间的写地址。存储器接口还有3组数据总线:1PRDB(Program-ReadDataBus)程序读数据总线:PRDB在读取程序空间时用来传送指令或数据。PRDB是一个32位的总线。,2.2CPU的结构及总线,.,2DRDB(Data-ReadDataBus)数据读数据总线:DRDB在读取数据空间时用来传送数据。DRDB是一个32位的总线。3DWDB(DataProgram-WriteDataBus)数据程序写数据总线:32位的DWDB在对数据空间和程序空间写数据时用来传送数据。,2.2CPU的结构及总线,.,C28xInternalBusStructure,数据/写地址总线DWAB-Data-writeAddressBus(32位),程序地址总线PAB-ProgramAddressBus(22位),Execution,R-M-WAtomicALU,Real-TimeEmulation完成一个基于T最低4位的算术右移,(D3D0)十进制数015ASRLACC,T;完成一个基于T最低5位的算术右移,(D4D0)十进制数031,2.3.2被乘数寄存器XT,.,2.3.3结果寄存器(P、PH、PL),结果寄存器P主要用来存放乘法运算的结果。可以直接装入一个16位常数,或者从一个16位32位的数据存储器、16位32位的可寻址CPU寄存器以及32位累加器中读取数据。P寄存器可以作为一个32位寄存器或两个独立的16位寄存器:PH(高16位)和PL(低16位)来使用。,.,当通过一些指令存取P、PH、PL时,所有的32位数都要复制到ALU移位器中,执行左移、右移。指令的移位操作由状态寄存器ST0中的乘积移位模式为PM(Productshiftmode)D9D7位来决定。,2.3.3结果寄存器(P、PH、PL),.,2.3.4数据页指针(DP),DP是16位寄存器,与6位偏移量构成数据页地址在直接寻址模式中,对数据存储器的寻址要在64个字的数据页中进行,即一个页面为26=64个字数据存储器共有216=64K=65536个数据页,用0000HFFFFH(065535)进行标号组成26216=222=4M字的数据存储器在DP直接寻址模式下,16位的数据页指针(DP)保存了目前的数据页号。可以通过给DP赋新值去改变数据页号。,.,.,2.3.5堆栈指针SP,堆栈指针SP为16位,可以对数据空间的低64K(216)进行寻址。当使用SP时,将32位地址的高16位置为0(SP高16位不可操作)。复位后SP指向地址00000400H。堆栈操作说明如下:1.堆栈从低地址向高地址增长。2.SP总是指向堆栈中的下一个空域。3.复位时,SP被初始化,它指向地址00000400H,.,4.将32位数值存入堆栈时,先存入低16位,然后将高16位存入下一个高地址中(低位在低地址,高位在高地址)。5当读写32位的数值时,C28xCPU期望存储器或外设接口逻辑把读/写排成偶数地址。例如,如果SP包含一个奇数地址00000083H,那么,进行一个32位的读操作时,将从地址00000082H和00000083H中读取数值。,2.3.5堆栈指针SP,.,6.如果增加SP的值,使它超过FFFFH,或者减少SP的值,使它低于0000H,则表明SP已经溢出。如果增加SP的值使它超过了FFFFH,它就会从0000H开始计数。例如,如果SP=FFFEH而一个指令又向SP加3,则结果就是SP=00001H。当减少SP的值使它到达0000H,它就会重新从FFFFH计数。例如,如果SP=0002H而一个指令又从SP减4,则结果就是FFFEH。7.当数值存入堆栈时,SP并不要求排成奇数或偶数地址。排列由存储器或外设接口逻辑完成。,2.3.5堆栈指针SP,.,2.3.6辅助寄存器XAR0XAR7、AR0AR7,CPU提供8个32位的辅助寄存器:XAR0、XARI、XAR2、XAR3、XAR4、XAR5、XAR6、XAR7。它们可以作为地址指针指向存储器,或者作为通用目的寄存器使用。许多指令可以访问XAR0-XAR7的低16位,其中,辅助寄存器的低16位为AR0-AR7,它们用作循环控制和16位比较的通用目的寄存器。,.,当访问AR0-AR7时,寄存器的高16位(AR0H-AR7H)可能改变或不改变,这主要取决于所应用的指令。AR0H-AR7H只能作为XAR0-XAR7的一部分来读取,不能单独进行访问。,2.3.6辅助寄存器XAR0XAR7、AR0AR7,.,2.3.7程序指针PC,当流水线满的时候,22位的程序指针总是指向当前操作的指令,该指令刚刚到达流水线解码的第2阶段。一旦指令到达了流水线的第2阶段,它就不会再被中断从流水线中清除掉,而是在中断执行之前就被执行了。,.,2.3.8返回程序寄存器RPC,RPC存放LCR(长调用指令)指令的返回地址当通过LCR(长调用指令)指令执行一个调用操作时,返回地址存储在RPC寄存器中,RPC以前的值存在堆栈中(在两个16位的操作中)。当通过LRETR指令执行一个返回操作时,返回地址从RPC寄存器中读出,堆栈中的值被写回RPC寄存器(在两个16位的操作中)。其他的调用指令并不使用RPC寄存器。,.,2.3.9中断控制寄存器IFG、IER、DBGIER,C28x有3个寄存器用于控制中断:中断标志寄存器(IFR)、中断使能寄存器(IER)和调试中断使能寄存器(DBGIER)。IFR包含的标志位用于可屏蔽中断(可以用软件进行屏蔽)。当通过硬件或软件设定了其中某位时,则相应的中断就被使能。可以用IER中的相应位屏蔽和使能中断。当DSP工作在实时仿真模式并且CPU被挂起时,DBGIER表明可以使用时间临近中断(如果被使能)。,.,enable使能,开中断disable禁止,关中断,.,enable使能,开中断disable禁止,关中断,Real-timeoperatingsysteminterrupte,Dataloginterrupte,.,pending挂起,表明中断没有被执行nopending,表明中断正在被执行,.,pending挂起,表明中断没有被执行nopending,表明中断正在被执行,.,enable使能disable禁止,.,enable使能disable禁止,.,2.3.10状态寄存器ST0,C28x有两个状态寄存器ST0和STl,其中包含着不同的标志位和控制位。ST0、ST1可以和数据寄存器交换数据,也可以保存机器的状态以及为子程序恢复状态。状态位根据流水线中位值的改变而改变,ST0的位在流水线的执行阶段改变,STl的位在流水线的译码阶段改变。,.,符号扩展模式位,溢出模式位,测试/控制标志位,进位标志位,零标志位,符号标志位,溢出标志位,乘积结果移位模式位,溢出计数器,0正数1负数,0不溢出1溢出,0无进位/借位1有进位/借位,0结果不是零1结果为零,.,1.OVC/OVCU-Overflowcounter,溢出计数器。有符号数和无符号数对它们的影响不同2.PM-Productshiftmodebits,乘积结果移位模式位确定从乘积结果寄存器P的输出操作的移位模式3.V-Overflowflag,溢出标志位寄存器溢出时,V=1并锁存;无溢出,V不变4.N-Negativeflag,负数标志位操作结果为负数,则N=1;结果为正数,N=05.Z-Zeroflag,零标志位操作结果为0,则Z=1;结果不为0,Z=0,2.3.10状态寄存器ST0,.,6.C-Carryflag,进位标志位加法产生进位,C=1,不产生进位,C=0减法产生借位,C=0,不产生借位,C=17.TC-Test/controlflag,测试/控制标志位若被测试位为1,TC=1;被测试位为0,TC=08.OVM-Overflowmodebit,溢出模式位9.SXM-Sign-extensionmodebit,符号扩展模式位SXM=1,禁止符号扩展,SXM=0,可以进行符号位扩展,2.3.10状态寄存器ST0,.,2.3.11状态寄存器ST1,寻址模式位,目标兼容模式位,映射模式位,M0/M1映射模式位,XF状态位,辅助寄存器指针,.,中断使能屏蔽位,调试使能屏蔽位,PAGE0寻址模式设置位,向量映射位,堆栈指针对齐位,循环指针对齐位,仿真处理使能位,空闲状态位,.,2.3.11状态寄存器ST1,1.ARP(D15D13)-Auxiliaryregisterpointer,辅助寄存器指针表明所使用的辅助寄存器,.,2.XF-XFstatusbit,XF状态位该位反映当前XFS输出信号的状态。3.M0M1MAP-M0andM1mappingmodebitM0和M1映射模式位在C28x模式下,M0M1MAP=1在C27x兼容模式下,M0M1MAP=04.OBJMODE-Objectcompatibilitymodebit目标兼容模式位OBJMODE=0,C27x兼容模式OBJMODE=1,C28x模式,2.3.11状态寄存器ST1,.,5.AMODE-Addressmodebit,寻址模式位6.IDELSTAT-IDLEstatusbit,空闲状态位7.EALLOW-Emulationaccessenablebit,仿真处理使能位8.LOOP-Loopinstructionstatusbit,循环指令状态位9.SPA-Stackpointeralignmentbit,堆栈指针对齐位10.VMAP-Vectormapbit,向量映射位11.PAGE0-PAGE0addressmodeconfigurationbitPAGE0寻址模式设置位,2.3.11状态寄存器ST1,.,12.DBGM-Debugenablemaskbit,调试使能屏蔽位13.INTM-Interruptgloblemaskbit,中断全局屏蔽位,2.3.11状态寄存器ST1,.,2.4时钟及系统控制,本节主要介绍F2812的时钟、锁相环、看门狗和复位控制电路等。F2812各种时钟电路如图所示。,.,140,76,77,160,低速时钟,高速时钟,高速时钟,.,2.4.1时钟寄存器组,.,外设时钟控制寄存器PCLKCRPeripheralclockcontrolregister控制2812芯片上各种时钟的工作状态,使能或禁止相关外设时钟。,.,外设时钟控制寄存器PCLKCR,.,2.系统控制和状态寄存器SCSRSystemControlSysCtrlRegs.HISPCP.all=0 x0001;/设定高速外设时钟预分频值SysCtrlRegs.LOSPCP.all=0 x0002;/设定低速外设时钟预分频值/对选定的外设进行外设时钟使能设置SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1;SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1;SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1;SysCtrlRegs.PCLKCR.bit.SPIENCLK=1;SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;EDIS;,高速外设时钟设置寄存器设SYSCKLOUT=150MHz则,高速时钟=SYSCKLOUT/2=75MHz,低速外设时钟设置寄存器设SYSCKLOUT=150MHz则,高速时钟=SYSCKLOUT/4=37.5MHz,使能EV-A外设高速时钟,使能EV-B外设高速时钟,使能SCI-A外设低速时钟,使能SCI-B外设低速时钟,使能McBSP外设低速时钟,使能SPI外设低速时钟,使能eCAN外设低速时钟,使能ADC外设高速时钟,.,2.4.4看门狗定时器及其应用,F2812看门狗定时器,当8位的看门狗计数器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数器,或用软件周期向看门狗复位控制寄存器写“0 x55+0 xAA,该寄存器能够使看门狗计数器清零。,.,1.看门狗计数寄存器WDCNTR(WatchdogCounterRegister),反映看门狗计数器当前计数值在时钟WDCLK的控制下连续加1计数如果计数器到达最大值0 x00FF,则看门狗触发一次复位或中断事件如果向WDKEY(看门狗复位寄存器)写入0 x55+0 xAA,将使计数器清零。,.,2.看门狗复位寄存器WDKEY(密钥寄存器)(WatchdogResetKeyRegister,依次写入0 x55+0 xAA,将使WDCNTR计数器清零。写其他值会立即使看门狗触发一次复位事件。,.,3.看门狗控制寄存器WDCR,.,0使能看门狗1禁止看门狗,3.看门狗控制寄存器WDCR,必须写101b,写其他任何值都会引起器件内核的复位(如果看门狗已经使能),.,3.看门狗控制寄存器WDCR,1表示看门狗触发了一次复位事件0表示上电复位或外部复位事件用户只有写1才能使该位清0,写0无影响,.,使能,.,以下三种事件可以使看门狗产生脉冲信号(1)未及时“喂狗”,使8位看门狗计数器溢出(2)错误的“喂狗”方式,未正确对看门狗复位寄存器写入“0 x55+0 xAA”(3)对看门狗控制寄存器WDCR的WDCHKD位(D5D3)写入“101B”,.,例2-4-1中看门狗的设置,EALLOW;SysCtrlRegs.WDKEY=0 x0055;SysCtrlRegs.WDKEY=0 x00AA;EDIS;/关闭看门狗子程序,在初始系统时,或者用户不想使用看门狗,可以调用该程序voidDisableDog(void)EALLOW;SysCtrlRegs.WDCR=0 x0068;EDIS;,看门狗复位寄存器WDKEY写“密钥”,看门狗控制寄存器WDCR0 x0068=0000000001101000B,D6=1禁止看门狗D5D3=101D2D0=000,WDCLK=OSCCLK/512/1,.,例2-4-3中看门狗的设置,EALLOW;SysCtrlRegs.WDCR=0 x0028;/使能看门狗EDIS;,D6=0使能看门狗D5D3=101D2D0=000,WDCLK=OSCCLK/512/1,看门狗控制寄存器WDCR0 x0028=0000000000101000B,.,2.4.3定时器及其应用,F2812有3个32位CPU定时器(TIMER0/1/2):定时器0用户可以在应用程序中使用。定时器1和定时器2预留给实时操作系统使用(例如DSPBIOS)。,.,定时器计数寄存器,定时器周期寄存器,定时器控制寄存器,定时器预定标寄存器,.,1.定时器计数器TIMERxTIM/TIMERxTIMH,低16位,高16位,1.CPU定时器计数器寄存器TIMH:TIM。TIM寄存器保存当前定时器计数器的低16位,TIMH寄存器保存当前定时器计数器的高16位。,2.每隔(TDDRH:TDDR+1)个时钟脉冲TIMH:TIM减1,直到减1为0时,被自动重装载(PRDH:PRD)寄存器保存的周期值,并产生定时器中断信号,.,2.定时器周期寄存器TIMRxPRD/TIMRxPRDH,低16位,高16位,1.CPU定时器周期寄存器PRDH:PRD。PRD寄存器保存周期值的低16位,PRDH寄存器保存周期值的高16位。,2.当TIMH:TIM递减到0时,在下次定时周期开始之前,TIMH:TIM寄存器将自动重新装载PRDH:PRD寄存器保存的周期值。,.,3。定时器控制寄存器TIMERxTCR0,TCR功能:控制定时器模式重新加载定时器启动和停止定时器,.,CPU定时器中断标志位当定时器计数器减到0时,TIF=1,CPU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论