??? 摘? 要: 從第四屆全國大學生“飛思卡爾”杯智能車競賽開始,競賽組委會推薦使用MC9S12XS128單片機替代前三屆競賽中使用的MC9S12DG128。S12X是新一代雙核單片機,制造工藝從0.25 μm進步到0.18 μm;總線頻率從25 MHz提高到40 MHz;S12XS單片機保留了S12X CPU,去掉了另一個CPU-XGate,保留了技術進步,提高了性能,簡化了操作。?
??? 關鍵詞: 智能車競賽;單片機;9S12DG;S12XS?
?
??? 從2006年開始的全國大學生智能車競賽已經(jīng)進行了3屆。當時競賽推薦使用MC9S12DG128單片機。原因是該競賽在韓國已經(jīng)舉辦過3屆,使用的是MC9S12DP256。DG128單片機與DP256屬同類單片機,性能方面略有改善。這兩種單片機同屬S12DG128D系列單片機,是2000年初期產(chǎn)品。仍按摩爾定律發(fā)展的半導體技術,使單片機的性能不斷更新,推薦使用更新?lián)Q代的單片機可以使學生的教學實踐活動不斷緊跟最新技術。?
??? 實際上,從S12到S12X單片機已經(jīng)經(jīng)歷了一次里程碑式的技術發(fā)展,S12X單片機是雙核單片機,該系列單片機在S12單CPU的基礎上增加了另一個名為XGate的CPU。XGate是精簡指令流(RISC)類型的CPU,和復雜指令流(CISC)結構的S12單片機性能互補。S12X系列單片機在其他性能方面也有很多改善。而含有XGate CPU的雙核單片機也已經(jīng)有二代產(chǎn)品,分別稱為V1和V2內(nèi)核。V1內(nèi)核的XGate專門用于處理中斷,V2的XGate還可承擔其他任務。參考文獻[1]對這種雙核單片機做了詳細介紹。?
??? 在1個硅片上集成了2個類型完全不同的CPU,使學習和掌握該類單片機的難度提高了不只一倍。對于處于嵌入式系統(tǒng)應用入門階段的本科生,競賽組委會不推薦使用雙核單片機,雖然飛思卡爾公司表示也可以支持使用該類單片機。?
??? S12XS單片機在雙核單片機基礎上去掉了XGate CPU,保留了其他方面的技術進步和性能提高,由于一些性能的改善,與S12單片機相比,開發(fā)難度不但沒有增加,甚至有所降低,是大學本科同學學習嵌入式系統(tǒng)應用開發(fā)的更好范例。但作為教材,面前還沒有正式出版物,這就要求參賽選手查閱參考文獻[3]、[4]、[5]等原文資料。由于參賽選手多為嵌入式系統(tǒng)應用愛好者和佼佼者,這一過程有利于提高學生的能力,培養(yǎng)IT高手。?
??? 由于參考文獻[2]已被很多大學選作教材,該教材已列為教育部十一五國家級規(guī)劃教材,其新編版將以S12-XS128為范例,于2009年夏天出版。屆時,采用S12DG-128教學的院校也可升級到S12XS單片機。?
??? 這里就新一代S12XS單片機較老一代產(chǎn)品性能方面的改進做一介紹,供參賽者參考。?
1 全局線性尋址?
??? 為將程序存儲空間擴展到大于64 KB,S12 CPU在64 KB空間內(nèi)開了一個16 KB的窗口,通過頁面管理寄存器PPage,根據(jù)需求不時調(diào)入不同存儲頁面,無法對整個尋址空間連續(xù)尋址。S12X的CPU在以同樣方式管理RAM、EEPROM的基礎上,又增加了一個全局寄存器,實現(xiàn)了對整個尋址空間的連續(xù)尋址。?
??? 圖1給出了S12XS CPU 和S12 CPU 的區(qū)別,圖中虛線描述的是S12X在S12 CPU基礎上增加的寄存器。全局地址寄存器GPage是一個7位寄存器,使原來的64 KB尋址空間擴展了128倍,達到8 MB。若使用3 B地址對8 MB空間連續(xù)尋址,16位機需要2次讀16位地址線。2次可讀入32位地址,使用32位地址時,會多占用1倍存儲器,16位機的優(yōu)勢就沒有了。這里的解決辦法是,增加幾個專門指令對3 B地址(其中1 B是GPage的值)連續(xù)操作。?
?
?
??? 增加的指令使整個8 MB尋址空間變成一個整體。分讀、寫兩類指令:?
??? 讀指令:GLDAR?
??? 寫指令:GSTAR?
??? 這里R表示CPU內(nèi)部6個寄存器A、B、D、X、Y和SP中的一個。?
??? 指令形式為:?
??? GLDAA,GLDAB,GLDD,GLDX,GLDY,GLDS?
??? GSTAA,GSTAB,GSTD,GSTX,GSTY,GSTS?
??? 以GLDD指令為例,可以使用直接尋址、擴展尋址、寄存器間接尋址、帶8位、16位偏移量的間接尋址、寄存器作為偏移量的間接尋址等幾乎所有讀寫指令的尋址方式。表1是全程讀指令GLDD 的代碼形式、尋址方式、機器碼和周期數(shù)。?
?
?
??? 用7位G寄存器,將存儲空間分成128個64KB,稱為存儲器的128個64KB頁面。用G寄存器$00~$7F表示的連續(xù)地址如下:?
??? 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數(shù)據(jù)閃存空間?
??? 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區(qū)包括片內(nèi)RAM和可能擴展的片外RAM;256 KB的EEPROM用于存放斷電后仍需保留的數(shù)據(jù);4 MB的閃存用于存放程序。?
??? 歸納起來,利用G寄存器,S12X單片機將存儲空間擴展到4 MB閃存空間、1 MB RAM空間、256 KB非易失存儲器空間和2 MB外擴存儲器空間,I/O寄存器占用2 KB空間。?
??? 對于S12XS128單片機,片內(nèi)可集成128 KB閃存,RAM為8 KB,數(shù)據(jù)閃存為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位為中斷優(yōu)先級位。S12的CPU在中斷服務子程序中開中斷則允許中斷嵌套,有了CCRH中IPL的3個中斷優(yōu)先級位以后,將中斷等級分為7級,7級最高,1級最低。高優(yōu)先級中斷可嵌套入低優(yōu)先級中斷,反之則不可嵌套。除了更高優(yōu)先級的那些不可屏蔽中斷以外,可以給所有I/O中斷源定義中斷優(yōu)先級。如果不定義優(yōu)先級的話,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);循環(huán)左右移(ROL、ROR)。?
??? S12X的累加器D則增加了擴展到32位的加、減運算指令,如ADED、SBED等。還增加了一套擴展比較指令,將C標志、Z標志擴展到32位數(shù)的比較,如CPED, CPEX, CPEY, CPES等。?
??? 不可中斷的讀-改-寫指令原來是對字節(jié)的8位操作,在S12X系列CPU中擴展為16位操作。增加了16位的字節(jié)操作指令,如求負、求反、加減1、算術左右移、邏輯左右移。循環(huán)左右移、清零、位測試等等。如: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的片內(nèi)AD變換精度已經(jīng)從10位提高到12位。用戶在使用12位變換時,如果仍然直接用VDD來做AD變換的參考電壓,可能達不到12位精度。為了實現(xiàn)12位精度的ADC,應該外接參考電壓芯片。實驗表明,在常溫下,使用齊納二極管做參考電壓芯片就足夠可以了。例如LM4040-4096可提供每個讀數(shù)1 mV的精度,且12位ADC的最后一位也基本穩(wěn)定,可以達到12位精度,但溫度穩(wěn)定性較差。如果在絕對測量中需要在環(huán)境溫度有很大變化的情況下仍能有穩(wěn)定的精度,可使用專門為高精度AD變換設計的3端穩(wěn)壓的參考電源芯片,可將參考電壓穩(wěn)定到萬分之一量級精度。?
4 閃存讀寫、容錯與糾錯?
??? S12X系列單片機片內(nèi)增加了存儲管理控制器,使該系列單片機有容錯與糾錯功能。每個字節(jié)的存儲都增加了一個校驗位。而CPU對存儲器的讀取方式為一次讀入8個字節(jié),可實現(xiàn)2維校驗。當發(fā)現(xiàn)這8個字節(jié)中有一位出錯時,存儲管理控制器可自動將該位糾正。當發(fā)現(xiàn)有2位出錯時,則會產(chǎn)生一個中斷,通知CPU采取措施。存儲管理控制器還簡化了寫閃存的步驟。存儲管理控制器通過命令寄存器和用戶程序打交道,用戶寫=對閃存編程時,向存儲管理控制器寫命令字后,在將擬寫入的8個字節(jié)以4個字的方式連續(xù)寫入即可。比原來的S12單片機簡單了許多。同樣,擦除閃存時,主要向存儲管理控制器發(fā)擦除命令即可。擦除方式可以是一個扇區(qū)、一個存儲塊或全部。S12X系列單片機的EEPROM實際上也是閃存,稱為數(shù)據(jù)閃存。讀寫、容錯、糾錯同程序閃存,僅數(shù)據(jù)塊大小和組織有所不同。?
5 其他性能改進?
??? 增加了一個片內(nèi)溫度傳感器,當單片機片內(nèi)晶體管節(jié)溫過高時,向CPU發(fā)出中斷請求。用戶需要使用該溫度傳感器時,只需將其配置到16通道AD變換器的通道0,作為第17路AD即可。?
??? MC9S12XS128單片機較過去采用的MC9S12DG128單片機性能方面有很多改進,速度更快、AD精度更高,增加了CPU寄存器和指令,可實現(xiàn)大存儲空間的線性尋址,閃存操作簡化,使用更方便。容錯糾錯功能及片內(nèi)溫度傳感器可提高控制系統(tǒng)可靠性,較S12DG128總體性能上有很大提高,是當前Freescale最先進的單核16位單片機。?
??? 即便是S12DG128,在大學生車模競賽中也僅用到單片機資源中很有限的一部分。為不加重競賽成本,舊的S12DG128仍可使用。特別是,由于S12XS系列單片機不再支持模糊控制指令,需要使用模糊算法的選手,使用S12DG128仍有優(yōu)勢。?
參考文獻?
[1] 邵貝貝,宮輝.嵌入式系統(tǒng)中的雙核技術.北京航空航天出版社,2008.?
[2] 邵貝貝.單片機嵌入式應用的在線開發(fā)方法.清華大學出版社,2004.?
[3] Steve mcAslan S12 and S12XD family compatibility,F(xiàn)reescale Semiconductor AN2615.?
[4] Lela garofolo using the S12XE family as a development?platform for the S12XS family.?
[5] MC9S12XS256 Reference Manual,F(xiàn)reescale.