8/16位MCU應(yīng)用升級(jí)成32位將會(huì)怎樣?
客戶有時(shí)還可能遇到各種需要多內(nèi)核架構(gòu)的應(yīng)用,這種情況意味著用戶不僅要花更多時(shí)間了解并掌握各種內(nèi)核技術(shù)、外設(shè)編程技術(shù)和工具使用,還要在管理不同架構(gòu)特性方面額外增加物流費(fèi)用。
針對(duì)這一問題,恩智浦推出了基于32位ARM Cortex-M0處理器內(nèi)核的LPC1100系列微控制器。該處理器是ARM公司Cortex-M系列尺寸最小的一款,具有32位架構(gòu)性能、低功耗和超小封裝等優(yōu)點(diǎn)。LPC1100是恩智浦半導(dǎo)體大獲成功的LPC1000微控制器系列的最新產(chǎn)品(參見圖1),主要針對(duì)目前8/16位微控制器占主流的低成本應(yīng)用的市場。
圖1: 恩智浦Cortex-Mx微控制器系列
LPC1100完全具有圍繞LPC1300和LPC1700微控制器(均采用Cortex-M3內(nèi)核)建立的生態(tài)系統(tǒng)優(yōu)勢。從諸如UART、I2C和SPI等標(biāo)準(zhǔn)接口到高端的CAN和USB,LPC1100外設(shè)種類齊全。LPC1000生態(tài)系統(tǒng)包括多家供應(yīng)商提供的編譯器和調(diào)試工具、各種操作系統(tǒng)和軟件。由于LPC1100系列微控制器Cortex-M0能夠向上兼容M3內(nèi)核,因此能夠?qū)崿F(xiàn)開發(fā)共享。
本文將針對(duì)過去8/16位微控制器的幾個(gè)薄弱應(yīng)用環(huán)節(jié),重點(diǎn)介紹LPC1100的優(yōu)勢。此外,還將涉及LPC1100如何解決成本、功耗和代碼大小等難題,以及如何提高傳統(tǒng)8/16位微控制器應(yīng)用領(lǐng)域的系統(tǒng)效率。
節(jié)能
對(duì)于門、窗或照明控制等家庭自動(dòng)化應(yīng)用領(lǐng)域,主要采用傳感器連接到家庭自動(dòng)化系統(tǒng)內(nèi)部總線,這些總線和傳感器從專用直流電路獲取電流,大部分時(shí)間都處于工作模式。LPC1100在工作模式下出色的低功耗特點(diǎn)為此類應(yīng)用提供了理想選擇。
圖2是一個(gè)從閃存執(zhí)行代碼并在RAM里操作動(dòng)態(tài)數(shù)據(jù)的典型應(yīng)用示例,顯示了LPC1100在正常工作模式下幾個(gè)內(nèi)部系統(tǒng)模塊的功耗情況。
圖2: 20MHz內(nèi)核頻率的各模塊耗電量
在電流消耗總量中,Cortex-M0內(nèi)核和內(nèi)部存儲(chǔ)系統(tǒng)所占比重最大。盡管Cortex-M0內(nèi)核的處理能力超強(qiáng),但是采用該內(nèi)核的LPC1100在無限循環(huán)運(yùn)行時(shí)的平均耗電量僅為150μA/MHz左右。
圖3 正常工作模式下,從閃存執(zhí)行代碼的耗電量
預(yù)計(jì)在推出低功耗(LP)LPC1100新產(chǎn)品后,現(xiàn)有的LPC1100微控制器低功耗表現(xiàn)會(huì)得到進(jìn)一步提升。工作模式耗電量有望降至130uA/MHz左右。
此外,由于M0內(nèi)核采用32位架構(gòu),因此電流利用效率要高于8/16位架構(gòu)。對(duì)于執(zhí)行相同的計(jì)算任務(wù),M0內(nèi)核的實(shí)際運(yùn)行速度可比8/16位微控制器低2-4倍,因此功耗要遠(yuǎn)低于8/16位微控制器。
對(duì)于“深度睡眠”或“深度掉電”模式,Cortex-M0內(nèi)核的強(qiáng)大處理能力同樣有用武之地,與8/16位架構(gòu)相比,32位架構(gòu)執(zhí)行任務(wù)的時(shí)間更短,因此微控制器更多時(shí)間會(huì)處于低功耗模式運(yùn)行。新型LP系列產(chǎn)品將大幅減少深度睡眠模式(2uA)和深度掉電模式(220nA)耗電量。
運(yùn)算能力
LPC1100非常適合同時(shí)處理微控制器(MCU)基本任務(wù)和各種操作數(shù)(8位、16位或更高位)運(yùn)算。嵌入快速的32位Cortex-M0內(nèi)核(最大頻率50MHz)并保持微控制器操作和編程靈活性(Cortex-M0 內(nèi)核可以完全采用C語言)是代替16位混合系統(tǒng)的最好解決方案。
Cortex-M0微控制器可以輕松超越高端8/16位單片機(jī)。Cortex-M0內(nèi)核的額定處理能力高達(dá)0.8DMIPS/MHz,是高端8 /16位單片機(jī)的2-4倍。由于DMIPS和MIPS有時(shí)并不能準(zhǔn)確反映用戶器件性能,因此圖4根據(jù)一些通用的測試基準(zhǔn)程序給出了各器件的相對(duì)性能。大多數(shù)常用Cortex-M0 Thumb2指令為單周期指令,所有8位、16位和32位數(shù)據(jù)傳輸在一個(gè)指令周期內(nèi)完成。在8位和16位單片機(jī)中處理長字乘法運(yùn)算通常要花很長時(shí)間,但由于Cortex-M0內(nèi)核是32位架構(gòu),恩智浦在LPC1100中采用了32x32位硬件乘法器,通過MULS指令,成功地在一個(gè)指令周期內(nèi)完成了兩個(gè)32位字的乘法運(yùn)算。
圖4 Cortex-M0相對(duì)性能
除法運(yùn)算可通過軟件完成,Cortex-M0對(duì)于各種操作數(shù)除法運(yùn)算有同樣出色的表現(xiàn)。
對(duì)于具體的應(yīng)用,復(fù)雜的計(jì)算通常會(huì)涉及多次加法、乘法和除法。圖5顯示了一個(gè)復(fù)雜計(jì)算的執(zhí)行時(shí)間,其執(zhí)行條件是從閃存執(zhí)行代碼,采用浮點(diǎn)操作數(shù)共進(jìn)行5次乘法、5次加法和1次除法計(jì)算。對(duì)于浮點(diǎn)運(yùn)算,C語言代碼可通過一個(gè)特定的Cortex-M0數(shù)學(xué)庫函數(shù)做優(yōu)化。
圖5: 浮點(diǎn)運(yùn)算時(shí)間實(shí)例
從數(shù)學(xué)庫向RAM重新優(yōu)化一些重要的函數(shù)可以進(jìn)一步提升性能。應(yīng)該在RAM中調(diào)用這些庫函數(shù),這樣可避免從ROM頁到RAM頁的分配過程出現(xiàn)長分支,以縮短執(zhí)行時(shí)間。
微控制器的性能不僅要看執(zhí)行速度,中斷處理也一個(gè)重要方面。中斷性能一般通過延遲時(shí)間和抖動(dòng)(jitter)體現(xiàn)。延遲是指從中斷事件產(chǎn)生到進(jìn)入中斷服務(wù)程序的時(shí)間,抖動(dòng)用以描述延遲的變化。
Cortex-M0通過將中斷控制器和內(nèi)核緊密耦合,最大程度縮短了延遲時(shí)間。最高優(yōu)先級(jí)中斷延遲時(shí)間固定為16個(gè)時(shí)鐘周期。中斷控制器最多可支持32個(gè)不同的中斷源,包含一個(gè)非屏蔽中斷輸入。LPC1100對(duì)各種中斷事件提供了專用中斷向量,任何中斷都會(huì)自動(dòng)分配一個(gè)專用中斷服務(wù)程序(ISR, Interupt Service Routine),無須軟件處理。
為了縮短嵌套中斷的延遲時(shí)間,LPC1100采用了一種集成機(jī)制,如果高優(yōu)先級(jí)中斷在低優(yōu)先級(jí)中斷進(jìn)入服務(wù)程序前到達(dá),可避免重新堆棧。此外,LPC1100還支持尾鏈功能(tail chaining),通過疊合異常出棧順序以及隨后出現(xiàn)的異常進(jìn)棧順序可直接進(jìn)入ISR,縮短延遲時(shí)間。
影響系統(tǒng)總成本有幾個(gè)方面的因素,對(duì)于小型系統(tǒng),內(nèi)核和內(nèi)存所占比重最大。
內(nèi)核尺寸:Cortex-M0內(nèi)核專門針對(duì)低成本應(yīng)用開發(fā),主要面向以往的8/16位小型微控制器架構(gòu)市場。Cortex-M0內(nèi)核的尺寸僅為Cortex-M3的1/4,參見圖6。對(duì)于外設(shè)較少、Flash空間有限的小型系統(tǒng),較小的內(nèi)核可以減少芯片的整體尺寸。Cortex-M0邏輯門數(shù)量達(dá)到了最經(jīng)典的8位內(nèi)核水平,卻帶來了更出色的處理能力,并為更強(qiáng)大的Cortex-M系列處理器提供向上兼容性。
圖6 Cortex-M0內(nèi)核尺寸
閃存占用量?。簝?chǔ)存應(yīng)用程序代碼所需的閃存尺寸是影響系統(tǒng)總成本的另一個(gè)重要因素??紤]到32位指令比8位指令性能更強(qiáng),并且能一次代替多條8位指令,因此可以假設(shè)應(yīng)用代碼尺寸基本相同(不包括常數(shù)表)。不過,通過輸入LPC1100的8位代碼的實(shí)際測試結(jié)果看,應(yīng)用代碼尺寸要小很多,甚至可以達(dá)到50%以下。
ARM Cortex-M0執(zhí)行Thumb指令集,包括少量使用Thumb-2技術(shù)的32位指令,參見圖7。Thumb指令集是ARM Cortex-M3和ARM Cortex-M4支持的指令集的子集,并與之二進(jìn)制編碼向上兼容。
將ARM7TDMI的16位Thumb指令和部分Thumb-2功能強(qiáng)大的32位指令結(jié)合在一起使用,可以提高代碼密度。編譯器會(huì)選擇是使用16位還是32位指令,最終代碼中兩者可以完全共存。運(yùn)行期間系統(tǒng)能夠?qū)崿F(xiàn)16位和32位代碼無縫切換,無需像在使用ARM7TDMI時(shí)那樣,需要專用指令。下表是一張Cortex-M0完整的指令集。
圖7:Cortex M0指令集
總體來看,LPC1100在低成本MCU市場具有很強(qiáng)的競爭力,其出色的靈活性和強(qiáng)大的性能將成為8位和16位架構(gòu)占統(tǒng)治地位的各應(yīng)用領(lǐng)域最有力的競爭對(duì)手。LPC1100支持超小封裝(16引腳CSP,2.5 x 2.5mm)以及易于操作的HVQFN和LQFP封裝。該系列所有產(chǎn)品均支持UART、I2C和SPI等常見外設(shè),并可在LPC1000系列其他產(chǎn)品上復(fù)用這些外設(shè)的驅(qū)動(dòng)。此外,LPC1100還支持USB和CAN等高端外設(shè),其驅(qū)動(dòng)代碼內(nèi)嵌在ROM掩膜中, 因此Flash閃存可完全用于用戶自己的應(yīng)用程序。目前系統(tǒng)中的Flash尺寸介于8KB(2KB RAM)和32KB(8KB RAM)之間。LPC1100的市場售價(jià)(1萬片起訂)為65美分。
要了解該系列微控制器詳細(xì)信息,請(qǐng)與恩智浦半導(dǎo)體代表或分銷伙伴聯(lián)系,或者直接登錄 www.nxp.com/microcontroller。
作者:Bernhard Fink(應(yīng)用經(jīng)理)
orsten Katschinsky(現(xiàn)場應(yīng)用資深工程師)
Cristian Ionescu(應(yīng)用市場經(jīng)理)
恩智浦公司
評(píng)論