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