微控制器(MCU)深入人們應(yīng)用生活,幾乎大小設(shè)備都看得到MCU蹤影,在MCU導(dǎo)入DSP數(shù)字信號(hào)處理器、FPU浮點(diǎn)運(yùn)算單元功能后,MCU更大幅擴(kuò)展元件可適用范圍,這幾年來(lái),在眾多MCU大廠紛紛針對(duì)旗下商品推出多樣整合方案,不管是產(chǎn)品策略還是市場(chǎng)區(qū)隔,也讓MCU市場(chǎng)更加豐富多元。
MCU深入生活應(yīng)用是不容易質(zhì)疑的趨勢(shì),尤其是MCU在功能優(yōu)化或市場(chǎng)區(qū)隔目的下,進(jìn)行DSP(Digital Signal Processor)數(shù)字信號(hào)處理器或FPU(Floating Point Unit)浮點(diǎn)運(yùn)算單元功能整合,使得MCU的可應(yīng)用場(chǎng)域大幅擴(kuò)展。MCU整合FPU可以在進(jìn)階數(shù)值運(yùn)算的精密度大幅提升、處理效能也能獲得改善。針對(duì)IoT應(yīng)用開(kāi)發(fā)的MCU方案,整合DSP可優(yōu)化感測(cè)器數(shù)據(jù)擷取品質(zhì)與提升信號(hào)處理效能。
如果以FPU或DSP導(dǎo)入目的,一般在MCU中追加FPU、DSP整合架構(gòu),主要目的還是在考量成本下的設(shè)計(jì)方向,尤其在早期半導(dǎo)體元件,SOC(System on Chip)系統(tǒng)單芯片與MCU存在一段價(jià)格差距,如果僅需要SDP或FPU進(jìn)行運(yùn)算加速,又不想選用高單價(jià)SOC,這時(shí)整合DSP或FPU硬件加速單元的MCU產(chǎn)品、不僅可以更好的提供運(yùn)行效能,同時(shí)又能在成本控制上表現(xiàn)更加優(yōu)異。
首先明白,是什么偷走了MCU的功耗?
1、掐斷外設(shè)命脈——關(guān)閉外設(shè)時(shí)鐘
先說(shuō)最直觀的,也是工程師都比較注意的方面,就是關(guān)閉MCU的外設(shè)時(shí)鐘,對(duì)于現(xiàn)在市面上出現(xiàn)的大多數(shù)的MCU,其外設(shè)模塊都對(duì)應(yīng)著一個(gè)時(shí)鐘開(kāi)關(guān)。只需要打開(kāi)這個(gè)外設(shè)的時(shí)鐘,就可以正常的使用這個(gè)外設(shè)了,當(dāng)然,此外設(shè)也就會(huì)產(chǎn)生相應(yīng)的功耗;反之,如果想要讓這個(gè)外設(shè)不產(chǎn)生功耗,只需關(guān)閉它的時(shí)鐘即可。
2、讓工作節(jié)奏慢下來(lái)——時(shí)鐘不要倍頻
除了外設(shè)模塊功率消耗之外,還有一個(gè)功耗大戶需要注意一下,這就是PLL和FLL模塊。PLL和FLL主要是用來(lái)對(duì)原始的時(shí)鐘信號(hào)進(jìn)行倍頻操作,從而提高系統(tǒng)的整體時(shí)鐘,相應(yīng)的,其功耗也會(huì)被提上去。所以在進(jìn)入低功耗之前,需要切換是種模式,旁路掉PLL和FLL模塊,從而盡可能的降低MCU的功耗,等到MCU喚醒之后再把時(shí)鐘切換回去。
3、圍堵涓涓細(xì)流——注意I/O口的電平狀態(tài)
如果認(rèn)為只要關(guān)閉外設(shè)時(shí)鐘就能夠保證外設(shè)不再耗電,那么你就太天真了。如果IO口沒(méi)有做好處理的話,它就會(huì)在暗地里偷走功耗,而你卻渾然不知。具體原因是這樣的,一般的IO的內(nèi)部或者外部都會(huì)有上下拉電阻,舉個(gè)例子,如下圖所示,假如某個(gè)IO口有個(gè)10KΩ的上拉電阻,把引腳拉到3.3V,然而當(dāng)MCU進(jìn)入低功耗模式的時(shí)候,此IO口被設(shè)置成輸出低電平,根據(jù)歐姆定律,此引腳就會(huì)消耗3.3V/10K=0.33mA的電流,假如有四、五個(gè)這樣的IO口,那么幾個(gè)mA就貼進(jìn)去了,太可惜了。所以在進(jìn)入低功耗之前,請(qǐng)逐個(gè)檢查IO口的狀態(tài)。
4、睦鄰友好合作——注意I/O與外設(shè)IC的統(tǒng)籌
IO口的上下拉電阻消耗電流這一因素相對(duì)比較明顯,下邊咱來(lái)說(shuō)一個(gè)不明顯的因素:IO口與外部IC相連時(shí)的電流消耗。假如某個(gè)IO口自帶上拉,而此與IO相連的IC引腳偏偏是自帶下拉的,那么無(wú)論這個(gè)引腳處于什么樣的電平輸出,都不可避免的產(chǎn)生一定的電流消耗。所以凡是遇見(jiàn)這一類的情況,首先需要閱讀外設(shè)IC的手冊(cè),確定好此引腳的的狀態(tài),做到心中有數(shù);然后在控制MCU睡眠之前,設(shè)置好MCU的IO口的上下拉模式及輸入輸出狀態(tài),要保證一絲兒電流都不要被它消耗掉。
5、斷開(kāi)調(diào)試器連接,不要被假象所迷惑
還有一類比較奇特,檢測(cè)出來(lái)的電流消耗很大,可實(shí)際結(jié)果是自己杞人憂天,什么原因呢?是因?yàn)樵跍y(cè)試功耗的時(shí)候MCU還連接著調(diào)試器呢!這時(shí)候大部分電流就會(huì)被調(diào)試器給擄走,平白無(wú)故的讓工程師產(chǎn)生極度郁悶的心情。所以在測(cè)低功耗的時(shí)候,一定不要連接調(diào)試器,更不能邊調(diào)試邊測(cè)電流。
MCU的低功耗設(shè)計(jì)是一個(gè)細(xì)致活,要養(yǎng)成良好的習(xí)慣,做到每添加一個(gè)功能都要重新驗(yàn)證一下低功耗是否符合要求,這樣就可以隨時(shí)隨地干掉消耗功率的因素。如果把所有功能都設(shè)計(jì)好了才去考慮低功耗的問(wèn)題,一個(gè)不小心,就可能要更改程序的架構(gòu)——即便如此也不一定能把功耗給徹底降下去。
那MCU為什么要導(dǎo)入DSP/FPU?
其一,MCU整合芯片封裝成本驟降 增加MCU功能擴(kuò)充應(yīng)用空間
以早期的SOC產(chǎn)品來(lái)看,搭載DSP與FPU硬件加速器是SOC產(chǎn)品的重要特性,其中DSP與FPU的應(yīng)用方向主要以音訊、影像等處理加速運(yùn)算為主,而在制程技術(shù)持續(xù)優(yōu)化,SOC的成本逐步與MCU拉近,MCU在32位元甚至64位元架構(gòu)下,也開(kāi)始有結(jié)合DSP或是FPU硬件加速單元的解決方案。
先看看MCU加上硬件加速單元的優(yōu)點(diǎn),在MCU追加FPU導(dǎo)入,最直接的效益是早期利用MCU處理類似FPU運(yùn)算內(nèi)容,會(huì)因?yàn)镸CU本身的運(yùn)算架構(gòu)限制,讓運(yùn)算結(jié)果得出時(shí)間會(huì)相對(duì)拉長(zhǎng),而在導(dǎo)入硬件加速器處理浮點(diǎn)運(yùn)算時(shí),因?yàn)橛布艚谢蚴?a href="http://www.zgszdi.cn/soft/special/" target="_blank">資料傳遞就能透過(guò)硬件算出數(shù)據(jù),MCU本身耗在浮點(diǎn)運(yùn)算的記憶體資源可以因硬件加速整合減少至少10%。
其二,高階數(shù)值運(yùn)算 運(yùn)用硬件加速滿足設(shè)計(jì)需求
在實(shí)際應(yīng)用中,F(xiàn)PU硬件加速器本身并無(wú)法完全解決誤差擴(kuò)大問(wèn)題,所以會(huì)有FPU、DSP等不同硬件加速整合架構(gòu)下的應(yīng)用目的考量,舉例來(lái)說(shuō),透過(guò)DSP硬件加速器,可針對(duì)特殊數(shù)據(jù)類型更高速、可靠的運(yùn)算處理輸出,像是DSP可利用指令來(lái)進(jìn)行多種運(yùn)算,處理如快速快速傅立葉轉(zhuǎn)換(fast Fourier transform;FFT)或有限脈沖回應(yīng)(Finite impulse response;FIR)進(jìn)階運(yùn)算中重要且耗資源的運(yùn)算需求,甚至透過(guò)單周期的指令便能處理單一指令多重資料(Single Instruction Multiple Data;SIMD)運(yùn)算需求,MCU在進(jìn)行進(jìn)階數(shù)值處理方面還可獲得進(jìn)階增強(qiáng)效益。
其三,F(xiàn)PU/DSP不同硬件加速單元具互補(bǔ)作用
雖說(shuō)整合FPU或DSP基本在架構(gòu)與應(yīng)用方向就不同,但實(shí)際上兩者分別是針對(duì)數(shù)據(jù)運(yùn)算、訊號(hào)處理對(duì)應(yīng)至各式演算法應(yīng)用,兩者功能可以說(shuō)是各有互補(bǔ)效用,比較難被獨(dú)立拆分。以ARM Cortex-M4來(lái)看,若僅提供DSP硬件加速處理器反而沒(méi)設(shè)置FPU浮點(diǎn)運(yùn)算加速器反而會(huì)造成應(yīng)用限制,因?yàn)樵贑ortex-M4應(yīng)用場(chǎng)合如果僅有數(shù)字信號(hào)處理加速硬件支援,少了浮點(diǎn)運(yùn)算支援,對(duì)開(kāi)發(fā)需求端若碰到需要數(shù)值進(jìn)階運(yùn)算加速,就會(huì)造成設(shè)計(jì)上的彈性限制,或是導(dǎo)致還需透過(guò)外部功能芯片支援,或利用原有的運(yùn)算資源因應(yīng)數(shù)值進(jìn)階計(jì)算需求,反而會(huì)因?yàn)閿?shù)值處理效能限制了Cortex-M4的應(yīng)用可能性。
同樣的狀況也發(fā)生在僅有FPU而沒(méi)有設(shè)置DSP的微控制器應(yīng)用方案上,對(duì)DSP或是FPU應(yīng)用功能是相輔相成,獨(dú)立整合對(duì)于微控制器的配置并未能產(chǎn)生綜效,反而會(huì)成為發(fā)展路徑的限制。
其四,DSP數(shù)字濾波應(yīng)用 可提升感測(cè)訊號(hào)擷取品質(zhì)
此外,在MCU整合FPU的另一個(gè)優(yōu)勢(shì)在于可在系統(tǒng)中善用其運(yùn)算特性,例如,運(yùn)用數(shù)字演算法進(jìn)行擷取數(shù)值的數(shù)字濾波應(yīng)用,針對(duì)處理訊號(hào)進(jìn)一步以基于硬件加速的數(shù)字演算法進(jìn)行波形或數(shù)據(jù)再處理,形成一提升數(shù)據(jù)噪訊比(SNR)的便捷作法,數(shù)字濾波器還可利用演算機(jī)制優(yōu)化提供不同程度大小的濾波效果,這在于微控制器用于感測(cè)熱門的心率、血液含氧量、運(yùn)動(dòng)數(shù)值等生理資訊,或是數(shù)字電表、智能電表等應(yīng)用,解決末端數(shù)據(jù)因?yàn)殡s訊或環(huán)境噪訊影響,倒置訊號(hào)失真的數(shù)據(jù)優(yōu)化回補(bǔ)效用,優(yōu)化終端取得的訊號(hào)波形信號(hào)品質(zhì),更利于后續(xù)處理或數(shù)據(jù)使用。
為了優(yōu)化末端應(yīng)用,微控制器整合硬件加速單元也蔚為一股風(fēng)潮,不只是DSP或是FPU硬件加速單元,例如就有微控制器在架構(gòu)上加入了VMU硬件加速單元,處理因應(yīng)馬達(dá)應(yīng)用重點(diǎn)的三角函數(shù)數(shù)值運(yùn)算需求,或是對(duì)應(yīng)無(wú)線電通訊需求整合的數(shù)據(jù)分析演算支援,與現(xiàn)有FPU浮點(diǎn)運(yùn)算硬件加速功能區(qū)隔,采取協(xié)同分工的方式加速整體微控制器的應(yīng)用效能。
另一個(gè)微控制器整合DSP、FPU硬件加速單元的目的,其實(shí)加入硬件加速單元整合而不采行外部解決方案來(lái)組構(gòu)硬件加速運(yùn)算需求,其最大的優(yōu)點(diǎn)在于成本方面的極致優(yōu)化,因?yàn)?a target="_blank">電子電路板可以更節(jié)省載板空間,運(yùn)用單一芯片就能改善運(yùn)算的整體效率,而在軟件開(kāi)發(fā)層面,可在整合架構(gòu)下運(yùn)用簡(jiǎn)單呼叫與資料傳遞的再處理,便能滿足應(yīng)用服務(wù)的數(shù)據(jù)計(jì)算產(chǎn)出效能要求,甚至于開(kāi)發(fā)完成的成品還可運(yùn)用一致性偵錯(cuò)分析工具,直接針對(duì)系統(tǒng)進(jìn)行全面分析與勘誤,在開(kāi)發(fā)設(shè)計(jì)的效率與速度都能獲得改善。
評(píng)論
查看更多