微機(jī)原理與嵌入式接口技術(shù)課件:微型計(jì)算機(jī)基礎(chǔ)_第1頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:微型計(jì)算機(jī)基礎(chǔ)_第2頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:微型計(jì)算機(jī)基礎(chǔ)_第3頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:微型計(jì)算機(jī)基礎(chǔ)_第4頁(yè)
微機(jī)原理與嵌入式接口技術(shù)課件:微型計(jì)算機(jī)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩104頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微型計(jì)算機(jī)基礎(chǔ)1.1計(jì)算機(jī)中的數(shù)制與編碼1.2微型計(jì)算機(jī)概述1.3嵌入式系統(tǒng)概述組習(xí)題1

本章要點(diǎn)

☆計(jì)算機(jī)中的數(shù)制、編碼及其運(yùn)算

☆微型計(jì)算機(jī)、嵌入式系統(tǒng)及ARM

的發(fā)展歷程

☆微型計(jì)算機(jī)的體系結(jié)構(gòu)及其相關(guān)概念

☆STM32系列微處理器介紹

1.1計(jì)算機(jī)中的數(shù)制與編碼

1.1.1數(shù)制及其轉(zhuǎn)換1.進(jìn)位計(jì)數(shù)制進(jìn)位計(jì)數(shù)制是人們最常用的計(jì)數(shù)方法。比如計(jì)時(shí)用的六十進(jìn)制(1小時(shí)=60分鐘),計(jì)年用的十二進(jìn)制(1年=12月)等。在日常生活中最常用的是十進(jìn)制,但計(jì)算機(jī)中只使用二進(jìn)制。進(jìn)位計(jì)數(shù)制用式(1-1)表示。

式中,數(shù)字n有M位小數(shù)、n+1位整數(shù);d

i是數(shù)位i的取值,是幾進(jìn)制數(shù)就有幾種取值可能,比如十進(jìn)制有0~9十種取值,十六進(jìn)制有0~9、A~F十六種取值,二進(jìn)制只有0、1兩種取值;R

i是數(shù)位i的權(quán),其中R為基數(shù),二進(jìn)制R=2,十進(jìn)制R=10,十六進(jìn)制則有R=16。

例如:

2.不同進(jìn)制之間的轉(zhuǎn)換

1)二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換

(1)十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)。

除2取余法:十進(jìn)制整數(shù)除以2取余,再將商除以2,再得余數(shù),直到商為0為止;先得的余數(shù)權(quán)低,后得的余數(shù)權(quán)高。

【例1.1】將十進(jìn)制整數(shù)(85)10采用除2取余法轉(zhuǎn)換成二進(jìn)制數(shù),其過(guò)程如下:

權(quán)重法:從低位到高位,二進(jìn)制各位的權(quán)分別為1、2、4、8、16、32、64、128、…,因此對(duì)于255以?xún)?nèi)的十進(jìn)制數(shù)還可以采用權(quán)重法進(jìn)行快速轉(zhuǎn)換。

(3)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。

無(wú)論是整數(shù)還是小數(shù),將二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)根據(jù)式(1-1)按權(quán)展開(kāi)求和即可。

2)十進(jìn)制與十六進(jìn)制、八進(jìn)制之間的轉(zhuǎn)換

十進(jìn)制轉(zhuǎn)換成十六進(jìn)制跟十進(jìn)制轉(zhuǎn)換成二進(jìn)制的方法類(lèi)似。對(duì)于整數(shù)的轉(zhuǎn)換是將十進(jìn)制數(shù)除以16取余,直到余數(shù)為0為止,先得的余數(shù)權(quán)低,后得的余數(shù)權(quán)高。對(duì)于小數(shù)的轉(zhuǎn)換是將十進(jìn)制數(shù)乘以16取整,取整后小數(shù)再乘以16取整,直到取整后的小數(shù)為0或滿(mǎn)足精度要求為止,先得的整數(shù)權(quán)高,后得的整數(shù)權(quán)低。

3)二進(jìn)制與十六進(jìn)制、八進(jìn)制之間的轉(zhuǎn)換

(1)二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換。

二進(jìn)制轉(zhuǎn)換成十六進(jìn)制以小數(shù)點(diǎn)為界,對(duì)于整數(shù)部分,從最右邊開(kāi)始,將4位二進(jìn)制數(shù)劃為一個(gè)整體,不足4位時(shí)在左邊添0補(bǔ)足4位;對(duì)于小數(shù)部分,從最左邊開(kāi)始,將4位二進(jìn)制數(shù)劃為一個(gè)整體,不足4位時(shí)在右邊添0補(bǔ)足4位;然后按照表1.1的對(duì)應(yīng)關(guān)系,直接寫(xiě)出轉(zhuǎn)換結(jié)果。

(2)二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換。

二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換跟二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換相似,不同的是3位二進(jìn)制數(shù)對(duì)應(yīng)1位八進(jìn)制數(shù),其轉(zhuǎn)換過(guò)程不再贅述。

1.1.2計(jì)算機(jī)中數(shù)的表示與運(yùn)算

眾所周知,數(shù)字計(jì)算機(jī)只能接受數(shù)字信息,任何信息都必須用二進(jìn)制編碼來(lái)表示。數(shù)值數(shù)據(jù)信息分為無(wú)符號(hào)數(shù)和有符號(hào)數(shù)。數(shù)字信息中所有的二進(jìn)制位都表示數(shù)值大小的數(shù)稱(chēng)為無(wú)符號(hào)數(shù);數(shù)字信息中除了表示數(shù)值大小的數(shù)位外,還用1位二進(jìn)制位表示數(shù)的符號(hào),這就是有符號(hào)數(shù)。符號(hào)位通常處于數(shù)的最高位,用“0”表示正,用“1”表示負(fù)。

1.二進(jìn)制無(wú)符號(hào)數(shù)的運(yùn)算

1)加法運(yùn)算

運(yùn)算法則:0+0=0;1+0=1;0+1=1;1+1=0(產(chǎn)生進(jìn)位)。

2)減法運(yùn)算

運(yùn)算法則:1-0=1;0-0=0;1-1=0;0-1=1(產(chǎn)生借位)。

3)乘法運(yùn)算

運(yùn)算法則:0×0=0;0×1=0;1×0=0;1×1=1。

要實(shí)現(xiàn)乘法運(yùn)算過(guò)程并不是一件容易的事,在計(jì)算機(jī)中實(shí)現(xiàn)乘法運(yùn)算一般有三種方法。

(1)軟件編程實(shí)現(xiàn)。在早期的計(jì)算機(jī)中,沒(méi)有乘法電路,只能通過(guò)編程方法用移位運(yùn)算和加法運(yùn)算來(lái)實(shí)現(xiàn),比如被乘數(shù)左移法、部分積右移法等。

(2)加法器+硬件輔助電路實(shí)現(xiàn)。在加法器和移位寄存器的基礎(chǔ)上,再增加必要的輔助電路實(shí)現(xiàn)乘法運(yùn)算,比如Intel

8086就是采用這種方法。

(3)專(zhuān)用乘法器實(shí)現(xiàn)。在CPU中除了加法器和移位寄存器外,專(zhuān)設(shè)硬件高速乘法部件,專(zhuān)門(mén)負(fù)責(zé)乘法運(yùn)算,運(yùn)算效率高?,F(xiàn)代的CPU均有專(zhuān)門(mén)的乘法部件。

4)除法運(yùn)算

除法運(yùn)算也是通過(guò)移位、減法等運(yùn)算聯(lián)合實(shí)現(xiàn)的。與乘法運(yùn)算類(lèi)似,實(shí)現(xiàn)除法運(yùn)算一般也有三種方法:一是完全通過(guò)軟件編程實(shí)現(xiàn);二是通過(guò)減法器+硬件輔助電路實(shí)現(xiàn);三是用專(zhuān)用除法器實(shí)現(xiàn)。

2.二進(jìn)制有符號(hào)數(shù)的表示與運(yùn)算

二進(jìn)制有符號(hào)數(shù)表示形式如下:

1)原碼

數(shù)值最左邊一位為符號(hào)位,用0表示正數(shù),用1表示負(fù)數(shù),其余的位表示數(shù)值的大小。

假設(shè)有符號(hào)數(shù)x,它的原碼表示形式為[x]

原。

例如,假設(shè)用8位二進(jìn)制數(shù)表示,則

如果一個(gè)有符號(hào)數(shù)用n位二進(jìn)制數(shù)表示,除去1位符號(hào)位外,用于表示數(shù)值的位數(shù)為n-1位,則n位二進(jìn)制數(shù)原碼能表示有符號(hào)數(shù)的范圍為-2n-1+1≤x≤+2n-1-1。

2)反碼

數(shù)值最左邊一位為符號(hào)位,用0表示正數(shù),用1表示負(fù)數(shù)。對(duì)于正數(shù),其反碼與原碼相同;對(duì)于負(fù)數(shù),數(shù)值位逐位取反,即數(shù)值為1的位變成0,而數(shù)值為0的位變成1。假設(shè)有符號(hào)數(shù)x,它的反碼表示形式為[x]

反。

3)補(bǔ)碼

數(shù)值最左邊一位為符號(hào)位,用0表示正數(shù),用1表示負(fù)數(shù)。對(duì)于正數(shù),其補(bǔ)碼與原碼相同;負(fù)數(shù)則在其反碼的基礎(chǔ)上加1。假設(shè)有符號(hào)數(shù)x,它的補(bǔ)碼表示形式為[x]

補(bǔ)。

4)補(bǔ)碼數(shù)運(yùn)算

有符號(hào)數(shù)引入補(bǔ)碼后,可以將加法運(yùn)算和減法運(yùn)算統(tǒng)一為加法運(yùn)算,并能實(shí)現(xiàn)數(shù)值位與符號(hào)位一起運(yùn)算,自動(dòng)得出運(yùn)算結(jié)果。運(yùn)算規(guī)則如下:

【例1.12】用補(bǔ)碼計(jì)算+29+18=?

假設(shè)用8位二進(jìn)制數(shù)表示,則

自動(dòng)得到正確的運(yùn)算結(jié)果+47。

【例1.13】用補(bǔ)碼計(jì)算+29-18=?

假設(shè)用8位二進(jìn)制數(shù)表示,則可以理解為減去一個(gè)數(shù)等于加上這個(gè)數(shù)的補(bǔ)碼。

雖然在運(yùn)算過(guò)程中產(chǎn)生了進(jìn)位,但還是得到正確結(jié)果+11,進(jìn)位自動(dòng)丟失。

可以利用常見(jiàn)的時(shí)鐘方法來(lái)理解補(bǔ)碼的運(yùn)算規(guī)則。如圖1.1所示,當(dāng)前時(shí)針指向7點(diǎn),如要將其撥到2點(diǎn),可以逆時(shí)針撥5點(diǎn)(-5),也可以順時(shí)針撥7點(diǎn)(+7),對(duì)于時(shí)鐘而言,7就是5的補(bǔ)碼,減去5就等于加上7,二者取得了相同的結(jié)果。需要注意的是時(shí)鐘是12進(jìn)制的,在加7的時(shí)候,時(shí)針越過(guò)12點(diǎn),相當(dāng)于有一個(gè)進(jìn)位,這個(gè)進(jìn)位在本次補(bǔ)碼運(yùn)算中被丟棄了。圖1.1補(bǔ)碼的時(shí)鐘圖

3.運(yùn)算溢出及其判斷

前面的例子說(shuō)明有符號(hào)數(shù)補(bǔ)碼運(yùn)算能自動(dòng)得出結(jié)果,即使產(chǎn)生了進(jìn)位,其結(jié)果也是正確的。試問(wèn)每次運(yùn)算的結(jié)果都是正確的嗎?答案是否定的,先看一個(gè)例子。

需要說(shuō)明的是,這種方法適合于判斷有符號(hào)數(shù)是否溢出。而根據(jù)運(yùn)算結(jié)果是否超出運(yùn)算器能表示數(shù)的范圍這一標(biāo)準(zhǔn),借位/進(jìn)位C則指示了無(wú)符號(hào)數(shù)是否溢出。

4.邏輯運(yùn)算

在計(jì)算機(jī)處理的數(shù)據(jù)信息中,除了數(shù)值信息外,還有一類(lèi)信息叫非數(shù)值信息,邏輯數(shù)據(jù)就是非數(shù)值信息的一種。邏輯數(shù)據(jù)沒(méi)有數(shù)值大小之分,邏輯運(yùn)算只在邏輯數(shù)據(jù)位與位之間進(jìn)行,沒(méi)有進(jìn)位、借位產(chǎn)生。

1)邏輯與運(yùn)算

邏輯與運(yùn)算相當(dāng)于數(shù)字電路中的與門(mén)電路,運(yùn)算符號(hào)為“Λ”,也可以用“·”表示。運(yùn)算法則:0Λ0=0;0Λ1=0;1Λ0=0;1Λ1=1。

2)邏輯或運(yùn)算

邏輯或運(yùn)算相當(dāng)于數(shù)字電路中的或門(mén)電路,運(yùn)算符號(hào)為“”,也可以用“+”表示。

運(yùn)算法則:0Λ0=0;0Λ1=1;1Λ0=1;1Λ1=1。常用于使某些位置1的置位操作。

兩個(gè)完全相同的數(shù)進(jìn)行異或運(yùn)算的結(jié)果為0,因此常用異或運(yùn)算進(jìn)行清零操作。利用異或運(yùn)算法則,還可以對(duì)指定位進(jìn)行取反運(yùn)算。

4)邏輯非運(yùn)算

參與運(yùn)算的數(shù),為0的位變成1,為1的位變成0。計(jì)算機(jī)中一些指示燈的閃爍就是反復(fù)進(jìn)行非運(yùn)算實(shí)現(xiàn)的。

1.1.3BCD碼和ABCII碼

計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)據(jù),并且所處理的數(shù)據(jù)并不都是數(shù)值數(shù)據(jù)。人們習(xí)慣十進(jìn)制運(yùn)算,因此需要用二進(jìn)制來(lái)表示十進(jìn)制數(shù),常用編碼是BCD(BinAryCoDeDDeCiMAl)碼。

計(jì)算機(jī)對(duì)它處理的一切信息都需要用二進(jìn)制數(shù)進(jìn)行編碼,為了統(tǒng)一計(jì)算機(jī)內(nèi)的信息表示方法,ABCII(AMeriCAnBtAnDArDCoDeForinForMAtioninterCHAnge)編碼被廣泛采用。

1.BCD碼及其運(yùn)算

1)十進(jìn)制數(shù)的BCD編碼

BCD碼用4位二進(jìn)制數(shù)來(lái)表示1位十進(jìn)制數(shù),4位二進(jìn)制數(shù)可以表示16個(gè)不同編碼,即0000~1111,然而十進(jìn)制數(shù)只有0~9十個(gè)符號(hào),通常用0000~1001這10個(gè)編碼分別表示0~9。BCD碼中1010~1111這6個(gè)編碼不用,屬于非法編碼。4位二進(jìn)制數(shù)的權(quán)分別是8、4、2、1,因此也稱(chēng)為8421BCD碼。也就是說(shuō),BCD碼雖然以二進(jìn)制形式出現(xiàn),但在本質(zhì)上是十進(jìn)制數(shù),只能有十種狀態(tài)。

一個(gè)BCD碼數(shù)只占用4位二進(jìn)制數(shù),在計(jì)算機(jī)中一個(gè)存儲(chǔ)單元能夠存放8位二進(jìn)制數(shù),如果一個(gè)存儲(chǔ)單元存放一個(gè)BCD碼,并放在一個(gè)字節(jié)的低4位,高4位為0,則這樣的BCD碼數(shù)稱(chēng)為非組合型(或非壓縮型)BCD碼數(shù)。如果一個(gè)存儲(chǔ)單元存放兩個(gè)BCD碼,這樣的BCD碼數(shù)稱(chēng)為組合型(或壓縮型)BCD碼數(shù)。

2)BCD碼數(shù)的運(yùn)算及調(diào)整

作為十進(jìn)制數(shù),BCD碼遵守逢十進(jìn)一,借一當(dāng)十的運(yùn)算法則。而在計(jì)算機(jī)中,算術(shù)運(yùn)算只能按照二進(jìn)制規(guī)則運(yùn)行,若把4位二進(jìn)制數(shù)看成一個(gè)整體,它就是一個(gè)十六進(jìn)制數(shù),運(yùn)算時(shí)是逢16進(jìn)1的,而不是十進(jìn)制數(shù)的逢10進(jìn)1。再者,BCD碼按二進(jìn)制運(yùn)算時(shí),有可能出現(xiàn)1010~1001之間的非法編碼,這些編碼必須進(jìn)行調(diào)整。

BCD碼在運(yùn)算時(shí),若產(chǎn)生進(jìn)位或產(chǎn)生非法編碼,由于16進(jìn)制與10進(jìn)制相差6,則需要在運(yùn)算結(jié)果基礎(chǔ)上加6調(diào)整,才能得到正確的BCD碼結(jié)果。

上例的計(jì)算中雖然沒(méi)有出現(xiàn)非法編碼,但從第3位至第4位產(chǎn)生了輔助進(jìn)位,由于十進(jìn)制加法是逢10進(jìn)1的,而4位二進(jìn)制數(shù)是逢16進(jìn)1的,運(yùn)算時(shí)產(chǎn)生進(jìn)位說(shuō)明需要補(bǔ)上進(jìn)位需要的6才能得到正確結(jié)果17。

2.ABCII碼

1)ABCII編碼

基本的ABCII碼是用7位二進(jìn)制數(shù)表示一個(gè)字符碼或控制碼的,若用一個(gè)字節(jié)表示,其最高位恒為0,因此基本的ABCII碼有128個(gè),包括數(shù)字0~9、大寫(xiě)英文字母a~z、小寫(xiě)英文字母a~z、標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)、括號(hào)等可顯示和打印的字符,還包括回車(chē)、空格、刪除等不能顯示的控制字符。如表1.2所示。

2)BCD碼數(shù)和十六進(jìn)制數(shù)與ABCII碼間的轉(zhuǎn)換

數(shù)據(jù)在計(jì)算機(jī)中的運(yùn)算是以二進(jìn)制形式進(jìn)行的,數(shù)據(jù)的存儲(chǔ)一般也是二進(jìn)制形式的。但數(shù)據(jù)顯示、打印、傳輸?shù)葧r(shí),往往要轉(zhuǎn)換成ABCII碼形式。當(dāng)從鍵盤(pán)上輸入一個(gè)數(shù)字或字母時(shí),則輸入的是這個(gè)數(shù)字或字母的ABCII碼,無(wú)論是0~9的十進(jìn)制數(shù),還是0~F的十六進(jìn)制數(shù),進(jìn)入計(jì)算機(jī)后都需要將ABCII碼轉(zhuǎn)換成數(shù)字。反過(guò)來(lái),運(yùn)算結(jié)果需要在屏幕上顯示或通過(guò)打印機(jī)打印出來(lái),就需要將數(shù)字轉(zhuǎn)換成ABCII碼。

BCD碼數(shù)與其ABCII碼之間的轉(zhuǎn)換相對(duì)簡(jiǎn)單。BCD碼數(shù)轉(zhuǎn)換成ABCII碼時(shí),將BCD碼數(shù)置于一個(gè)字節(jié)的低4位,形成非壓縮型BCD碼數(shù),然后在其高4位添上0011B即可,即加上30H。將ABCII碼轉(zhuǎn)換成BCD碼數(shù)時(shí),只需去掉高4位數(shù)即得到非壓縮型BCD碼數(shù),即減掉30H。

十六進(jìn)制數(shù)與其ABCII碼數(shù)之間的轉(zhuǎn)換需要分成兩段進(jìn)行。當(dāng)數(shù)據(jù)處在0~9之間時(shí),與BCD碼數(shù)轉(zhuǎn)換成ABCII碼情況相同;在數(shù)據(jù)處在A~F之間情況下,轉(zhuǎn)換為ABCII碼時(shí),數(shù)字位于低4位,需要加37H才能得到正確結(jié)果。ABCII碼轉(zhuǎn)換為十六進(jìn)制數(shù)時(shí),需要減掉37H。

1.2微型計(jì)算機(jī)概述

1.2.1微型計(jì)算機(jī)基本概念1.微型計(jì)算機(jī)發(fā)展概述20世紀(jì)70年代初,隨著大規(guī)模和超大規(guī)模集成電路的出現(xiàn),在Intel

公司誕生了第一片微處理器芯片后,計(jì)算機(jī)進(jìn)入微型計(jì)算機(jī)時(shí)代

1)4位和低檔8位微處理器階段

1971年,Intel

發(fā)布Intel

4004,作為世上第一片微處理器,它的字長(zhǎng)為4位,工作頻率為740KHz,指令系統(tǒng)有46條指令。1972年,Intel

又發(fā)布了第一片8位處理器Intel

8008,最高工作頻率達(dá)到800KHz,指令系統(tǒng)有48條指令。

2)中高檔8位微處理器階段

1974年,Intel

發(fā)布了Intel

8080,發(fā)布時(shí)的工作頻率達(dá)到2MHz,先前的Intel

8008的程序經(jīng)過(guò)重新編譯可以運(yùn)行。

3)16位微處理器階段

1978年,Intel

公司發(fā)布了16位微處理器Intel

8086,初期工作頻率只有4.77MHz。從Intel

8086開(kāi)始形成了微處理器的最重要系列,即x86系列微處理器。

4)32位微處理器階段

1985年,Intel

公司發(fā)布了32位微處理器Intel

80386,初期的工作頻率達(dá)到16MHz,尋址空間達(dá)到4GB。1989年,Intel

公司又發(fā)布了性能更強(qiáng)的32位微處理器Intel

80486,初期工作頻率達(dá)到25MHz,并將協(xié)處理器集成在一起,CPU內(nèi)部還集成了8KB的Cache(高速緩沖存儲(chǔ)器),其處理速度是Intel

80386的2~3倍。

比Intel

公司還早一年,MotorolA公司于1984年發(fā)布了32位微處理器MC68020,具有3級(jí)流水線(xiàn),工作頻率為12MHz。1987年發(fā)布了MC68030,增加了256B的數(shù)據(jù)和指令CACHe,工作頻率提高到16MHz。1991年發(fā)布了更高性能的32位微處理器MC68040,增加了數(shù)值浮點(diǎn)處理單元,Cache增加到4KB,流水線(xiàn)增加到6條,工作頻率提高到20MHz。

Zilog公司也于1986年發(fā)布了32位微處理器z80000,其尋址能力達(dá)到4GB,具有256字節(jié)的Cache和6級(jí)流水線(xiàn)。雖然在設(shè)計(jì)中引入了新技術(shù)和新理念,但在市場(chǎng)上依然沒(méi)有取得預(yù)期的成功。

5)高性能32位和64位微處理器階段

1993年,Intel

公司發(fā)布了高性能32位微處理器Pentium,主頻為60~200MHz,主要用于PC機(jī)。

2.微型計(jì)算機(jī)的體系結(jié)構(gòu)

微型計(jì)算機(jī)的體系結(jié)構(gòu)主要有兩種,一種是馮·諾依曼體系結(jié)構(gòu),另一種是哈佛體系結(jié)構(gòu)。

馮·諾依曼體系結(jié)構(gòu)具有以下特點(diǎn):

(1)計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示,并且存儲(chǔ)在同一個(gè)地方。

(2)計(jì)算機(jī)順序執(zhí)行程序,即把要執(zhí)行的程序和處理的數(shù)據(jù)首先存入主存儲(chǔ)器,執(zhí)行程序時(shí),自動(dòng)地并按順序地從主存儲(chǔ)器中取出指令一條一條地執(zhí)行。

(3)計(jì)算機(jī)硬件由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部分組成。

馮·諾依曼體系結(jié)構(gòu)如圖1.2所示。圖1.2馮·諾依曼體系結(jié)構(gòu)

哈佛結(jié)構(gòu)是一種并行體系結(jié)構(gòu),它的主要特點(diǎn)是將程序和數(shù)據(jù)存儲(chǔ)在不同的存儲(chǔ)空間中,即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器是兩個(gè)獨(dú)立的存儲(chǔ)器,每個(gè)存儲(chǔ)器獨(dú)立編址、獨(dú)立訪(fǎng)問(wèn)。與兩個(gè)存儲(chǔ)器相對(duì)應(yīng)的是系統(tǒng)的4條總線(xiàn):程序的數(shù)據(jù)總線(xiàn)與地址總線(xiàn),數(shù)據(jù)的數(shù)據(jù)總線(xiàn)與地址總線(xiàn)。哈佛體系結(jié)構(gòu)如圖1.3所示。圖1.3哈佛體系結(jié)構(gòu)

哈佛結(jié)構(gòu)與馮·諾依曼結(jié)構(gòu)處理器相比,有兩個(gè)明顯的特點(diǎn):一是使用兩個(gè)獨(dú)立的存儲(chǔ)器模塊,分別存儲(chǔ)指令和數(shù)據(jù),每個(gè)存儲(chǔ)模塊都不允許指令和數(shù)據(jù)并存;二是使用獨(dú)立的兩條總線(xiàn),分別作為CPU與每個(gè)存儲(chǔ)器之間的專(zhuān)用通信路徑,而這兩條總線(xiàn)之間毫無(wú)關(guān)聯(lián)。

3.CIBC和RISC

概念

CIBC是指復(fù)雜指令系統(tǒng)計(jì)算機(jī)(ComplexInstructionSetComputer);RISC

是指精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī)(ReducedInstructionSetComputer)。

RISC

技術(shù)的基本思想是盡量簡(jiǎn)化計(jì)算機(jī)指令功能,只保留那些功能簡(jiǎn)單、能在一個(gè)節(jié)拍內(nèi)執(zhí)行完成的指令,而把較復(fù)雜的功能用一段子程序來(lái)實(shí)現(xiàn)。RISC

技術(shù)的精華就是通過(guò)簡(jiǎn)化計(jì)算機(jī)指令功能,使指令的平均執(zhí)行周期減少,從而提高計(jì)算機(jī)的工作主頻,同時(shí)大量使用通用寄存器來(lái)提高子程序執(zhí)行的速度。

CIBC技術(shù)與RISC

技術(shù)相比較,有如下區(qū)別。

(1)CIBC計(jì)算機(jī)的指令系統(tǒng)比較豐富,有專(zhuān)用指令來(lái)完成特定的功能,因此,處理特殊任務(wù)效率較高。RISC

機(jī)器實(shí)現(xiàn)特殊功能的效率可能較低,這是因?yàn)閷?duì)不常用的功能,是通過(guò)組合指令來(lái)完成的,但這一不足可以利用流水技術(shù)和超標(biāo)量技術(shù)加以改進(jìn)和彌補(bǔ)。

(2)RISC

對(duì)存儲(chǔ)器操作有限制,使控制簡(jiǎn)單化;而CIBC機(jī)器的存儲(chǔ)器操作指令多,操作直接。

(3)RISC

匯編語(yǔ)言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能時(shí)程序復(fù)雜;而CIBC匯編語(yǔ)言程序編程相對(duì)簡(jiǎn)單,科學(xué)計(jì)算及復(fù)雜操作的程序設(shè)計(jì)相對(duì)容易,效率較高。

(4)RISC

機(jī)器在一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷;而CIBC機(jī)器是在一條指令執(zhí)行結(jié)束后響應(yīng)中斷。

(5)RISC

的CPU包含較少的單元電路,面積小、功耗低;而CIBC的CPU包含豐富的單元電路,功能強(qiáng)、面積大、功耗大。

(6)RISC

微處理器結(jié)構(gòu)簡(jiǎn)單,指令規(guī)整;CIBC微處理器結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,易于實(shí)現(xiàn)特殊功能。

RISC

和CIBC技術(shù)都是試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸多因素中做出某種平衡,單獨(dú)偏向某一方面都不是最佳選擇,因此隨著技術(shù)的不斷進(jìn)步,微處理器的功能越來(lái)越強(qiáng)大,RISC

技術(shù)和CIBC技術(shù)也在相互取長(zhǎng)補(bǔ)短,以提高微處理器的綜合性能。

1.2.2微型計(jì)算機(jī)系統(tǒng)組成

1.微型計(jì)算機(jī)硬件系統(tǒng)組成

如圖1.4所示,微型計(jì)算機(jī)的硬件系統(tǒng)主要由微處理器(CPU)、主存儲(chǔ)器、輸入/輸出接口及設(shè)備等電路組成,它們以微處理器為核心,通過(guò)地址總線(xiàn)、數(shù)據(jù)總線(xiàn)和控制總線(xiàn)三總線(xiàn)連接起來(lái)。圖1.4微型計(jì)算機(jī)硬件系統(tǒng)結(jié)構(gòu)框圖

微型計(jì)算機(jī)從誕生以來(lái)一直采用總線(xiàn)結(jié)構(gòu),總線(xiàn)結(jié)構(gòu)使整個(gè)系統(tǒng)的結(jié)構(gòu)非常清晰,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)和硬件設(shè)計(jì),便于采用模塊化結(jié)構(gòu)設(shè)計(jì)方法。在同一個(gè)總線(xiàn)標(biāo)準(zhǔn)下,系統(tǒng)的擴(kuò)充性好,同時(shí)便于故障診斷和維修。

采用總線(xiàn)結(jié)構(gòu)的缺點(diǎn)是利用總線(xiàn)傳送具有分時(shí)性。當(dāng)有多個(gè)主機(jī)同時(shí)申請(qǐng)總線(xiàn)的使用時(shí)必須進(jìn)行總線(xiàn)的仲裁,以確定誰(shuí)具有總線(xiàn)的使用權(quán)。

1)微處理器

微處理器(CPU)是微型計(jì)算機(jī)硬件系統(tǒng)的核心部件,通用微型計(jì)算機(jī)一般采用通用CPU,現(xiàn)今絕大多數(shù)通用微機(jī)都采用Intel

系列CPU。嵌入式系統(tǒng)的微處理器種類(lèi)繁多,目前ARM

微處理器越來(lái)越得到廣泛應(yīng)用。

2)主存儲(chǔ)器

主存儲(chǔ)器是微型計(jì)算機(jī)程序代碼和數(shù)據(jù)存放的地方,是計(jì)算機(jī)具有記憶能力的物質(zhì)基礎(chǔ)。主存儲(chǔ)器是以存儲(chǔ)單元進(jìn)行管理的,一個(gè)存儲(chǔ)單元由8位二進(jìn)制數(shù)構(gòu)成。

每一個(gè)存儲(chǔ)單元都有一個(gè)地址編碼,在存取數(shù)據(jù)時(shí)需要CPU產(chǎn)生相應(yīng)存儲(chǔ)單元的地址編碼,通過(guò)地址總線(xiàn)傳輸?shù)酱鎯?chǔ)器電路,經(jīng)過(guò)地址譯碼選擇需要操作的存儲(chǔ)單元,從而完成對(duì)指定存儲(chǔ)單元的讀/寫(xiě)操作。

3)I/O接口及設(shè)備

I/O接口是CPU與外部設(shè)備之間的橋梁,所有輸入/輸出設(shè)備都必須通過(guò)I/O接口才能與CPU連接。輸入/輸出設(shè)備是實(shí)現(xiàn)人機(jī)交互的部件,常用的輸入設(shè)備有鍵盤(pán)、鼠標(biāo)、掃描儀等,常用的輸出設(shè)備有顯示器、打印機(jī)、繪圖儀等。

4)總線(xiàn)

總線(xiàn)是微型計(jì)算機(jī)各個(gè)部件連接的紐帶,是各個(gè)功能部件之間進(jìn)行信息交換的公共通道。各個(gè)功能部件連在總線(xiàn)上都必須通過(guò)三態(tài)門(mén),當(dāng)功能部件需要與CPU交換信息時(shí),相應(yīng)的三態(tài)門(mén)打開(kāi);不交換信息時(shí)則相應(yīng)的三態(tài)門(mén)處于高阻狀態(tài)。

總線(xiàn)按照所處位置不同分為內(nèi)部總線(xiàn)和外部總線(xiàn)。內(nèi)部總線(xiàn)也稱(chēng)為系統(tǒng)總線(xiàn),按照傳輸信息不同分為地址總線(xiàn)、數(shù)據(jù)總線(xiàn)和控制總線(xiàn)。外部總線(xiàn)位于計(jì)算機(jī)之間或計(jì)算機(jī)與其他智能設(shè)備之間的信息傳輸線(xiàn)路,以串行總線(xiàn)為主,主要有RS-232C、RS422/485、USB

等。

地址總線(xiàn):地址總線(xiàn)是CPU向外輸出的單向三態(tài)總線(xiàn),用于傳輸CPU發(fā)出的地址編碼信息,以便選中操作的存儲(chǔ)單元或I/O端口。

數(shù)據(jù)總線(xiàn):雙向總線(xiàn),用于CPU與主存儲(chǔ)器之間或CPU與I/O端口之間傳輸數(shù)據(jù)。

控制總線(xiàn):雙向總線(xiàn),用來(lái)傳送控制信號(hào),以保證計(jì)算機(jī)各部件協(xié)調(diào)工作。

2.微型計(jì)算機(jī)軟件系統(tǒng)組成

微型計(jì)算機(jī)軟件系統(tǒng)包括系統(tǒng)軟件和應(yīng)用軟件兩類(lèi)。

系統(tǒng)軟件主要包括:

(1)各種程序設(shè)計(jì)語(yǔ)言的匯編(Assenbler)、解釋(Interpreter)、編譯(Compiler)等程序;

(2)各種監(jiān)控管理程序(Moniter)、調(diào)試程序(Debug)、故障檢查程序、診斷程序等;

(3)操作系統(tǒng),比如Windows、UMIX等;

(4)各種編程軟件,比如Visual++、Delphi

等。

1.2.3微型計(jì)算機(jī)的工作過(guò)程

微型計(jì)算機(jī)必須在硬件和軟件的密切配合下才能工作。在工作之前,必須將程序代碼存放在主存儲(chǔ)器內(nèi),每一條指令都有唯一的操作碼,它代表了操作的性質(zhì)。絕大多數(shù)指令還有操作數(shù),它是操作的對(duì)象,有的操作數(shù)位于CPU內(nèi)部,有的操作數(shù)位于存儲(chǔ)單元中,甚至還有的操作數(shù)位于外部設(shè)備中。計(jì)算機(jī)的工作過(guò)程就是按照程序安排指令順序和邏輯一條一條地執(zhí)行,具體步驟如下。

(1)程序的起始地址存放在程序指針中,將PC中的地址信息發(fā)送到地址總線(xiàn)上,經(jīng)過(guò)地址譯碼找到相應(yīng)的存儲(chǔ)單元,將指令代碼取出,并將取出的指令代碼送到指令寄存IR。

(2)將指令代碼送到指令譯碼器ID進(jìn)行指令譯碼,得到各種控制信號(hào),指揮CPU各部件協(xié)調(diào)工作。

(3)算術(shù)邏輯單元ALU對(duì)操作數(shù)進(jìn)行運(yùn)算,并存放運(yùn)算結(jié)果,更新標(biāo)志寄存器FR內(nèi)容。

(4)程序指針PC的值自動(dòng)加1,指向下一個(gè)存儲(chǔ)單元,開(kāi)始取新的指令代碼。綜上所述,微型計(jì)算機(jī)的工作過(guò)程就是取指令、譯碼指令、執(zhí)行指令幾個(gè)步驟不斷重復(fù)的過(guò)程,如圖1.5所示。圖1.5指令串行執(zhí)行過(guò)程

指令流水線(xiàn)就是針對(duì)這一問(wèn)題而提出的,它把取指、譯碼和執(zhí)行三個(gè)階段并行運(yùn)行。三級(jí)指令流水線(xiàn)過(guò)程如圖1.6所示。圖1.6三級(jí)指令流水線(xiàn)過(guò)程

現(xiàn)代的CPU都采用了多級(jí)指令流水線(xiàn)技術(shù)。越是復(fù)雜的指令集,流水線(xiàn)的級(jí)數(shù)就可能分得越多。然而,不是指令流水線(xiàn)級(jí)數(shù)越多越好,流水線(xiàn)級(jí)數(shù)的多少需要根據(jù)微處理器的具體要求來(lái)確定。

1.3嵌入式系統(tǒng)概述

1.3.1嵌入式系統(tǒng)的誕生與發(fā)展歷程在嵌入式系統(tǒng)中,往往將CPU、存儲(chǔ)器和輸入/輸出部件集成在一起,稱(chēng)為微控制器。事實(shí)上微處理器誕生之初,也稱(chēng)之為微控制器。

1.3.2ARM

處理器的體系

ARM

體系結(jié)構(gòu)是一款具體ARM

處理器的基礎(chǔ)。不同的體系結(jié)構(gòu)具有不同的指令集,目前有7個(gè)基本的ARM

體系結(jié)構(gòu)版本,其中v1~v3版本已不再使用。

1.v1版架構(gòu)

v1版架構(gòu)只在原型機(jī)ARM1出現(xiàn)過(guò),只有26位的尋址空間,沒(méi)有用于商業(yè)產(chǎn)品,尋址空間為64MB。

2.v2版架構(gòu)

v2版架構(gòu)對(duì)v1版進(jìn)行了擴(kuò)展,包含了對(duì)32位乘法指令和協(xié)處理器指令的支持。ARM2采用這種架構(gòu),ARM3采用變種v2A架構(gòu)。v2版架構(gòu)增加了快速中斷模式、BWP/BWPB的最基本存儲(chǔ)器與寄存器交換指令,尋址空間仍為64MB。

3.v3版架構(gòu)

v3版架構(gòu)對(duì)ARM

體系結(jié)構(gòu)作了較大的改動(dòng):增加了兩種異常模式,使操作系統(tǒng)代碼可方便地使用數(shù)據(jù)訪(fǎng)問(wèn)中止異常、指令預(yù)取中止異常和未定義指令異常;尋址空間增至4GB;當(dāng)前程序狀態(tài)信息從原來(lái)的R15寄存器移到當(dāng)前程序狀態(tài)寄存器CPBR中;增加了程序狀態(tài)保存寄存器BPBR;增加了MRB/MBR

指令,以訪(fǎng)問(wèn)新增的CPBR/BPBR

寄存器;增加了從異常處理返回的指令功能。

4.v4版架構(gòu)

v4版架構(gòu)在v3版上作了進(jìn)一步擴(kuò)充,v4版架構(gòu)是目前應(yīng)用最廣泛的ARM

體系結(jié)構(gòu),ARM7、ARM8、ARM9和StrongARM

都采用該架構(gòu)。v4不再?gòu)?qiáng)制要求與26位地址空間兼容,而且還明確了哪些指令會(huì)引起未定義指令異常。指令集中增加了以下功能:符號(hào)化和非符號(hào)化半字及符號(hào)化字節(jié)的存/取指令;增加了t變種,處理器可工作在Thumb狀態(tài),增加了16位Thumb指令集;完善了軟件中斷BWI

指令的功能;處理器系統(tǒng)模式引進(jìn)特權(quán)方式時(shí)使用用戶(hù)寄存器操作;把一些未使用的指令空間捕獲為未定義指令。

5.v5版架構(gòu)

v5版架構(gòu)在v4版基礎(chǔ)上增加了一些新的指令,ARM10和Xbcale

都采用該版架構(gòu)。新增命令有:帶有鏈接和交換的轉(zhuǎn)移BLX

指令、計(jì)數(shù)前導(dǎo)零ClZ指令、BRK中斷指令、數(shù)字信號(hào)處理指令(v5TE

版)、針對(duì)協(xié)處理器的更多可選擇的指令。v5版架構(gòu)改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率。

6.v6版架構(gòu)

v6版架構(gòu)2001年發(fā)布,首先用在ARM11處理器中。該架構(gòu)在降低耗電量的同時(shí),還強(qiáng)化了圖形處理性能。此架構(gòu)在v5版基礎(chǔ)上增加了以下功能:Thumb、DSP

擴(kuò)充、Jazelle、Media

擴(kuò)充。

7.v7版架構(gòu)

ARMv7架構(gòu)采用了Thumb

-2技術(shù),它是從ARM

的Thumb代碼壓縮技術(shù)發(fā)展而來(lái)的,并且保持了對(duì)已存ARM

解決方案的完整的代碼兼容性。Thumb-2技術(shù)比純32位代碼少使用31%的內(nèi)存,降低了系統(tǒng)開(kāi)銷(xiāo),同時(shí)卻能夠提供比已有的基于Thumb技術(shù)的解決方案高出38%的性能表現(xiàn)。ARMv7架構(gòu)還采用了neon技術(shù),將DBP和媒體處理能力提高了近4倍,并支持改良的浮點(diǎn)運(yùn)算,滿(mǎn)足下一代3D圖形和游戲物理應(yīng)用以及傳統(tǒng)的嵌入式控制應(yīng)用的需求。

目前表達(dá)ARM

所處的技術(shù)狀態(tài)時(shí),通常使用ARM

的內(nèi)核,但內(nèi)核與體系架構(gòu)不是同一個(gè)概念。ARM

處理器傳統(tǒng)的命名是ARM+數(shù)字的方式,比如ARM7、ARM9、ARM11。在ARM11以后,ARM

公司使用了新的命名方式,即Cortex。目前Cortex分為3個(gè)系列,性能及復(fù)雜度由低到高分別是M、R和A系列。

·Cortex-M系列主要面向微控制器市場(chǎng),分為Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4等幾個(gè)檔次。

·Cortex-R

系列主要面向高端的實(shí)時(shí)系統(tǒng),分為Cortex-R4、Cortex-R5、Cortex-R7幾個(gè)檔次。

·CortexA系列主要面向通用處理應(yīng)用市場(chǎng),比如智能手機(jī)、移動(dòng)計(jì)算平臺(tái)、數(shù)字電視和機(jī)頂盒等,主要有CortexA5、CortexA7、CortexA8、CortexA9、CortexA12、CortexA15、CortexA17、CortexA53、CortexA57等。

1.3.3STM32系列處理器介紹

STM32系列32位微控制器來(lái)自于ARM

公司具有突破性的Cortex-M3內(nèi)核,該內(nèi)核是專(zhuān)門(mén)設(shè)計(jì)用于滿(mǎn)足集高性能、低功耗、實(shí)時(shí)應(yīng)用、具有競(jìng)爭(zhēng)性?xún)r(jià)格于一體的嵌入式領(lǐng)域的要求。

STM32系列產(chǎn)品的命名規(guī)則如圖1.7所示(以TM32F10X

系列為例)。圖1.7STM32系列產(chǎn)品命名規(guī)則

1.入門(mén)級(jí)STM32微處理器

入門(mén)級(jí)STM32微處理器是基于Cort

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論