1 概 述
美國(guó)Freescale公司在推出S12D系列16位單片機(jī)后,再次推出了功能更強(qiáng)大的S12XD系列16位單片機(jī)。其中,包括MC9S12XD64、MC9S12XDP512、MC3S12XDT256、MC3S12XDG128等。
在處理多任務(wù)技術(shù)方面,S12XD系列相對(duì)16位的S12D系列更具優(yōu)勢(shì),其表現(xiàn)像32位機(jī)一樣。S12XD系列仍然保持著原來(lái)頗受歡迎的16位S12D系列MCU的低價(jià)格、低功耗、卓越的EMC和有效編碼長(zhǎng)度的優(yōu)勢(shì)。
S12XD系列的主要特點(diǎn)是增加了XGATE協(xié)處理器。具體來(lái)講,XGATE其實(shí)就是一個(gè)可用C語(yǔ)言編程的,擁有最優(yōu)化的數(shù)據(jù)傳輸、邏輯以及位操作指令的指令系統(tǒng)。由于在外部模塊、RAM和I/O口之間提供了一個(gè)高速數(shù)據(jù)傳輸通道,其工作頻率可達(dá)到S12D系列的CPU下載總線頻率的2倍。在CPU進(jìn)行多總線加載數(shù)據(jù)傳輸時(shí)執(zhí)行一個(gè)中斷處理加載的情況下,XGATE就會(huì)表現(xiàn)出其優(yōu)勢(shì)。
2 XGATE的總體功能及主要特性
2.1 XGATE的總體功能
當(dāng)前對(duì)許多嵌入式系統(tǒng)的一個(gè)挑戰(zhàn)是在非常短的運(yùn)行時(shí)間內(nèi)同時(shí)執(zhí)行一系列的重要任務(wù)。直接存儲(chǔ)器存取模塊(DMA)提供的解決方案是,通過(guò)硬件控制使數(shù)據(jù)利用中斷源來(lái)自動(dòng)地讀或?qū)?。但是,這種方案中在等候下個(gè)中斷到來(lái)之前通常DMA只執(zhí)行讀或?qū)懼噶?,其功能就?huì)被限制。在嵌入式系統(tǒng)中,這樣的中斷事件經(jīng)常會(huì)介入其他的邏輯處理。譬如在把數(shù)據(jù)移動(dòng)到最終目的地之前,要介入確認(rèn)信號(hào)或?qū)?shù)據(jù)進(jìn)行修正的處理。因而,一個(gè)以DMA支持的中斷經(jīng)常只能做一部分工作,CPU會(huì)被預(yù)留出一部分來(lái)通過(guò)中斷主程序來(lái)完成這些任務(wù)。這樣,中斷處理就使CPU在其他功能的表現(xiàn)方面減弱了。另外,還要有精確的時(shí)間要求來(lái)保證在系統(tǒng)正常運(yùn)行的同時(shí)來(lái)處理復(fù)雜的應(yīng)用程序。
XGATE就是為了提高應(yīng)用反應(yīng)速度和減少主CPU的中斷負(fù)荷而產(chǎn)生的,通過(guò)中斷程序的執(zhí)行以達(dá)到與CPU同時(shí)運(yùn)行的目的。那么XGATE可以用來(lái)做什么呢?XGATE被定位于快速中斷處理,可以減少CPU進(jìn)行中斷處理的負(fù)荷。
多數(shù)嵌入式應(yīng)用都要求許多中斷程序來(lái)處理簡(jiǎn)單的功能,處理器經(jīng)常以高速率執(zhí)行任務(wù)。通常這些是與接口功能相聯(lián)系的,如調(diào)速控制器控制反饋及系統(tǒng)與其他部分的通信。XGATE就是用來(lái)幫助CPU處理這些事件的。
XGATE的一個(gè)重要的特點(diǎn)就是它的設(shè)置雖然非常簡(jiǎn)單,但卻允許開(kāi)發(fā)復(fù)雜程序。XGATE優(yōu)于一個(gè)智能的DMA控制器,因?yàn)樗峁┮粋€(gè)復(fù)雜I/O處理的能力。當(dāng)XGATE與CPU12X核一起使用時(shí),有一些限制需要考慮,但是不會(huì)對(duì)XGATE所設(shè)計(jì)的功能產(chǎn)生影響。
XGATE為應(yīng)用提供了更高級(jí)別的中斷,通過(guò)分擔(dān)一些服務(wù)程序來(lái)縮短CPU的工作時(shí)間和進(jìn)程。
2.2 XGATE的主要特性
◆XGATE是一個(gè)協(xié)處理器,它可以像主CPU一樣進(jìn)入并且控制外圍設(shè)備;
◆從中斷出來(lái)后的反應(yīng)時(shí)間短;
◆在進(jìn)入同一個(gè)存儲(chǔ)空間前,XGATE要等待主CPU釋放這一空間的所有存儲(chǔ)器;
◆當(dāng)用于較短程序時(shí),XGATE可以提供最好的應(yīng)用方式;
◆XGATE只在運(yùn)行時(shí)消耗電源;
◆XGATE可以實(shí)現(xiàn)完成多數(shù)通常在主CPU上的功能或者程序,與以前的S12D CPU比較,具有更為強(qiáng)大的處理數(shù)據(jù)能力。
XGATE很靈活,使用者可以通過(guò)這個(gè)低功耗的雙核處理器為開(kāi)發(fā)創(chuàng)造新的環(huán)境。
2.3 XGATE與主CPU的關(guān)系
中斷控制器硬件產(chǎn)生的中斷可以選擇由XGATE或者S12XD CPU來(lái)處理。XGATE處理的任何中斷都會(huì)減輕主CPU的中斷負(fù)荷,并且XGATE完全有能力來(lái)處理整個(gè)中斷。
從圖1中可以看到,一個(gè)開(kāi)關(guān)中斷信號(hào)可以指向XGATE或者CPU。如果指向XGATE,它就會(huì)執(zhí)行所要求的程序;當(dāng)程序完成后,等候下個(gè)請(qǐng)求。還能看到有的寄存器可以使XGATE指向一個(gè)特殊的中斷,并且中斷優(yōu)先權(quán)的等級(jí)被設(shè)置到7個(gè)級(jí)別當(dāng)中的一個(gè)。如果有2個(gè)中斷請(qǐng)求同時(shí)產(chǎn)生,則處理器就會(huì)根據(jù)中斷級(jí)別的高低來(lái)判斷,最高最重要的中斷首先執(zhí)行。這些中斷等級(jí)在S12XD CPU和XGATE中是相同的。
XGATE和CPU完全一樣,是一個(gè)支持C編譯器的可編程的核。當(dāng)中斷源到來(lái)時(shí),它開(kāi)始運(yùn)行;在完成中斷的任務(wù)以后,它會(huì)停下來(lái)其所有時(shí)鐘等候下次事件,以此減少電源消耗。
XGATE是一個(gè)協(xié)處理器。它可以直接使用,幾乎可以直接進(jìn)入所有存儲(chǔ)空間。XGATE的創(chuàng)新特點(diǎn)就在于它以獨(dú)特的方式連接到MCU所自帶的RAM上。通過(guò)交換總線,MCU的內(nèi)部總線允許交叉進(jìn)入RAM區(qū)。當(dāng)主CPU全速執(zhí)行時(shí),訪問(wèn)RAM只需一半時(shí)間,XGATE得以在另外半個(gè)時(shí)鐘總線周期進(jìn)入RAM。所以若主CPU不進(jìn)入RAM的周期內(nèi),則XGATE訪問(wèn)RAM的速度就會(huì)是CPU最高速度的2倍。
3 XGATE應(yīng)用及其工作原理
3.1 多通道PWM
脈沖寬度調(diào)制(PWM)在很多I/O引腳上被MCU的物理硬件很?chē)?yán)格地限制了,或者說(shuō)如果需要更多的PWM信號(hào)就必須使用軟件來(lái)驅(qū)動(dòng)這些脈沖。當(dāng)需要一個(gè)在輸出上實(shí)現(xiàn)低功耗的過(guò)濾,或者引發(fā)中斷時(shí),通常想要一個(gè)PWM短周期信號(hào),它就會(huì)在主CPU上有很高的占用率。XGATE可以將CPU的占用狀態(tài)完全移除,并且可以通過(guò)一個(gè)單一的硬件定時(shí)器運(yùn)行產(chǎn)生多通道的PWM,這樣可以使MCU源的應(yīng)用更有效率。在很多的實(shí)際應(yīng)用中,相關(guān)的PWM信號(hào)產(chǎn)生就是利用了定時(shí)器來(lái)產(chǎn)生所需要的PWM波形。
3.2 串行通信協(xié)議處理
XGATE的另外一個(gè)重要功能就是串行通信。這里會(huì)接收到含有比較標(biāo)示符的信息,然后數(shù)據(jù)會(huì)被送到存儲(chǔ)器中的一個(gè)適當(dāng)?shù)膮^(qū)域,這些都是由匹配的標(biāo)識(shí)符和負(fù)載數(shù)據(jù)決定的。
3.3 CAN網(wǎng)關(guān)
CAN網(wǎng)關(guān)在工業(yè)系統(tǒng)中經(jīng)常遇到的典型形式就是具有2個(gè)CAN網(wǎng)絡(luò)拓?fù)洹GATE就可以幫助CPU來(lái)實(shí)現(xiàn)這個(gè)雙CAN網(wǎng)絡(luò)的功能。
XGATE可以通過(guò)查表提供100%軟件過(guò)濾。在每100μs接收一幀信息(每幀信息包括8字節(jié)和29位標(biāo)識(shí)符)的情況下,對(duì)8位或者16位MCU來(lái)說(shuō),這個(gè)雙CAN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的控制是非常重要的。XGATE可以降低CPU的加載率,CPU處理258字節(jié)編碼時(shí)就近似于零加載。對(duì)于一個(gè)6字節(jié)數(shù)據(jù)的CAN信息,XGATE處理每幀編碼大約需要3μs,最壞的情況下CPU加載率只有6%。
3.4 積分編碼
很多電機(jī)控制應(yīng)用需要從位置和速度傳感器得到連續(xù)輸入的信號(hào)。對(duì)于體積小、速度快的電機(jī),積分編碼可以提供位置反饋,并且可以產(chǎn)生每秒幾萬(wàn)個(gè)脈沖。如要保持CPU沒(méi)有加載,則由XGATE完成該任務(wù),它可以處理兩個(gè)傳感器中的一個(gè)中斷事件,并提供方向和位置信息。第3個(gè)傳感器可以為轉(zhuǎn)動(dòng)參考點(diǎn)提供一個(gè)索引信號(hào)。每次讀2個(gè)傳感器輸入任務(wù)時(shí)會(huì)有一個(gè)中斷,并且根據(jù)后來(lái)輸入狀態(tài)執(zhí)行單一向前或者向后計(jì)算,用XGATE時(shí)只花很少的時(shí)間就可以完成這個(gè)任務(wù)(執(zhí)行程序所用時(shí)間少于0.5μs)。這是一個(gè)理想的表現(xiàn)XGATE特性的例子。
3.5 同步串行通信
對(duì)于一些串行通信,XGATE可以提供簡(jiǎn)單的驅(qū)動(dòng)功能。SPI(同步串行通信)在主機(jī)模式下操作是很容易完成的,時(shí)鐘和數(shù)據(jù)都可以由XGATE驅(qū)動(dòng),并且只對(duì)一個(gè)定時(shí)器提供波特率信息。
XGATE也還可以沒(méi)置SPI從機(jī)操作,典型的操作包括在MOSI口收集數(shù)據(jù)和在MISO口輸出數(shù)據(jù),每次傳輸都會(huì)在SCLK上接收到時(shí)鐘信號(hào)。從機(jī)SPI執(zhí)行必須注意,由于錯(cuò)過(guò)半周期時(shí)鐘沿而產(chǎn)生錯(cuò)誤的讀操作會(huì)導(dǎo)致向SPI主機(jī)返回的數(shù)據(jù)錯(cuò)誤。
3.6 異步串行通信
與SPI一樣,XGATE可以通過(guò)直接對(duì)口進(jìn)行位操作或者通用異步收發(fā)報(bào)機(jī)來(lái)控制軟件SCI。這個(gè)與最初的同步通信功能相似,當(dāng)然,臨界位的時(shí)鐘邊沿是不一樣的。
在異步串行通信中XGATE編碼是被嚴(yán)格限制的(波特率最大值通常是19 200 b/s)。在最大反應(yīng)時(shí)間情況下必須保持位波特率的20%和總體的2%,也就是每10.4μs對(duì)每位采樣或設(shè)置一次。雖然位處理時(shí)間是允許變化的,但是在19 200 b/s的波特率下就不會(huì)在發(fā)送和接收正確的8位數(shù)據(jù)上產(chǎn)生沖突。
XGATE編碼發(fā)送SCI數(shù)據(jù)需要由一個(gè)比較定時(shí)器產(chǎn)生的2個(gè)定時(shí)值:一個(gè)是位周期;另一個(gè)是斷點(diǎn)檢測(cè)時(shí)間,通常為多個(gè)位周期時(shí)間。傳輸1位的程序非常短,只需要設(shè)置輸出狀態(tài)和改變位的指針。接收數(shù)據(jù)要求用位周期時(shí)間對(duì)中間通道進(jìn)行采樣,這樣就會(huì)和以前的中斷分開(kāi),就像進(jìn)入了另一個(gè)XGATE中斷,使中斷率加倍。此外,這個(gè)程序很短,在最壞的情況下中斷之間(發(fā)送/接收,波特率為19 200 b/s)的間隔是26μs;在XGATE的時(shí)鐘程序的影響下(波特率為19 200 b/s),SCI數(shù)據(jù)的接收和發(fā)送之前,允許程序用大約36μs執(zhí)行(允許延時(shí)26+10.4μs)。
這是一個(gè)當(dāng)XGATE程序加入后,如何滿(mǎn)足最大延時(shí)并允許其他程序執(zhí)行的很好的例子。
3.7 LIN協(xié)議處理
本地互連網(wǎng)(LIN)協(xié)議在汽車(chē)控制方面有廣泛應(yīng)用,其主要作用是作為CAN的展開(kāi),但是現(xiàn)在也開(kāi)始在其他非汽車(chē)應(yīng)用領(lǐng)域中流行起來(lái)。
LIN和SCI外部設(shè)備一樣,都是按字節(jié)控制數(shù)據(jù)的。在LIN中,XGATE可以處理傳輸數(shù)據(jù)、緩沖器接收數(shù)據(jù)中斷和數(shù)據(jù)排隊(duì)的協(xié)議。
XGATE執(zhí)行213字節(jié)長(zhǎng)的協(xié)議程序,執(zhí)行時(shí)每字節(jié)只要0.9μs。在雙字節(jié)加載數(shù)據(jù)時(shí),80 Hz的頻率下處理雙字節(jié)LIN信息只用了XGATE執(zhí)行能力的0.66%。
3.8 排隊(duì)管理
對(duì)外部設(shè)備的排隊(duì)管理可以使主CPU進(jìn)行有意義的加載。一些MCU體系結(jié)構(gòu)根據(jù)排隊(duì)選擇外部設(shè)備來(lái)減少在CPU上的加載。XGATE可以根據(jù)使用者的要求提供此項(xiàng)功能。
結(jié) 語(yǔ)
S12XD系列16位微處理器是較高端的車(chē)載型單片機(jī),應(yīng)用很廣泛。它的眾多優(yōu)勢(shì)中最大、最有特色的就是XGATE的加入。XGATE作為一個(gè)獨(dú)立于CPU的協(xié)處理器對(duì)于整個(gè)芯片的作用很大。在處理中斷方面XGATE可以實(shí)現(xiàn)很強(qiáng)大的功能,可以大量降低主CPU的加載率,讓數(shù)據(jù)傳輸更順暢。在訪問(wèn)RAM方面XGATE也有其自己的優(yōu)勢(shì),在實(shí)際應(yīng)用中必然會(huì)受到大家的重視。但是就現(xiàn)在而言,雙核技術(shù)還是屬于一項(xiàng)新技術(shù),在很多方面的應(yīng)用還是需要大家共同探索的。