1. 程式人生 > >微控制器入門——微控制器的基本構成及工作原理(1)

微控制器入門——微控制器的基本構成及工作原理(1)



有了電子電路和數位電路的基礎知識,就可以開始學習嵌入式系統的核心元件-微控制器。從本期開始我們將為大家介紹微控制器的基礎知識。

在微控制器入門系列講座中,首先學習微控制器的基本構成和工作原理、以及外圍功能電路,然後,挑戰一個實際微控制器的執行。

微控制器是控制電子產品的大腦

現如今,我們生活中的許多電器都使用了微控制器。例如:手機、電視機、冰箱、洗衣機、以及按下開關,LED就閃爍的兒童玩具。那麼,微控制器在這些電器中究竟做了些什麼呢?

微控制器是這些電器動作的關鍵,是指揮硬體執行的。例如:接收按鈕或按鍵的輸入訊號,按照事先編好的程式,指揮馬達和LCD的外圍功能電路動作。

那麼,微控制器是如何構成的呢?(圖1)

微控制器是由CPU、記憶體、外圍功能等部分組成的。如果將微控制器比作人,那麼CPU是負責思考的,記憶體是負責記憶的,外圍功能相當於視覺的感官系統及控制手腳動作的神經系統。

圖1:微控制器的構成要素


儘管我們說CPU相當於人的大腦,但是它卻不能像人的大腦一樣,能有意識的、自發的思考。CPU只能依次讀取並執行事先儲存在記憶體中的指令組合(程式)。當然CPU執行的指令並不是“走路”、“講話”等高難度命令,而是一些非常簡單的指令,象從記憶體的某個地方“讀取資料”或把某個資料“寫入”記憶體的某個地方,或做加法、乘法和邏輯運算等等。然而這些簡單指令的組合,卻能實現許多複雜的功能。

會思考的CPU

讓我們從CPU的構成來了解它的作用吧。(圖2)

圖2:CPU的作用


程式計數器
CPU讀取指令時需要知道要執行的指令儲存在記憶體的什麼位置,這個位置資訊稱為地址(相當於家庭住址)。程式計數器(PC)就是儲存地址的暫存器。通常,PC是按1遞增設計的,也就是說,當CPU執行了0000地址中的指令後,PC會自動加1,變成0001地址。每執行一條指令PC都會自動加1,指向下一條指令的地址。可以說,PC決定了程式執行的順序。


指令解碼電路
指令解碼電路是解讀從記憶體中讀取的指令的含義。運算電路是根據解碼結果操作的。確切地講,指令解碼電路就是我們在“數位電路入門(2)”中學過的解碼電路,只不過電路結構稍微複雜些,所以,指令解碼電路的工作原理就是從被符號化(被加密)的指令中,還原指令。

運算電路


運算電路也稱為ALU(Arithmetic and Logic Unit),是完成運算的電路。能進行加法、乘法等算術運算、也能進行AND、OR 、BIT-SHIFT等邏輯運算。運算是在指令解碼電路的控制下進行的。通常運算電路的構成都比較複雜。

CPU內部暫存器
CPU內部暫存器是儲存臨時資訊的場所。有儲存運算值和運算結果的通用暫存器,也有一些特殊暫存器,比如儲存運算標誌的標誌暫存器等。也就是說,運算電路進行運算時,並不是在記憶體中直接運算的,而是將記憶體中的資料複製到通用暫存器,在通用暫存器中進行運算的。

CPU的工作原理

讓我們通過一個具體運算3+4,來說明CPU的操作過程吧。


假設儲存在記憶體中的程式和資料如下。

步驟1:當程式被執行時,CPU就讀取當前PC指向的地址0000中的指令(該操作稱為指令讀取)。經過解碼電路解讀後,這條指令的意思是“讀取0100地址中的內容,然後,儲存到暫存器1”。於是CPU就執行指令,從0100地址中讀取資料,存入暫存器1。

暫存器1: 0→3(由0變為3)
由於執行了1條指令,因此,PC的值變為0001

步驟2:由於PC的值為0001,因此CPU就讀取0001地址中的指令,經解碼電路解碼後,CPU執行該指令。然後PC再加1。

暫存器2:0→4(由0變為4)
PC:0001→0000

步驟3:由於PC的值為0002,因此CPU從0002地址中讀取指令,送給指令解碼電路。解碼結果是:將暫存器1和暫存器2相加,然後將結果存於暫存器1。

暫存器1:3→7

PC:2→3

於是3+4的結果7被存於暫存器1,加法運算結束。CPU就是這樣,依次處理每一條簡單的指令。

能記憶的記憶體

記憶體是微控制器的記憶裝置,主要記憶程式和資料,大體上分為ROM和RAM兩大類。

ROM

ROM(Read Only Memory)是隻讀記憶體的簡稱。儲存在ROM中的資料不能刪除,也不會因斷電而丟失。ROM主要用於儲存使用者程式和在程式執行中保持不變的常數。

大多數瑞薩 (Renesas)的微控制器都用快閃記憶體作為ROM。這是因為快閃記憶體不僅可以象ROM一樣,即使關機也不會丟失資料,而且還允許修改資料。

RAM

RAM(Random Access Memory)是可隨機讀/寫記憶體的簡稱。可以隨時讀寫資料,但關機後,儲存在RAM中的資料也隨之消失。主要用於儲存程式中的變數。


在單晶片微控制器中(*1),常常用SRAM作為內部RAM。SRAM允許高速訪問,但是,內部結構太複雜,很難實現高密度整合,不適合用作大容量記憶體。

除SRAM外,DRAM也是常見的RAM。DRAM的結構比較容易實現高密度整合,因此,比SRAM的容量大。但是,將高速邏輯電路和DRAM安裝於同一個晶片上較為困難,因此,一般在單晶片微控制器中很少使用,基本上都是用作外圍電路。

(*1)單晶片微控制器是指:將CPU,ROM,RAM,振盪電路,定時器和序列I/F等集成於一個LSI的微處理器。單晶片微控制器的基礎上再配置一些系統的主要外圍電路,而形成的大規模積體電路稱為系統LSI。

“為何要使用微控制器……”


為什麼很多電器裝置都要使用微控制器呢?


讓我們用一個點亮LED的電路為例,來說明。如圖3所示,不使用微控制器的電路是一個由LED,開關和電阻構成的簡單電路。

圖3:不安裝微控制器的LED電路

使用微控制器的電路如圖4所示。

圖4:安裝微控制器的LED電路圖

很顯然,使用微控制器的電路要複雜得多,而且設計電路還要花費精力與財力。好象使用微控制器並沒有什麼優點。但是,現在下結論還為時尚早。


如果我們讓這個電路做一些比較複雜的操作,會怎麼樣呢。例如:如果希望LED在按下開關後,經過一段時間再點亮或熄滅,那麼,對於安裝有微控制器的電路來說,只需更改微控制器中的程式就可以了,並不需更改原電路。另一方面,對於沒有微控制器的電路來說,就必須在元電路中加入定時器IC,或者用標準邏輯IC和
FPGA構成邏輯電路,才能實現這個功能。

也就是說,在更改和新增新功能時,帶有微控制器的電路顯然更加容易實現。這正是電器裝置使用單片機的原因。微控制器可真是個方便的東西哦!