周 霽
(中國電子科技集團公司第四十七研究所,沈陽 110032)
與工業(yè)MCS-51產(chǎn)品指令兼容的低功耗微處理器,廣泛應(yīng)用于我們生活的各個領(lǐng)域,包括各種智能控制、辦公自動化,或是工業(yè)測控領(lǐng)域的各種機器人、智能儀表、實時控制和數(shù)據(jù)處理,各種醫(yī)療設(shè)備以及汽車安全保障系統(tǒng)等。在這些廣泛的嵌入式控制系統(tǒng)領(lǐng)域,提供了靈活有效、性價比極高的解決方案。
此類低功耗、高性能控制器芯片,具有在系統(tǒng)可編程(ISP)Flash存儲器,與工業(yè)MCS-51產(chǎn)品指令和引腳兼容。通常這類存儲器(比如ATMEL公司的AT89S52)片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有全指令集的8位CPU和在系統(tǒng)可編程8K字節(jié)Flash,256字節(jié)RAM,32個I/O口,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個7向量2級中斷結(jié)構(gòu),全雙工UART串行口,片內(nèi)晶振及時鐘電路。另外,可支持0Hz~33MHz主頻時鐘操作,支持2種軟件可選節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,CPU停止工作,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。芯片架構(gòu)框圖如圖1所示。
從圖中可以看出,此芯片的核心是C8052 CPU,通過ROM bus從flash中讀取指令并執(zhí)行;并通過RAM_bus訪問256 bytes的內(nèi)部RAM。從CPU中出來的SFR_bus可用來訪問特殊功能寄存器,通過這些寄存器來控制芯片外圍設(shè)備。中斷控制模塊將產(chǎn)生的中斷信號經(jīng)過處理后,產(chǎn)生中斷,送給CPU,這將中斷CPU正在執(zhí)行的指令,而跳轉(zhuǎn)到相應(yīng)的中斷處理入口。
Watch-dog用于防止CPU執(zhí)行指令時由于某種干擾而出現(xiàn)錯誤時,產(chǎn)生復(fù)位信號而使CPU復(fù)位重新執(zhí)行。
Port控制模塊用來控制四個輸入/輸出端口的輸入和輸出。
Flash_control模塊用來控制內(nèi)部flash的程序燒寫,加密等。
Power_ctrl模塊用來實現(xiàn)在不需要CPU工作時,能使整個芯片工作在最小的電流下,以節(jié)省功耗。同時它也允許外部事件來將CPU從低功耗模式切換到正常工作模式。
圖1 微處理器架構(gòu)框圖
用戶在使用時,首先將編寫好的代碼下載到芯片內(nèi)部的flash中。芯片上電后首先啟動CPU從內(nèi)部的flash中讀取代碼,將代碼放入指令譯碼器中,CPU再根據(jù)指令做出相應(yīng)的動作,比如操作端口、特殊寄存器、進入省電模式或進行控制、數(shù)據(jù)運算等。
使用模式方面的特點包括如下幾個方面,復(fù)位方面包括上電復(fù)位、外部引腳復(fù)位、WDT溢出復(fù)位;時鐘方面包括外部晶振、外部時鐘直接輸入;編程方面包括串行ISP編程、并行ISP編程;定時器方面包括有三個16bit的通用定時器;功耗方面分普通全速工作模式、省電空閑模式、低功耗睡眠模式;儲存方面有內(nèi)部程序模式、外部程序模式。
程序存儲器與數(shù)據(jù)存儲器獨立分開,且有內(nèi)部和外部存儲器之分。如果RESET后,EA引腳接地,程序讀取只從外部存儲器開始。如果EA接電源,程序讀寫先從內(nèi)部存儲器開始,接著從外部尋址。芯片有256字節(jié)片內(nèi)數(shù)據(jù)存儲器,高128字節(jié)與特殊功能寄存器重疊,高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當一條指令訪問高于7FH的地址時,尋址方式?jīng)Q定CPU訪問高128字節(jié)RAM還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。
例如,下面的直接尋址指令訪問0A0H(P2口)存儲單元
MOV 0A0H,#data
使用間接尋址方式訪問高128字節(jié)RAM。例如,下面的間接尋址方式中,R0內(nèi)容為0A0H,訪問的是地址0A0H的寄存器。
MOV@R0,#data
在空閑工作模式下,CPU處于睡眠狀態(tài),而片上外部設(shè)備保持激活狀態(tài)。這種狀態(tài)可以通過軟件產(chǎn)生。在這種狀態(tài)下,片上RAM和特殊功能寄存器的內(nèi)容保持不變。空閑模式可以被任一個中斷或硬件復(fù)位終止。
在掉電模式下,晶振停止工作,激活掉電模式的指令是最后一條執(zhí)行指令。片上RAM和特殊功能寄存器保持原值,直到掉電模式終止。掉電模式可以通過硬件復(fù)位和外部中斷進行退出。復(fù)位重新定義了SFR的數(shù)據(jù),但不改變片上RAM的數(shù)據(jù)。
在掉電模式下喚醒時,會保證電流變化不能太大,且保證時鐘能有足夠時間穩(wěn)定。故采用了分階段完成的辦法。如圖2所示。
進入掉電模式:當PCON寄存器寫入0x01時,進入掉電模式。分兩階段完成:關(guān)掉cpu clock,關(guān)掉外圍部件的clock,等待1024時鐘周期,關(guān)閉晶振,關(guān)掉 regulator。
圖2 低功耗模式狀態(tài)轉(zhuǎn)換圖
從掉電模式喚醒:當檢測到外部復(fù)位信號或外部中斷信號后,第一步,打開regulator,打開晶振,并開始計數(shù),當計到100時,去檢查reset或外部中斷信號,看其是否有效。如果無效,則重新關(guān)掉晶振,關(guān)掉regulator。如果reset信號或外部中斷信號有效,則等待1024時鐘周期。第二步,打開外圍部件的clock等待1024時鐘周期。第三步,打開CPU的clock。
定時器2是一個16位定時/計數(shù)器,它既可以做定時器,又可以做事件計數(shù)器。其工作方式由特殊寄存器T2CON中的C/T2位選擇。定時器2有二種工作模式:捕捉方式,自動重載(向下或向上計數(shù))。工作模式由T2CON中的相關(guān)位選擇。
在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。如果EXEN2=0時,定時器2的一個16位定時/計數(shù)器溢出時,對T2CON的TF2標志置位,產(chǎn)生相應(yīng)中斷。如果EXEN2=1時定時器2做相同的操作。
當DCEN=0時,定時器2為向上計數(shù)。當計到0xFFFF時,定時器溢出,定時器重新加載16位計數(shù)值。如果EXEN2=1,計數(shù)溢出或在外部T2EX引腳上的1到0的下跳變都會觸發(fā)重載。當DCEN=1時,外部輸入T2EX引腳將決定向上還是向下計數(shù)。T2EX=1為向上計數(shù),T2EX=0為向下計數(shù)。說明如表1,表2示。
表1 T2CON控制寄存器
TF2:定時器2溢出標志位。
EXF2:定時器2外部標志位。EXEN2=1時,T2EX上的負跳變出現(xiàn)捕捉或重載時,EXF2會被硬件置位。
RCLK:串行口接收數(shù)據(jù)時鐘標志位。若RCLK=1,串行口將使用定時器2溢出脈沖作為串口接收時鐘;RCLK=0,將使用定時器1計數(shù)溢出作為串口接收時鐘。
TCLK:串行口發(fā)送數(shù)據(jù)時鐘標志位。若TCLK=1,串行口將使用定時器2溢出脈沖作為串行口工作模式1和3的串口發(fā)送時鐘;TCLK=0,將使用定時器1計數(shù)溢出作為串口發(fā)送時鐘。
EXEN2:定時器2外部允許標志位。
TR2:開始/停止控制定時器2。TR2=1,定時器2開始工作。
C/T2:定時器2定時/計數(shù)選擇標志位。
CP/RL2:捕捉/重載選擇標志位。當EXEN2=1時,CP/RL2=1,T2EX出現(xiàn)負脈沖,產(chǎn)生捕捉操作;當定時器2溢出或EXEN2=1時,T2EX出現(xiàn)負跳變,會出現(xiàn)自動重載操作。CP/RL2=0,T2EX產(chǎn)生負脈沖。當RCKL=1或TCKL=1時,此標志位無效,定時器2溢出時,強制做自動重載操作。
T2OE是定時器2輸出允許位。DCEN置1后,定時器2可配置成向上/向下計數(shù)。
表2 T2MOD模式控制寄存器
目前,這類微處理器產(chǎn)品仍有較為廣闊的市場,國外公司此類產(chǎn)品也較多,在設(shè)計這類產(chǎn)品時,重點注意對MCS-51產(chǎn)品指令的兼容,這樣可以使其更方便的在不同領(lǐng)域中做為配套產(chǎn)品使用,其成熟的設(shè)計經(jīng)驗,也可以移植到相似的產(chǎn)品設(shè)計之中。在廣泛的嵌入式控制系統(tǒng)領(lǐng)域,產(chǎn)品可以提供靈活有效、性價比極高的解決方案。
[1]王永軍,李景華.數(shù)字邏輯與數(shù)字系統(tǒng)[M].北京:電子工業(yè)出版社,2005.
[2]朱子玉.李亞民.CPU芯片邏輯設(shè)計技術(shù)[M].北京:清華大學出版社,2005.
[3]張明.Verilog HDL實用教程[M].成都:電子科技大學出版社,1999.