Freescale公司于2005年推出HCS12X系列单片机,该系列是HCS12系列的增强型产品,基于S12 CPU内核,可以达到25 MHz的HCS12的2~5倍的性能。S12X系列增加了172条指令,可以执行32位运算,总线频率最高可达40 MHz,并且改进了中断处理能力。
S12X系列单片机采用复杂指令集计算机(CISC)架构,集成了中断控制器,具有丰富的寻址方式。中断有7个优先级,并且内核支持优先级的调度,最多可以有117个中断源。
S12X系列单片机的最大特点是增加了一个并行处理的外围协处理器XGATE模块,它是一个独立于主处理器(S12XD)的可编程RISC内核。XGATE可作为一个高效的DMA控制器使用,能够自主地实现外设与RAM之间的高速数据传输,并在数据传送过程中灵活进行数据处理;XGATE也可作为一个单独的算法单元完成运算功能,如通信协议的实现;XGATE还可作为虚拟外设使用,如使用通用I/O口模拟串行通信口功能,或对简单的外设通过软件包装实现功能强大的个性化外设功能等。集成XGATE的目的就是在日益复杂的嵌入式系统中,减轻S12XD主处理器的负担,以增强系统的数据吞吐能力和应用功能设计的灵活性。
S12X系列单片机与S12系列单片机的主要区别如表2-2所示。
表2-2 S12X系列单片机与S12系列单片机的主要区别
XGATE模块大大提高了MCU处理应用程序的能力。通过承担中断源处理功能,从而降低了主处理器的负担,使得中断服务程序能够在XGATE中处理的同时,主处理器可以并行的处理其他应用程序。通过表2-2的比较,可以近似地认为S12X核的性能是S12的5倍。
在S12X系列中,中断控制器硬件产生的中断可以选择由XGATE或者S12XD主处理器来处理。XGATE对于任何中断的处理都会减轻主处理器的中断负荷,并且XGATE完全有能力响应整个中断。
从图2.1中可以看到,一个开关中断信号可以指向XGATE或者主处理器,如果指向XGATE,它就会执行所响应的中断服务程序;当程序执行完成后,等待下一个中断请求。另外有的寄存器可以使XGATE指向特殊的中断信号,并且中断优先级的等级可以设置为7个级别之一。如果有两个中断请求同时产生,则处理器就会根据中断级别的优先级高低来判断,优先级高的中断首先执行。这些中断等级在S12XD主处理器和XGATE中相同。
XGATE和主处理器完全一样,是一个支持C编译器的可编程内核。当中断源产生时,它开始运行;在完成中断任务以后,它会中止时钟工作等待下次事件发生,以降低功耗。
XGATE与主处理器之间可相互中断以进行同步。XGATE有一个特殊指令SIF,用于向主处理器提交中断。通常SIF为XGATE线程的最后一条指令,用以触发主处理器中断。在默认情况下,此时XGATE的中断矢量就对应于此前XGATE所处理的中断,故由SIF所触发的主处理器的中断服务程序通常不必查询中断源。
XGATE是一个协处理器,它可以直接使用,几乎可以直接进入所有的存储空间。XGATE的创新特点就在于它以独特的方式访问MCU内部RAM单元,通过交换总线功能,MCU的内部总线允许交叉进入RAM区。当主处理器全速执行时,它访问RAM只需半个时钟总线周期,XGATE可以在另外半个时钟总线周期访问RAM。若主处理器不进入访问RAM的周期内,则XGATE访问RAM的速度就会是主处理器访问RAM最高速度的两倍。
另外,XGATE有8个软件中断源。主处理器通过置位或清除XGATE的软件触发寄存器(XGSWT)中相应的位来触发或清除这8个中断源。需要注意的是,由于XGSWT属于片上外设寄存器,所以XGATE也可以通过XGSWT的位设置向自己发出中断信号。
图2.1 使用主处理器或者XGATE的中断响应过程
XGATE协处理器结构如图2.2所示,它具有以下基本特征。
图2.2 XGATE协处理器结构
XGATE是一个16位的精简指令集内核。内核拥有8个16位通用寄存器R0~R7,1个程序计数器PC,1个4位的条件码寄存器CCR。其中R0恒为0,可用于对变量的快速清零或置位。R1和R7有额外用途:XGATE响应中断时,硬件将中断向量表中对应通道的1个16位字装载到R1(通常用做数据指针),将栈指针装载到R7,如图2.3所示。
图2.3 XGATE编程模式
XGATE共有72条独立的指令,指令时钟最高可达100 MHz。XGATE的时钟速度总是主处理器总线速度的2倍。XGATE的大部分指令是对通用寄存器的操作,为单周期指令。访问存储器的指令为双周期指令。跳转指令视条件而定可能为1或2个周期指令。XGATE有一些特殊的比特提取及插入的单周期指令,特别适用于串行通信协议使用。
S12X的全局存储空间共有8 MB,XGATE可以访问其中片内的64 KB空间。这64 KB空间包括2 KB的片上外设寄存器,30 KB的片上闪存和最大32 KB的片内RAM。注意XGATE不能访问EEPROM空间或片外资源。XGATE的访问空间完全限制在主处理器内部访问空间范围内。地址仲裁的规则是主处理器的优先级总高于XGATE,如图2.4所示。
图2.4 XGATE全局地址映射图
XGATE的代码执行是由事件驱动的,这里的事件就是指中断。所谓事件驱动就是指由中断来触发XGATE运行。没有中断时,XGATE不执行任何指令,从而也没有功耗。可见XGATE的代码就是一组中断服务程序,没有主程序或空闲时的循环程序。XGATE的中断服务程序也称做线程。
主处理器与XGATE之间常用的通信方式是共享资源。由于这两个内核可以独立异步的访问内存及片上外设,就会产生数据完整性问题。为了保证共享数据的完整性,XGATE集成了8个硬件互斥信号量(Semaphore)。用户可以通过硬件信号量来同步两个内核对共享数据的访问。信号量有3种状态:释放、主处理器锁定和XGATE锁定。每个内核在访问共享资源前,应当首先锁定相应的信号量;在访问结束后应当释放相应的信号量。
相比于S12系列单片机而言,S12X系列单片机的型号目前还是较少的,S12X系列单片机目前有以下几个子系列:MC9S12XA系列、MC9S12XB系列、MC9S12XD系列、MC9S12XE系列、MC9S12XF系列、MC9S12XH系列和MC9S12XS系列。下面简要介绍几个子系列单片机的各自特点。
这三个系列的单片机是以低成本和低功耗为目的设计的,具有良好的电磁兼容性和高效的代码执行效率。MC9S12XA系列主要包括MC9S12XA256和MC9S12XA512两种型号的单片机,其中MC9S12XA512包含外部总线接口EBI,模块映像控制MMC功能,中断控制器INT,用于监控HCS12X CPU和XGATE总线活动的调试模块DBG和背景调试模式BDM功能,具有两个A/D模块,每个为12通道10位分辨率,具有4个独立暂停期限的定时器PIT,暂停期限可以在1~224总线时钟周期之间选择,同时还有CRG模块,具有低噪声/低功耗皮尔斯(Pierce)振荡器、PLL、COP监视器、实时中断、时钟监控器等功能。
MC9S12XB系列目前主要包括MC9S12XB128和MC9S12XB256两种型号的单片机。它们的总线频率均为33 MHz,该系列单片机与MC9S12XD系列单片机完全兼容,相比于S12XD系列而言,S12XB系列单片机精简了一些功能,并通过降低总线速率来减少成本。
MC9S12XE系列单片机与MC9S12XD系列单片机完全兼容,同时提高了系统的集成功能。MC9S12XE系列单片机工作频率为50 MHz,工作电压为3.3~5.5 V,包括一个存储器保护单元(MPU),用于防止软件执行过程中的系统错误。此外XGATE也得到了加强,频率可以达到100 MHz,同时与其他单片机上的XGATE模块也是兼容的。
MC9S12XF系列单片机除了包括其他一些S12X的共有功能外,还具有1个符合FlexRay协议V2.1的FlexRay控制器,FlexRay技术的引入使其网络性能得到大幅提升,FlexRay网络可用于车身、底盘和安全等领域应用。该系列目前主要包括MC9S12XFE128和MC9S12XFR128两种型号的单片机,工作频率可以达到38 MHz。
MC9S12XS系列单片机是高性能MC9S12XE系列单片机的经济性、高效性产品的补充,带有一套为汽车车身和乘客舒适度应用而优化设计的改进型片上外围设备、存储器等模块,可应用于汽车坐椅控制模块、空调控制模块、各种车身控制模块等的设计应用。