《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 從MC9S12D到MC9S12XS

從MC9S12D到MC9S12XS

2009-04-29
作者:邵貝貝,薛 濤

??? 摘? 要: 從第四屆全國(guó)大學(xué)生“飛思卡爾”杯智能車競(jìng)賽開(kāi)始,競(jìng)賽組委會(huì)推薦使用MC9S12XS128單片機(jī)替代前三屆競(jìng)賽中使用的MC9S12DG128。S12X是新一代雙核單片機(jī),制造工藝從0.25 μm進(jìn)步到0.18 μm;總線頻率從25 MHz提高到40 MHz;S12XS單片機(jī)保留了S12X CPU,去掉了另一個(gè)CPU-XGate,保留了技術(shù)進(jìn)步,提高了性能,簡(jiǎn)化了操作。?

??? 關(guān)鍵詞: 智能車競(jìng)賽;單片機(jī);9S12DG;S12XS?

?

??? 從2006年開(kāi)始的全國(guó)大學(xué)生智能車競(jìng)賽已經(jīng)進(jìn)行了3屆。當(dāng)時(shí)競(jìng)賽推薦使用MC9S12DG128單片機(jī)。原因是該競(jìng)賽在韓國(guó)已經(jīng)舉辦過(guò)3屆,使用的是MC9S12DP256。DG128單片機(jī)與DP256屬同類單片機(jī),性能方面略有改善。這兩種單片機(jī)同屬S12DG128D系列單片機(jī),是2000年初期產(chǎn)品。仍按摩爾定律發(fā)展的半導(dǎo)體技術(shù),使單片機(jī)的性能不斷更新,推薦使用更新?lián)Q代的單片機(jī)可以使學(xué)生的教學(xué)實(shí)踐活動(dòng)不斷緊跟最新技術(shù)。?

??? 實(shí)際上,從S12到S12X單片機(jī)已經(jīng)經(jīng)歷了一次里程碑式的技術(shù)發(fā)展,S12X單片機(jī)是雙核單片機(jī),該系列單片機(jī)在S12單CPU的基礎(chǔ)上增加了另一個(gè)名為XGate的CPU。XGate是精簡(jiǎn)指令流(RISC)類型的CPU,和復(fù)雜指令流(CISC)結(jié)構(gòu)的S12單片機(jī)性能互補(bǔ)。S12X系列單片機(jī)在其他性能方面也有很多改善。而含有XGate CPU的雙核單片機(jī)也已經(jīng)有二代產(chǎn)品,分別稱為V1和V2內(nèi)核。V1內(nèi)核的XGate專門(mén)用于處理中斷,V2的XGate還可承擔(dān)其他任務(wù)。參考文獻(xiàn)[1]對(duì)這種雙核單片機(jī)做了詳細(xì)介紹。?

??? 在1個(gè)硅片上集成了2個(gè)類型完全不同的CPU,使學(xué)習(xí)和掌握該類單片機(jī)的難度提高了不只一倍。對(duì)于處于嵌入式系統(tǒng)應(yīng)用入門(mén)階段的本科生,競(jìng)賽組委會(huì)不推薦使用雙核單片機(jī),雖然飛思卡爾公司表示也可以支持使用該類單片機(jī)。?

??? S12XS單片機(jī)在雙核單片機(jī)基礎(chǔ)上去掉了XGate CPU,保留了其他方面的技術(shù)進(jìn)步和性能提高,由于一些性能的改善,與S12單片機(jī)相比,開(kāi)發(fā)難度不但沒(méi)有增加,甚至有所降低,是大學(xué)本科同學(xué)學(xué)習(xí)嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)的更好范例。但作為教材,面前還沒(méi)有正式出版物,這就要求參賽選手查閱參考文獻(xiàn)[3]、[4]、[5]等原文資料。由于參賽選手多為嵌入式系統(tǒng)應(yīng)用愛(ài)好者和佼佼者,這一過(guò)程有利于提高學(xué)生的能力,培養(yǎng)IT高手。?

??? 由于參考文獻(xiàn)[2]已被很多大學(xué)選作教材,該教材已列為教育部十一五國(guó)家級(jí)規(guī)劃教材,其新編版將以S12-XS128為范例,于2009年夏天出版。屆時(shí),采用S12DG-128教學(xué)的院校也可升級(jí)到S12XS單片機(jī)。?

??? 這里就新一代S12XS單片機(jī)較老一代產(chǎn)品性能方面的改進(jìn)做一介紹,供參賽者參考。?

1 全局線性尋址?

??? 為將程序存儲(chǔ)空間擴(kuò)展到大于64 KB,S12 CPU在64 KB空間內(nèi)開(kāi)了一個(gè)16 KB的窗口,通過(guò)頁(yè)面管理寄存器PPage,根據(jù)需求不時(shí)調(diào)入不同存儲(chǔ)頁(yè)面,無(wú)法對(duì)整個(gè)尋址空間連續(xù)尋址。S12X的CPU在以同樣方式管理RAM、EEPROM的基礎(chǔ)上,又增加了一個(gè)全局寄存器,實(shí)現(xiàn)了對(duì)整個(gè)尋址空間的連續(xù)尋址。?

??? 圖1給出了S12XS CPU 和S12 CPU 的區(qū)別,圖中虛線描述的是S12X在S12 CPU基礎(chǔ)上增加的寄存器。全局地址寄存器GPage是一個(gè)7位寄存器,使原來(lái)的64 KB尋址空間擴(kuò)展了128倍,達(dá)到8 MB。若使用3 B地址對(duì)8 MB空間連續(xù)尋址,16位機(jī)需要2次讀16位地址線。2次可讀入32位地址,使用32位地址時(shí),會(huì)多占用1倍存儲(chǔ)器,16位機(jī)的優(yōu)勢(shì)就沒(méi)有了。這里的解決辦法是,增加幾個(gè)專門(mén)指令對(duì)3 B地址(其中1 B是GPage的值)連續(xù)操作。?

?

?

??? 增加的指令使整個(gè)8 MB尋址空間變成一個(gè)整體。分讀、寫(xiě)兩類指令:?

??? 讀指令:GLDAR?

??? 寫(xiě)指令:GSTAR?

??? 這里R表示CPU內(nèi)部6個(gè)寄存器A、B、D、X、Y和SP中的一個(gè)。?

??? 指令形式為:?

??? GLDAA,GLDAB,GLDD,GLDX,GLDY,GLDS?

??? GSTAA,GSTAB,GSTD,GSTX,GSTY,GSTS?

??? 以GLDD指令為例,可以使用直接尋址、擴(kuò)展尋址、寄存器間接尋址、帶8位、16位偏移量的間接尋址、寄存器作為偏移量的間接尋址等幾乎所有讀寫(xiě)指令的尋址方式。表1是全程讀指令GLDD 的代碼形式、尋址方式、機(jī)器碼和周期數(shù)。?

?

?

??? 用7位G寄存器,將存儲(chǔ)空間分成128個(gè)64KB,稱為存儲(chǔ)器的128個(gè)64KB頁(yè)面。用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??? 可擴(kuò)展外部2 MB存儲(chǔ)器?

??? 0x40_0000~0x7F_FFFF??? 64×64 KB=4 MB程序閃存空間?

??? 2KB的I/O寄存器空間用于和輸入輸出模塊打交道;1MB 的RAM區(qū)包括片內(nèi)RAM和可能擴(kuò)展的片外RAM;256 KB的EEPROM用于存放斷電后仍需保留的數(shù)據(jù);4 MB的閃存用于存放程序。?

??? 歸納起來(lái),利用G寄存器,S12X單片機(jī)將存儲(chǔ)空間擴(kuò)展到4 MB閃存空間、1 MB RAM空間、256 KB非易失存儲(chǔ)器空間和2 MB外擴(kuò)存儲(chǔ)器空間,I/O寄存器占用2 KB空間。?

??? 對(duì)于S12XS128單片機(jī),片內(nèi)可集成128 KB閃存,RAM為8 KB,數(shù)據(jù)閃存為8 KB。增加了8 KB D-Flash,分為8頁(yè),每頁(yè)1KB用8個(gè)Epage頁(yè)面控制,全局地址為:0x10_0000-0x10_1FFF,頁(yè)面寄存器Epage 可取值0~7。增加的R寄存器對(duì)于S12XS單片機(jī)沒(méi)有意義。?

?

?

??? CPU條件碼寄存器CCR由1 B增加為2 B。CCR高位即CCRH中的低3位為中斷優(yōu)先級(jí)位。S12的CPU在中斷服務(wù)子程序中開(kāi)中斷則允許中斷嵌套,有了CCRH中IPL的3個(gè)中斷優(yōu)先級(jí)位以后,將中斷等級(jí)分為7級(jí),7級(jí)最高,1級(jí)最低。高優(yōu)先級(jí)中斷可嵌套入低優(yōu)先級(jí)中斷,反之則不可嵌套。除了更高優(yōu)先級(jí)的那些不可屏蔽中斷以外,可以給所有I/O中斷源定義中斷優(yōu)先級(jí)。如果不定義優(yōu)先級(jí)的話,S12X CPU默認(rèn)這些中斷都為1級(jí),即最低級(jí)中斷。?

2 新增CPU指令?

??? X系列單片機(jī)將原來(lái)只有累加器A、B或D可進(jìn)行的算術(shù)和邏輯運(yùn)算指令擴(kuò)展到X、Y寄存器也能進(jìn)行。這些新指令包括:加、減和帶進(jìn)位借位加、減(ADD、 SUB和SBE、ADE);加、減1(INC、DEC);與、或和異或(AND、OR、EOR),位測(cè)試(BIT);求負(fù)、求反(NEG、COM);清零(CLR);寄存器測(cè)試(TST);算術(shù)右移和邏輯右移(ASR、LSL、LSR);循環(huán)左右移(ROL、ROR)。?

??? S12X的累加器D則增加了擴(kuò)展到32位的加、減運(yùn)算指令,如ADED、SBED等。還增加了一套擴(kuò)展比較指令,將C標(biāo)志、Z標(biāo)志擴(kuò)展到32位數(shù)的比較,如CPED, CPEX, CPEY, CPES等。?

??? 不可中斷的讀-改-寫(xiě)指令原來(lái)是對(duì)字節(jié)的8位操作,在S12X系列CPU中擴(kuò)展為16位操作。增加了16位的字節(jié)操作指令,如求負(fù)、求反、加減1、算術(shù)左右移、邏輯左右移。循環(huán)左右移、清零、位測(cè)試等等。如:NEGW,COMW,DECW,INCW,RORW,LSRW,ARSW,ROLW,LSLW,CLRW,TSTW。尋址方式與原有的8位操作的所有尋址方式相同。?

??? 另外,不通過(guò)CPU寄存器,從存儲(chǔ)器直接到存儲(chǔ)器的Move指令也由原來(lái)的單一尋址方式,擴(kuò)展到所有尋址方式。?

??? S12XS CPU不再支持模糊邏輯指令:模糊化指令MEM;模糊推理指令 REV, REVW;反模糊化指令WAV/WAVR。?

3 A/D變換精度從10位提高到12位?

??? S12XS單片機(jī)和S12D單片機(jī)都有1個(gè)16路的的AD變換模塊。但S12XS的片內(nèi)AD變換精度已經(jīng)從10位提高到12位。用戶在使用12位變換時(shí),如果仍然直接用VDD來(lái)做AD變換的參考電壓,可能達(dá)不到12位精度。為了實(shí)現(xiàn)12位精度的ADC,應(yīng)該外接參考電壓芯片。實(shí)驗(yàn)表明,在常溫下,使用齊納二極管做參考電壓芯片就足夠可以了。例如LM4040-4096可提供每個(gè)讀數(shù)1 mV的精度,且12位ADC的最后一位也基本穩(wěn)定,可以達(dá)到12位精度,但溫度穩(wěn)定性較差。如果在絕對(duì)測(cè)量中需要在環(huán)境溫度有很大變化的情況下仍能有穩(wěn)定的精度,可使用專門(mén)為高精度AD變換設(shè)計(jì)的3端穩(wěn)壓的參考電源芯片,可將參考電壓穩(wěn)定到萬(wàn)分之一量級(jí)精度。?

4 閃存讀寫(xiě)、容錯(cuò)與糾錯(cuò)?

??? S12X系列單片機(jī)片內(nèi)增加了存儲(chǔ)管理控制器,使該系列單片機(jī)有容錯(cuò)與糾錯(cuò)功能。每個(gè)字節(jié)的存儲(chǔ)都增加了一個(gè)校驗(yàn)位。而CPU對(duì)存儲(chǔ)器的讀取方式為一次讀入8個(gè)字節(jié),可實(shí)現(xiàn)2維校驗(yàn)。當(dāng)發(fā)現(xiàn)這8個(gè)字節(jié)中有一位出錯(cuò)時(shí),存儲(chǔ)管理控制器可自動(dòng)將該位糾正。當(dāng)發(fā)現(xiàn)有2位出錯(cuò)時(shí),則會(huì)產(chǎn)生一個(gè)中斷,通知CPU采取措施。存儲(chǔ)管理控制器還簡(jiǎn)化了寫(xiě)閃存的步驟。存儲(chǔ)管理控制器通過(guò)命令寄存器和用戶程序打交道,用戶寫(xiě)=對(duì)閃存編程時(shí),向存儲(chǔ)管理控制器寫(xiě)命令字后,在將擬寫(xiě)入的8個(gè)字節(jié)以4個(gè)字的方式連續(xù)寫(xiě)入即可。比原來(lái)的S12單片機(jī)簡(jiǎn)單了許多。同樣,擦除閃存時(shí),主要向存儲(chǔ)管理控制器發(fā)擦除命令即可。擦除方式可以是一個(gè)扇區(qū)、一個(gè)存儲(chǔ)塊或全部。S12X系列單片機(jī)的EEPROM實(shí)際上也是閃存,稱為數(shù)據(jù)閃存。讀寫(xiě)、容錯(cuò)、糾錯(cuò)同程序閃存,僅數(shù)據(jù)塊大小和組織有所不同。?

5 其他性能改進(jìn)?

??? 增加了一個(gè)片內(nèi)溫度傳感器,當(dāng)單片機(jī)片內(nèi)晶體管節(jié)溫過(guò)高時(shí),向CPU發(fā)出中斷請(qǐng)求。用戶需要使用該溫度傳感器時(shí),只需將其配置到16通道AD變換器的通道0,作為第17路AD即可。?

??? MC9S12XS128單片機(jī)較過(guò)去采用的MC9S12DG128單片機(jī)性能方面有很多改進(jìn),速度更快、AD精度更高,增加了CPU寄存器和指令,可實(shí)現(xiàn)大存儲(chǔ)空間的線性尋址,閃存操作簡(jiǎn)化,使用更方便。容錯(cuò)糾錯(cuò)功能及片內(nèi)溫度傳感器可提高控制系統(tǒng)可靠性,較S12DG128總體性能上有很大提高,是當(dāng)前Freescale最先進(jìn)的單核16位單片機(jī)。?

??? 即便是S12DG128,在大學(xué)生車模競(jìng)賽中也僅用到單片機(jī)資源中很有限的一部分。為不加重競(jìng)賽成本,舊的S12DG128仍可使用。特別是,由于S12XS系列單片機(jī)不再支持模糊控制指令,需要使用模糊算法的選手,使用S12DG128仍有優(yōu)勢(shì)。?

參考文獻(xiàn)?

[1] 邵貝貝,宮輝.嵌入式系統(tǒng)中的雙核技術(shù).北京航空航天出版社,2008.?

[2] 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開(kāi)發(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.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。