近年來,隨著工藝與IP的逐漸成熟,32位的MCU增長迅速,風頭之勁乃至16位的MCU基本上被跳過了?,F(xiàn)在說嵌入式MCU,要么就是8位,要么就是32位,16位的MCU產(chǎn)品型號屈指可數(shù)。
在半導體領(lǐng)域,微控制器(MCU)是一個很卷的賽道。為了能夠從眾多競爭者中脫穎而出,MCU產(chǎn)品一直在不斷添加新“技能”,以適應市場環(huán)境的新要求。因此,時至今日,如果你“打開”一顆MCU,會發(fā)現(xiàn)其早已不再是一顆傳統(tǒng)意義上簡單的計算和控制芯片,而是集成了CPU內(nèi)核以及豐富外設(shè)功能模塊的SoC。
尤其是在CPU內(nèi)核趨向同質(zhì)化的今天,想要在產(chǎn)品設(shè)計上實現(xiàn)差異化,MCU廠商更是要在CPU內(nèi)核之外的外設(shè)功能的集成上大做文章,讓自己的產(chǎn)品具有與眾不同的賣點。
“可以將哪類外設(shè)功能集成到MCU中”,對于這個問題,MCU廠商已經(jīng)進行了諸多嘗試:存儲器、定時器、模擬外設(shè)、通信接口,甚至是射頻收發(fā)器……不一而足。今天,Microchip更是腦洞大開,給出了一個新思路——將一個“微型FPGA”集成到MCU中!
在8位MCU中集成可編程邏輯
電子工程師都知道,在相當長的時間里,MCU和以FPGA為代表的可編程邏輯,是兩個特性迥異的開發(fā)平臺:前者是在通用CPU架構(gòu)的基礎(chǔ)上,通過軟件編程去滿足不同應用的設(shè)計要求,具有較高的靈活性和可擴展性,不過代價就是在性能和功耗上有所折中;而后者由于具有硬件可編程特性,開發(fā)者可以根據(jù)應用“定制”所需的硬件電路,在性能和功耗上自然更勝一籌,不過開發(fā)門檻相對較高。
之前也有?商將兩者結(jié)合在?起,開發(fā)出兼具靈活性和?能效的異構(gòu)平臺,不過它們?都定位于中?端的產(chǎn)品。將可編程邏輯與8位MCU整合在?起的嘗試,并不多?。?Microchip正是找到了這個獨特的市場切?點,推出了PIC16F13145 系列MCU。
具體來講,與傳統(tǒng)的8位MCU不同,PIC16F13145系列的外設(shè)中,除了ADC、DAC、?較器和定時器等這些“常規(guī)”配置,還有?個特別的可配置邏輯塊(CLB)模塊。
CLB由32個基本邏輯元件(BLE)陣列(每個BLE都能夠模擬AND / OR / NAND / NOR?)以及緩沖器/反相緩沖器、D觸發(fā)器、JK觸發(fā)器、多路復?器或四輸?LUT構(gòu)成。
這意味著,開發(fā)者可以利?CLB直接在MCU內(nèi)創(chuàng)建基于硬件的定制組合邏輯功能,實現(xiàn)??想要的硬件電路,?不受通?MCU固定硬件架構(gòu)的限制,就好像在MCU中添加了?個“微型FPGA”。
那么8位的MCU的情形又如何,很多嵌入式工程師都有一些誤解,下面來簡單分析下。
01
8位MCU正在被淘汰
這是最常見的誤解,先說事實,根據(jù)最新的Gartner的市場報告,8位的市場營收額和增長額跟32位的相比都僅僅差幾個百分點。考慮到8位的單個芯片比32位芯片要便宜很多的事實,8位的出貨量其實遠高于32位的。
打個直觀的比方,現(xiàn)在我們有了高鐵,是不是所有傳統(tǒng)的普快、特快火車都要立即淘汰呢?顯然事實并非如此,至于原因就太多了?,F(xiàn)實情況就是8位 MCU曾經(jīng)的應用領(lǐng)域并不能立即用32位的MCU直接替代。
02
8位處理器缺乏創(chuàng)新
不少人會認為既然現(xiàn)在市場的寵兒是32位的MCU,廠商們是不是都沒有投入研發(fā)資源在8位產(chǎn)品上了。
這么想的人可能一想到8位的MCU,腦海中會浮現(xiàn)40DIP的“經(jīng)典8051”的形象,事實上芯片廠商們并沒有停止創(chuàng)新。
比如CIP-51內(nèi)核因為采用了一個時鐘周期等同于一個指令周期的設(shè)計,瞬間將同頻率的8051性能提高了12倍。國內(nèi)的一些半導體廠商也有基于8051或其他8位內(nèi)核的創(chuàng)新。
03
8位處理器難以使用C/C++語言編程
如果你了解Arduino的設(shè)計原理,這個誤解就不攻自破。
當然坦白講,8位的MCU使用高級語言編程確實比32位的MCU要困難些,主要障礙就是內(nèi)存地址的不統(tǒng)一。
比如8051內(nèi)核的內(nèi)存地址就分為CODE、data、sfr、idata和xdata。如果涉及到banking就更復雜了,8位的PIC還有硬件Stack這樣更加“非主流”的設(shè)計,但是這些障礙都可以通過工具的優(yōu)化來緩解。
04
8位處理器專為簡單應用而生
這個觀點倒是有幾分真實,但是嵌入式應用本身就是簡單應用居多。嵌入式系統(tǒng)應用的本身特點決定了8位依然有很多用武之地。外設(shè)和編譯器的進化將慢慢拓展8位處理器的應用范疇。
05
8位處理器不能勝任IoT應用需求
IoT應用不是一個單獨的應用,而是一個復合應用。
智能手表、智能音箱、主控制器、網(wǎng)關(guān)這種當然需要復雜的處理器來實現(xiàn)。
但是IoT應用還包含大量的傳感器節(jié)點、執(zhí)行節(jié)點和轉(zhuǎn)換節(jié)點。
這種節(jié)點用低功耗的8位處理器來實現(xiàn)更加適合。
06
8位處理器響應慢
這個就是完全的誤解了。典型的嵌入式應用中,響應速度主要跟中斷響應和喚醒延遲相關(guān)。8位處理器有天然的優(yōu)勢(地址轉(zhuǎn)換工作量小、IP單元實現(xiàn)門數(shù)少),不輸于32位的處理器。
07
8位處理器的能效低于32位處理器
曾經(jīng)看過ARM公司的權(quán)威工程師寫的一本書,書中觀點是32位處理器的能效比高于8位的MCU,理由是32位處理器能快速處理完任務(wù),休眠時間的比例更大。
但是這個結(jié)論包含一個假設(shè),就是任務(wù)有一定復雜度。
如果任務(wù)本身非常簡單,喚醒過程的功耗也很大,那么這個假設(shè)不成立。
針對不同應用場景,不能簡單說8位、32位哪個能效比更高。至少非常簡單的應用中,8位的能效比要高。如果再加上單獨響應,無需CPU干預的一些任務(wù),8位的能效比甚至能高出很多。
08
相同價格的32位處理器功能遠強于8位處理器
這個也有一定程度的可信度,但是不要忘記有相當大的一部分應用使用8位的MCU就已足夠在這種情況下,非要購買平均價格高一點的32位 MCU,成本就會上升。對于很多基本上標準化了的嵌入式產(chǎn)品來說,8位MCU還是具有一定的成本優(yōu)勢的。
09
8位處理器設(shè)計的應用不能適應未來變化
這是個思維角度問題,作為嵌入式程序員,更應該考慮當前的任務(wù)。不管是什么類型的MCU,如果產(chǎn)品形態(tài)變化了或者需求本身變化了,就要重新設(shè)計。未來誰都看不清,何必考慮那么多沒有實際意義的前瞻。
10
8位處理器開發(fā)工作更繁重且沒有升級路徑
32位處理器的處理更加以軟件為中心,可以做更多的代碼復用。
而8位處理器更多地利用硬件外設(shè)來完成任務(wù)。
綜合而言,沒有絕對的差別。
只要是嵌入式處理器,升級路徑都不大明確。
如果你采用既有8位,又有32位的產(chǎn)品的廠家,你會發(fā)現(xiàn)很多外設(shè)都很相似。
考慮到現(xiàn)在圖形化配置外設(shè)的趨勢,升級路徑逐漸變得不那么重要,反正都是圖形化或者腳本化來生成基礎(chǔ)驅(qū)動代碼。