MCU的技術(shù)原理、區(qū)別及發(fā)展歷史
微控制單元(Microcontroller Unit;MCU) ,又稱單片微型計(jì)算機(jī)(Single Chip Microcomputer )或者單片機(jī),是把中央處理器(Central Process Unit;CPU)的頻率與規(guī)格做適當(dāng)縮減,并將內(nèi)存(memory)、計(jì)數(shù)器(Timer)、USB、A/D轉(zhuǎn)換、UART、PLC、DMA等周邊接口,甚至LCD驅(qū)動(dòng)電路都整合在單一芯片上,形成芯片級(jí)的計(jì)算機(jī),為不同的應(yīng)用場(chǎng)合做不同組合控制。諸如手機(jī)、PC外圍、遙控器,至汽車電子、工業(yè)上的步進(jìn)馬達(dá)、機(jī)器手臂的控制等,都可見到MCU的身影。
本文引用地址:http://butianyuan.cn/article/201807/384330.htm技術(shù)原理
MCU同溫度傳感器之間通過I2C總線連接。I2C總線占用2條MCU輸入輸出口線,二者之間的通信完全依靠軟件完成。溫度傳感器的地址可以通過2根地址引腳設(shè)定,這使得一根I2C總線上可以同時(shí)連接8個(gè)這樣的傳感器。本方案中,傳感器的7位地址已經(jīng)設(shè)定為1001000。MCU需要訪問傳感器時(shí),先要發(fā)出一個(gè)8位的寄存器指針,然后再發(fā)出傳感器的地址(7位地址,低位是WR信號(hào))。傳感器中有3個(gè)寄存器可供MCU使用,8位寄存器指針就是用來確定MCU究竟要使用哪個(gè)寄存器的。本方案中,主程序會(huì)不斷更新傳感器的配置寄存器,這會(huì)使傳感器工作于單步模式,每更新一次就會(huì)測(cè)量一次溫度。
要讀取傳感器測(cè)量值寄存器的內(nèi)容,MCU必須首先發(fā)送傳感器地址和寄存器指針。MCU發(fā)出一個(gè)啟動(dòng)信號(hào),接著發(fā)出傳感器地址,然后將RD/WR管腳設(shè)為高電平,就可以讀取測(cè)量值寄存器。
為了讀出傳感器測(cè)量值寄存器中的16位數(shù)據(jù),MCU必須與傳感器進(jìn)行兩次8位數(shù)據(jù)通信。當(dāng)傳感器上電工作時(shí),默認(rèn)的測(cè)量精度為9位,分辨力為0.5 C/LSB(量程為-128.5 C至128.5 C)。本方案采用默認(rèn)測(cè)量精度,根據(jù)需要,可以重新設(shè)置傳感器,將測(cè)量精度提高到12位。如果只要求作一般的溫度指示,比如自動(dòng)調(diào)溫器,那么分辨力達(dá)到1 C就可以滿足要求了。這種情況下,傳感器的低8位數(shù)據(jù)可以忽略,只用高8位數(shù)據(jù)就可以達(dá)到分辨力1 C的設(shè)計(jì)要求。由于讀取寄存器時(shí)是按先高8位后低8位的順序,所以低8位數(shù)據(jù)既可以讀,也可以不讀。只讀取高8位數(shù)據(jù)的好處有二,第一是可以縮短MCU和傳感器的工作時(shí)間,降低功耗;第二是不影響分辨力指標(biāo)。
MCU讀取傳感器的測(cè)量值后,接下來就要進(jìn)行換算并將結(jié)果顯示在LCD上。整個(gè)處理過程包括:判斷顯示結(jié)果的正負(fù)號(hào),進(jìn)行二進(jìn)制碼到BCD碼的轉(zhuǎn)換,將數(shù)據(jù)傳到LCD的相關(guān)寄存器中。
數(shù)據(jù)處理完畢并顯示結(jié)果之后,MCU會(huì)向傳感器發(fā)出一個(gè)單步指令。單步指令會(huì)讓傳感器啟動(dòng)一次溫度測(cè)試,然后自動(dòng)進(jìn)入等待模式,直到模數(shù)轉(zhuǎn)換完畢。MCU發(fā)出單步指令后,就進(jìn)入LPM3模式,這時(shí)MCU系統(tǒng)時(shí)鐘繼續(xù)工作,產(chǎn)生定時(shí)中斷喚醒CPU。定時(shí)的長(zhǎng)短可以通過編程調(diào)整,以便適應(yīng)具體應(yīng)用的需要。
主要區(qū)別
在20世紀(jì)最值得人們稱道的成就中,就有集成電路和電子計(jì)算機(jī)的發(fā)展。20世紀(jì)70年代出現(xiàn)的微型計(jì)算機(jī),在科學(xué)技術(shù)界引起了影響深遠(yuǎn)的變革。在70年代中期,微型計(jì)算機(jī)家族中又分裂出一個(gè)小小的派系--單片機(jī)。隨著4位單片機(jī)出現(xiàn)之后,又推出了8位的單片機(jī)。MCS48系列,特別是MCS51系列單片機(jī)的出現(xiàn),確立了單片機(jī)作為微控制器(MCU)的地位,引起了微型計(jì)算機(jī)領(lǐng)域新的變革。在當(dāng)今世界上,微處理器(MPU)和微控制器(MCU)形成了各具特色的兩個(gè)分支。它們互相區(qū)別,但又互相融合、互相促進(jìn)。與微處理器(MPU)以運(yùn)算性能和速度為特征的飛速發(fā)展不同,微控制器(MCU)則是以其控制功能的不斷完善為發(fā)展標(biāo)志的。
CPU(Central Processing Unit,中央處理器)發(fā)展出來三個(gè)分枝,一個(gè)是DSP(Digital Signal Processing/Processor,數(shù)字信號(hào)處理),另外兩個(gè)是MCU(Micro Control Unit,微控制器單元)和MPU(Micro Processor Unit,微處理器單元)。
MCU集成了片上外圍器件;MPU不帶外圍器件(例如存儲(chǔ)器陣列),是高度集成的通用結(jié)構(gòu)的處理器,是去除了集成外設(shè)的MCU;DSP運(yùn)算能力強(qiáng),擅長(zhǎng)很多的重復(fù)數(shù)據(jù)運(yùn)算,而MCU則適合不同信息源的多種數(shù)據(jù)的處理診斷和運(yùn)算,側(cè)重于控制,速度并不如DSP。MCU區(qū)別于DSP的最大特點(diǎn)在于它的通用性,反應(yīng)在指令集和尋址模式中。DSP與MCU的結(jié)合是DSC,它終將取代這兩種芯片。
1.對(duì)密集的乘法運(yùn)算的支持
GPP不是設(shè)計(jì)來做密集乘法任務(wù)的,即使是一些現(xiàn)代的GPP,也要求多個(gè)指令周期來做一次乘法。而DSP處理器使用專門的硬件來實(shí)現(xiàn)單周期乘 法。DSP處理器還增加了累加器寄存器來處理多個(gè)乘積的和。累加器寄存器通常比其他寄存器寬,增加稱為結(jié)果bits的額外bits來避免溢出。同時(shí),為了 充分體現(xiàn)專門的乘法-累加硬件的好處,幾乎所有的DSP的指令集都包含有顯式的MAC指令。
2. 存儲(chǔ)器結(jié)構(gòu)
傳統(tǒng)上,GPP使用馮。諾依曼存儲(chǔ)器結(jié)構(gòu)。這種結(jié)構(gòu)中,只有一個(gè)存儲(chǔ)器空間通過一組總線(一個(gè)地址總線和一個(gè)數(shù)據(jù)總線)連接到處理器核。通常,做一次乘法會(huì)發(fā)生4次存儲(chǔ)器訪問,用掉至少四個(gè)指令周期。
大多數(shù)DSP采用了哈佛結(jié)構(gòu),將存儲(chǔ)器空間劃分成兩個(gè),分別存儲(chǔ)程序和數(shù)據(jù)。它們有兩組總線連接到處理器核,允許同時(shí)對(duì)它們進(jìn)行訪問。這種安排將處理器存儲(chǔ)器的帶寬加倍,更重要的是同時(shí)為處理器核提供數(shù)據(jù)與指令。在這種布局下,DSP得以實(shí)現(xiàn)單周期的MAC指令。
典型的高性能GPP實(shí)際上已包含兩個(gè)片內(nèi)高速緩存,一個(gè)是數(shù)據(jù),一個(gè)是指令,它們直接連接到處理器核,以加快運(yùn)行時(shí)的訪問速度。從物理上說,這種片內(nèi)的雙存儲(chǔ)器和總線的結(jié)構(gòu)幾乎與哈佛結(jié)構(gòu)的一樣了。然而從邏輯上說,兩者還是有重要的區(qū)別。
GPP使用控制邏輯來決定哪些數(shù)據(jù)和指令字存儲(chǔ)在片內(nèi)的高速緩存里,其程序員并不加以指定(也可能根本不知道)。與此相反,DSP使用多個(gè)片內(nèi)存儲(chǔ)器和多組總線來保證每個(gè)指令周期內(nèi)存儲(chǔ)器的多次訪問。在使用DSP時(shí),程序員要明確地控制哪些數(shù)據(jù)和指令要存儲(chǔ)在片內(nèi)存儲(chǔ)器中。程序員在寫程序時(shí),必須保證處理器能夠有效地使用其雙總線。
此外,DSP處理器幾乎都不具備數(shù)據(jù)高速緩存。這是因?yàn)镈SP的典型數(shù)據(jù)是數(shù)據(jù)流。也就是說,DSP處理器對(duì)每個(gè)數(shù)據(jù)樣本做計(jì)算后,就丟棄了,幾乎不再重復(fù)使用。
3.零開銷循環(huán)
如果了解到DSP算法的一個(gè)共同的特點(diǎn),即大多數(shù)的處理時(shí)間是花在執(zhí)行較小的循環(huán)上,也就容易理解,為什么大多數(shù)的DSP都有專門的硬件,用于 零開銷循環(huán)。所謂零開銷循環(huán)是指處理器在執(zhí)行循環(huán)時(shí),不用花時(shí)間去檢查循環(huán)計(jì)數(shù)器的值、條件轉(zhuǎn)移到循環(huán)的頂部、將循環(huán)計(jì)數(shù)器減1。
與此相反,GPP的循環(huán)使用軟件來實(shí)現(xiàn)。某些高性能的GPP使用轉(zhuǎn)移預(yù)報(bào)硬件,幾乎達(dá)到與硬件支持的零開銷循環(huán)同樣的效果。
4.定點(diǎn)計(jì)算
大多數(shù)DSP使用定點(diǎn)計(jì)算,而不是使用浮點(diǎn)。雖然DSP的應(yīng)用必須十分注意數(shù)字的精確,用浮點(diǎn)來做應(yīng)該容易的多,但是對(duì)DSP來說,廉價(jià)也是非常重要的。定點(diǎn)機(jī)器比起相應(yīng)的浮點(diǎn)機(jī)器來要便宜(而且更快)。為了不使用浮點(diǎn)機(jī)器而又保證數(shù)字的準(zhǔn)確,DSP處理器在指令集和硬件方面都支持飽和計(jì)算、舍入和移位。
5.專門的尋址方式
DSP處理器往往都支持專門的尋址模式,它們對(duì)通常的信號(hào)處理操作和算法是很有用的。例如,模塊(循環(huán))尋址(對(duì)實(shí)現(xiàn)數(shù)字濾波器延時(shí)線很有用)、位倒序?qū)ぶ?對(duì)FFT很有用)。這些非常專門的尋址模式在GPP中是不常使用的,只有用軟件來實(shí)現(xiàn)。
6.執(zhí)行時(shí)間的預(yù)測(cè)
大多數(shù)的DSP應(yīng)用(如蜂窩電話和調(diào)制解調(diào)器)都是嚴(yán)格的實(shí)時(shí)應(yīng)用,所有的處理必須在指定的時(shí)間內(nèi)完成。這就要求程序員準(zhǔn)確地確定每個(gè)樣本需要多少處理時(shí)間,或者,至少要知道,在最壞的情況下,需要多少時(shí)間。如果打算用低成本的GPP去完成實(shí)時(shí)信號(hào)處理的任務(wù),執(zhí)行時(shí)間的預(yù)測(cè)大概不會(huì)成為什么問題,應(yīng)為低成本GPP具有相對(duì)直接的結(jié)構(gòu),比較容易預(yù)測(cè)執(zhí)行時(shí)間。然而,大多數(shù)實(shí)時(shí)DSP應(yīng)用所要求的處理能力是低成本GPP所不能提供的。 這時(shí)候,DSP對(duì)高性能GPP的優(yōu)勢(shì)在于,即便是使用了高速緩存的DSP,哪些指令會(huì)放進(jìn)去也是由程序員(而不是處理器)來決定的,因此很容易判斷指令是從高速緩存還是從存儲(chǔ)器中讀取。DSP一般不使用動(dòng)態(tài)特性,如轉(zhuǎn)移預(yù)測(cè)和推理執(zhí)行等。因此,由一段給定的代碼來預(yù)測(cè)所要求的執(zhí)行時(shí)間是完全直截了當(dāng)?shù)?。從而使程序員得以確定芯片的性能限制。
7.定點(diǎn)DSP指令集
定點(diǎn)DSP指令集是按兩個(gè)目標(biāo)來設(shè)計(jì)的:使處理器能夠在每個(gè)指令周期內(nèi)完成多個(gè)操作,從而提高每個(gè)指令周期的計(jì)算效率。將存貯DSP程序的存儲(chǔ)器空間減到最小(由于存儲(chǔ)器對(duì)整個(gè)系統(tǒng)的成本影響甚大,該問題在對(duì)成本敏感的DSP應(yīng)用中尤為重要)。為了實(shí)現(xiàn)這些目標(biāo),DSP處理器的指令集通常都允許程序員在一個(gè)指令內(nèi)說明若干個(gè)并行的操作。例如,在一條指令包含了MAC操作,即同時(shí)的一個(gè)或兩個(gè)數(shù)據(jù)移動(dòng)。在典型的例子里,一條指令就包含了計(jì)算FIR濾波器的一節(jié)所需要的所有操作。這種高效率付出的代價(jià)是,其指令集既不直觀,也不容易使用(與GPP的指令集相比)。 GPP的程序通常并不在意處理器的指令集是否容易使用,因?yàn)樗麄円话闶褂孟驝或C++等高級(jí)語(yǔ)言。而對(duì)于DSP的程序員來說,不幸的是主要的DSP應(yīng)用程序都是用匯編語(yǔ)言寫的(至少部分是匯編語(yǔ)言優(yōu)化的)。這里有兩個(gè)理由:首先,大多數(shù)廣泛使用的高級(jí)語(yǔ)言,例如C,并不適合于描述典型的DSP算法。其次, DSP結(jié)構(gòu)的復(fù)雜性,如多存儲(chǔ)器空間、多總線、不規(guī)則的指令集、高度專門化的硬件等,使得難于為其編寫高效率的編譯器。 即便用編譯器將C源代碼編譯成為DSP的匯編代碼,優(yōu)化的任務(wù)仍然很重。典型的DSP應(yīng)用都具有大量計(jì)算的要求,并有嚴(yán)格的開銷限制,使得程序的優(yōu)化必不可少(至少是對(duì)程序的最關(guān)鍵部分)。因此,考慮選用DSP的一個(gè)關(guān)鍵因素是,是否存在足夠的能夠較好地適應(yīng)DSP處理器指令集的程序員。
8.開發(fā)工具的要求
因?yàn)镈SP應(yīng)用要求高度優(yōu)化的代碼,大多數(shù)DSP廠商都提供一些開發(fā)工具,以幫助程序員完成其優(yōu)化工作。例如,大多數(shù)廠商都提供處理器的仿真工具,以準(zhǔn)確地仿真每個(gè)指令周期內(nèi)處理器的活動(dòng)。無(wú)論對(duì)于確保實(shí)時(shí)操作還是代碼的優(yōu)化,這些都是很有用的工具。 GPP廠商通常并不提供這樣的工具,主要是因?yàn)镚PP程序員通常并不需要詳細(xì)到這一層的信息。GPP缺乏精確到指令周期的仿真工具,是DSP應(yīng)用開發(fā)者所面臨的的大問題:由于幾乎不可能預(yù)測(cè)高性能GPP對(duì)于給定任務(wù)所需要的周期數(shù),從而無(wú)法說明如何去改善代碼的性能。
發(fā)展歷史
單片機(jī)出現(xiàn)的歷史并不長(zhǎng),但發(fā)展十分迅猛。 它的產(chǎn)生與發(fā)展和微處理器的產(chǎn)生與發(fā)展大體同步,自1971年美國(guó)Intel公司首先推出4位微處理器以來,它的發(fā)展到目前為止大致可分為5個(gè)階段。下面以Intel公司的單片機(jī)發(fā)展為代表加以介紹。
1971-1976
單片機(jī)發(fā)展的初級(jí)階段。 1971年11月Intel公司首先設(shè)計(jì)出集成度為2000只晶體管/片的4位微處理器Intel 4004,并配有RAM、 ROM和移位寄存器, 構(gòu)成了第一臺(tái)MCS—4微處理器, 而后又推出了8位微處理器Intel 8008, 以及其它各公司相繼推出的8位微處理器。
1976-1980
低性能單片機(jī)階段。 以1976年Intel公司推出的MCS—48系列為代表, 采用將8位CPU、 8位并行I/O接口、8位定時(shí)/計(jì)數(shù)器、RAM和ROM等集成于一塊半導(dǎo)體芯片上的單片結(jié)構(gòu), 雖然其尋址范圍有限(不大于4 KB), 也沒有串行I/O, RAM、 ROM容量小, 中斷系統(tǒng)也較簡(jiǎn)單, 但功能可滿足一般工業(yè)控制和智能化儀器、儀表等的需要。
1980-1983
高性能單片機(jī)階段。 這一階段推出的高性能8位單片機(jī)普遍帶有串行口,有多級(jí)中斷處理系統(tǒng), 多個(gè)16位定時(shí)器/計(jì)數(shù)器。片內(nèi)RAM、 ROM的容量加大,且尋址范圍可達(dá)64 KB,個(gè)別片內(nèi)還帶有A/D轉(zhuǎn)換接口。
1983-80年代末
16位單片機(jī)階段。 1983年Intel公司又推出了高性能的16位單片機(jī)MCS-96系列,由于其采用了最新的制造工藝, 使芯片集成度高達(dá)12萬(wàn)只晶體管/片。
1990年代
單片機(jī)在集成度、功能、速度、可靠性、應(yīng)用領(lǐng)域等全方位向更高水平發(fā)展。
按照單片機(jī)的特點(diǎn),單片機(jī)的應(yīng)用分為單機(jī)應(yīng)用與多機(jī)應(yīng)用。在一個(gè)應(yīng)用系統(tǒng)中,只使用一片單片機(jī)稱為單機(jī)應(yīng)用。單片機(jī)的單機(jī)應(yīng)用的范圍包括:
(1) 測(cè)控系統(tǒng)。 用單片機(jī)可以構(gòu)成各種不太復(fù)雜的工業(yè)控制系統(tǒng)、自適應(yīng)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等,達(dá)到測(cè)量與控制的目的。
(2) 智能儀表。 用單片機(jī)改造原有的測(cè)量、控制儀表,促進(jìn)儀表向數(shù)字化、智能化、多功能化、綜合化、柔性化方向發(fā)展。
(3) 機(jī)電一體化產(chǎn)品。單片機(jī)與傳統(tǒng)的機(jī)械產(chǎn)品相結(jié)合,使傳統(tǒng)機(jī)械產(chǎn)品結(jié)構(gòu)簡(jiǎn)化, 控制智能化。
(4) 智能接口。 在計(jì)算機(jī)控制系統(tǒng), 特別是在較大型的工業(yè)測(cè)、控系統(tǒng)中,用單片機(jī)進(jìn)行接口的控制與管理, 加之單片機(jī)與主機(jī)的并行工作, 大大提高了系統(tǒng)的運(yùn)行速度。
(5) 智能民用產(chǎn)品。 如在家用電器、玩具、游戲機(jī)、聲像設(shè)備、電子秤、收銀機(jī)、辦公設(shè)備、廚房設(shè)備等許多產(chǎn)品中,單片機(jī)控制器的引入, 不僅使產(chǎn)品的功能大大增強(qiáng), 性能得到提高, 而且獲得了良好的使用效果。
單片機(jī)的多機(jī)應(yīng)用系統(tǒng)可分為功能集散系統(tǒng)、并行多機(jī)處理及局部網(wǎng)絡(luò)系統(tǒng)。
(1) 功能集散系統(tǒng)。 多功能集散系統(tǒng)是為了滿足工程系統(tǒng)多種外圍功能的要求而設(shè)置的多機(jī)系統(tǒng)。
(2) 并行多機(jī)控制系統(tǒng)。 并行多機(jī)控制系統(tǒng)主要解決工程應(yīng)用系統(tǒng)的快速性問題,以便構(gòu)成大型實(shí)時(shí)工程應(yīng)用系統(tǒng)。
(3) 局部網(wǎng)絡(luò)系統(tǒng)。
單片機(jī)按應(yīng)用范圍又可分成通用型和專用型。專用型是針對(duì)某種特定產(chǎn)品而設(shè)計(jì)的,例如用于體溫計(jì)的單片機(jī)、用于洗衣機(jī)的單片機(jī)等等。在通用型的單片機(jī)中,又可按字長(zhǎng)分為4位、8位、16/32位,雖然計(jì)算機(jī)的微處理器現(xiàn)在幾乎是32/64位的天下,8位、16位的微處理器已趨于萎縮,但單片機(jī)情況卻不同,8位單片機(jī)成本低,價(jià)格廉,便于開發(fā),其性能能滿足大部分的需要,只有在航天、汽車、機(jī)器人等高技術(shù)領(lǐng)域,需要高速處理大量數(shù)據(jù)時(shí),才需要選用16/32位,而在一般工業(yè)領(lǐng)域,8位通用型單片機(jī),仍然是目前應(yīng)用最廣的單片機(jī)。
到目前為止,中國(guó)的單片機(jī)應(yīng)用和嵌入式系統(tǒng)開發(fā)走過了二十余年的歷程,隨著嵌入式系統(tǒng)逐漸深入社會(huì)生活各個(gè)方面,單片機(jī)課程的教學(xué)也有從傳統(tǒng)的8位處理器平臺(tái)向32位高級(jí)RISC處理器平臺(tái)轉(zhuǎn)變的趨勢(shì),但8位機(jī)依然難以被取代。國(guó)民經(jīng)濟(jì)建設(shè)、軍事及家用電器等各個(gè)領(lǐng)域,尤其是手機(jī)、汽車自動(dòng)導(dǎo)航設(shè)備、PDA、智能玩具、智能家電、醫(yī)療設(shè)備等行業(yè)都是國(guó)內(nèi)急需單片機(jī)人才的行業(yè)。行業(yè)高端目前有超過10余萬(wàn)名從事單片機(jī)開發(fā)應(yīng)用的工程師,但面對(duì)嵌入式系統(tǒng)工業(yè)化的潮流和我國(guó)大力推動(dòng)建設(shè)“嵌入式軟件工廠”的機(jī)遇,我國(guó)的嵌入式產(chǎn)品要溶入國(guó)際市場(chǎng),形成產(chǎn)業(yè),則必將急需大批單片機(jī)應(yīng)用型人才,這為高職類學(xué)生從事這類高技術(shù)行業(yè)提供了巨大機(jī)會(huì)。
評(píng)論