您當前的位置:首頁 > 遊戲

深度解析,微控制器執行原理,你知道嗎?

作者:由 華維微控制器程式設計 發表于 遊戲時間:2022-01-31

微控制器是將中央處理單元(CPU)、儲存器、輸入輸出整合在一片晶片上,可以說微控制器就是一臺微型計算機,只是和我們平常使用的計算機相比它的功能有所不同,也沒有我們用的計算機那樣強大。

計算機可以執行一個個應用,微控制器可以按照工程師的編寫可執行檔案,實現各種各樣的功能。那麼,微控制器是怎麼知道要執行什麼指令,做什麼動作呢,我們的指令又是怎麼被微控制器識別呢?瞭解這個過程,可以加深對微控制器的理解。

深度解析,微控制器執行原理,你知道嗎?

首先要從CPU的組成說起,CPU是由電晶體組成的,這些電晶體是一種半導體器件,比如二極體就是最為常見的半導體器件。電流只能從正極流向負極,反向則截止。

深度解析,微控制器執行原理,你知道嗎?

電晶體透過各種組合方式構成閘電路:與門,或門,非門,異或門……。閘電路又稱為邏輯閘,是數位電路的基礎,常見閘電路,及其真值表:

深度解析,微控制器執行原理,你知道嗎?

我們瞭解下與閘電路:

深度解析,微控制器執行原理,你知道嗎?

與閘電路可以想象為兩個串聯開關控制一個燈泡,只有同時閉合兩個開關,燈泡才會被點亮。開關表示電晶體的導通與截止,燈泡的點亮與熄滅表示電路輸出的高低電平。

其他閘電路也是由各種電晶體構成,不同的輸入,有不同的輸出,構成各種功能。各種閘電路透過複雜的組合就成了CPU了。然後用CPU完成各種複雜計算的。

加法器

有了CPU,我們用它來算一道小學生算術題1+1=2,看看它是怎麼計算的,從一個簡單加法器開始,加法器由半加器組成。

半加器:

半加器由一個與門和異或門構成。不考慮低位進位來的進位值,只有兩個輸入,兩個輸出。

深度解析,微控制器執行原理,你知道嗎?

1+1=2,2在二進位制中表示為0010。在半加器中:異或門輸入不同的電平(不是同時高或低),輸出為高,也就是1+0或0+1,輸出1,當兩個都輸入為1輸出為0,與門則輸出為1,也就是進位。可以把它抽象成一個黑盒子:

深度解析,微控制器執行原理,你知道嗎?

全加器:

用兩個半加器可以組成一個全加器:

深度解析,微控制器執行原理,你知道嗎?

當多位數相加時,半加器可用於最低位求和,並給出進位數。第二位的相加有兩個待加數(B和進位CO),還有一個來自前面低位送來的進位數 (A)。這三個數相加,得出本位和數(全加和數)和進位數。同樣可以把它抽象出來:

深度解析,微控制器執行原理,你知道嗎?

如果要計算多位數的相加,則需要多個全加器以及其他閘電路,組合出更復雜的加法器。減法的運算可以用加法來分解:

減法:10 - 5 = 10 +(-5),須透過反碼,補碼等操作。

其他運算器也有相關的閘電路來組成,有關知識這裡不展開。

從加法器我們不難得出,CPU的運算是各種閘電路的高低電平的輸入和輸出,高電平為1,低電平為0,把我們平常的十進位制數字轉成二進位制數輸入,輸出二進位制數。

暫存器

兩個數字相加用全加器的組合來完成,如果是多個數字的相加呢?比如1+2+3+4+5+……+100,該怎麼完成呢?

按照我們的計算過程來看這個問題,我們先把前兩個數拿出來相加,得到的和再和第三個數相加,依次累加到100,轉換到微控制器來完成,那就要把所有的相加數放到一個儲存器中,以便在每次的相加中取出,還要把每次相加的和數儲存起來用到下一次的相加,這就用到了暫存器了。

暫存器-1儲存1-100的數字,暫存器-2儲存每次的相加結果。計算1-100的相加,暫存器-2的初始值為0,依次取出暫存器-1的數字和暫存器-2的結果相加:

1+0=1,

2+1=3,

3+3=6,

4+6=10……

鎖存器:

但是暫存器是怎麼幫我們儲存資料的呢?這就要鎖存器(Latch)來幫助了,兩個或非門組成了一個最簡單的鎖存器。

S

R

Q

1

0

1

0

0

0

1

0

0

1

0

1

0

0

0

1

1

1

深度解析,微控制器執行原理,你知道嗎?

簡單的說,這個單元記住了之前S端的輸入1,直到我們把R端設為1,輸出端Q才變回0。

然後在這個簡單鎖存器加上控制端G和一個輸入端D就變成了D鎖存器:

深度解析,微控制器執行原理,你知道嗎?

它有兩個輸入端,分別是一個訊號控制G,一個輸入資料訊號D,一個輸出Q。它的功能就是在G有效的時候把D的值傳給Q,也就是鎖存的過程。

觸發器:

把兩個D鎖存器結合到一起就成了D觸發器(DATA flip-flop)。觸發器也叫雙穩態門,又稱雙穩態觸發器,是一種可以在兩種狀態下執行的數字邏輯電路。觸發器一直保持它們的狀態,直到它們收到輸入脈衝,又稱為觸發。常見的觸發器包括:RS 觸發器、D 觸發器和 JK觸發器等,其中D觸發器最為常用。

深度解析,微控制器執行原理,你知道嗎?

當鎖存器-1控制G為有效訊號時,D的輸入傳到到鎖存器-2的輸入,但是此時鎖存器-2的控制訊號不是有效的,所以鎖存器-2的輸出Q沒有改變;當鎖存器-1的控制G變為無效,鎖存器-2的控制訊號變為有效,鎖存器-2的輸出Q就改變了,也就是觸發器的D輸入傳到了Q,並且D沒有輸入就一直不變。

時序電路:

我們再來看看1—100的累加過程,如果暫存器-1和暫存器-2的儲存速度不一樣,或者運算單元取數不協調,也就是暫存器-2沒來得及儲存,或者暫存器-1還沒取出下一個參與運算的數字,則此次的運算就會就會出錯,又會影響到下一次的運算,這個影響會無限放大到之後的結果,並且微控制器還有很多外設需要同步執行,這時就需要一個統一指揮來同步各個部分的行動,什麼時候該做什麼,做到哪一步了。

深度解析,微控制器執行原理,你知道嗎?

這個指揮就是時鐘。時鐘電路產生脈衝訊號給電路,可以認為給一次脈衝訊號,微控制器各個部位就動一下,電路就重新整理一下,這就做到了行動統一。前面的D鎖存器,D觸發器G輸入端就是時鐘脈衝訊號輸入,控制G輸入訊號,進而控制Q的輸出,或者記住Q值。這是記憶體最初的樣子。

到此,我們知道了暫存器就是一種時序邏輯電路,但這種時序邏輯電路只包含儲存電路。暫存器的儲存電路是由鎖存器或觸發器構成的,用來暫時存放參與運算的資料和運算結果。

一個鎖存器或觸發器能儲存1位二進位制數,所以由N個鎖存器或觸發器可以構成N位暫存器,一般有8位暫存器、16位暫存器等。它被廣泛的用於各類數字系統和計算機中。

執行程式

有了前面的鋪墊,我們來嘗試分析一下,程式碼從是怎麼被微控制器識別的,並轉換成功能輸出的。

首先工程師把程式碼邏輯寫好,再編譯成微控制器的可執行程式,這個可執行程式實際上就是變成由0,1組成的按一定規律排列好的二進位制數,再用燒錄器寫進微控制器。

微控制器內部就是由我們前面學的閘電路的各種組合,閘電路也由半導體器件構成,這些半導體PN接面是一種特殊的熔絲。空白的微控制器內部是矩陣排列的熔絲,在燒錄過程,程式中0的地方就熔斷,1的地方就導通。燒錄好之後,微控制器就有了邏輯功能。

執行程式過程:從程式儲存區讀取程式指令——分析指令——執行指令。

讀取指令:就是根據程式計算器(PC)的地址取出相應的指令,送到指令暫存器。

分析指令:將指令暫存器中的指令操作碼取出後進行譯碼,分析其指令性質。如指令是我們之前的加法運算中的取加數,則尋找加數的地址。

執行指令:無非是把一條二進位制程式碼,轉換成數字訊號(高低電平),操作邏輯閘電路,就像我們的加法器一樣輸入輸出。把經過邏輯閘運算的結果輸出,把微控制器的相關引腳電平輸出高或低。

也就是微控制器上電開機,微控制器處於初始狀態,可以認為初始狀態中程式計算器(PC)就有了第一個指令地址,在時序電路作用下,送到指令暫存器,分析指令,執行指令,輸出功能,如此迴圈。微控制器就這樣自動進入執行程式過程。

當然微控制器執行的過程是很複雜的,這裡只是個人簡單的理解,總結。