?? ?Microcontroller(微控制器)又可簡(jiǎn)稱MCU或μC,也有人稱為單芯片微控制器(Single Chip Microcontroller),將ROM、RAM、CPU,、I/O集合在同一個(gè)芯片中,為不同的應(yīng)用場(chǎng)合做不同組合控制.微控制器在經(jīng)過這幾年不斷地研究,發(fā)展,歷經(jīng)4位,8位,到現(xiàn)在的16位及32位,甚至6?位.產(chǎn)品的成熟度,以及投入廠商之多,應(yīng)用范圍之廣,真可謂之空前.目前在國(guó)外大廠因開發(fā)較早,產(chǎn)品線廣,所以技術(shù)領(lǐng)先,而本土廠商則以多功能為產(chǎn)品導(dǎo)向取勝.但不可諱言的,本土廠商的價(jià)格戰(zhàn)是對(duì)外商造成威脅的關(guān)鍵因素,。
?
??? 由于制程的改進(jìn),8位MCU與4位MCU價(jià)差相去無幾,,8位已漸成為市場(chǎng)主流;針對(duì)4位MCU,大部份供貨商采接單生產(chǎn),,目前4位MCU大部份應(yīng)用在計(jì)算器、車表,、車用防盜裝置,、呼叫器、無線電話,、CD Player,、LCD驅(qū)動(dòng)控制器、LCD Game,、兒童玩具,、磅秤、充電器,、胎壓計(jì),、溫濕度計(jì)、遙控器及傻瓜相機(jī)等,;8位MCU大部份應(yīng)用在電表,、馬達(dá)控制器,、電動(dòng)玩具機(jī)、變頻式冷氣機(jī),、呼叫器,、傳真機(jī)、來電辨識(shí)器(Caller ID),、電話錄音機(jī),、CRT Display、鍵盤及USB等,;16位MCU大部份應(yīng)用在行動(dòng)電話,、數(shù)字相機(jī)及攝錄放影機(jī)等;32位MCU大部份應(yīng)用在Modem,、GPS,、PDA、HPC,、STB,、Hub、Bridge,、Router,、工作站、ISDN電話,、激光打印機(jī)與彩色傳真機(jī),;6?位MCU大部份應(yīng)用在高階工作站、多媒體互動(dòng)系統(tǒng),、高級(jí)電視游樂器(如SEGA的Dreamcast及Nintendo的GameBoy)及高級(jí)終端機(jī)等,。
?
??? 而在MCU開發(fā)方面,以架構(gòu)而言,可分為兩大主流;RISC(如HOLTEK HT48XXX系列)與CISC(如華邦W78系列). RISC (Reduced Instruction Set Computer) 代表MCU的所有指令都是利用一些簡(jiǎn)單的指令組成的,簡(jiǎn)單的指令代表 MCU 的線路可以盡量做到最佳化,,而提高執(zhí)行速率,,相對(duì)的使得一個(gè)指令所需的時(shí)間減到最短。HOLTEK的HT46XX(A/D MCU系列) HT47XX(R to F MCU系列) HT48XX(一般I/O MCU系列) HT49XX(LCD MCU系列) 便是采用 RISC 結(jié)構(gòu)來設(shè)計(jì),。不管是 RISC 或是 CISC(Complex Instruction Set Computer),,設(shè)計(jì)MCU的目的便是為人類服務(wù)的,對(duì)于 RISC 來說,,因?yàn)?a class="innerlink" href="http://forexkbc.com/tags/指令集" title="指令集" target="_blank">指令集的精簡(jiǎn),,所以許多工作都必須組合簡(jiǎn)單的指令,而針對(duì)較復(fù)雜組合的工作便需要由『編譯程序』(compiler) 來執(zhí)行,,而 CISC MCU因?yàn)橛布峁┑闹噶罴^多,,所以許多工作都能夠以一個(gè)或是數(shù)個(gè)指令來代替,compiler 的工作因而減少許多。
?
??? 以一個(gè)數(shù)值運(yùn)算程序來說,,使用 CISC 指令集的MCU運(yùn)算對(duì)于一個(gè)積分表達(dá)式可能只需要十個(gè)機(jī)器指令,,而 RISC MCU在執(zhí)行相同的程序時(shí),卻因?yàn)镃PU 本身不提供浮點(diǎn)數(shù)乘法的指令,,所以可能需要執(zhí)行上百個(gè)機(jī)器指令 (但每一個(gè)指令可能只需要 CISC 指令十分之一的時(shí)間),而由程序語言轉(zhuǎn)換成機(jī)器指令的動(dòng)作是由程序語言的 Compiler 來執(zhí)行,,所以在 RISC MCU的Compiler 便會(huì)較復(fù)雜 ,。因?yàn)橥瑯右粋€(gè)高級(jí)語言 A=B*C 的運(yùn)算,在 RISC MCU轉(zhuǎn)換為機(jī)器指令可能有許多種組合,,而每一種組合的『時(shí)間/空間』組合都不盡相同,。
?
??? 所以 RISC 與 CISC 的取舍之間,似乎也是MCU硬件架構(gòu)與軟件(Compiler) 的平衡之爭(zhēng),,應(yīng)該沒有絕對(duì)優(yōu)勢(shì)的一方,,只能說因應(yīng)不同的需求而有不同的產(chǎn)品,例如工作單純的打印機(jī)核心 MCU,,便適合使用效能穩(wěn)定,,但單位指令效率較佳的 RISC MCU.
微控制器(MCU)的基本架構(gòu)
??? 微控制器產(chǎn)品架構(gòu)由早期以累積器為基礎(chǔ)的CPU,演進(jìn)至現(xiàn)今含精簡(jiǎn)指令(RISC)或同時(shí)含RISC,、DSP如Motorola的68356,也有如DEC的SAIIC,、與Hitachi的SH-DSP系列等之32位嵌入式微控制器 ,每一系列產(chǎn)品又因應(yīng)不同的應(yīng)用與接口需求 ,,衍生出不同規(guī)格的產(chǎn)品 ,。微控制器產(chǎn)品以特性做為區(qū)分的標(biāo)準(zhǔn)與市場(chǎng)統(tǒng)計(jì)的依據(jù) ,區(qū)分為4位 ,、8位 ,、以及16/32位等三大類 。各廠商依其不同功能組合 ,,發(fā)展出系列性的微控制器產(chǎn)品 ,,如NEC供應(yīng)PD75X的4位系列 ,Toshiba供應(yīng)47CXX的4位系列 ,、HOLTEK供應(yīng)HT48CXX的8位系列 ,、及Intel之MCS-96的16位系列等。
以下就微控器的基本架構(gòu)做介紹,如下先介紹MCU架構(gòu)方塊圖,。
MCU架構(gòu)方塊圖
程序內(nèi)存
程序內(nèi)存(Program ROM)在微控制器中是只讀而不可寫入之記憶單元,,此內(nèi)存主要用來放置使用者所開發(fā)之程序,而其性質(zhì)乃屬于不常更動(dòng)或永不變動(dòng)之資料,,微控制器之動(dòng)作便是依據(jù)儲(chǔ)存于此區(qū)之程序指令運(yùn)作,。在8位單芯片中常見的程序內(nèi)存容量有0.5K、IK,、2K,、4K 及8K,,而通常應(yīng)用在微控制器的程序內(nèi)存有下列幾種方式,見(表一):
表一
?
?
?? 另外關(guān)于程序保密部分,,不論是加密或保險(xiǎn)絲燒斷保護(hù) ,,都是為了防止程序被未授權(quán)之使用者窺看、竊取(如反組譯程序 ,、修改內(nèi)容 ,、盜取程序等)。程序保密這個(gè)功能選擇只在提供OTP,、開窗型包裝,、EEPROM 及 Flash ROM上使用,因?yàn)檫@些IC可借由燒錄器來回讀取程序代碼,,在Mask版本則不需要進(jìn)行程序保密的步驟 ,。
隨機(jī)存取內(nèi)存
隨機(jī)存取內(nèi)存(Random Access Memory;RAM),亦稱為讀/寫內(nèi)存(Read-Write Memory),常是被用來暫時(shí)存放資料,、或是程序執(zhí)行存放資料的地方,,用途相當(dāng)廣泛。以HOLTEK 8位微控制器為例,其容量有6?,、96,、160及224個(gè)Byte選擇。
累積器
累積器(Accumulator),,是MCU的運(yùn)作中樞 ,,80%的指令都與累積器有關(guān) ;資料可以被存放在累積器中,直到總線或其它單元準(zhǔn)備接受它,、或直到程序需要它為止 ,。
緩存器
緩存器(Register)是MCU內(nèi)部用來暫時(shí)存放資料的地方,每個(gè)緩存器的功能各不相同,,但卻有一共同的特性,,就是可以直接讀/寫,因其位于MCU的內(nèi)部,,故減少了一些不必要的等待及尋址時(shí)間,另外有些MCU的I/O Port,也以緩存器型態(tài)來直接存取控制,。
堆棧及堆棧指針
堆棧(Stack)及堆棧指針(Stack Pointer),堆棧就和盤子一樣,,一個(gè)一個(gè)由下往上堆,,而取出時(shí)則由上一個(gè)一個(gè)往下拿,不能由中間抽出,,因此又稱為后進(jìn)先出隊(duì)列(Last-In-First-Out Queues)」,。功能如下;
一. 暫時(shí)存放PC(Program Count)的值,適用于'子程序呼叫”,或中斷發(fā)生時(shí)將PC的值暫時(shí)儲(chǔ)存起來;
二. 可視為緩存器使用,,以Push,Pop來完成;
三. 有些MCU其Stack Level數(shù)是固定的(如HOLTEK μC系列),,有些則可自定。
運(yùn)算邏輯單元
? 運(yùn)算邏輯單元(Algorithm Logic Unit;ALU),,其功能在于執(zhí)行算術(shù)指令及邏輯判斷,,除了產(chǎn)生結(jié)果之外,也產(chǎn)生相關(guān)的Flag(Zero,、Carry,、Borrow、Status),,每一個(gè)MCU都不完全一樣,尤其是Carry Flag一定要查看指令解說表,。
輸入/輸出(I/O Port)
? 在單芯片微電腦應(yīng)用系統(tǒng)中,,I/O的擴(kuò)充不是目的,而是為了提供外部設(shè)備一個(gè)輸入/輸出的信道,,做為外界與MCU間的溝通管道,。例如接鍵盤、顯示器,、驅(qū)動(dòng)開關(guān)控制或測(cè)量等;在I/O擴(kuò)充時(shí)必須考慮與之相連接的外圍設(shè)備硬件電路特性,,如:電位匹配、干擾抑制,、驅(qū)動(dòng)能力(如Source,Sink能力)等,。
? 微控制器在I/O埠方面?zhèn)溆卸喾N電路形式,其中有多端口可以經(jīng)由軟件以位單位來設(shè)定輸出/入方向,。各埠附加大電流,、高耐壓的緩沖器,以直接驅(qū)動(dòng)LED與高功率晶體管,,以及做模擬訊號(hào)的輸入之用,。
定時(shí)器、定時(shí)器
?? 定時(shí)器(Time Counter),、定時(shí)器(Timer),,由外加振蕩晶體,經(jīng)除頻電路來提供MCU數(shù)種不同的時(shí)基(Time Base),。常應(yīng)用于:
一. 時(shí)鐘之時(shí)基(如1sec,、500ms、62.5ms,、15.625ms等);
二. PWM(Pulse Width Modulation)之Time Base;
三. Key Scan;
四. LED Scan;
五. Frequency output;
六. Pulse Reading;
七. APO (Auto Power OFF)等,。
計(jì)數(shù)器
? 計(jì)數(shù)器(Event Counter)專用于累計(jì)外部的事件個(gè)數(shù),可能為Pulse或其它資料,也可用以產(chǎn)生正確的時(shí)間延遲,。常應(yīng)用于:
一,、另一種Time Base,外加固定頻率;
二,、計(jì)數(shù)器;
三,、可規(guī)劃成另一種立即中斷輸入;
四、計(jì)速器(Speed Meter),、轉(zhuǎn)速表(Tachometer),。
中斷
??? 中斷(Interrupt)用來處理立即事件、或列為優(yōu)先處理之事件,,負(fù)責(zé)時(shí)間計(jì)數(shù)器超時(shí)中斷,、及外部事件產(chǎn)生中斷請(qǐng)求等工作。大部分微控制器的中斷處理系統(tǒng)是多層的,,內(nèi)設(shè)有中斷優(yōu)先級(jí)電路,,以決定先后順序。常應(yīng)用于:
一,、MCU呈被動(dòng)Standby狀態(tài)(Halt-Stop),,由外加信號(hào)來Wakeup;
二、需要立即處理(傳感器,、開關(guān),、警報(bào)器、電源故障預(yù)警器);
三,、需要一個(gè)固定間隔來處理(Display ,Key Scan ,Read-Time Clock);
微控制器上的外圍資源
??? 看了這么多微控制器的的基本架構(gòu)后,,讓我們繼續(xù)來了解微控制器還可以加掛那些外圍資源,以擴(kuò)充,、延伸其功能,。
串行輸出(Serial I/O)
微控制器內(nèi)含Serial I/O是為了提供對(duì)外部外圍Device的通訊管道,各家種類不同,,常見的有以下幾種:
◆UART(Universal Asynchronous Receiver Transmitter):Intel,Atmel;
◆USART(Universal Synchronous/Asynchronous Receiver
Transmitter ):Siemens;
◆SPI(Serial Peripheral Interface):Motorola;
◆SCI(Sertal Communications Interface):這是UART的加強(qiáng)版;
◆I2C bus(lnter Integrated Circuit bus):Philips;
◆Microwire/Plus:National Semiconductor;
液晶驅(qū)動(dòng)裝置(LCD Driver)
??? 在顯示接口上,,LCD(Liquid Crystal Display)是常運(yùn)用的顯示裝置,例如在一些多功能的電話,、數(shù)字溫度計(jì),、呼叫器、大哥大,、掌上型游戲機(jī)以上皆可以發(fā)現(xiàn)它的蹤跡,。因此內(nèi)含LCD驅(qū)動(dòng)線路的微控制器運(yùn)用相當(dāng)廣泛,有兩種驅(qū)動(dòng)方式可供選用:Segment和Dot Matrix,,例如:之前流行的寵物蛋是使用Dot Matrix的LCD顯示器;日系的微控制器廠商提供多樣內(nèi)含LCD驅(qū)動(dòng)裝置的微控制器可供選用,另外HOLTEK HT49XX 系列 也提供LCD驅(qū)動(dòng)裝置的微控制器,。
螢光管驅(qū)動(dòng)裝置(VFT Driver)
??? LCD顯示器在無光源或無背光的環(huán)境下,,我們即無法讀取顯示器之內(nèi)容,而VFT顯示器可提供高亮度,、且色彩多變化的視覺效果,,常應(yīng)用于高級(jí)的家電產(chǎn)品上,如:碟影機(jī),、DSP均衡器,。要求炫麗輸出效果的產(chǎn)品,在微控制器的選擇上VFT(Vacuum Fluorescent Tube)Driver是重要的資源之一,。
OSD
??? 對(duì)于電視及監(jiān)視器人性化接口是不可缺少的功能之一,,OSD(On Screen Display)部分顯示回路為接收水平同步信號(hào)(H-Sync)及垂直同步信號(hào)(V-Sync),再將信號(hào)透過RGB及Blanking將屏幕信息送出,,其顯示顏色至多可達(dá)八種,。各微控制器指令執(zhí)行速率會(huì)造成OSD的顯示行數(shù)及字段的不同,顯示行數(shù)由二行至數(shù)十行,,字段則由15~26個(gè)字符或更多,,通常執(zhí)行速率較快者可顯示較多的行數(shù)、字段,,速率較慢者在顯示上會(huì)有直接的受限。
模擬轉(zhuǎn)換數(shù)字接口(ADC)
??? 由于微控制器諸多應(yīng)用上,,需要偵測(cè)外部環(huán)境狀況,,做為處理數(shù)據(jù)上的參考,如在TV應(yīng)用方面其調(diào)諧器(Tuner)之自動(dòng)頻率控制(Auto Frequency Control)訊號(hào),,即為電壓訊號(hào),,其它如溫度之偵測(cè)也多是轉(zhuǎn)換為電壓訊號(hào),所以模擬/數(shù)字轉(zhuǎn)換(Analog to Digital Converter)的應(yīng)用在工業(yè)及消費(fèi)電子上都很廣泛,。
??? 模擬之場(chǎng)合是如此頻繁,,所以各廠家提供模擬/數(shù)字之轉(zhuǎn)換便成為一般之標(biāo)準(zhǔn)規(guī)格(如HOLTEK HT46XX系列),雖然如此,,對(duì)于模擬/數(shù)字之分辨率各家差異很大,,由3位~10位皆有,視各不同需求而異,。雖然提供的轉(zhuǎn)換信道有很多,,通常內(nèi)部?jī)H有一個(gè)電路處理,靠選擇器切換,,對(duì)于時(shí)間考慮不是特別強(qiáng)調(diào)之應(yīng)用上,,不致有太大之影響。
??? 另外還有一種模擬/數(shù)字之轉(zhuǎn)換方式,就是R to F(Resistance to Freguency),一般運(yùn)用在溫度/濕度之偵測(cè),利用電阻/電容式Sensor的變化特性,轉(zhuǎn)換成頻率值,以此頻率值來計(jì)算溫度/濕度的相對(duì)性,此類的IC如HOLTEK HT47XX系列,。
數(shù)字轉(zhuǎn)換模擬接口(DAC)
??? 在控制模擬組件需要模擬訊號(hào),,以微控制器而言,就必須內(nèi)建數(shù)字/模擬轉(zhuǎn)換(Digital to Analog Converter)來因應(yīng).其內(nèi)部由數(shù)字/模擬轉(zhuǎn)換緩存器及一階梯電阻構(gòu)成,數(shù)字/模擬的分辨率各為8位.在一個(gè)8位/參考電壓為5V的微控制器,假設(shè)一個(gè)數(shù)字值60轉(zhuǎn)換成模擬值的計(jì)算方式是(60/256x5Volts)=1.171875 V 例如應(yīng)用在鎖相回路上,,VCO(電壓控制振蕩器)即可用DAC做控制。另外Voice IC也是利用原先將語音錄制成數(shù)字資料,然后用DAC 方式將數(shù)字資料音頻轉(zhuǎn)換還原模擬語音訊號(hào),。
脈寬調(diào)變(PWM)
??? 其目的也是以數(shù)字輸出搭配外圍回路,,達(dá)到模擬的效果,其組成有前置配器(Pre-divider),、計(jì)數(shù)器(Counter),、數(shù)據(jù)閂鎖(Data Latches)、及比較電路(Compare Circuits)等,。PWM(Pulse Width Modulation)分辨率由程控,,當(dāng)然在一般的I/O埠亦可用時(shí)間及Duty Cycle計(jì)算技巧來達(dá)成PWM之功能,但反應(yīng)速度會(huì)受到限制,,且以今日各大半導(dǎo)體廠家皆提供其PWM功能之微控制器就便利性而言 (如HOLTEK HT46XX系列),,實(shí)在不需再將心思放在PWM之撰寫上,以減輕軟件的負(fù)擔(dān)。而PWM之功能由6位~14位之分辨率,,適合各種不同的需求,。
DTMF產(chǎn)生器、接收器
???? 電話由原來的Pulse演進(jìn)為現(xiàn)在的Tone譯碼方式,,不但提高了譯碼的速度,,也增加了可靠性與抗噪聲能力,DTMF(Dual Tone Multiple Frequency)顧名思義就是混合兩種頻率的音頻訊號(hào),,所以譯碼不易出差錯(cuò),。應(yīng)用在電話產(chǎn)品的微控制器時(shí),DTMF這個(gè)資源常是選擇的重要規(guī)格,。
看門狗(Watchdog Timer)
??? 微控制器在產(chǎn)品中是不允許當(dāng)機(jī)的,,但受到噪聲干擾或操作不當(dāng)時(shí),需有防范措施確保微控制器在當(dāng)機(jī)的情況下能夠自動(dòng)重置,,讓微控制器能夠繼續(xù)運(yùn)作.我們可以說看門狗(Watchdog timer)是用來監(jiān)看微控制器是否為不正常的當(dāng)機(jī),,許多微控制器都已把它列為標(biāo)準(zhǔn)配備。
??? 看門狗定時(shí)器實(shí)際上就像一個(gè)自跑式的RC振蕩器,,它完全不必外加零件,,意即不管是芯片的時(shí)脈振蕩接腳的時(shí)脈振蕩有沒有停止,它還是繼續(xù)計(jì)數(shù)而不隨之中斷而停止,,即便是芯片進(jìn)入省電的Halt狀態(tài)(在Halt狀態(tài)下,,芯片之時(shí)脈停止振蕩也一定不曾停止Watchdog timer之計(jì)時(shí),當(dāng)計(jì)時(shí)逾時(shí)后將使本芯片自動(dòng)重置,,I/O腳輸出保持不變,,耗電相當(dāng)?shù)氖?,Watchdog timer要不要致能,,在OTP版本必須在程序燒錄時(shí)決定,,以便決定要不要燒斷其保險(xiǎn)絲,,在Mask版本由使用者選擇是否使用這個(gè)功能。
雙時(shí)脈(Dual Clock)
??? 微控制器的供應(yīng)時(shí)脈愈高時(shí) ,,相對(duì)地耗電量也愈大 因此在一些使用電池供應(yīng)的產(chǎn)品選用時(shí) ,,雙時(shí)脈常是必須考慮的功能 ,一般副時(shí)脈是以32.768KHz運(yùn)作,,主要做為計(jì)時(shí)(Real Time Clock)之用,。
???? 所以綜合上面所言,微控制器的指令集結(jié)構(gòu)較單純、容易發(fā)展及修改,、I/O及中斷處理能力強(qiáng),,主要發(fā)展工作集中在軟件設(shè)計(jì)上,只要透過發(fā)展系統(tǒng)(ICE:In-Circuit Emulator)及萬用板即可進(jìn)行線上仿真工作,,進(jìn)行設(shè)計(jì)及修改的工作,。由于微控制器具備單價(jià)低、系統(tǒng)硬件架構(gòu)簡(jiǎn)單,、應(yīng)用程序的發(fā)展及修改容易,、芯片穩(wěn)定度佳、可靠度高,,是故其應(yīng)用領(lǐng)域極廣,,幾乎是無所不在。故在不同的場(chǎng)合選擇不同的配備,,充份了解微控制器的內(nèi)部資源將有助于產(chǎn)品開發(fā)且降低成本,。相信在未來會(huì)陸續(xù)增加新的外圍資源于微控制器內(nèi),應(yīng)用的范圍也愈來愈廣,,也因目前已經(jīng)取代傳統(tǒng)電路設(shè)計(jì)觀念,進(jìn)而成為新的設(shè)計(jì)主流,。