??? 摘 要: 針對(duì)現(xiàn)有傳感器網(wǎng)絡(luò)" title="無線傳感器網(wǎng)絡(luò)">無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)控制器設(shè)計(jì)中存在功耗、芯片面積等方面的問題,自行設(shè)計(jì)了8位哈佛結(jié)構(gòu)低功耗" title="低功耗">低功耗RISC MCU作為節(jié)點(diǎn)控制核心。CPU核采用兩級(jí)流水加速操作,存儲(chǔ)器采用分頁、分塊和映射等方式統(tǒng)一組織,并使用門控時(shí)鐘和休眠喚醒機(jī)制等方式實(shí)現(xiàn)MCU低功耗操作,最后采用0.18μm靜態(tài)CMOS工藝實(shí)現(xiàn)該MCU,其工作功耗低于10mW。以該MCU為核心實(shí)現(xiàn)了節(jié)點(diǎn)硬件平臺(tái)設(shè)計(jì),組建了功能完備的無線傳感器網(wǎng)絡(luò)。
??? 關(guān)鍵詞:? 無線傳感器網(wǎng)絡(luò)? 微控制器? 低功耗
?
??? 無線傳感器網(wǎng)絡(luò)是多學(xué)科交叉結(jié)合的產(chǎn)物。它利用各節(jié)點(diǎn)的監(jiān)測數(shù)據(jù),通過自組織多跳路由網(wǎng)絡(luò)傳送至網(wǎng)關(guān)節(jié)點(diǎn),通過通用通信接口傳送至網(wǎng)關(guān)計(jì)算機(jī)并接入其他通用網(wǎng)絡(luò),遠(yuǎn)程的監(jiān)控終端利用通用網(wǎng)絡(luò)在監(jiān)控范圍內(nèi)實(shí)現(xiàn)對(duì)各類數(shù)據(jù)的監(jiān)測。無線傳感器網(wǎng)絡(luò)體系結(jié)構(gòu)如圖1所示。
?
?
??? 無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)" title="無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)">無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)按操作特性可分為四種類型[1]:專用傳感器平臺(tái)、通用傳感器平臺(tái)、高帶寬傳感器平臺(tái)和網(wǎng)關(guān)平臺(tái)。
??? 專用傳感器平臺(tái)側(cè)重于節(jié)點(diǎn)的超低功耗和體積的微型化設(shè)計(jì),但其處理能力和傳輸能力有限,UC Berkeley公司的Spec和Smart Dust是這類平臺(tái)的典型代表。通用傳感器平臺(tái)對(duì)體積要求有所放寬,側(cè)重于節(jié)點(diǎn)的可擴(kuò)展性和測試需求,但同樣對(duì)節(jié)點(diǎn)功耗有較嚴(yán)格的要求,該類型平臺(tái)中以UC Berkeley公司的Mica系列節(jié)點(diǎn)為主要代表。網(wǎng)關(guān)平臺(tái)是實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)與其他類型網(wǎng)絡(luò)之間或是不同無線傳感器網(wǎng)絡(luò)之間數(shù)據(jù)交換的媒介。
??? 由于無線傳感器網(wǎng)絡(luò)是一種典型的自組織網(wǎng)絡(luò),其拓?fù)浣Y(jié)構(gòu)會(huì)隨著節(jié)點(diǎn)的加入、退出或移動(dòng)而改變,各節(jié)點(diǎn)在網(wǎng)絡(luò)中的功能也隨之動(dòng)態(tài)變化。因此,在監(jiān)測區(qū)域中的節(jié)點(diǎn)都應(yīng)具備充當(dāng)終端節(jié)點(diǎn)或數(shù)據(jù)匯集節(jié)點(diǎn)的能力,在硬件設(shè)計(jì)時(shí)要充分考慮不同情況下的應(yīng)用環(huán)境,以滿足其功能需求。
??? 在現(xiàn)有的各類無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)控制器設(shè)計(jì)中,因?yàn)闆]有針對(duì)無線傳感器網(wǎng)絡(luò)的應(yīng)用開發(fā)專用的控制核心都是采用在嵌入式領(lǐng)域廣泛應(yīng)用的一些通用處理器單元,這使得節(jié)點(diǎn)設(shè)計(jì)中會(huì)受到體積、功耗、資源等各方面的限制。為此,本文自行設(shè)計(jì)并實(shí)現(xiàn)了一種8位哈佛結(jié)構(gòu)低功耗的RISC MCU作為節(jié)點(diǎn)控制核心,對(duì)節(jié)點(diǎn)低功耗、微型化的設(shè)計(jì)具有現(xiàn)實(shí)意義。
1 8位哈佛結(jié)構(gòu)低功耗RISC MCU設(shè)計(jì)
??? 在本設(shè)計(jì)中MCU總體采用了8位哈佛結(jié)構(gòu),MCU硬件結(jié)構(gòu)示意圖如圖2所示。通過不同的總線對(duì)指令和數(shù)據(jù)進(jìn)行操作,這種方式可降低控制電路的復(fù)雜度,也有利于在CPU中進(jìn)行流水設(shè)計(jì)。
?
??? 在設(shè)計(jì)中,CPU采用了兩級(jí)流水,使用兩相時(shí)鐘控制完成預(yù)取指操作,支持24級(jí)獨(dú)立硬堆棧,用于中斷和子程序嵌套;支持八個(gè)外部及五個(gè)內(nèi)部中斷源" title="中斷源">中斷源;可尋址256KB外部程序ROM、4KB內(nèi)部數(shù)據(jù)RAM和128B內(nèi)部寄存器單元;兩個(gè)采用內(nèi)部總線時(shí)鐘的帶預(yù)分頻器的定時(shí)計(jì)數(shù)器;一個(gè)帶預(yù)分頻器的與看門狗WDT共享外部時(shí)鐘源的定時(shí)計(jì)數(shù)單元TCC;56個(gè)雙向三態(tài)I/O" title="I/O">I/O端口,一個(gè)全雙工UART模塊和一個(gè)主模式SPI模塊與部分I/O端口復(fù)用引腳。
1.1 MCU存儲(chǔ)體系設(shè)計(jì)
??? 存儲(chǔ)器體系結(jié)構(gòu)如圖3所示。MCU外部程序存儲(chǔ)器采用256K×8bit結(jié)構(gòu),實(shí)際使用時(shí)由相鄰奇偶地址單元構(gòu)成128K×16bit形式,以滿足13bit寬度指令集的需求。用于取指操作的寄存器R2(PC)為17位寬,其中高7位用作程序存儲(chǔ)器128個(gè)頁面的尋址,低10位用于頁內(nèi)尋址,寄存器R5存儲(chǔ)當(dāng)前工作頁面地址,由指令解碼器判定并操作向R2的傳遞,這種尋址方式有利于物理結(jié)構(gòu)上同樣采用分頁形式的Flash存儲(chǔ)器的操作。
?
?
??? MCU片內(nèi)存儲(chǔ)器包括4KB數(shù)據(jù)RAM、128B通用寄存器RAM和其他特殊寄存器。為減小CPU的直接尋址范圍和滿足固定短字長指令集的使用,各存儲(chǔ)器采用了分頁(Page)、分塊(Bank)和映像的統(tǒng)一組織方式。
??? 特殊寄存器包括MCU各模塊寄存器和I/O寄存器,各模塊寄存器分為4頁,I/O寄存器分為2頁,使用寄存器R3進(jìn)行頁面的切換操作。由于寄存器并不完全占用所有地址空間,暫缺的部分留作以后擴(kuò)展;128B的通用寄存器RAM分為4個(gè)塊,每塊32B。使用寄存器R4進(jìn)行塊切換操作,雖然采用了分塊的結(jié)構(gòu),但仍然設(shè)計(jì)了直接和間接兩種尋址方式,以提高其操作靈活度。該部分空間主要由程序中變量使用,而分塊的結(jié)構(gòu)在節(jié)省地址空間的同時(shí)也增強(qiáng)了各函數(shù)間的變量保護(hù)機(jī)制,有利于嵌入式操作系統(tǒng)的應(yīng)用;4KB數(shù)據(jù)RAM被映像到分頁的數(shù)據(jù)寄存器之中,通過16位寬的地址接口和8位寬的數(shù)據(jù)接口進(jìn)行存取操作,極大地縮小了直接尋址空間。
??? 目前這種存儲(chǔ)器組織方式的缺點(diǎn)是會(huì)增加一些數(shù)據(jù)存取的開銷,但在運(yùn)算負(fù)荷并不重的節(jié)點(diǎn)系統(tǒng)中基本不會(huì)影響其性能,并且可以在編譯器層次針對(duì)這種結(jié)構(gòu)對(duì)代碼進(jìn)行優(yōu)化。而其優(yōu)點(diǎn)是簡化了CPU的硬件結(jié)構(gòu),顯著減小了節(jié)點(diǎn)體積和功耗。從總體上來看對(duì)節(jié)點(diǎn)系統(tǒng)構(gòu)造是有利的。
1.2 MCU中斷系統(tǒng)設(shè)計(jì)
??? MCU中共有八個(gè)外部中斷源和五個(gè)內(nèi)部中斷源。每個(gè)中斷源都設(shè)置有獨(dú)立的中斷標(biāo)志寄存器和中斷屏蔽寄存器,并在CPU核內(nèi)設(shè)置有中斷允許寄存器位I作為總中斷控制開關(guān),所有中斷源都是可關(guān)斷的。
??? 八個(gè)外部中斷源與端口PORT7復(fù)用引腳,其中P7.7可設(shè)定上升沿或下降沿觸發(fā)模式,以滿足不同外設(shè)接口的需要,其余七個(gè)中斷輸入引腳只能由下降沿觸發(fā)。
??? 五個(gè)內(nèi)部中斷源分別來自TCC、COUNTER1、COUNTER2、UART和SPI模塊。TCC模塊利用與看門狗相同的外部獨(dú)立時(shí)鐘源進(jìn)行計(jì)數(shù)/計(jì)時(shí)操作,通過預(yù)分頻器設(shè)置不同的時(shí)鐘分頻比,可靈活地設(shè)置觸發(fā)周期,為操作系統(tǒng)進(jìn)行時(shí)間片的劃分提供基本硬件支持;COUNTER1和COUNTER2采用內(nèi)部總線時(shí)鐘計(jì)數(shù),除基本的計(jì)數(shù)和定時(shí)功能外,還可將其與外部中斷引腳配合實(shí)現(xiàn)輸入捕捉或輸出比較功能;UART和SPI模塊的中斷主要用于通信服務(wù)程序。
2 設(shè)計(jì)中的低功耗考慮
??? 由于無線傳感器網(wǎng)絡(luò)的應(yīng)用特點(diǎn)決定其設(shè)計(jì)必須圍繞低功耗進(jìn)行,作為節(jié)點(diǎn)控制核心的MCU,其低功耗設(shè)計(jì)也相當(dāng)重要[2-4]。
??? 在目前以靜態(tài)CMOS設(shè)計(jì)為主的集成電路中,其功耗的主要部分是電路的開關(guān)功耗,或者叫動(dòng)態(tài)功耗,它來源于對(duì)負(fù)載電容的充放電電流。其他的功耗來源包括短路功耗、靜態(tài)功耗和漏電流功耗,它們只占系統(tǒng)功耗的小部分,且主要由芯片制造工藝決定,在此不作討論。
??? 系統(tǒng)動(dòng)態(tài)功耗可由下式[5]決定:
???
式中,α為反映電路開關(guān)活動(dòng)幾率的因子,f為系統(tǒng)工作頻率,CL為輸出節(jié)點(diǎn)的集總負(fù)載電容,VDD為系統(tǒng)工作電壓。從式(1)可以看出,系統(tǒng)動(dòng)態(tài)功耗與電路開關(guān)活動(dòng)幾率、系統(tǒng)工作頻率和總負(fù)載電容以及系統(tǒng)工作電壓的平方成正比。因此,在設(shè)計(jì)中主要從系統(tǒng)層次和邏輯層次的幾個(gè)方面進(jìn)行低功耗考慮。
2.1 工作電壓和頻率
??? 在工作電壓方面主要考慮了無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的供電特點(diǎn)和外圍接口電源特性,選用3.3V作為工作電壓。在工作頻率方面既考慮了系統(tǒng)事務(wù)的處理速度又考慮了與外圍設(shè)備的接口速度,故選取4MHz作為系統(tǒng)總線時(shí)鐘頻率。
2.2 電路規(guī)模
??? 在電路規(guī)模方面主要考慮減小邏輯門數(shù)量以降低系統(tǒng)總負(fù)載電容,因此設(shè)計(jì)中采用了哈佛結(jié)構(gòu)的精簡指令集CPU。該CPU共支持58條精簡指令,每條指令固定長度為13bit,有效減小了CPU核的規(guī)模和存儲(chǔ)體系規(guī)模。位于MCU中的其他接口功能模塊,如UART、SPI、通用I/O接口等,都采用了獨(dú)立IP的組成形式,可以根據(jù)需求很方便地進(jìn)行功能裁減,以達(dá)到對(duì)嵌入式環(huán)境的最佳適應(yīng)。在CPU核的設(shè)計(jì)中還采用了兩相時(shí)鐘流水,主要用于提高CPU的順序取指執(zhí)行速度。采用這種方式可以在同等總線時(shí)鐘頻率和同樣的工作負(fù)荷情況下減少CPU的工作時(shí)間,從系統(tǒng)層次上即減小了CPU的工作占空比,降低了電路開關(guān)活動(dòng)幾率因子,因此可以達(dá)到降低功耗的目的。
2.3 時(shí)鐘控制
??? 在時(shí)鐘控制方面主要采用了門控時(shí)鐘和休眠喚醒機(jī)制。
??? 門控時(shí)鐘主要采用使能信號(hào)控制各獨(dú)立模塊和電路的時(shí)鐘信號(hào)來源,可靈活地開啟和關(guān)閉各觸發(fā)器的翻轉(zhuǎn)以達(dá)到降低功耗的目的。該功能主要為軟件提供寄存器級(jí)接口,由操作系統(tǒng)根據(jù)其環(huán)境控制各硬件模塊的工作狀況。例如,UART模塊主要用于網(wǎng)關(guān)節(jié)點(diǎn)與外部網(wǎng)絡(luò)的溝通,終端節(jié)點(diǎn)并不需要用到它,因此在終端節(jié)點(diǎn)軟件設(shè)計(jì)中可以將其完全關(guān)閉,使該部分達(dá)到零動(dòng)態(tài)功耗,從而降低系統(tǒng)總耗能。這種方式也可以看作是系統(tǒng)的部分休眠。
??? 休眠喚醒機(jī)制的基本原理是關(guān)閉系統(tǒng)中暫時(shí)不使用的部分,甚至包括CPU的核心模塊,以降低系統(tǒng)總體的能源消耗。在該MCU中設(shè)計(jì)了全速工作模式working和兩種低功耗休眠模式sleep1、sleep2,在這兩種休眠模式下都會(huì)關(guān)閉系統(tǒng)主時(shí)鐘,但其喚醒方式和程序運(yùn)行模式有所不同。
??? 通過執(zhí)行SLEP指令即可將MCU切換至sleep1模式,該模式可以使用看門狗復(fù)位或外部復(fù)位信號(hào)來恢復(fù)工作狀態(tài)?;謴?fù)working模式后系統(tǒng)會(huì)重啟并重新開始執(zhí)行程序,以前的信息將會(huì)丟失,其效果與系統(tǒng)上電復(fù)位相同。因此,這種方式僅適合于系統(tǒng)長時(shí)間休眠且喚醒后系統(tǒng)重新工作的情況;要進(jìn)入sleep2模式只需要將寄存器RA中的SLPC位置位即可。該模式與sleep1的主要區(qū)別是可以使用中斷信號(hào)喚醒CPU并且繼續(xù)執(zhí)行休眠前的程序,不會(huì)丟失任何信息。這種方式在無線傳感器網(wǎng)絡(luò)中大量使用,因?yàn)镸CU的工作時(shí)間遠(yuǎn)遠(yuǎn)小于節(jié)點(diǎn)信息采集和系統(tǒng)組網(wǎng)等操作的時(shí)間間隔,所以在操作系統(tǒng)中即可充分利用這種模式以降低MCU的工作占空比。
??? 系統(tǒng)工作狀態(tài)轉(zhuǎn)換圖如圖4所示。
?
?
3 MCU的驗(yàn)證和實(shí)現(xiàn)
????在該MCU的設(shè)計(jì)中主要使用了ModelSim、DC、Astro等工具,進(jìn)行了多層次的仿真和驗(yàn)證。對(duì)于中斷事件的響應(yīng)、處理和返回也進(jìn)行了詳細(xì)驗(yàn)證,在中斷服務(wù)程序的調(diào)用及返回過程中,各級(jí)堆棧和系統(tǒng)狀態(tài)的處理都符合設(shè)計(jì)要求;在對(duì)系統(tǒng)休眠喚醒的設(shè)計(jì)中,對(duì)兩種休眠狀態(tài)與正常工作狀態(tài)之間的轉(zhuǎn)換和多種條件的系統(tǒng)喚醒均作了詳細(xì)驗(yàn)證,均達(dá)到設(shè)計(jì)要求。
??? 除進(jìn)行軟硬件協(xié)同仿真以外,還使用FPGA平臺(tái)對(duì)MCU及節(jié)點(diǎn)系統(tǒng)的功能進(jìn)行了實(shí)際驗(yàn)證。本設(shè)計(jì)采用ALTERA公司的CYCLONE系列EP1C12Q240芯片作為驗(yàn)證核心,外接Chipcon公司的CC2420芯片作為射頻接口,利用MAXIM公司的MAX152模數(shù)轉(zhuǎn)換芯片連接定制的溫度傳感器,構(gòu)造了無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件平臺(tái),在該平臺(tái)上成功移植了TinyOS嵌入式操作系統(tǒng),實(shí)現(xiàn)了對(duì)環(huán)境溫度的采集處理、射頻模塊的操作以及多跳自組織網(wǎng)絡(luò)的構(gòu)造,并通過網(wǎng)關(guān)節(jié)點(diǎn)匯集監(jiān)測區(qū)域信息數(shù)據(jù)利用IPv6網(wǎng)絡(luò)傳遞至監(jiān)控終端,實(shí)現(xiàn)無線傳感器網(wǎng)絡(luò)的典型功能應(yīng)用。
??? 在對(duì)MCU進(jìn)行充分驗(yàn)證后,使用Astro等工具以0.18um靜態(tài)CMOS工藝進(jìn)行了后端設(shè)計(jì)、仿真并投片生產(chǎn)。經(jīng)后端仿真及驗(yàn)證,MCU在工作模式下峰值功耗低于10mW,滿足設(shè)計(jì)要求。目前的設(shè)計(jì)中MCU共占用3mm×3mm的硅片面積,但實(shí)際的邏輯及存儲(chǔ)部分僅占1/3左右,主要原因是保留了較多暫時(shí)未用的引腳及測試引腳,增加了設(shè)計(jì)周長。基于FPGA平臺(tái)的節(jié)點(diǎn)控制器如圖5所示。
?
??? 本設(shè)計(jì)采用典型的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)架構(gòu),利用自行設(shè)計(jì)的8位哈佛結(jié)構(gòu)低功耗RISC MCU作為節(jié)點(diǎn)控制核心,開發(fā)出屬于通用傳感器平臺(tái)類型的原型版本節(jié)點(diǎn)。由于使用了流水機(jī)制,加快了CPU的操作速度,并且在電路設(shè)計(jì)使用了門控時(shí)鐘和休眠喚醒機(jī)制,使節(jié)點(diǎn)工作功耗得到了有效控制。最后利用移植的TinyOS操作系統(tǒng)和多跳自組織路由協(xié)議成功實(shí)現(xiàn)了無線傳感器網(wǎng)絡(luò)功能,達(dá)到了設(shè)計(jì)要求。
參考文獻(xiàn)
[1] JASON H, MIKE H, RALPH K, et al. The platforms enabling wireless sensor networks[J]. Communication of the ?ACM, 2004,47(6):41-46.
[2] ?張大蹤,楊濤,巍東海. 無線傳感器網(wǎng)絡(luò)低功耗設(shè)計(jì)綜述[J]. 傳感器與微系統(tǒng),2006,25(5):10-14.
[3] ?楊喜敏. 傳感器網(wǎng)絡(luò)中的能量消耗問題研究[J]. 微控制器與嵌入式系統(tǒng),2006,(1):27-29.
[4] ?JASON H, ROBERT S, ALEC W, et al. System architecture directions for networked sensors[C]. In: ACM Press,?ACM AIGARCH Computer Architecture News. 1515 Broadway, 17th Floor New York, NY USA, 2000,28(5): 93-104.
[5] ?甘學(xué)溫,莫邦燹.低功耗CMOS邏輯電路設(shè)計(jì)綜述[J].微電子學(xué), 2000,30(4):263-267.