選擇合適的微控制器策略
系統(tǒng)性能并不等價(jià)于計(jì)算能力。較低的功耗、豐富的片內(nèi)外設(shè)以及實(shí)時(shí)的信號(hào)處理能力對(duì)于大部分嵌入式應(yīng)用來(lái)說(shuō)是最為重要的。傳統(tǒng)的8位、16位單片機(jī)已經(jīng)很好的處理了這類(lèi)問(wèn)題,但是隨著當(dāng)今嵌入式設(shè)計(jì)不斷增長(zhǎng)的功能需求和特殊要求,許多微控制器廠商開(kāi)始拋棄他們傳統(tǒng)的8位、16位單片機(jī)。但是選擇32位處理器對(duì)于某些任務(wù)來(lái)可能并不是最適宜的。下面我們就討論一下單片機(jī)的選型問(wèn)題。
本文引用地址:http://m.butianyuan.cn/article/274480.htm理解系統(tǒng)性能
MIPS(million instructions per second),是微控制器計(jì)算能力的表征。但是,所有的嵌入式應(yīng)用不僅僅是需要計(jì)算能力,所以應(yīng)用的多樣化決定了系統(tǒng)性能衡量方式的多樣化,大部分參數(shù)都同等重要并且難于用一個(gè)參數(shù)來(lái)表示,我們并不應(yīng)該僅僅從MIPS就判定系統(tǒng)的好壞。也許某一應(yīng)用由于成本的限制,需要一款高集成度的微控制器,該控制器需要多個(gè)定時(shí)器和多種接口。但是另一個(gè)應(yīng)用需要高的精度和快速的模擬轉(zhuǎn)換能力。兩者的共同點(diǎn)可能僅僅是供電部分,比如采用電池供電。對(duì)于一個(gè)實(shí)時(shí)的順序處理應(yīng)用來(lái)說(shuō),通信的失敗可能會(huì)導(dǎo)致災(zāi)難性后果。這樣的場(chǎng)合下就需要一個(gè)靈巧的控制器。這個(gè)控制器應(yīng)當(dāng)能夠以正確的順序處理任務(wù),并且響應(yīng)時(shí)間必須均衡。所有上述應(yīng)用的共同問(wèn)題可能就是定期的現(xiàn)場(chǎng)升級(jí)能力。
除了與具體的產(chǎn)品要求有關(guān)外,系統(tǒng)性能的衡量也可以考慮是否有容易上手、容易使用的開(kāi)發(fā)工具、應(yīng)用示例、齊全的文檔和高效的支持網(wǎng)絡(luò)。
系統(tǒng)性能的相關(guān)問(wèn)題
1.傳統(tǒng)8位單片機(jī)的局限
大多數(shù)工程師十分關(guān)注系統(tǒng)性能,因?yàn)樵絹?lái)越多的8位和16位單片機(jī)家族已經(jīng)無(wú)法滿足當(dāng)今日益增長(zhǎng)的需求。陳舊和低效的架構(gòu)限制了處理能力、存儲(chǔ)器容量、外設(shè)處理和低功耗要求。8位的處理器架構(gòu),比如8051、PIC14、PIC16、PIC18、78K0和HC08是在高級(jí)語(yǔ)言(比如C語(yǔ)言)出現(xiàn)之前開(kāi)發(fā)的,其指令集僅用于匯編開(kāi)發(fā)環(huán)境。并且這類(lèi)架構(gòu)的中央處理單元(CPUs)缺乏一些關(guān)鍵功能,比如16位的算數(shù)運(yùn)算支持、條件跳轉(zhuǎn)和存儲(chǔ)器指針。
許多CPU架構(gòu)執(zhí)行一條指令需要若干時(shí)鐘周期。Microchip的8位PIC家族執(zhí)行一條最簡(jiǎn)單的指令需要4個(gè)時(shí)鐘周期,這導(dǎo)致使用20M的時(shí)鐘僅能達(dá)到5MIPS.對(duì)于其他CPU架構(gòu),比如8051內(nèi)核。其執(zhí)行一條指令至少需要6個(gè)時(shí)鐘周期,這就使得實(shí)際的MIPS要比給定的時(shí)鐘頻率低很多。
int max(int *array)
{
char a;
int maximum=-32768;
for (a=0;amaximum)
maximum=array[a];
return (maximum);
}
上述代碼是一個(gè)簡(jiǎn)單的C語(yǔ)言函數(shù),表1列出了在三種不同CPU架構(gòu)上編譯這段代碼的相應(yīng)結(jié)果。8051內(nèi)核的執(zhí)行時(shí)間幾乎是PIC16內(nèi)核的4倍,對(duì)于AVR架構(gòu)更是達(dá)到了28倍。
表1不同CPU架構(gòu)的代碼容量和執(zhí)行時(shí)間
CPU架構(gòu)代碼容量(字節(jié))執(zhí)行時(shí)間(周期)
8051 112 9384
PIC16 87 2492
AVR 46 335
一些半導(dǎo)體廠商解決了時(shí)鐘分配問(wèn)題,使得微控制器實(shí)現(xiàn)了單時(shí)鐘周期指令。當(dāng)時(shí)鐘頻率為100MHz時(shí),Silicon Labs聲稱他們基于8位8051架構(gòu)的微控制器能夠達(dá)到100MIPS的峰值。但是,這里有幾個(gè)問(wèn)題:
第一,由于大部分指令需要兩個(gè)時(shí)鐘周期甚至更多,所以其實(shí)際能力接近于50MIPS;
第二,8051是基于累加器的CPU,所有需要計(jì)算的數(shù)據(jù)必須拷貝到累加器。查看8051處理器的匯編代碼,可以發(fā)現(xiàn)65%-70%的指令用來(lái)移動(dòng)數(shù)據(jù)。由于現(xiàn)代8位和16位單片機(jī)架構(gòu)中有一系列和算術(shù)邏輯單元(ALU)相連的寄存器。因此,8051內(nèi)核的50MIPS僅相當(dāng)于現(xiàn)代8位和16位單片機(jī)架構(gòu)的15MIPS.
MOV A,0x82
ADD A,R1
MOV 0x82,A
MOV A,0x83
ADDC A,R2
MOV 0x83,A
MOVX A,@DPTR
MOV OxF0,A
INC DPTR
MOVX A,@DPTR
RET
第三,較老的CPU架構(gòu)缺乏對(duì)大容量存儲(chǔ)器的支持。早在七十年代,很難想象需要超過(guò)64KB存儲(chǔ)器的嵌入式應(yīng)用,這使得許多CPU設(shè)計(jì)師選擇16位的地址總線。因此,CPU、寄存器、指令集以及程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)總線始終受此限制。
第四,在2006年,約有9%的8位嵌入式應(yīng)用使用了64KB甚至更多的程序存儲(chǔ)空間,這代表了8位MCU市場(chǎng)26%的收益。推測(cè)2009年,14%的8位嵌入式應(yīng)用會(huì)代表36%的收益。而這14%的應(yīng)用會(huì)使用64KB甚至更多的程序存儲(chǔ)空間。
從系統(tǒng)性能的角度來(lái)看,所有這些使得較舊的8位MCU逐漸失去競(jìng)爭(zhēng)力。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評(píng)論