導(dǎo)讀:今天的便攜式設(shè)備通過持續(xù)的活動監(jiān)測和情境感知來了解周圍環(huán)境。
引言
今天的便攜式設(shè)備通過持續(xù)的活動監(jiān)測和情境感知來了解周圍環(huán)境。為了實現(xiàn)這個功能,設(shè)備集成了越來越多的傳感器和外設(shè),由此產(chǎn)生大量數(shù)據(jù)。這反過來使得集成更強大的CPU變得很有必要,以便執(zhí)行越來越多的計算。同時,必須縮小設(shè)計尺寸,降低成本和功耗,但又不犧牲最終產(chǎn)品不斷提升的功能要求。
傳感器中樞(Sensor hub)的概念被越來越多地采用到當今的SoC設(shè)計中,以滿足“始終運行”的傳感器/外設(shè)訪問和控制(甚至以高速率)的要求,而且不會增加功耗和設(shè)計成本。傳感器中樞可以是小型CPU內(nèi)核,與傳感器/外設(shè)連接,并通過執(zhí)行后臺操作并僅在需要時“喚醒”主處理器,充當功耗較大的主處理器的卸載引擎的角色。
用于傳感器采集的基于處理器的典型架構(gòu)
應(yīng)用在集成多個傳感器的系統(tǒng)中的典型基于微控制器的架構(gòu)包括以下組件[1]:
a) 一個微控制器單元(MCU) - 也稱為處理子系統(tǒng),MCU控制系統(tǒng)內(nèi)所有構(gòu)成部分的運行并處理數(shù)據(jù)。它包括一個處理器、一個內(nèi)部或外部存儲器、以及本地數(shù)據(jù)處理所需的所有外設(shè)和子系統(tǒng)。在典型的基于MCU的架構(gòu)中,控制器執(zhí)行所有傳感器數(shù)據(jù)收集、處理和存儲。
b) 傳感器元件(或傳感子系統(tǒng)) - 一組傳感器,可以是無源或有源,數(shù)字或模擬的任意組合。這些傳感器將來自外部環(huán)境的輸入信息轉(zhuǎn)換成電信號。在大多數(shù)應(yīng)用中,傳感器用于監(jiān)測運動、光、氣壓、振動、流速、溫度、通風(fēng)、電等。通常來說,傳感器元件在其輸出端生成電壓或電流信號。在數(shù)據(jù)被處理、存儲和傳輸之前,這些信號一般會被放大,并通過模數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號。
c) 無線電 - 一種短距離收發(fā)器,提供與主機的無線通信。
d) 電源子系統(tǒng) - 通常連接到電池或能量采集器。該子系統(tǒng)充當可控單元,可單獨打開和關(guān)閉系統(tǒng)構(gòu)建塊的電源。它通常是MCU軟件中的一個軟件塊。電源子系統(tǒng)負責(zé)為每個單獨的硬件組件提供合適的電源電壓。
在具有多個傳感器的更復(fù)雜的基于微控制器的架構(gòu)中,在硬件中集成了智能,用來控制各種子系統(tǒng)。 例如,從傳感器到存儲器傳輸數(shù)據(jù)耗時又耗電,這一部分工作其實可以從處理器轉(zhuǎn)移到直接內(nèi)存存取(DMA)單元。電源管理單元(PMU)還可以被編程為對特定事件做出反應(yīng)并關(guān)閉各種子系統(tǒng),例如外設(shè)、傳感器和無線電。
圖1. 基于微控制器的典型架構(gòu)
這種先進架構(gòu)的目的是盡可能減少主MCU活躍的時間。原來需要MCU干預(yù)的任務(wù),現(xiàn)在可以由智能子系統(tǒng)執(zhí)行。然而,還存在一個問題,就是每次有來自傳感器、無線電或各種子系統(tǒng)的事件時,MCU都需要被喚醒,因為它是唯一可以部署邏輯來處理這些事件的元件。
優(yōu)化功率的技術(shù) - 添加傳感器節(jié)點控制器
為了延長具有多個傳感器的系統(tǒng)的續(xù)航時間,已經(jīng)提出了很多種降低功耗的技術(shù)[2],[3]。有些技術(shù)在媒體訪問控制層面進行節(jié)能[4],[5],有些技術(shù)從數(shù)據(jù)聚合或融合著手[6],[7],有的則采用芯片設(shè)計優(yōu)化技術(shù),如片上功率門控[ 8]或動態(tài)電壓調(diào)節(jié)[9]。
本文介紹了一種不同的技術(shù),來優(yōu)化多傳感器系統(tǒng)中的電源使用,同時將主處理器用于數(shù)據(jù)采集的喚醒時間控制到最短。該技術(shù)基于集成復(fù)雜的硬件狀態(tài)機,可以接管主處理器上的重復(fù)性任務(wù),如傳感器輪詢和讀取,從而實現(xiàn)集成的低功耗傳感器中樞概念。專用硬件狀態(tài)機可以更快地喚醒,并使用更少的模塊來將數(shù)據(jù)從傳感器/外設(shè)傳輸?shù)絻?nèi)存,以及反向傳輸,而主處理器保持休眠狀態(tài)。此外,傳感器中樞可以對數(shù)據(jù)執(zhí)行簡單操作,因此主處理器只需要在要求復(fù)雜數(shù)據(jù)操作時喚醒。
這種方法的一個很好的例子,是集成在Dialog半導(dǎo)體公司的DA1469x藍牙低功耗SoC解決方案中的傳感器節(jié)點控制器(SNC)硬件模塊[10]。SNC是一種微型硬件狀態(tài)機,能運行由有限的指令集組成的微碼(μcode),有助于開發(fā)人員操控通信控制器(即SPI、I2C等)、傳感器和外設(shè)。它可以通過使用其最小指令集自動運行,無需喚醒系統(tǒng)的其余部分。這允許它執(zhí)行眾多操作 - 例如:輪詢傳感器狀態(tài)位、比較寄存器與內(nèi)存地址內(nèi)容(值)、將數(shù)據(jù)從通信接口傳輸?shù)较到y(tǒng)RAM以及比較分支 - 同時消耗最低電流。
圖2. 具有傳感器節(jié)點控制器外設(shè)的應(yīng)用處理器架構(gòu)
SNC的主要特性如下(圖3):
傳感器節(jié)點指令集(SeNIS),包含10條微碼生成指令,適用于:
輕松創(chuàng)建指向內(nèi)存緩沖區(qū)的指針
輪詢串行接口狀態(tài)位
比較閾值
系統(tǒng)RAM用于微碼存儲和數(shù)據(jù)
DMA功能,用于將數(shù)據(jù)直接從通信接口傳輸?shù)较到y(tǒng)RAM
直接訪問所有外設(shè)和寄存器
通過PMU在中斷觸發(fā)和域上電(例如定時器、GPIO)后立即執(zhí)行
SNC到主處理器通知,以及反向通知
SNC與所有通信接口(SPI、I2C和UART)位于相同的電源域,SNC還可以控制其他電源域。它執(zhí)行駐留在系統(tǒng)RAM中的微碼,其中SNC具有直接內(nèi)存連接;以系統(tǒng)時鐘速度運行;并且可以生成中斷以通知PMU所有操作都已完成,從而可以關(guān)閉整個系統(tǒng)的電源。
圖3. 傳感器節(jié)點控制器框圖
使用此類專用硬件執(zhí)行傳感器和外設(shè)數(shù)據(jù)操作的架構(gòu)的主要優(yōu)點是:
主CPU睡眠時間更長,從而可以節(jié)省功耗
節(jié)省MIPS,因為CPU不必訪問慢速外設(shè)或執(zhí)行簡單的數(shù)據(jù)操作
不過它有一些缺點。SNC編程模型的非常簡單的指令集僅允許基本操作。另外,編程SNC需要使用匯編語言。最后,由于SNC是一個非常簡單的模塊,調(diào)試會變得復(fù)雜。
節(jié)省功耗和MIPS
我們已經(jīng)進行了一系列測量,證明了使用SNC可以實現(xiàn)的功耗和MIPS節(jié)省。這些測量是在Dialog的基于ARM Cortex-M33的DA1469x SoC上進行的,并比較了只使用主CPU和在SNC支持下執(zhí)行的相同任務(wù)。 第一組測量集中在訪問通常用于傳感器讀數(shù)的慢速外設(shè)(如I2C和SPI)時節(jié)省的功耗/MIPS。第二組測量著眼于使用DA1469x中包含的藍牙低功耗(BLE)通信模塊的實際應(yīng)用案例。
表1描述了傳輸小型SPI或I2C數(shù)據(jù)事務(wù)(如寫/讀16/128字節(jié))時的能耗。
表1:傳輸小型數(shù)據(jù)事務(wù)時的能耗(數(shù)字為1.8 V,8-bit傳輸)
與CPU(CM33)相比,SNC執(zhí)行事務(wù)所需的時間要短很多,如表2所示。由于CPU可能需要執(zhí)行忙等待,因此節(jié)省了時間相當于節(jié)省了MIPS。
表2:SNC寫/讀8 bit數(shù)據(jù)所需的時間以及CPU相應(yīng)所需的時間
對現(xiàn)實生活中的使用案例,我們比較了每隔1500毫秒(表3)和500毫秒(表4)進行廣播時所消耗的功率,同時使用SPI每100毫秒讀取加速計傳感器一次。
表3:每1500毫秒進行廣播時的能耗,使用SPI每100毫秒進行一次傳感器讀取
表4:每500毫秒進行廣播時的能耗,使用SPI每100毫秒進行一次傳感器讀取
在復(fù)雜的應(yīng)用中,如果需要訪問多個傳感器,考慮到緩存未命中和任務(wù)切換等問題,對MCU的占用會更大。