您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > MC9S12DG128的结构与工作原理
基于HCS12的嵌入式系统设计合肥工业大学吴晔,张阳,滕勤《基于HCS12的嵌入式系统设计》第2章MC9S12DG128的结构与工作原理本章内容MC9S12DG128的内部结构MC9S12DG128引脚功能MC9S12DG128的运行模式MC9S12DG128的存储器组织《基于HCS12的嵌入式系统设计》概述MC9S12DG128的内核是16位中央处理单元CPU12,有29个独立的数字I/O口(A、B、K和E),20个独立的数字I/O口(H、P、J)具有中断和唤醒功能。MC9S12DG128内部为16位数据通道,外部总线可以按照8位数据窄总线模式操作,允许与8位数据总线的存储器连接,以降低成本。根据系统需求,PLL电路允许调整电源功耗及性能。《基于HCS12的嵌入式系统设计》概述MC9S12DG128主要特性:16位HCS12CPU内部存储器•128KBFlash•8KBRAM•2KBEEPROM《基于HCS12的嵌入式系统设计》概述外围设备•2个增强型串行通信接口(SCI)•2个串行外设接口(SPI)•3个MSCAN模块•1个I2C总线接口•2个8通道10位A/D•8通道16位增强型捕捉定时器(ECT)•8通道8位或4通道16位PWM《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构MC9S12系列单片机的芯片主要有两种封装形式,即80脚的QFP(QuadFlatPack)和112脚的LQFP(LowprofileQuadFlatPack),个别子系列还有其它封装形式,如48脚。由于各子系列中的存储器类型、容量和功能模块不完全相同,因此,不同芯片之间引脚功能略有差异,引脚标号不一定兼容。但在每个子系列中,例如,所有128kBFlash的MC9S12D系列的单片机,功能相同的引脚都兼容。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构图2.1MC9S12DG128内部结构框图LQFP112封装引脚图QFP80封装引脚图《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构图2.1为MC9S12DG128的内部结构框图,其中功能模块按照112引脚封装给出。MC9S12DG128单片机的112个引脚中,除了地址、数据、控制三总线外,主要是I/O引脚,多数引脚具有两种或两种以上的功能。图中左、右两部分分别是单片机的核心和接口部分,包括CPU12、存储器、通用I/O、电压调整模块、后台调试模块、系统运行监视模块、时钟产生模块、系统集成模块、外部总线接口、A/D转换器、增强型捕捉定时器模块、脉宽调制模块、串行通信接口、CAN总线接口、Byteflight接口、字节数据链路通信接口和管脚中断逻辑。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)中央处理单元CPU(CentralProcessingUnit)CPU执行68HC12CPU指令集结构,用3级指令队列来提升代码执行效率。中断逻辑INT(Interrupt)INT子模块与CPU相互配合来提供2~122个具有控制位I的可屏蔽中断矢量(配置在系统集成模块内)、1个具有控制位X的可屏蔽中断矢量和2个非屏蔽中断矢量、3个复位矢量,处理可服务的中断,从等待或停止模式唤醒系统。模块映射控制MMC(ModuleMappingControl)MMC子模块控制着地址空间映射,产生存储器选择和外设选择(由IP总线译码)以及多路复用地址和数据信号。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)多路复用外部总线接口MEBI(MultiplexedExternalBusInterface)MEBI子模块作为4个8位端口(A、B、E、K)的外部总线控制器,完成操作模式的解码和内核初始化。断点BKP(Breakpoint)BKP子模块通过提供硬件断点来参与软件调试。BKP支持双地址和全断点模式,分别与两个地址或一个地址与数据的组合匹配,启动软件中断SWI(SoftwareInterrupt)或使系统进入后台调试模式。BKP子模块还分别在特定的指令中断前或匹配后第一个指令边界处,支持加标记的或强制的断点。后台调试模式BDM(BackgroundDebugMode)BDM子模块为片上硬件提供了由内核实现的单线后台调试通信系统,并可作为开发系统主机的单线串行接口。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构图2.4内核框图这些子模块提供了一种紧密耦合的结构,以使集成在片上的系统运行效率最大化。典型的片上系统SoC(System-on-Chip)的内核如图2.4所示,内核通过IP总线与系统外设接口,内核与片上存储器模块之间通过内核接口信号或者借助于STAR总线通信,与系统外部存储器的接口由MEBI子模块和连接到内部的相应端口逻辑提供。2.1.1CPU12内核(StarCore)《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构图2.5内核接口信号2.1.1CPU12内核(StarCore)《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)CPU12内部结构【组成】算术逻辑运算单元ALU、CPU控制逻辑电路、CPU寄存器和指令队列。内部采用16位数据总线,各部件通过内部总线相连,外部数据总线8/16位可选。(1)20位的ALU部件——完成指令所规定的算术/逻辑运算等操作。(2)控制逻辑——负责解释指令和产生相应的控制信号,并统一协调各部件的工作。(3)寄存器组——用于存储操作数或运算结果。(4)3级指令队列——用来缓冲程序信息。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)CPU12内部寄存器CPU12的寄存器集——基于累加器,包括5个16位的寄存器和一个8位的状态寄存器。其中,累加器D又可分成两个8位的寄存器A和B,16位寄存器D、X、Y通常用于暂存数据或存储器地址;SP为堆栈指针,用于指示堆栈的位置;PC为程序指针,用于寻址程序代码;条件码寄存器CCR用来反映运算结果的特征,也控制CPU的行为。图2.6编程模型(ProgrammingModel)《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)(1)累加器D累加器D是一个16位寄存器,其高位和低位字节分别称为寄存器A和寄存器B,可分别作为两个8位寄存器进行访问。实际上,D和A、B指向同一个寄存器,只是名称不同而已,A、B、D均可称为累加器。在任何时刻都可以使用8位或16位方式对累加器进行访问。若把一个16位数据存入累加器D中,则高8位在A寄存器中,低8位在B寄存器中。与此相对应,若把D寄存器中的一个16位数据存入存储器,则高8位在存储器的低位地址,低8位在存储器的高位地址。注意,任何Motorola(Freescale)公司独立设计的16位、32位CPU中,寄存器与存储器字节的对应关系都是高位数据存放于低位地址,低位数据占用高位地址,这与Intel公司的CPU数据存放格式正好相反。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)(2)间址/变址寄存器(IndexRegister)X、YCPU12内部有两个16位地址寄存器IX和IY,称为间接寻址寄存器,简称间址寄存器或变址寄存器。一般情况下作为指针寄存器,用于多种寻址方式下的地址计算,也可用于临时存放数据或参与一些运算,只能按照16位方式访问。在汇编语言中,这两个寄存器进一步简称为寄存器X和寄存器Y。在数据块传送时,X和Y寄存器都可以自动加、减1~16,X寄存器常作为源地址指针,Y寄存器常作为目的地址指针,故X和Y寄存器也称作指针寄存器。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)(3)堆栈指针SP(StackPointer)堆栈——在内存中专门开辟出来的、按照“先进后出,后进先出”原则进行存取的区域。堆栈指针SP——用来专门指示堆栈位置。在使用堆栈之前,要先给SP赋值,以规定堆栈的起始位置,称为栈底。当数据存入堆栈后,堆栈指针的值将随之变化。最后一个入栈的数据所在的位置(单元)称为栈顶。通常,CPU的堆栈有两种类型:向上生长型和向下生长型。如图2.7所示。图2.7堆栈的类型《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)向上生长型堆栈——栈底占用较低地址,栈顶占用较高地址。数据压入堆栈时,SP的内容自动加1,作为本次进栈的地址,然后再存入信息。随着数据的存入,SP的值越来越大。数据从堆栈弹出后,SP的内容自动减1。向下生长型堆栈——栈底占用较高地址,栈顶占用较低地址。CPU12的堆栈属于向下生长型,将一个字节数据压入堆栈时,SP自动减1。从堆栈中弹出一个字节数据时,SP自动加1。若操作数为双字节,则SP每次加2或减2。因此,随着数据的存入,SP的值越来越小。SP总是指向最后压入堆栈的一个字节数据,称为实栈顶。压栈操作时,先调整指针(减1或减2),后保存数据。初始化时,一般将SP指向与栈底相邻的单元,它不属于栈底,以此表示堆栈为空。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)SP主要用于堆栈管理,用于中断和子程序调用时保存系统地址信息,也可以存储临时信息,一般不做他用。在不影响其内容的前提下,也可替补用作所有变址寻址方式下的变址寄存器,通常不参与运算。惟一例外的是,在符号扩展指令中用作目的寄存器。此外,还具有自身的加、减1指令。影响SP内容的指令有加载、目的操作数为SP的寄存器传送指令、压栈、退栈、加减1、中断和子程序调用等。使用堆栈前,用户程序必须对SP进行初始化设置。复位时SP=$00FF。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)(4)程序计数器PC(ProgramCounter)16位程序计数器PC的内容决定程序执行的顺序,用户可以读取,但不能直接写入。因为要自动寻址复位矢量,复位后PC自动回到默认状态。单片机工作时,PC始终指向指令序列中下一条要执行的指令,分支、调用或转移指令均能改变PC的值。PC是特殊的寄存器,它决定CPU的取指地址,因此不能挪作他用,但可以像SP一样,在大多数变址寻址方式下作为变址寄存器,只是不能用在自动增减地址的变址寻址操作中。PC主要是直接为CPU服务,对于用户程序来讲,PC不能参与任何运算,唯一的作用是辅助进行变址寻址操作。《基于HCS12的嵌入式系统设计》2.1MC9S12DG128的内部结构2.1.1CPU12内核(StarCore)(5)条件码寄存器CCR(ConditionCodeRegister)条件码寄存器是一个8位寄存器,相当于标志寄存器FR或程序状态字PSW(ProgramStateWord),但不同的是,它还可以参与控制CPU的行为。条件码寄存器中各位的定义:CCR中的各位包括两部分:5个算术特征位(ArithmeticFlagBit),即H、N、Z、V、C,它们反映上一条指令执行结果的特征(状态);3个MCU控制位,即中断屏蔽位X、I和STOP指令控制位,这3位通常由软件设定,以控制CPU的行为。复位后,X、I两位默认状态为1,屏蔽系统中断。CCR是真正的专用寄存器,除了C、H位以外,其他各位不参与任何运算。《基于HCS12的嵌入式系统设计》2.1
本文标题:MC9S12DG128的结构与工作原理
链接地址:https://www.777doc.com/doc-6800289 .html