1概述
美国Freescale公司在推出S12D系列16位单片机后,再次推出了功能更强大的S12XD系列16位单片机。其中,包括MC9S12XD64、MC9S12XDP512、MC3S12XDT256、MC3S12XDG128等。
在处理多任务技术方面,S12XD系列相对16位的S12D系列更具优势,其表现像32位机一样。S12XD系列仍然保持着原来颇受欢迎的16位S12D系列MCU的低价格、低功耗、卓越的EMC和有效编码长度的优势。
S12XD系列的主要特点是增加了XGATE协处理器。具体来讲,XGATE其实就是一个可用C语言编程的,拥有最优化的数据传输、逻辑以及位操作指令的指令系统。由于在外部模块、RAM和I/O口之间提供了一个高速数据传输通道,其工作频率可达到S12D系列的CPU下载总线频率的2倍。在CPU进行多总线加载数据传输时执行一个中断处理加载的情况下,XGATE就会表现出其优势。
2XGATE的总体功能及主要特性
2.1XGATE的总体功能
当前对许多嵌入式系统的一个挑战是在非常短的运行时间内同时执行一系列的重要任务。直接存储器存取模块(DMA)提供的解决方案是,通过硬件控制使数据利用中断源来自动地读或写。但是,这种方案中在等候下个中断到来之前通常DMA只执行读或写指令,其功能就会被限制。在嵌入式系统中,这样的中断事件经常会介入其他的逻辑处理。譬如在把数据移动到最终目的地之前,要介入确认信号或对数据进行修正的处理。因而,一个以DMA支持的中断经常只能做一部分工作,CPU 会被预留出一部分来通过中断主程序来完成这些任务。这样,中断处理就使CPU 在其他功能的表现方面减弱了。另外,还要有精确的时间要求来保证在系统正常运行的同时来处理复杂的应用程序。
XGATE就是为了提高应用反应速度和减少主CPU的中断负荷而产生的,通过中断程序的执行以达到与CPU同时运行的目的。那么XGATE可以用来做什么呢?XGATE被定位于快速中断处理,可以减少CPU进行中断处理的负荷。
多数嵌入式应用都要求许多中断程序来处理简单的功能,处理器经常以高速率执行任务。通常这些是与接口功能相联系的,如调速控制器控制反馈及系统与其他部分的通信。XGATE 就是用来帮助CPU处理这些事件的。
XGATE的一个重要的特点就是它的设置虽然非常简单,但却允许开发复杂程序。XGATE优于一个智能的DMA控制器,因为它提供一个复杂I/O处理的能力。当XGATE与CPU12X核一起使用时,有一些限制需要考虑,但是不会对XGATE所设计的功能产生影响。
XGATE为应用提供了更高级别的中断,通过分担一些服务程序来缩短CPU的工作时间和进程。
2.2XGATE的主要特性
◆ XGATE是一个协处理器,它可以像主CPU一样进入并且控制外围设备;
◆ 从中断出来后的反应时间短;
◆ 在进入同一个存储空间前,XGATE要等待主CPU释放这一空间的所有存储器;
◆ 当用于较短程序时,XGATE可以提供最好的应用方式;
◆ XGATE只在运行时消耗电源;
◆ XGATE可以实现完成多数通常在主CPU上的功能或者程序,与以前的S12D CPU比较,具有更为强大的处理数据能力。
XGATE很灵活,使用者可以通过这个低功耗的双核处理器为开发创造新的环境。
2.3XGATE与主CPU的关系
中断控制器硬件产生的中断可以选择由XGATE或者S12XD CPU来处理。XGATE处理的任何中断都会减轻主CPU的中断负荷,并且XGATE完全有能力来处理整个中断。
从图1中可以看到,一个开关中断信号可以指向XGATE或者CPU。如果指向XGATE,它就会执行所要求的程序;当程序完成后,等候下个请求。还能看到有的寄存器可以使XGATE指向一个特殊的中断,并且中断优先权的等级被设置到7个级别当中的一个。如果有2个中断请求同时产生,则处理器就会根据中断级别的高低来判断,最高最重要的中断首先执行。这些中断等级在S12XD CPU和XGATE中是相同的。
图1用CPU或者XGATE的中断路径
XGATE和CPU完全一样,是一个支持C编译器的可编程的核。当中断源到来时,它开始运行;在完成中断的任务以后,它会停下来其所有时钟等候下次事件,以此减少电源消耗。
XGATE是一个协处理器。它可以直接使用,几乎可以直接进入所有存储空间。XGATE的创新特点就在于它以独特的方式连接到MCU所自带的RAM上。通过交换总线,MCU的内部总线允许交叉进入RAM区。当主CPU全速执行时,访问RAM只需一半时间,XGATE得以在另外半个时钟总线周期进入RAM。所以若主CPU不进入RAM的周期内,则XGATE访问RAM的速度就会是CPU最高速度的2倍。
3XGATE应用及其工作原理
3.1多通道PWM
脉冲宽度调制(PWM)在很多I/O引脚上被MCU的物理硬件很严格地限制了,或者说如果需要更多的PWM信号就必须使用软件来驱动这些脉冲。当需要一个在输出上实现低功耗的过滤,或者引发中断时,通常想要一个PWM短周期信号,它就会在主CPU上有很高的占用率。XGATE可以将CPU的占用状态完全移除,并且可以通过一个单一的硬件定时器运行产生多通道的PWM,这样可以使MCU源的应用更有效率。在很多的实际应用中,相关的PWM信号产生就是利用了定时器来产生所需要的PWM波形。
3.2串行通信协议处理
XGATE的另外一个重要功能就是串行通信。这里会接收到含有比较标示符的信息,然后数据会被送到存储器中的一个适当的区域,这些都是由匹配的标识符和负载数据决定的。
3.3CAN网关
CAN网关在工业系统中经常遇到的典型形式就是具有2个CAN网络拓扑。XGATE就可以帮助CPU来实现这个双CAN网络的功能。
XGATE可以通过查表提供100%软件过滤。在每100 μs接收一帧信息(每帧信息包括8字节和29位标识符)的情况下,对8位或者16位MCU来说,这个双CAN网络拓扑结构的控制是非常重要的。XGATE可以降低CPU的加载率,CPU处理258字节编码时就近似于零加载。对于一个6字节数据的CAN信息, XGATE处理每帧编码大约需要3 μs,最坏的情况下CPU加载率只有6%。
3.4积分编码
很多电机控制应用需要从位置和速度传感器得到连续输入的信号。对于体积小、速度快的电机,积分编码可以提供位置反馈,并且可以产生每秒几万个脉冲。如要保持CPU没有加载,则由XGATE完成该任务,它可以处理两个传感器中的一个中断事件,并提供方向和位置信息。第3个传感器可以为转动参考点提供一个索引信号。每次读2个传感器输入任务时会有一个中断,并且根据后来输入状态执行单一向前或者向后计算,用XGATE时只花很少的时间就可以完成这个任务(执行程序所用时间少于0.5 μs)。这是一个理想的表现XGATE特性的例子。
3.5同步串行通信
对于一些串行通信,XGATE可以提供简单的驱动功能。SPI(同步串行通信)在主机模式下操作是很容易完成的,时钟和数据都可以由XGATE驱动,并且只对一个定时器提供波特率信息。
XGATE也还可以设置SPI从机操作,典型的操作包括在MOSI口收集数据和在MISO口输出数据,每次传输都会在SCLK上接收到时钟信号。从机SPI执行必须注意,由于错过半周期时钟沿而产生错误的读操作会导致向SPI主机返回的数据错误。
3.6异步串行通信
与SPI一样,XGATE可以通过直接对口进行位操作或者通用异步收发报机来控制软件SCI。这个与最初的同步通信功能相似,当然,临界位的时钟边沿是不一样的。在异步串行通信中XGATE编码是被严格限制的(波特率最大值通常是19 200 b/s)。在最大反应时间情况下必须保持位波特率的20%和总体的2%,也就是每10.4 μs对每位采样或设置一次。虽然位处理时间是允许变化的,但是在19 200 b/s的波特率下就不会在发送和接收正确的8位数据上产生冲突。
XGATE编码发送SCI数据需要由一个比较定时器产生的2个定时值:一个是位周期;另一个是断点检测时间,通常为多个位周期时间。传输1位的程序非常短,只需要设置输出状态和改变位的指针。接收数据要求用位周期时间对中间通道进行采样,这样就会和以前的中断分开,就像进入了另一个XGATE中断,使中断率加倍。此外,这个程序很短,在最坏的情况下中断之间(发送/接收,波特率为19 200 b/s)的间隔是26 μs;在XGATE的时钟程序的影响下(波特率为19 200 b/s),SCI数据的接收和发送之前,允许程序用大约36 μs执行(允许延时26+10.4 μs)。
这是一个当XGATE程序加入后,如何满足最大延时并允许其他程序执行的很好的例子。
3.7LIN协议处理
本地互连网(LIN)协议在汽车控制方面有广泛应用,其主要作用是作为CAN的展开,但是现在也开始在其他非汽车应用领域中流行起来。
LIN和SCI外部设备一样,都是按字节控制数据的。在LIN中,XGATE可以处理传输数据、缓冲器接收数据中断和数据排队的协议。
XGATE执行213字节长的协议程序,执行时每字节只要0.9 μs。在双字节加载数据时,80 Hz的频率下处理双字节LIN信息只用了XGATE执行能力的0.66%。
3.8排队管理
对外部设备的排队管理可以使主CPU进行有意义的加载。一些MCU体系结构根据排队选择外部设备来减少在CPU上的加载。XGATE可以根据使用者的要求提供此项功能。
结语
S12XD系列16位微处理器是较高端的车载型单片机,应用很广泛。它的众多优势中最大、最有特色的就是XGATE的加入。XGATE作为一个独立于CPU的协处理器对于整个芯片的作用很大。在处理中断方面XGATE可以实现很强大的功能,可以大量降低主CPU的加载率,让数据传输更顺畅。在访问RAM方面XGATE也有其自己的优势,在实际应用中必然会受到大家的重视。但是就现在而言,双核技术还是属于一项新技术,在很多方面的应用还是需要大家共同探索的。