




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CollegeofCommunicationEngineering,JilinUniversity第2章S12XS单片机内部结构CollegeofCommunicationEngin2CollegeofCommunicationEngineering,JilinUniversity2.1S12XS单片机性能2.2CPU的构成2.3存储器2.4并行I/O第2章S12XS单片机内部结构2CollegeofCommunicationEngiCollegeofCommunicationEngineering,JilinUniversity2.1S12XS单片机性能
CollegeofCommunicationEngin4CollegeofCommunicationEngineering,JilinUniversity2.1.1S12XS系列单片机内部模块InternalBusSCI1PWM8CHANECT12KSRAMHCS12CPUBKPINTMMICMBDMMEBI4KBYTESEEPROMSIMmsCAN3msCAN2msCAN1SCI0SPI2orPWMCH4-7msCAN0orBDLCmsCAN4orIICSPI1orPWMCH0-3SPI0PLLPIT256KFLASEEPROMCRGVREGPIMAD0AD12.1S12XS单片机性能4CollegeofCommunicationEngi5CollegeofCommunicationEngineering,JilinUniversity1.16位CPU2.内部RAM或ROM:3.A/D模块:16路8位、10位或12位;4.CAN模块:支持CAN2.0A、B两种协议,1Mbps;5.TIM模块:标准定时器,输入捕捉、输出比较6.PIT模块:4通道24位递减计数器7.PWM模块:8通道8位,或4通道16位,占空比可编程;8.串口模块:两个SCI,支持LIN协议;一个SPI;9.中断模块:最多20个带位中断的外部中断引脚,中断源细分为7级;10.时钟模块:可通过内部锁相环使片内总线速度提升到最高40MHz。2.1.2S12XS系列单片机主要功能模块2.1MC9S12XS单片机的性能5CollegeofCommunicationEngi2.1MC9S12XS单片机的性能2.1.3S12XS系列单片机引脚功能2.1MC9S12XS单片机的性能2.1.3S12XS系时钟,复位电源调试系列引脚1P17图2-2112LQFP封装时钟,复位电源调试系列引脚1P17图2-2112LQFPCollegeofCommunicationEngineering,JilinUniversity2.2CPU的构成
CollegeofCommunicationEngin9CollegeofCommunicationEngineering,JilinUniversity2.2CPU的构成2.2.1算术逻辑运算单元2.2.2控制单元2.2.3核心寄存器组
9CollegeofCommunicationEngi10CollegeofCommunicationEngineering,JilinUniversity单片机(微控制器)基本组成MCUStructureTheCPURegistersfile(寄存器组)Instructionlatch/decode/branch(指令)Stack(栈)Interrupt(中断)Clock/Reset(时钟/复位)Memoryperipheral10CollegeofCommunicationEng11CollegeofCommunicationEngineering,JilinUniversity单片机(微控制器)基本组成MCUStructureTheCPURegistersfile(寄存器组)Instructionlatch/decode/branch(指令)Stack(栈)Interrupt(中断)Clock/Reset(时钟/复位)
Memoryperipheral11CollegeofCommunicationEng12CollegeofCommunicationEngineering,JilinUniversityAcompleteCPU12CollegeofCommunicationEng13CollegeofCommunicationEngineering,JilinUniversityCPU–thecoreofmicrocontrollerTheCPUcontains:ArithmeticLogicUnit(算术逻辑单元)Registerfile(寄存器组)ControlUnit(控制单元)FloatpointprocessUnitCachemanagementMemoryManagementUnit
13CollegeofCommunicationEng14CollegeofCommunicationEngineering,JilinUniversity2.2.1CPU的构成
——算术逻辑单元ALUALU--ArithmeticLogicUnitPerformsarithmeticfunctionssuchasadd,subtract,multiply,dividelogicfunctionssuchasAND,OR,NOT,XORbitfunctionssuchshift,rotation4个要素Twoinputdata--operands(操作数)instruction
--operation(运算)Status--flag(标志位)oneoutputdata--result(运算结果)Quiz:下面几个操作中,4要素分别为?A+B=CA>B?A>>=114CollegeofCommunicationEng15CollegeofCommunicationEngineering,JilinUniversityFlag(标志位)在哪里?执行单元产生的标志通常放在一个专用寄存器中ConditionCodeRegister--CCRZ:zeroN:negativeO:overflowC:carry每执行一条指令,相应的状态位都会进行更新。每条指令影响到的状态位都是不一样的,需要查看芯片手册。CCR(ConditionCodeRegister,条件码寄存器)15CollegeofCommunicationEng16CollegeofCommunicationEngineering,JilinUniversity操作数(operands)在哪里?1:Registers寄存器用于临时保存/获取操作数任何CPU都包含若干通用/专用寄存器寄存器的数目和宽度是衡量CPU的重要指标
themoreandbiggertheregisterThebettertheCPU.
16CollegeofCommunicationEng17CollegeofCommunicationEngineering,JilinUniversity操作数(operands)在哪里?2:DataMemoryMemory并不是CPU的组成部分,对memory的访问要比对寄存器的访问慢很多17CollegeofCommunicationEng18CollegeofCommunicationEngineering,JilinUniversity运算结果存哪里?Generally,thesameastheoperands1:Registers18CollegeofCommunicationEng19CollegeofCommunicationEngineering,JilinUniversity运算结果存哪里?2:DataMemory19CollegeofCommunicationEng20CollegeofCommunicationEngineering,JilinUniversity
指令解析
:
分析该指令需要执行何种操作
数据流向
:
确定该指令用到的操作数来源和产生结果的去向.
寻址方式:计算机确定操作数或下一条要执行指令的地址的方法。LowaddrHighaddr2.2.2CPU的构成
——控制单元20CollegeofCommunicationEng21CollegeofCommunicationEngineering,JilinUniversity地址与存储的基本概念Instr.EInstr.DInstr.CInstr.BInstr.A0xA3360xA3370xA3340xA3350xA332…………也可能是程序代码一段存储空间……
请回忆一下C语言的变量和指针的概念?<-变量c(char)当前:c值为0xEF&c值为0x0001C语言语句:char*ptr;ptr=0x0003;*ptr=?Ptr->0x440x550x440x330xEF0x560x00040x00010x00020x00030x0000…………存储的是数据21CollegeofCommunicationEng22CollegeofCommunicationEngineering,JilinUniversity获取指令:一个完整的CPU程序由指令序列构成,保存在程序存储器中。这些指令序列“依次”进入CPU执行下一条待执行的指令地址保存在PC寄存器(ProgramCounter,即程序计数器)中指令被取出后,PC更新指向下一条指令(见下页)PC:程序计数器22CollegeofCommunicationEng23CollegeofCommunicationEngineering,JilinUniversityPC–morethanincrementPC=addressPC=PC+offset当出现跳转或子程序调用时:ThePCisloadedwithanewvalue(PC=address)oradjustwithanoffset.(PC=PC+offset)当指令序列出现分支时,PC将不再是按序递增到相邻的下一条指令Quiz:这种情况什么时候会出现?For(;;)If….Else…..Case:Sub_routine();Return();中断进入和返回CodememoryPC变化:顺序、分支和循环23CollegeofCommunicationEng24CollegeofCommunicationEngineering,JilinUniversityPC–morethanincrementPC=addressPC=PC+offsetCodememoryHowtodothat?
stack堆栈此处的返回地址从何而来?…Putchar();….Putchar();…voidPutchar(){return();}PC变化:子程序调用、中断24CollegeofCommunicationEng25CollegeofCommunicationEngineering,JilinUniversity堆栈堆栈是一段连续的存储器空间,堆栈按照后入先出的方式工作(LastInFirstOut)只能向/从堆栈的顶部加入或取出数据堆栈能够保持数据的顺序堆栈有两种基本的操作方式:推入PUSH:将内容加入到堆栈顶端取出PULL:将堆栈顶端的内容取出对于大多数CPU而言,“顶端”是指低位的地址空间HighaddrLowaddrTOP0x100x110x120x130x10isthefirstpusheditem0x13isthelastpusheditem25CollegeofCommunicationEng26CollegeofCommunicationEngineering,JilinUniversity堆栈的作用CPU硬件使用堆栈来保存返回地址和寄存器上下文(registercontext)=》中断汇编程序可以使用堆栈来保存局部变量,寄存器值
C语言编译器使用堆栈来完成参数传递和返回值传递=》C语言的函数调用26CollegeofCommunicationEng27CollegeofCommunicationEngineering,JilinUniversityStackPointer-堆栈指针寄存器
堆栈顶端位置通过CPU内的堆栈指针寄存器确定
(SP,StackPointer)
堆栈指针的初始位置由程序代码确定,指向预先划定的堆栈空间的底部CodeWarrior自动生成的初始代码自己编写汇编引导代码如果要自己操作堆栈,记住:OncepushmustpullLastInFirstOut27CollegeofCommunicationEng28CollegeofCommunicationEngineering,JilinUniversity堆栈溢出堆栈空间和变量空间是使用同一端存储器空间变量空间从低地址向高地址划分(例如C语言编程时声明的全局变量)堆栈空间从高地址向低地址增长总大小终究是有限的……HighaddrLowaddrMemoryblockVariablesoccupiedstackoccupyIfthestackgrowstoo“deep”,itmayover-writesomecontentsinthevariablespace.Quiz:whatwillaffectthedepthofstack?28CollegeofCommunicationEng29CollegeofCommunicationEngineering,JilinUniversity8-BitAccumulatorsAandBIndexRegisterXIndexRegisterYStackPointerProgramCounteror16-BitDoubleAccumulatorD7715000000015151515PCSPYXDBA70EPAGE*70RPAGE*70PPAGE*60GPAGE*ConditionCodesRegisterCCRSXHINZVC7000000IPL2.2.3CPU的构成
——核心寄存器组29CollegeofCommunicationEng30CollegeofCommunicationEngineering,JilinUniversity
1、16位累加器D或8位累加器A和B
作用:保存操作数和运算结果2、16位变址(间接寻址)寄存器X和Y
作用:多种寻址方式下的地址计算8-BitAccumulatorsAandBor16-BitDoubleAccumulatorD7715000DBAIndexRegisterXIndexRegisterY001515YX2.2.3CPU的构成
——核心寄存器组30CollegeofCommunicationEng31CollegeofCommunicationEngineering,JilinUniversity3、16位堆栈指针SP
作用:数据指针,指向堆栈空间4、16位程序计数器PC
作用:StackPoint015SPProgramCounter015PC2.2.3CPU的构成
——核心寄存器组31CollegeofCommunicationEng32CollegeofCommunicationEngineering,JilinUniversity5、16位条件码寄存器CCR
:状态标志位Carry/Borrow(FromMSB)OverflowZeroNegative(MSB=1)ConditionCodesRegisterCCRSXHINZVC70I-InterruptMaskHalfCarry(ForBCD)X-InterruptMaskSTOPDisable00000IPLInterruptprioritylevelIPL(0~7)0:关中断2.2.3CPU的构成
——核心寄存器组32CollegeofCommunicationEng33CollegeofCommunicationEngineering,JilinUniversityCPU的构成
总结:1)算术逻辑运算单元ALU2)控制单元
3)核心寄存器堆registerfile33CollegeofCommunicationEngCollegeofCommunicationEngineering,JilinUniversity2.3存储器CollegeofCommunicationEngin35CollegeofCommunicationEngineering,JilinUniversity2.3.1基本存储空间2.3.2扩展地址空间2.3.3全局存储器映射2.3.4MC9S12XS128全局存储器映射2.3存储器35CollegeofCommunicationEng36CollegeofCommunicationEngineering,JilinUniversity程序代码变量、堆栈外设寄存器2KBEEPROM12KBRAM48KBFLASH复位、中断向量区2KBI/O空间$0000$0800$1000$4000$FFFF典型的64KB存储空间分配2.3.1基本存储空间基本地址线是16位,决定了基本寻址空间:216B=64KB采用小模式,整个应用程序都在64KB空间内寻址,指针变量16位,程序紧凑,代码效率高。36CollegeofCommunicationEng37CollegeofCommunicationEngineering,JilinUniversity2.3.2扩展地址空间1、S12X单片机寻址空间的扩展大多数控制应用8MB即可。223B=128x64KB=8MBS12XS中MMC(存储器映射控制模块)采用分页管理机制,将寻址空间由64KB(16位),扩展到8MB(23位)复杂应用64KB不够用,需要扩展37CollegeofCommunicationEng38CollegeofCommunicationEngineering,JilinUniversity1KBEEPROM1KBEEPROMMC9S12XS1288KBRAM16KBFLASH16KBFLASH复位、中断向量区2KBI/O空间$0000$0800$0C00$4000$FFFF$FF004KBRAM$2000$10002KB数据闪存8KBRAM128KBFLASH2KBI/O16KBFLASH$8000$C0002.3.2扩展地址空间典型的64KB存储空间分配38CollegeofCommunicationEng39CollegeofCommunicationEngineering,JilinUniversityGPage是7位寄存器(低7位有效)基本地址线16位+7位,达到23位,决定了扩展寻址空间是:223B=128x64KB=8MB2、全程地址寄存器GPage(地址:$10)(G:globle)
对GPage的理解:
GPage寄存器把8M寻址空间分成了连续的128个64KB的存储器块儿,当连续读/写超过64KB空间时,需要改变GPage的值,给寄存器加1或减1如:INCGPage。
2.3.2扩展地址空间39CollegeofCommunicationEng40CollegeofCommunicationEngineering,JilinUniversity访问8MB空间有专门指令:读指令:GLDAR,写指令:GSTARR代表CPU内部6个寄存器中任意一个:
A、B、D、X、Y和SPGLDAA,GLDAB,GLDD,GLDX,GLDY,GLDSGSTAA,GSTAB,GSTD,GSTX,GSTY,GSTS
全程读写指令中没有立即数寻址方式,其他寻址方式都和非全程指令相同。3、对扩展空间的连续寻址2.3.2扩展地址空间40CollegeofCommunicationEng41CollegeofCommunicationEngineering,JilinUniversity
访问:
LDAA#$AALDAB#$0FSTABGPAGE
GSTAA$E000
GLDAB$E000
在CodeWarrior的Memory窗口中,利用Address填写地址,形式为0FE000’G来观察存储单元的变化。实例:RAM全地址存取2.3.2扩展地址空间41CollegeofCommunicationEng42CollegeofCommunicationEngineering,JilinUniversity9S12XMC9S12XS128256KBEEPROM(4*64K)1022KBRAM(1M-2K)(16*64K)4MFLASH(64*64K)2KBI/O空间$00-0000$00-0800$7F-FFFF$40-0000$10-00008KB数据闪存8KBRAM128KB
FLASH2KBI/O768KB暂不用(12*64K)$14-0000$20-0000可外扩2M存储器(32*64K)$00-0000$0F-E000$7F-FFFF$10-1FFF$10-0000$7E-0000$0F-FFFF$00-0800
给连续存储空间分区2.3.3全局存储器映射42CollegeofCommunicationEng43CollegeofCommunicationEngineering,JilinUniversity8MB空间为程序空间分配了4MB,需22(8+14)位地址线。PPage是8位寄存器(8),4MB/256=16KB,即:256个闪存页面,每页16KB(14);S12XCPU默认有连续的48KB的寻址空间从0x4000~0xFFFF。S12X将地址0x8000~0xBFFF16KB开成一个闪存窗口,用PPage将64KB寻址空间外的某一个16KB替换进来。PPage=$FF,总是定位在$C000~$FFFF;PPage=$FD,总是定位在$4000~$7FFF;S12X128单片机片内有128KB闪存,PPage=$F8~$FF。S12X单片机复位时,PPage初值为$FE。1、闪存页面管理寄存器(PPage:$15)2.3.3全局存储器映射43CollegeofCommunicationEng44CollegeofCommunicationEngineering,JilinUniversity
8MB空间为数据闪存分配了256KB。EPage是8位寄存器,256KB/256=1KB,即256个闪存页面,每页1KB。S12XCPU默认有连续的2KB的寻址空间,从0x0800~0x0FFF。将地址0x0800~0x0BFF1KB开成一个闪存窗口,用EPage将2KB寻址空间外的某一个1KB替换进来。EPage=$FF,1KB的地址是从0x0C00~0x0FFF。S12X128单片机片内有8KB数据闪存,且只能用EPage访问,EPage=$00~$07。S12X单片机初始EPage=$FE,初始化时应修改EPage为$00~$07。2、数据闪存页面管理寄存器(EPage:$17)2.3.3全局存储器映射44CollegeofCommunicationEng45CollegeofCommunicationEngineering,JilinUniversity
8MB空间为RAM空间分配了1MB。RPage是8位寄存器,1MB/256=4KB,即256个RAM
页面,每页4KB。S12XCPU默认有连续的12KB的RAM寻址空间,从0x1000~0x3FFF。将地址0x1000~0x1FFF4KB开成一个窗口,用RPage将12KB寻址空间外的某一个4KB替换进来。$FD、$FE、$FF连成12KB空间,对应$1000~$3FFF。S12XS128片内只有8KBRAM,无需RPAGE管理。S12XS单片机复位时RPage=$FD,对S12XS128来说是个无效值,单片机初始化时应使RPage=$FE。3、RAM页面管理寄存器(RPage:$16)2.3.3全局存储器映射45CollegeofCommunicationEngMC9S12单片机原理及嵌入式应用开发技术第2章课件CollegeofCommunicationEngineering,JilinUniversity2.4并行IO口CollegeofCommunicationEngin48CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块I/O是和外部接口的最基本的手段(开关量);并行I/O通常在微控制器中将8个IO口合成一组,对应一个字节的数据;并行I/O通常是双向的,可以编程设置一组为输入或输出。少数情况下可以按位设置其输入或输出。部分引脚为单向;并行I/O引脚通常还和其他外设引脚复用MC9S12XS系列单片机的并行I/O11个并口(A、B、E、K、T、S、M、P、H、J、AD),配置方式分为两类;多数与其它模块复用引脚(SCI、SPI、PWM、CAN、AD);可以通过写寄存器配置其方向(输入或输出)、使能低功耗输出以及上拉或下拉电阻;48CollegeofCommunicationEng49CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块一、A、B、E、K口每个端口有8个I/O引脚,除了K口有7个I/O引脚;每个端口均有相同配置。数据方向寄存器
DDRA:$0002DDRB:$0003DDRE:$0009DDRK:$0033
按位控制:0->输入1->输出,复位后清0,默认为输入口数据寄存器
PORTA:$0000PORTB:$0001PORTE:$0008PORTK:$0032
按位输出或输入:0->低电平1->高电平49CollegeofCommunicationEng50CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块一、A、B、E、K口上拉控制寄存器(PUCR:$000C)
按位控制输入引脚的上拉电阻(与输出引脚无关):
0->上拉禁止1->上拉使能BKPUE:BKGD引脚内部电阻上拉控制50CollegeofCommunicationEng51CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块一、A、B、E、K口低功耗驱动寄存器(RDRIV:$000D)
按位控制输出引脚的功耗(与输入引脚无关):
0->正常功耗
1->正常功耗的1/55V供电时驱动能力相当于一个TTL晶体管,不能向外界提供功率,需要靠外部供电来驱动输出设备;51CollegeofCommunicationEng52CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块二、T、S、M、P、H和J口每个端口有8个I/O引脚,除了J口有4个I/O引脚;每个端口均有相同配置。数据方向寄存器
DDRT:$0242DDRS:$024ADDRM:$0252DDRP:$025ADDRH:$0262DDRJ:$026A
按位控制:0->输入1->输出,复位后清0,默认为输入口数据寄存器
PTT:$0240PTS:$0248PTM:$0250PTP:$0258PTH:$0260PTJ:$0268
按位输出或输入:0->低电平1->高电平52CollegeofCommunicationEng53CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块二、T、S、M、P、H和J口输入寄存器(检测端口状态,用于检测负荷超载或电路短路)PTIT:$0241PTIS:$0249PTIM:$0251PTIP:$0259PTIH:$0261PTIJ:$0269上下拉使能寄存器
PERT:$0244PERS:$024CPERM:$0254PERP:$025CPERH:$0264PERJ:$026C
按位控制输入引脚的上下拉电阻使能(与输出引脚无关):
0->上下拉禁止1->上下拉使能低功耗驱动寄存器
RDRT:$0243RDRS:$024BRDRM:$0253RDRP:$025BRDRH:$0263RDRJ:$026B
按位控制输出引脚的功耗(与输入引脚无关):
0->正常功耗
1->正常功耗的1/553CollegeofCommunicationEng54CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块二、T、S、M、P、H和J口上下拉选择寄存器
PPST:$0245
PPSS:$024D
PPSM:$0255
PPSP:$025D
PPSH:$0265
PPSJ:$026D
按位控制输入引脚的上下拉电阻选择(与输出引脚无关):
0->上拉电阻1->下拉电阻其它寄存器
WOMS($024E)
WOMM($0256)
按位控制输出引脚的输出驱动:
0->推拉输出
1->开漏输出
54CollegeofCommunicationEng55CollegeofCommunicationEngineering,JilinUniversity2.4并行I/O模块AD口16个I/O引脚;两倍的数据方向寄存器、数据寄存器、低功耗驱动寄存器和上拉使能寄存器;55CollegeofCommunicationEngCollegeofCommunicationEngineering,JilinUniversity第2章S12XS单片机内部结构CollegeofCommunicationEngin57CollegeofCommunicationEngineering,JilinUniversity2.1S12XS单片机性能2.2CPU的构成2.3存储器2.4并行I/O第2章S12XS单片机内部结构2CollegeofCommunicationEngiCollegeofCommunicationEngineering,JilinUniversity2.1S12XS单片机性能
CollegeofCommunicationEngin59CollegeofCommunicationEngineering,JilinUniversity2.1.1S12XS系列单片机内部模块InternalBusSCI1PWM8CHANECT12KSRAMHCS12CPUBKPINTMMICMBDMMEBI4KBYTESEEPROMSIMmsCAN3msCAN2msCAN1SCI0SPI2orPWMCH4-7msCAN0orBDLCmsCAN4orIICSPI1orPWMCH0-3SPI0PLLPIT256KFLASEEPROMCRGVREGPIMAD0AD12.1S12XS单片机性能4CollegeofCommunicationEngi60CollegeofCommunicationEngineering,JilinUniversity1.16位CPU2.内部RAM或ROM:3.A/D模块:16路8位、10位或12位;4.CAN模块:支持CAN2.0A、B两种协议,1Mbps;5.TIM模块:标准定时器,输入捕捉、输出比较6.PIT模块:4通道24位递减计数器7.PWM模块:8通道8位,或4通道16位,占空比可编程;8.串口模块:两个SCI,支持LIN协议;一个SPI;9.中断模块:最多20个带位中断的外部中断引脚,中断源细分为7级;10.时钟模块:可通过内部锁相环使片内总线速度提升到最高40MHz。2.1.2S12XS系列单片机主要功能模块2.1MC9S12XS单片机的性能5CollegeofCommunicationEngi2.1MC9S12XS单片机的性能2.1.3S12XS系列单片机引脚功能2.1MC9S12XS单片机的性能2.1.3S12XS系时钟,复位电源调试系列引脚1P17图2-2112LQFP封装时钟,复位电源调试系列引脚1P17图2-2112LQFPCollegeofCommunicationEngineering,JilinUniversity2.2CPU的构成
CollegeofCommunicationEngin64CollegeofCommunicationEngineering,JilinUniversity2.2CPU的构成2.2.1算术逻辑运算单元2.2.2控制单元2.2.3核心寄存器组
9CollegeofCommunicationEngi65CollegeofCommunicationEngineering,JilinUniversity单片机(微控制器)基本组成MCUStructureTheCPURegistersfile(寄存器组)Instructionlatch/decode/branch(指令)Stack(栈)Interrupt(中断)Clock/Reset(时钟/复位)Memoryperipheral10CollegeofCommunicationEng66CollegeofCommunicationEngineering,JilinUniversity单片机(微控制器)基本组成MCUStructureTheCPURegistersfile(寄存器组)Instructionlatch/decode/branch(指令)Stack(栈)Interrupt(中断)Clock/Reset(时钟/复位)
Memoryperipheral11CollegeofCommunicationEng67CollegeofCommunicationEngineering,JilinUniversityAcompleteCPU12CollegeofCommunicationEng68CollegeofCommunicationEngineering,JilinUniversityCPU–thecoreofmicrocontrollerTheCPUcontains:ArithmeticLogicUnit(算术逻辑单元)Registerfile(寄存器组)ControlUnit(控制单元)FloatpointprocessUnitCachemanagementMemoryManagementUnit
13CollegeofCommunicationEng69CollegeofCommunicationEngineering,JilinUniversity2.2.1CPU的构成
——算术逻辑单元ALUALU--ArithmeticLogicUnitPerformsarithmeticfunctionssuchasadd,subtract,multiply,dividelogicfunctionssuchasAND,OR,NOT,XORbitfunctionssuchshift,rotation4个要素Twoinputdata--operands(操作数)instruction
--operation(运算)Status--flag(标志位)oneoutputdata--result(运算结果)Quiz:下面几个操作中,4要素分别为?A+B=CA>B?A>>=114CollegeofCommunicationEng70CollegeofCommunicationEngineering,JilinUniversityFlag(标志位)在哪里?执行单元产生的标志通常放在一个专用寄存器中ConditionCodeRegister--CCRZ:zeroN:negativeO:overflowC:carry每执行一条指令,相应的状态位都会进行更新。每条指令影响到的状态位都是不一样的,需要查看芯片手册。CCR(ConditionCodeRegister,条件码寄存器)15CollegeofCommunicationEng71CollegeofCommunicationEngineering,JilinUniversity操作数(operands)在哪里?1:Registers寄存器用于临时保存/获取操作数任何CPU都包含若干通用/专用寄存器寄存器的数目和宽度是衡量CPU的重要指标
themoreandbiggertheregisterThebettertheCPU.
16CollegeofCommunicationEng72CollegeofCommunicationEngineering,JilinUniversity操作数(operands)在哪里?2:DataMemoryMemory并不是CPU的组成部分,对memory的访问要比对寄存器的访问慢很多17CollegeofCommunicationEng73CollegeofCommunicationEngineering,JilinUniversity运算结果存哪里?Generally,thesameastheoperands1:Registers18CollegeofCommunicationEng74CollegeofCommunicationEngineering,JilinUniversity运算结果存哪里?2:DataMemory19CollegeofCommunicationEng75CollegeofCommunicationEngineering,JilinUniversity
指令解析
:
分析该指令需要执行何种操作
数据流向
:
确定该指令用到的操作数来源和产生结果的去向.
寻址方式:计算机确定操作数或下一条要执行指令的地址的方法。LowaddrHighaddr2.2.2CPU的构成
——控制单元20CollegeofCommunicationEng76CollegeofCommunicationEngineering,JilinUniversity地址与存储的基本概念Instr.EInstr.DInstr.CInstr.BInstr.A0xA3360xA3370xA3340xA3350xA332…………也可能是程序代码一段存储空间……
请回忆一下C语言的变量和指针的概念?<-变量c(char)当前:c值为0xEF&c值为0x0001C语言语句:char*ptr;ptr=0x0003;*ptr=?Ptr->0x440x550x440x330xEF0x560x00040x00010x00020x00030x0000…………存储的是数据21CollegeofCommunicationEng77CollegeofCommunicationEngineering,JilinUniversity获取指令:一个完整的CPU程序由指令序列构成,保存在程序存储器中。这些指令序列“依次”进入CPU执行下一条待执行的指令地址保存在PC寄存器(ProgramCounter,即程序计数器)中指令被取出后,PC更新指向下一条指令(见下页)PC:程序计数器22CollegeofCommunicationEng78CollegeofCommunicationEngineering,JilinUniversityPC–morethanincrementPC=addressPC=PC+offset当出现跳转或子程序调用时:ThePCisloadedwithanewvalue(PC=address)oradjustwithanoffset.(PC=PC+offset)当指令序列出现分支时,PC将不再是按序递增到相邻的下一条指令Quiz:这种情况什么时候会出现?For(;;)If….Else…..Case:Sub_routine();Return();中断进入和返回CodememoryPC变化:顺序、分支和循环23CollegeofCommunicationEng79CollegeofCommunicationEngineering,JilinUniversityPC–morethanincrementPC=addressPC=PC+offsetCodememoryHowtodothat?
stack堆栈此处的返回地址从何而来?…Putchar();….Putchar();…voidPutchar(){return();}PC变化:子程序调用、中断24CollegeofCommunicationEng80CollegeofCommunicationEngineering,JilinUniversity堆栈堆栈是一段连续的存储器空间,堆栈按照后入先出的方式工作(LastInFirstOut)只能向/从堆栈的顶部加入或取出数据堆栈能够保持数据的顺序堆栈有两种基本的操作方式:推入PUSH:将内容加入到堆栈顶端取出PULL:将堆栈顶端的内容取出对于大多数CPU而言,“顶端”是指低位的地址空间HighaddrLowaddrTOP0x100x110x120x130x10isthefirstpusheditem0x13isthelastpusheditem25CollegeofCommunicationEng81CollegeofCommunicationEngineering,JilinUniversity堆栈的作用CPU硬件使用堆栈来保存返回地址和寄存器上下文(registercontext)=》中断汇编程序可以使用堆栈来保存局部变量,寄存器值
C语言编译器使用堆栈来完成参数传递和返回值传递=》C语言的函数调用26CollegeofCommunicationEng82CollegeofCommunicationEngineering,JilinUniversityStackPointer-堆栈指针寄存器
堆栈顶端位置通过CPU内的堆栈指针寄存器确定
(SP,StackPointer)
堆栈指针的初始位置由程序代码确定,指向预先划定的堆栈空间的底部CodeWarrior自动生成的初始代码自己编写汇编引导代码如果要自己操作堆栈,记住:OncepushmustpullLastInFirstOut27CollegeofCommunicationEng83CollegeofCommunicationEngineering,JilinUniversity堆栈溢出堆栈空间和变量空间是使用同一端存储器空间变量空间从低地址向高地址划分(例如C语言编程时声明的全局变量)堆栈空间从高地址向低地址增长总大小终究是有限的……HighaddrLowaddrMemoryblockVariablesoccupiedstackoccupyIfthestackgrowstoo“deep”,itmayover-writesomecontentsinthevariablespace.Quiz:whatwillaffectthedepthofstack?28CollegeofCommunicationEng84CollegeofCommunicationEngineering,JilinUniversity8-BitAccumulatorsAandBIndexRegisterXIndexRegisterYStackPointerProgramCounteror16-BitDoubleAccumulatorD7715000000015151515PCSPYXDBA70EPAGE*70RPAGE*70PPAGE*60GPAGE*ConditionCodesRegisterCCRSXHINZVC7000000IPL2.2.3CPU的构成
——核心寄存器组29CollegeofCommunicationEng85CollegeofCommunicationEngineering,JilinUniversity
1、16位累加器D或8位累加器A和B
作用:保存操作数和运算结果2、16位变址(间接寻址)寄存器X和Y
作用:多种寻址方式下的地址计算8-BitAccumulatorsAandBor16-BitDoubleAccumulatorD7715000DBAIndexRegisterXIndexRegisterY001515YX2.2.3CPU的构成
——核心寄存器组30CollegeofCommunicationEng86CollegeofCommunicationEngineering,JilinUniversity3、16位堆栈指针SP
作用:数据指针,指向堆栈空间4、16位程序计数器PC
作用:StackPoint015SPProgramCounter015PC2.2.3CPU的构成
——核心寄存器组31CollegeofCommunicationEng87CollegeofCommunicationEngineering,JilinUniversity5、16位条件码寄存器CCR
:状态标志位Carry/Borrow(FromMSB)OverflowZeroNegative(MSB=1)ConditionCodesRegisterCCRSXHINZVC70I-InterruptMaskHalfCarry(ForBCD)X-InterruptMaskSTOPDisable00000IPLInterruptprioritylevelIPL(0~7)0:关中断2.2.3CPU的构成
——核心寄存器组32CollegeofCommunicationEng88CollegeofCommunicationEngineering,JilinUniversityCPU的构成
总结:1)算术逻辑运算单元ALU2)控制单元
3)核心寄存器堆registerfile33CollegeofCommunicationEngCollegeofCommunicationEngineering,JilinUniversity2.3存储器CollegeofCommunicationEngin90CollegeofCommunicationEngineering,JilinUniversity2.3.1基本存储空间2.3.2扩展地址空间2.3.3全局存储器映射2.3.4MC9S12XS128全局存储器映射2.3存储器35CollegeofCommunicationEng91CollegeofCommunicationEngineering,JilinUniversity程序代码变量、堆栈外设寄存器2KBEEPROM12KBRAM48KBFLASH复位、中断向量区2KBI/O空间$0000$0800$1000$4000$FFFF典型的64KB存储空间分配2.3.1基本存储空间基本地址线是16位,决定了基本寻址空间:216B=64KB采用小模式,整个应用程序都在64KB空间内寻址,指针变量16位,程序紧凑,代码效率高。36CollegeofCommunicationEng92CollegeofCommunicationEngineering,JilinUniversity2.3.2扩展地址空间1、S12X单片机寻址空间的扩展大多数控制应用8MB即可。223B=128x64KB=8MBS12XS中MMC(存储器映射控制模块)采用分页管理机制,将寻址空间由64KB(16位),扩展到8MB(23位)复杂应用64KB不够用,需要扩展37CollegeofCommunicationEng93CollegeofCommunicationEngineering,JilinUniversity1KBEEPROM1KBEEPROMMC9S12XS1288KBRAM16KBFLASH16KBFLASH复位、中断向量区2KBI/O空间$0000$0800$0C00$4000$FFFF$FF004KBRAM$2000$10002KB数据闪存8KBRAM128KBFLASH2KBI/O16KBFLASH$8000$C0002.3.2扩展地址空间典型的64KB存储空间分配38CollegeofCommunicationEng94CollegeofCommunicationEngineering,JilinUniversityGPage是7位寄存器(低7位有效)基本地址线16位+7位,达到23位,决定了扩展寻址空间是:223B=128x64KB=8MB2、全程地址寄存器GPage(地址:$10)(G:globle)
对GPage的理解:
GPage寄存器把8M寻址空间分成了连续的128个64KB的存储器块儿,当连续读/写超过64KB空间时,需要改变GPage的值,给寄存器加1或减1如:INCGPage。
2.3.2扩展地址空间39CollegeofCommunicationEng95CollegeofCommunicationEngineering,JilinUniversity访问8MB空间有专门指令:读指令:GLDAR,写指令:GSTARR代表CPU内部6个寄存器中任意一个:
A、B、D、X、Y和SPGLDAA,GLDAB,GLDD,GLDX,GLDY,GLDSGSTA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贫困户利益联结协议书【股份分红】7篇
- T/ZHCA 015-2022化妆品紧致功效评价斑马鱼幼鱼弹性蛋白基因相对表达量法
- 2025西安医学院辅导员考试试题及答案
- 暑假绘画活动课件设计
- 2025玉柴职业技术学院辅导员考试试题及答案
- 2025绵阳城市学院辅导员考试试题及答案
- 2025福州外语外贸学院辅导员考试试题及答案
- 对外汉语课件设计框架
- 配合急救气管插管
- 推进爱国卫生七个专项行动
- 《装饰材料与施工》考试复习题库(含答案)
- 中小学生民法典主题班会-民法典宣讲课件
- 第一单元大单元教学设计(表格式) 2023-2024学年统编版语文八年级下册
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- 小学高段学生数学应用意识培养的实践研究 开题报告
- GB/T 17592-2024纺织品禁用偶氮染料的测定
- GA/T 2015-2023芬太尼类药物专用智能柜通用技术规范
- 唱片行业前景分析
- 新华DCS软件2.0版使用教程-文档资料
- 中职中国历史练习卷8
- 医美整形医院渠道合作协议样本
评论
0/150
提交评论