摘 要: 针对现有传感器网络" title="无线传感器网络">无线传感器网络节点控制器设计中存在功耗、芯片面积等方面的问题,自行设计了8位哈佛结构低功耗" title="低功耗">低功耗RISC MCU作为节点控制核心。CPU核采用两级流水加速操作,存储器采用分页、分块和映射等方式统一组织,并使用门控时钟和休眠唤醒机制等方式实现MCU低功耗操作,最后采用0.18μm静态CMOS工艺实现该MCU,其工作功耗低于10mW。以该MCU为核心实现了节点硬件平台设计,组建了功能完备的无线传感器网络。
关键词: 无线传感器网络 微控制器 低功耗
无线传感器网络是多学科交叉结合的产物。它利用各节点的监测数据,通过自组织多跳路由网络传送至网关节点,通过通用通信接口传送至网关计算机并接入其他通用网络,远程的监控终端利用通用网络在监控范围内实现对各类数据的监测。无线传感器网络体系结构如图1所示。
无线传感器网络节点" title="无线传感器网络节点">无线传感器网络节点按操作特性可分为四种类型[1]:专用传感器平台、通用传感器平台、高带宽传感器平台和网关平台。
专用传感器平台侧重于节点的超低功耗和体积的微型化设计,但其处理能力和传输能力有限,UC Berkeley公司的Spec和Smart Dust是这类平台的典型代表。通用传感器平台对体积要求有所放宽,侧重于节点的可扩展性和测试需求,但同样对节点功耗有较严格的要求,该类型平台中以UC Berkeley公司的Mica系列节点为主要代表。网关平台是实现无线传感器网络与其他类型网络之间或是不同无线传感器网络之间数据交换的媒介。
由于无线传感器网络是一种典型的自组织网络,其拓扑结构会随着节点的加入、退出或移动而改变,各节点在网络中的功能也随之动态变化。因此,在监测区域中的节点都应具备充当终端节点或数据汇集节点的能力,在硬件设计时要充分考虑不同情况下的应用环境,以满足其功能需求。
在现有的各类无线传感器网络节点控制器设计中,因为没有针对无线传感器网络的应用开发专用的控制核心都是采用在嵌入式领域广泛应用的一些通用处理器单元,这使得节点设计中会受到体积、功耗、资源等各方面的限制。为此,本文自行设计并实现了一种8位哈佛结构低功耗的RISC MCU作为节点控制核心,对节点低功耗、微型化的设计具有现实意义。
1 8位哈佛结构低功耗RISC MCU设计
在本设计中MCU总体采用了8位哈佛结构,MCU硬件结构示意图如图2所示。通过不同的总线对指令和数据进行操作,这种方式可降低控制电路的复杂度,也有利于在CPU中进行流水设计。
在设计中,CPU采用了两级流水,使用两相时钟控制完成预取指操作,支持24级独立硬堆栈,用于中断和子程序嵌套;支持八个外部及五个内部中断源" title="中断源">中断源;可寻址256KB外部程序ROM、4KB内部数据RAM和128B内部寄存器单元;两个采用内部总线时钟的带预分频器的定时计数器;一个带预分频器的与看门狗WDT共享外部时钟源的定时计数单元TCC;56个双向三态I/O" title="I/O">I/O端口,一个全双工UART模块和一个主模式SPI模块与部分I/O端口复用引脚。
1.1 MCU存储体系设计
存储器体系结构如图3所示。MCU外部程序存储器采用256K×8bit结构,实际使用时由相邻奇偶地址单元构成128K×16bit形式,以满足13bit宽度指令集的需求。用于取指操作的寄存器R2(PC)为17位宽,其中高7位用作程序存储器128个页面的寻址,低10位用于页内寻址,寄存器R5存储当前工作页面地址,由指令解码器判定并操作向R2的传递,这种寻址方式有利于物理结构上同样采用分页形式的Flash存储器的操作。
MCU片内存储器包括4KB数据RAM、128B通用寄存器RAM和其他特殊寄存器。为减小CPU的直接寻址范围和满足固定短字长指令集的使用,各存储器采用了分页(Page)、分块(Bank)和映像的统一组织方式。
特殊寄存器包括MCU各模块寄存器和I/O寄存器,各模块寄存器分为4页,I/O寄存器分为2页,使用寄存器R3进行页面的切换操作。由于寄存器并不完全占用所有地址空间,暂缺的部分留作以后扩展;128B的通用寄存器RAM分为4个块,每块32B。使用寄存器R4进行块切换操作,虽然采用了分块的结构,但仍然设计了直接和间接两种寻址方式,以提高其操作灵活度。该部分空间主要由程序中变量使用,而分块的结构在节省地址空间的同时也增强了各函数间的变量保护机制,有利于嵌入式操作系统的应用;4KB数据RAM被映像到分页的数据寄存器之中,通过16位宽的地址接口和8位宽的数据接口进行存取操作,极大地缩小了直接寻址空间。
目前这种存储器组织方式的缺点是会增加一些数据存取的开销,但在运算负荷并不重的节点系统中基本不会影响其性能,并且可以在编译器层次针对这种结构对代码进行优化。而其优点是简化了CPU的硬件结构,显著减小了节点体积和功耗。从总体上来看对节点系统构造是有利的。
1.2 MCU中断系统设计
MCU中共有八个外部中断源和五个内部中断源。每个中断源都设置有独立的中断标志寄存器和中断屏蔽寄存器,并在CPU核内设置有中断允许寄存器位I作为总中断控制开关,所有中断源都是可关断的。
八个外部中断源与端口PORT7复用引脚,其中P7.7可设定上升沿或下降沿触发模式,以满足不同外设接口的需要,其余七个中断输入引脚只能由下降沿触发。
五个内部中断源分别来自TCC、COUNTER1、COUNTER2、UART和SPI模块。TCC模块利用与看门狗相同的外部独立时钟源进行计数/计时操作,通过预分频器设置不同的时钟分频比,可灵活地设置触发周期,为操作系统进行时间片的划分提供基本硬件支持;COUNTER1和COUNTER2采用内部总线时钟计数,除基本的计数和定时功能外,还可将其与外部中断引脚配合实现输入捕捉或输出比较功能;UART和SPI模块的中断主要用于通信服务程序。
2 设计中的低功耗考虑
由于无线传感器网络的应用特点决定其设计必须围绕低功耗进行,作为节点控制核心的MCU,其低功耗设计也相当重要[2-4]。
在目前以静态CMOS设计为主的集成电路中,其功耗的主要部分是电路的开关功耗,或者叫动态功耗,它来源于对负载电容的充放电电流。其他的功耗来源包括短路功耗、静态功耗和漏电流功耗,它们只占系统功耗的小部分,且主要由芯片制造工艺决定,在此不作讨论。
系统动态功耗可由下式[5]决定:
式中,α为反映电路开关活动几率的因子,f为系统工作频率,CL为输出节点的集总负载电容,VDD为系统工作电压。从式(1)可以看出,系统动态功耗与电路开关活动几率、系统工作频率和总负载电容以及系统工作电压的平方成正比。因此,在设计中主要从系统层次和逻辑层次的几个方面进行低功耗考虑。
2.1 工作电压和频率
在工作电压方面主要考虑了无线传感器网络节点的供电特点和外围接口电源特性,选用3.3V作为工作电压。在工作频率方面既考虑了系统事务的处理速度又考虑了与外围设备的接口速度,故选取4MHz作为系统总线时钟频率。
2.2 电路规模
在电路规模方面主要考虑减小逻辑门数量以降低系统总负载电容,因此设计中采用了哈佛结构的精简指令集CPU。该CPU共支持58条精简指令,每条指令固定长度为13bit,有效减小了CPU核的规模和存储体系规模。位于MCU中的其他接口功能模块,如UART、SPI、通用I/O接口等,都采用了独立IP的组成形式,可以根据需求很方便地进行功能裁减,以达到对嵌入式环境的最佳适应。在CPU核的设计中还采用了两相时钟流水,主要用于提高CPU的顺序取指执行速度。采用这种方式可以在同等总线时钟频率和同样的工作负荷情况下减少CPU的工作时间,从系统层次上即减小了CPU的工作占空比,降低了电路开关活动几率因子,因此可以达到降低功耗的目的。
2.3 时钟控制
在时钟控制方面主要采用了门控时钟和休眠唤醒机制。
门控时钟主要采用使能信号控制各独立模块和电路的时钟信号来源,可灵活地开启和关闭各触发器的翻转以达到降低功耗的目的。该功能主要为软件提供寄存器级接口,由操作系统根据其环境控制各硬件模块的工作状况。例如,UART模块主要用于网关节点与外部网络的沟通,终端节点并不需要用到它,因此在终端节点软件设计中可以将其完全关闭,使该部分达到零动态功耗,从而降低系统总耗能。这种方式也可以看作是系统的部分休眠。
休眠唤醒机制的基本原理是关闭系统中暂时不使用的部分,甚至包括CPU的核心模块,以降低系统总体的能源消耗。在该MCU中设计了全速工作模式working和两种低功耗休眠模式sleep1、sleep2,在这两种休眠模式下都会关闭系统主时钟,但其唤醒方式和程序运行模式有所不同。
通过执行SLEP指令即可将MCU切换至sleep1模式,该模式可以使用看门狗复位或外部复位信号来恢复工作状态。恢复working模式后系统会重启并重新开始执行程序,以前的信息将会丢失,其效果与系统上电复位相同。因此,这种方式仅适合于系统长时间休眠且唤醒后系统重新工作的情况;要进入sleep2模式只需要将寄存器RA中的SLPC位置位即可。该模式与sleep1的主要区别是可以使用中断信号唤醒CPU并且继续执行休眠前的程序,不会丢失任何信息。这种方式在无线传感器网络中大量使用,因为MCU的工作时间远远小于节点信息采集和系统组网等操作的时间间隔,所以在操作系统中即可充分利用这种模式以降低MCU的工作占空比。
系统工作状态转换图如图4所示。
3 MCU的验证和实现
在该MCU的设计中主要使用了ModelSim、DC、Astro等工具,进行了多层次的仿真和验证。对于中断事件的响应、处理和返回也进行了详细验证,在中断服务程序的调用及返回过程中,各级堆栈和系统状态的处理都符合设计要求;在对系统休眠唤醒的设计中,对两种休眠状态与正常工作状态之间的转换和多种条件的系统唤醒均作了详细验证,均达到设计要求。
除进行软硬件协同仿真以外,还使用FPGA平台对MCU及节点系统的功能进行了实际验证。本设计采用ALTERA公司的CYCLONE系列EP1C12Q240芯片作为验证核心,外接Chipcon公司的CC2420芯片作为射频接口,利用MAXIM公司的MAX152模数转换芯片连接定制的温度传感器,构造了无线传感器网络节点硬件平台,在该平台上成功移植了TinyOS嵌入式操作系统,实现了对环境温度的采集处理、射频模块的操作以及多跳自组织网络的构造,并通过网关节点汇集监测区域信息数据利用IPv6网络传递至监控终端,实现无线传感器网络的典型功能应用。
在对MCU进行充分验证后,使用Astro等工具以0.18um静态CMOS工艺进行了后端设计、仿真并投片生产。经后端仿真及验证,MCU在工作模式下峰值功耗低于10mW,满足设计要求。目前的设计中MCU共占用3mm×3mm的硅片面积,但实际的逻辑及存储部分仅占1/3左右,主要原因是保留了较多暂时未用的引脚及测试引脚,增加了设计周长。基于FPGA平台的节点控制器如图5所示。
本设计采用典型的无线传感器网络节点架构,利用自行设计的8位哈佛结构低功耗RISC MCU作为节点控制核心,开发出属于通用传感器平台类型的原型版本节点。由于使用了流水机制,加快了CPU的操作速度,并且在电路设计使用了门控时钟和休眠唤醒机制,使节点工作功耗得到了有效控制。最后利用移植的TinyOS操作系统和多跳自组织路由协议成功实现了无线传感器网络功能,达到了设计要求。
参考文献
[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] 张大踪,杨涛,巍东海. 无线传感器网络低功耗设计综述[J]. 传感器与微系统,2006,25(5):10-14.
[3] 杨喜敏. 传感器网络中的能量消耗问题研究[J]. 微控制器与嵌入式系统,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] 甘学温,莫邦燹.低功耗CMOS逻辑电路设计综述[J].微电子学, 2000,30(4):263-267.