2011年5月18日 星期三

MCU 架構介紹

文章出處:電子工程專輯

http://www.eettaiwan.com/ART_8800076794_876045_TA_4ff997e5.HTM

MCU 架構介紹


由於制程的改進,8位MCU與4位MCU價差相去無幾,8位已漸成為市場主流;針對4位MCU,大部份供貨商採接單生產,目前4位MCU大部份應用在計算器、車表、車用防盜裝置、呼叫器、無線電話、CD Player、LCD驅動控制器、LCD Game、儿童玩具、磅秤、充電器、胎壓計、溫濕度計、遙控器及傻瓜相機等;8位MCU大部份應用在電表、馬達控制器、電動玩具機、變頻式冷氣機、呼叫器、傳真機、來電辨識器(Caller ID)、電話錄音機、CRT Display、鍵盤及USB等;16位MCU大部份應用在行動電話、數位相機及攝錄放影機等;32位MCU大部份應用在Modem、GPS、PDA、HPC、STB、Hub、Bridge、Router、工作站、ISDN電話、激光列印機與彩色傳真機;64位MCU大部份應用在高階工作站、多媒體互動系統、高級電視游樂器(如SEGA的Dreamcast及Nintendo的GameBoy)及高級終端機等。



而在MCU開發方面,以架構而言,可分為兩大主流;RISC(如HOLTEK HT48XXX系列)與CISC(如華邦W78系列). RISC (Reduced Instruction Set Computer) 代表MCU的所有指令都是利用一些簡單的指令組成的,簡單的指令代表 MCU 的線路可以盡量做到最佳化,而提高執行速率,相對的使得一個指令所需的時間減到最短。HOLTEK的HT46XX(A/D MCU系列) HT47XX(R to F MCU系列) HT48XX(一般I/O MCU系列) HT49XX(LCD MCU系列) 便是採用 RISC 結構來設計。不管是 RISC 或是 CISC(Complex Instruction Set Computer),設計MCU的目的便是為人類服務的,對於 RISC 來說,因為指令集的精簡,所以許多工作都必須組合簡單的指令,而針對較複雜組合的工作便需要由『編譯程式』(compiler) 來執行,而 CISC MCU因為硬體所提供的指令集較多,所以許多工作都能夠以一個或是數個指令來代替,compiler 的工作因而減少許多。

以一個數值運算程式來說,使用 CISC 指令集的MCU運算對於一個積分表達式可能只需要十個機器指令,而 RISC MCU在執行相同的程式時,卻因為CPU 本身不提供浮點數乘法的指令,所以可能需要執行上百個機器指令 (但每一個指令可能只需要 CISC 指令十分之一的時間),而由程式語言轉換成機器指令的動作是由程式語言的 Compiler 來執行,所以在 RISC MCU的Compiler 便會較複雜 。因為同樣一個高級語言 A=B*C 的運算,在 RISC MCU轉換為機器指令可能有許多種組合,而每一種組合的『時間/空間』組合都不盡相同。

所以 RISC 與 CISC 的取舍之間,似乎也是MCU硬體架構與軟體(Compiler) 的平衡之爭,應該沒有絕對優勢的一方,只能說因應不同的需求而有不同的產品,例如工作單純的列印機核心 MCU,便適合使用效能穩定,但單位指令效率較佳的 RISC MCU.



微控制器(MCU)的基本架構



微控制器產品架構由早期以累積器為基礎的CPU,演進至現今含精簡指令(RISC)或同時含RISC、DSP如Motorola的68356,也有如DEC的SAIIC、與Hitachi的SH-DSP系列等之32位嵌入式微控制器 ,每一系列產品又因應不同的應用與介面需求 ,衍生出不同規格的產品 。微控制器產品以特性做為區分的標準與市場統計的依據 ,區分為4位 、8位 、以及16/32位等三大類 。各廠商依其不同功能組合 ,發展出系列性的微控制器產品 ,如NEC供應PD75X的4位系列 ,Toshiba供應47CXX的4位系列 、HOLTEK供應HT48CXX的8位系列 、及Intel之MCS-96的16位系列等。

以下就微控器的基本架構做介紹,如下先介紹MCU架構方塊圖。



MCU架構方塊圖






程式內存

程式內存(Program ROM)在微控制器中是只讀而不可寫入之記憶單元,此內存主要用來放置使用者所開發之程式,而其性質乃屬於不常更動或永不變動之資料,微控制器之動作便是依據儲存於此區之程式指令運作。在8位單晶片中常見的程式內存容量有0.5K、IK、2K、4K 及8K,而通常應用在微控制器的程式內存有下列幾種方式,見(表一):



表一


另外關於程式保密部份,不論是加密或保險絲燒斷保護 ,都是為了防止程式被未授權之使用者窺看、竊取(如反組譯程式 、修改內容 、盜取程式等)。程式保密這個功能選擇只在提供OTP、開窗型包裝、EEPROM 及 Flash ROM上使用,因為這些IC可借由燒錄器來回讀取程式代碼,在Mask版本則不需要進行程式保密的步驟 。



隨機存取內存



隨機存取內存(Random Access Memory;RAM),亦稱為讀/寫內存(Read-Write Memory),常是被用來暫時存放資料、或是程式執行存放資料的地方,用途相當廣泛。以HOLTEK 8位微控制器為例,其容量有64、96、160及224個Byte選擇。


累積器



累積器(Accumulator),是MCU的運作中樞 ,80%的指令都與累積器有關 ;資料可以被存放在累積器中,直到匯流排或其它單元準備接受它、或直到程式需要它為止 。



緩衝記憶體器

緩衝記憶體器(Register)是MCU內部用來暫時存放資料的地方,每個緩衝記憶體器的功能各不相同,但卻有一共同的特性,就是可以直接讀/寫,因其位於MCU的內部,故減少了一些不必要的等待及尋址時間,另外有些MCU的I/O Port,也以緩衝記憶體器型態來直接存取控制。


堆棧及堆棧指針


堆棧(Stack)及堆棧指針(Stack Pointer),堆棧就和盤子一樣,一個一個由下往上堆,而取出時則由上一個一個往下拿,不能由中間抽出,因此又稱為後進先出隊列(Last-In-First-Out Queues)」。功能如下;

一. 暫時存放PC(Program Count)的值,適用於"子程式呼叫”,或中斷發生時將PC的值暫時儲存起來;

二. 可視為緩衝記憶體器使用,以Push,Pop來完成;

三. 有些MCU其Stack Level數是固定的(如HOLTEK μC系列),有些則可自定。


運算邏輯單元



運算邏輯單元(Algorithm Logic Unit;ALU),其功能在於執行算術指令及邏輯判斷,除了產生結果之外,也產生相關的Flag(Zero、Carry、Borrow、Status),每一個MCU都不完全一樣,尤其是Carry Flag一定要查看指令解說表。

輸入/輸出(I/O Port)


在單晶片微電腦應用系統中,I/O的擴充不是目的,而是為了提供外部設備一個輸入/輸出的訊息通道,做為外界與MCU間的溝通管道。例如接鍵盤、顯示器、驅動開關控制或測量等;在I/O擴充時必須考慮與之相連接的週邊設備硬體電路特性,如:電位匹配、干擾抑制、驅動能力(如Source,Sink能力)等。

微控制器在I/O埠方面備有多種電路形式,其中有多埠可以經由軟體以位單位來設定輸出/入方向。各埠附加大電流、高耐壓的緩衝器,以直接驅動LED與高功率電晶體,以及做模擬訊號的輸入之用。


定時器、定時器


定時器(Time Counter)、定時器(Timer),由外加振蕩晶體,經除頻電路來提供MCU數種不同的時基(Time Base)。常應用於:

一. 時鐘之時基(如1sec、500ms、62.5ms、15.625ms等);

二. PWM(Pulse Width Modulation)之Time Base;

三. Key Scan;

四. LED Scan;

五. Frequency output;

六. Pulse Reading;

七. APO (Auto Power OFF)等。


計數器


計數器(Event Counter)專用於累計外部的事件個數,可能為Pulse或其它資料,也可用以產生正確的時間延遲。常應用於:

一、另一種Time Base,外加固定頻率;

二、計數器;

三、可規劃成另一種立即中斷輸入;

四、計速器(Speed Meter)、轉速表(Tachometer)。


中斷


中斷(Interrupt)用來處理立即事件、或列為優先處理之事件,負責時間計數器超時中斷、及外部事件產生中斷請求等工作。大部份微控制器的中斷處理系統是多層的,內設有中斷優先級電路,以決定先後順序。常應用於:


一、MCU呈被動Standby狀態(Halt-Stop),由外加信號來Wakeup;

二、需要立即處理(感應器、開關、警報器、電源故障預警器);

三、需要一個固定間隔來處理(Display ,Key Scan ,Read-Time Clock);


微控制器上的週邊資源


看了這麼多微控制器的的基本架構後,讓我們繼續來了解微控制器還可以加挂那些週邊資源,以擴充、延伸其功能。



串列輸出(Serial I/O)


微控制器內含Serial I/O是為了提供對外部週邊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的加強版;

◆I2C bus(lnter Integrated Circuit bus):Philips;

◆Microwire/Plus:National Semiconductor;


液晶驅動裝置(LCD Driver)


在顯示介面上,LCD(Liquid Crystal Display)是常運用的顯示裝置,例如在一些多功能的電話、數位溫度計、呼叫器、大哥大、掌上型遊戲機以上皆可以發現它的蹤跡。因此內含LCD驅動線路的微控制器運用相當廣泛,有兩種驅動方式可供選用:Segment和Dot Matrix,例如:之前流行的寵物蛋是使用Dot Matrix的LCD顯示器;日系的微控制器廠商提供多樣內含LCD驅動裝置的微控制器可供選用,另外HOLTEK HT49XX 系列 也提供LCD驅動裝置的微控制器。


螢光管驅動裝置(VFT Driver)


LCD顯示器在無光源或無背光的環境下,我們即無法讀取顯示器之內容,而VFT顯示器可提供高亮度、且色彩多變化的視覺效果,常應用於高級的家電產品上,如:碟影機、DSP均衡器。要求炫麗輸出效果的產品,在微控制器的選擇上VFT(Vacuum Fluorescent Tube)Driver是重要的資源之一。

OSD


對於電視及監視器人性化介面是不可缺少的功能之一,OSD(On Screen Display)部份顯示回路為接收水平同步信號(H-Sync)及垂直同步信號(V-Sync),再將信號透過RGB及Blanking將螢幕資訊送出,其顯示顏色至多可達八種。各微控制器指令執行速率會造成OSD的顯示行數及字段的不同,顯示行數由二行至數十行,字段則由15~26個字符或更多,通常執行速率較快者可顯示較多的行數、字段,速率較慢者在顯示上會有直接的受限。


模擬轉換數位介面(ADC)


由於微控制器諸多應用上,需要偵測外部環境狀況,做為處理數據上的參考,如在TV應用方面其調諧器(Tuner)之自動頻率控制(Auto Frequency Control)訊號,即為電壓訊號,其它如溫度之偵測也多是轉換為電壓訊號,所以模擬/數位轉換(Analog to Digital Converter)的應用在工業及消費電子上都很廣泛。



模擬之場合是如此頻繁,所以各廠家提供模擬/數位之轉換便成為一般之標準規格(如HOLTEK HT46XX系列),雖然如此,對於模擬/數位之解析度各家差異很大,由3位~10位皆有,視各不同需求而異。雖然提供的轉換訊息通道有很多,通常內部僅有一個電路處理,靠選擇器切換,對於時間考慮不是特別強調之應用上,不致有太大之影響。



另外還有一種模擬/數位之轉換方式,就是R to F(Resistance to Freguency),一般運用在溫度/濕度之偵測,利用電阻/電容式Sensor的變化特性,轉換成頻率值,以此頻率值來計算溫度/濕度的相對性,此類的IC如HOLTEK HT47XX系列。

數位轉換模擬介面(DAC)


在控制模擬組件需要模擬訊號,以微控制器而言,就必須內建數位/模擬轉換(Digital to Analog Converter)來因應.其內部由數位/模擬轉換緩衝記憶體器及一階梯電阻構成,數位/模擬的解析度各為8位.在一個8位/參考電壓為5V的微控制器,假設一個數位值60轉換成模擬值的計算方式是(60/256x5Volts)=1.171875V

例如應用在鎖相回路上,VCO(電壓控制振蕩器)即可用DAC做控制。另外Voice IC也是利用原先將語音錄制成數位資料,然後用DAC 方式將數位資料音頻轉換還原模擬語音訊號。

脈寬調變(PWM)


其目的也是以數位輸出搭配週邊回路,達到模擬的效果,其組成有前置配器(Pre-divider)、計數器(Counter)、數據閂鎖(Data Latches)、及比較電路

(Compare Circuits)等。PWM(Pulse Width Modulation)解析度由程控,當然在一般的I/O埠亦可用時間及Duty Cycle計算技巧來達成PWM之功能,但反應速度會受到限制,且以今日各大半導體廠家皆提供其PWM功能之微控制器就便利性而言 (如HOLTEK HT46XX系列),實在不需再將心思放在PWM之撰寫上,以減輕軟體的負擔。而PWM之功能由6位~14位之解析度,適合各種不同的需求。

DTMF產生器、接收器


電話由原來的Pulse演進為現在的Tone譯碼方式,不但提高了譯碼的速度,也增加了可靠性與抗噪音能力,DTMF(Dual Tone Multiple Frequency)顧名思義就是混合兩種頻率的音頻訊號,所以譯碼不易出差錯。應用在電話產品的微控制器時,DTMF這個資源常是選擇的重要規格。


看門狗(Watchdog Timer)


微控制器在產品中是不允許當機的,但受到噪音干擾或作業不當時,需有防範措施確保微控制器在當機的情況下能夠自動重置,讓微控制器能夠繼續運作.我們可以說看門狗(Watchdog timer)是用來監看微控制器是否為不正常的當機,許多微控制器都已把它列為標準配備。

看門狗定時器實際上就像一個自跑式的RC振蕩器,它完全不必外加零件,意即不管是晶片的時脈振蕩接腳的時脈振蕩有沒有停止,它還是繼續計數而不隨之中斷而停止,即便是晶片進入省電的Halt狀態(在Halt狀態下,晶片之時脈停止振蕩也一定不曾停止Watchdog timer之計時,當計時逾時後將使本晶片自動重置,I/O腳輸出保持不變,耗電相當的省),Watchdog timer要不要致能,在OTP版本必須在程式燒錄時決定,以便決定要不要燒斷其保險絲,在Mask版本由使用者選擇是否使用這個功能。


雙時脈(Dual Clock)


微控制器的供應時脈愈高時 ,相對地耗電量也愈大 因此在一些使用電池供應的產品選用時 ,雙時脈常是必須考慮的功能 ,一般副時脈是以32.768KHz運作,主要做為計時(Real Time Clock)之用。

所以綜合上面所言,微控制器的指令集結構較單純、容易發展及修改、I/O及中斷處理能力強,主要發展工作集中在軟體設計上,只要透過發展系統(ICE:In-Circuit Emulator)及萬用板即可進行線上模擬工作,進行設計及修改的工作。由於微控制器具備單價低、系統硬體架構簡單、應用程式的發展及修改容易、晶片穩定度佳、可靠度高,是故其應用領域極廣,幾乎是無所不在。故在不同的場合選擇不同的配備,充份了解微控制器的內部資源將有助於產品開發且降低成本。相信在未來會陸續增加新的週邊資源於微控制器內,應用的範圍也愈來愈廣,也因目前已經取代傳統電路設計觀念,進而成為新的設計主流。



作者:陳進成 畢業於海洋大學 電子工程學系

目前服務於盛群半導體 微控制器產品處



參考資料:1.零組件雜誌 1997,9,vol.71

(微控制器內藏資源) 孫文華



2.新電子雜誌 2000/05/16

( 微控制器的發展) 劉鑫

沒有留言:

張貼留言