从MC9S12D到MC9S12XS
2009-04-29
作者:邵贝贝,薛 涛
摘 要: 从第四届全国大学生“飞思卡尔”杯智能车竞赛开始,竞赛组委会推荐使用MC9S12XS128单片机替代前三届竞赛中使用的MC9S12DG128。S12X是新一代双核单片机,制造工艺从0.25 μm进步到0.18 μm;总线频率从25 MHz提高到40 MHz;S12XS单片机保留了S12X CPU,去掉了另一个CPU-XGate,保留了技术进步,提高了性能,简化了操作。
关键词: 智能车竞赛;单片机;9S12DG;S12XS
从2006年开始的全国大学生智能车竞赛已经进行了3届。当时竞赛推荐使用MC9S12DG128单片机。原因是该竞赛在韩国已经举办过3届,使用的是MC9S12DP256。DG128单片机与DP256属同类单片机,性能方面略有改善。这两种单片机同属S12DG128D系列单片机,是2000年初期产品。仍按摩尔定律发展的半导体技术,使单片机的性能不断更新,推荐使用更新换代的单片机可以使学生的教学实践活动不断紧跟最新技术。
实际上,从S12到S12X单片机已经经历了一次里程碑式的技术发展,S12X单片机是双核单片机,该系列单片机在S12单CPU的基础上增加了另一个名为XGate的CPU。XGate是精简指令流(RISC)类型的CPU,和复杂指令流(CISC)结构的S12单片机性能互补。S12X系列单片机在其他性能方面也有很多改善。而含有XGate CPU的双核单片机也已经有二代产品,分别称为V1和V2内核。V1内核的XGate专门用于处理中断,V2的XGate还可承担其他任务。参考文献[1]对这种双核单片机做了详细介绍。
在1个硅片上集成了2个类型完全不同的CPU,使学习和掌握该类单片机的难度提高了不只一倍。对于处于嵌入式系统应用入门阶段的本科生,竞赛组委会不推荐使用双核单片机,虽然飞思卡尔公司表示也可以支持使用该类单片机。
S12XS单片机在双核单片机基础上去掉了XGate CPU,保留了其他方面的技术进步和性能提高,由于一些性能的改善,与S12单片机相比,开发难度不但没有增加,甚至有所降低,是大学本科同学学习嵌入式系统应用开发的更好范例。但作为教材,面前还没有正式出版物,这就要求参赛选手查阅参考文献[3]、[4]、[5]等原文资料。由于参赛选手多为嵌入式系统应用爱好者和佼佼者,这一过程有利于提高学生的能力,培养IT高手。
由于参考文献[2]已被很多大学选作教材,该教材已列为教育部十一五国家级规划教材,其新编版将以S12-XS128为范例,于2009年夏天出版。届时,采用S12DG-128教学的院校也可升级到S12XS单片机。
这里就新一代S12XS单片机较老一代产品性能方面的改进做一介绍,供参赛者参考。
1 全局线性寻址
为将程序存储空间扩展到大于64 KB,S12 CPU在64 KB空间内开了一个16 KB的窗口,通过页面管理寄存器PPage,根据需求不时调入不同存储页面,无法对整个寻址空间连续寻址。S12X的CPU在以同样方式管理RAM、EEPROM的基础上,又增加了一个全局寄存器,实现了对整个寻址空间的连续寻址。
图1给出了S12XS CPU 和S12 CPU 的区别,图中虚线描述的是S12X在S12 CPU基础上增加的寄存器。全局地址寄存器GPage是一个7位寄存器,使原来的64 KB寻址空间扩展了128倍,达到8 MB。若使用3 B地址对8 MB空间连续寻址,16位机需要2次读16位地址线。2次可读入32位地址,使用32位地址时,会多占用1倍存储器,16位机的优势就没有了。这里的解决办法是,增加几个专门指令对3 B地址(其中1 B是GPage的值)连续操作。
增加的指令使整个8 MB寻址空间变成一个整体。分读、写两类指令:
读指令:GLDAR
写指令:GSTAR
这里R表示CPU内部6个寄存器A、B、D、X、Y和SP中的一个。
指令形式为:
GLDAA,GLDAB,GLDD,GLDX,GLDY,GLDS
GSTAA,GSTAB,GSTD,GSTX,GSTY,GSTS
以GLDD指令为例,可以使用直接寻址、扩展寻址、寄存器间接寻址、带8位、16位偏移量的间接寻址、寄存器作为偏移量的间接寻址等几乎所有读写指令的寻址方式。表1是全程读指令GLDD 的代码形式、寻址方式、机器码和周期数。
用7位G寄存器,将存储空间分成128个64KB,称为存储器的128个64KB页面。用G寄存器$00~$7F表示的连续地址如下:
0x00_0000~0x00_0800 2 KB I/O地址空间
0x00_0800~0x0F_FFFF 16×64 KB-2 KB=1 MB-2 KB空间
0x10_0000~0x13_FFFF 4×64 KB=256 KB数据闪存空间
0x14_0000~0x1F_FFFF 12×64 KB=768 KB,暂不用
0x20_0000~0x3F_FFFF 可扩展外部2 MB存储器
0x40_0000~0x7F_FFFF 64×64 KB=4 MB程序闪存空间
2KB的I/O寄存器空间用于和输入输出模块打交道;1MB 的RAM区包括片内RAM和可能扩展的片外RAM;256 KB的EEPROM用于存放断电后仍需保留的数据;4 MB的闪存用于存放程序。
归纳起来,利用G寄存器,S12X单片机将存储空间扩展到4 MB闪存空间、1 MB RAM空间、256 KB非易失存储器空间和2 MB外扩存储器空间,I/O寄存器占用2 KB空间。
对于S12XS128单片机,片内可集成128 KB闪存,RAM为8 KB,数据闪存为8 KB。增加了8 KB D-Flash,分为8页,每页1KB用8个Epage页面控制,全局地址为:0x10_0000-0x10_1FFF,页面寄存器Epage 可取值0~7。增加的R寄存器对于S12XS单片机没有意义。
CPU条件码寄存器CCR由1 B增加为2 B。CCR高位即CCRH中的低3位为中断优先级位。S12的CPU在中断服务子程序中开中断则允许中断嵌套,有了CCRH中IPL的3个中断优先级位以后,将中断等级分为7级,7级最高,1级最低。高优先级中断可嵌套入低优先级中断,反之则不可嵌套。除了更高优先级的那些不可屏蔽中断以外,可以给所有I/O中断源定义中断优先级。如果不定义优先级的话,S12X CPU默认这些中断都为1级,即最低级中断。
2 新增CPU指令
X系列单片机将原来只有累加器A、B或D可进行的算术和逻辑运算指令扩展到X、Y寄存器也能进行。这些新指令包括:加、减和带进位借位加、减(ADD、 SUB和SBE、ADE);加、减1(INC、DEC);与、或和异或(AND、OR、EOR),位测试(BIT);求负、求反(NEG、COM);清零(CLR);寄存器测试(TST);算术右移和逻辑右移(ASR、LSL、LSR);循环左右移(ROL、ROR)。
S12X的累加器D则增加了扩展到32位的加、减运算指令,如ADED、SBED等。还增加了一套扩展比较指令,将C标志、Z标志扩展到32位数的比较,如CPED, CPEX, CPEY, CPES等。
不可中断的读-改-写指令原来是对字节的8位操作,在S12X系列CPU中扩展为16位操作。增加了16位的字节操作指令,如求负、求反、加减1、算术左右移、逻辑左右移。循环左右移、清零、位测试等等。如:NEGW,COMW,DECW,INCW,RORW,LSRW,ARSW,ROLW,LSLW,CLRW,TSTW。寻址方式与原有的8位操作的所有寻址方式相同。
另外,不通过CPU寄存器,从存储器直接到存储器的Move指令也由原来的单一寻址方式,扩展到所有寻址方式。
S12XS CPU不再支持模糊逻辑指令:模糊化指令MEM;模糊推理指令 REV, REVW;反模糊化指令WAV/WAVR。
3 A/D变换精度从10位提高到12位
S12XS单片机和S12D单片机都有1个16路的的AD变换模块。但S12XS的片内AD变换精度已经从10位提高到12位。用户在使用12位变换时,如果仍然直接用VDD来做AD变换的参考电压,可能达不到12位精度。为了实现12位精度的ADC,应该外接参考电压芯片。实验表明,在常温下,使用齐纳二极管做参考电压芯片就足够可以了。例如LM4040-4096可提供每个读数1 mV的精度,且12位ADC的最后一位也基本稳定,可以达到12位精度,但温度稳定性较差。如果在绝对测量中需要在环境温度有很大变化的情况下仍能有稳定的精度,可使用专门为高精度AD变换设计的3端稳压的参考电源芯片,可将参考电压稳定到万分之一量级精度。
4 闪存读写、容错与纠错
S12X系列单片机片内增加了存储管理控制器,使该系列单片机有容错与纠错功能。每个字节的存储都增加了一个校验位。而CPU对存储器的读取方式为一次读入8个字节,可实现2维校验。当发现这8个字节中有一位出错时,存储管理控制器可自动将该位纠正。当发现有2位出错时,则会产生一个中断,通知CPU采取措施。存储管理控制器还简化了写闪存的步骤。存储管理控制器通过命令寄存器和用户程序打交道,用户写=对闪存编程时,向存储管理控制器写命令字后,在将拟写入的8个字节以4个字的方式连续写入即可。比原来的S12单片机简单了许多。同样,擦除闪存时,主要向存储管理控制器发擦除命令即可。擦除方式可以是一个扇区、一个存储块或全部。S12X系列单片机的EEPROM实际上也是闪存,称为数据闪存。读写、容错、纠错同程序闪存,仅数据块大小和组织有所不同。
5 其他性能改进
增加了一个片内温度传感器,当单片机片内晶体管节温过高时,向CPU发出中断请求。用户需要使用该温度传感器时,只需将其配置到16通道AD变换器的通道0,作为第17路AD即可。
MC9S12XS128单片机较过去采用的MC9S12DG128单片机性能方面有很多改进,速度更快、AD精度更高,增加了CPU寄存器和指令,可实现大存储空间的线性寻址,闪存操作简化,使用更方便。容错纠错功能及片内温度传感器可提高控制系统可靠性,较S12DG128总体性能上有很大提高,是当前Freescale最先进的单核16位单片机。
即便是S12DG128,在大学生车模竞赛中也仅用到单片机资源中很有限的一部分。为不加重竞赛成本,旧的S12DG128仍可使用。特别是,由于S12XS系列单片机不再支持模糊控制指令,需要使用模糊算法的选手,使用S12DG128仍有优势。
参考文献
[1] 邵贝贝,宫辉.嵌入式系统中的双核技术.北京航空航天出版社,2008.
[2] 邵贝贝.单片机嵌入式应用的在线开发方法.清华大学出版社,2004.
[3] Steve mcAslan S12 and S12XD family compatibility,Freescale Semiconductor AN2615.
[4] Lela garofolo using the S12XE family as a development platform for the S12XS family.
[5] MC9S12XS256 Reference Manual,Freescale.