典型的传感器节点体系结构
在前面内容中已经分别对节点各组件进行了详细介绍,现将它们综合起来。总的来说,一个节点主要实现本地传感器数据的计算以及同相邻节点的无线通信。
这一节不会重点介绍某种专门的通信或处理技术,而是介绍能够满足计算和通信需求的节点的体系结构以及设计原则,特别着重介绍能够实现低功耗的硬件设计方法。
1?无线通信需求
任何一个节点都需要同其他节点进行无线通信。无线信号实际上是原始的电磁信号,无线发射器要用数字调制方法把数据调制到载波上,无线接收器对收到的信号进行解调和数据的解析。
在无线传感器网络中,节点主要发送两种数据:1)从环境中采集的传感器数据(sensor data);2)控制数据,如无线网络协议。从网络协议的角度看来,这些数据都会压缩成数据包。图2?2描述了包交换(packet?based)无线网络通信协议的关键步骤。应当注意,许多操作必须同其他操作并行执行,就像汽车生产厂商并行地装配零件那样。在图2?2中,可以从时间上明显重叠着的层看出“平行”的性质。
如图2?2所示,编码是通信过程中的第一步。将模拟传感器的数据编码成为数字信号(即,位)以便传输。值得注意的是,编码中还应该包含错误检测/纠正码,当受到无线干扰导致一些位出错时,就可以用错误检测码发现这些错误。
为了缩短发送延迟,编码与实际的发送过程是“流水”进行的,也就是当第一个字节编码完成后,立即启动无线发送,然后就可以在发送前面的字节的同时对新的字节进行编码。
目前,有多种编码方式可供选择。比较简单的是直流平衡(DC?balance)方式,比如曼彻斯特(Manchester)编码。更先进也更复杂的方式是CDMA(已在本章介绍)。无论采用哪种编码方式,数据位(位,0或1)将被分组成不同的单元,称为符号(symbol)。然后将每个符号编码成一组无线传输位,称为码片(chip)。在曼彻斯特编码中,对于1位数据,每个符号用2个码片。CDMA中通常每个符号有15~50个码片,每个符号包含1~4个数据位。
当数据传递到无线通信协议然后准备发送到其他节点时,44首先需要执行MAC协议,其主要任务是确保相邻节点在发送数据时不发生冲突。CSMA(载波侦听多路访问)就是一个简单的例子。节点在发送数据前对信道进行侦听,如果信道正忙,那么就随机地等待很短的时间再重新开始以上的传输过程。
在MAC协议成功地将数据发送出去之后,路由协议负责数据在节点之间的传输,它找出一条最佳的(从节省能量的角度考虑)路径把数据传输到目的地(例如基站)。
当数据在发送者和接收者之间连续传输时,依靠一个精确的时间同步机制,发送者可以精确地控制每位的传输时间,这样接收者可以同发送者保持同步。
当接收者接收到数据后,对其进行解码和解调,将其还原成原始数据,再通过一些噪声清除算法将噪声清除。
2?关键问题
Lester[Jason03]指出在节点设计时应当考虑一些关键问题:
(1)并发性
为了提高数据处理速度,设计一个提供细粒度并发性的体系结构是很重要的。无论是发送方还是接收方,无线通信的处理应该同应用层的数据处理甚至网络协议处理并行进行。当进行无线通信时,不应停止必要的操作,如传感器事件检测和计算等。
(2)灵活性
值得注意的是,无线传感器网络在不同的实际应用中有着不同的服务质量(Quality of Service, QoS)需求。有些应用要求实时数据传输,而其他应用则允许有一定延迟;有些应用要求局部数据的压缩,而其他应用仅需将数据发送到汇聚节点;有些应用要求具备安全措施,而其他应用不需要考虑网络攻击。
因此,有必要把节点的体系结构设计为能够支持各种不同的应用环境。传统的嵌入式系统(如手机或蓝牙设备)必须遵循一套固定的通信协议,而无线传感器网络应当允许灵活设计通信协议,以便使带宽、延迟和网内处理达到平衡。
灵活的协议设计是需要灵活的硬件体系结构的,不同的硬件体系结构对于不同的应用产生的效果是不同的。比如,一个图像传感器网络需要大容量存储空间和高性能CPU,而一个水下网络则需要声波(而非射频)45通信系统。
(3)无线通信与处理速度解耦
设计节点时不能把无线通信的传输速率和CPU处理速率这两项指标耦合在一起。这是因为节点对CPU和无线收发器的最优化需求不同:1)无线通信倾向于用最大的传输速率将数据发送出去,因为传输时间越短能耗越少;2)针对低功耗CPU设计和动态电压调节的研究已经表明——通过将计算分散使得CPU持续在低负荷状态下工作,可以实现在低电压下运行。
因此,从节能观点出发,最优方案是使CPU尽可能慢地进行计算,然后当计算完成时,无线通信能够尽快地将数据发送出去。
CPU和无线通信的解耦是很重要的。如果CPU的速度和数据传输的速率是耦合的,那么该系统的两个组成部分只能在非最优化的方式下工作。
3?传统的无线设计
如今,很多嵌入式系统(如手机、802?11无线网卡和蓝牙设备)选择使用专用的CPU来执行通信协议,以解决并发性和解耦的问题。这种专用CPU应在进行如下操作时能实时地执行通信协议:无线调制与解调、编码与解码以及其他操作。
以蓝牙设备为例,主机信道接口(HCI)在UART(通用异步收发器)上实现一个高层分组的传输接口,这个接口隐藏了通信同步、信号编码和MAC协议等。应设置专用CPU的速度满足无线通信协议的需求。
但是,上述的CPU运行模式不适用于无线传感器网络,因为它将无线通信和数据计算的资源分割。这会导致资源利用不能达到最优化,芯片芯片的通信机制是低效率的。
用文献[Jason03]中的节点设计思想可以替换以上方案。不使用专用的CPU,而是用一个单线程的引擎供应用层和协议层使用。这样通过TinyOS中细粒度交错事件处理可以虚拟(非实际)地满足系统的并发需求。
在接下来的部分中将主要介绍文献[Jason03]中涉及的部分节点(如Reno、Mica和Spec)的设计思想。这些节点代表了近20年出现的较为先进的无线传感器节点,可以从中学习到在实际应用中表现出色的硬件设计原则。
4?节点设计示例:Reno
Reno是文献[Jason03]中重点介绍的节点。它带有特殊的硬件——加速引擎,能够满足无线通信实时和高速的需求。
图2?3大致描述了Reno的体系结构。其CPU需要控制多并发操作(类似于Windows系统中的“多线程”),并且能够有效支持上下文切换(context switching),可以使用寄存器窗口降低上下文切换时的开销。Reno的CPU包含多个寄存器单元,从而避免了将数据从寄存器放入存储器的操作,而是将OS简单地切换到空闲的寄存器单元。
如图2-3所示,通过一个共享总线将存储器、I/O端口、ADC、系统时钟和硬件加速引擎等相互连接。正是由于其高速和低延迟的互联,数据可以轻松地在处理器、存储器和外设之间传递。该总线不仅支持直接的CPU外设交互,还支持外设直接与外设交互。应该注意的是,外设可以通过共享总线直接从存储器中取出数据,还能轻松地把数据发送到其他UART的外设中。
所以,Reno能通过共享总线对无线通信进行以下改进:共享总线支持进行数据编码的外设直接从存储器中取出数据,再将数据放入数据传输加速引擎中,比如无线通信的调制电路。这与许多计算机运行模式是不同的。在通常的模式下,存储器读/写时需要CPU的参与。而在Reno中,CPU不参与通信,CPU仅需控制数据的传输,这样就将CPU从繁重的负载中释放出来。
如果读者已学习过“计算机组成原理”或者“汇编语言”这两门课程,那么就应该知道可以用相同的编址方式对每一个存储器单元和其他设备进行编址,即一个存储器地址可以是实际的存储器的位置,也可以是一个虚拟的设备数据缓冲区的位置,系统使用线缆把设备的数据缓冲区与物理存储器的位置相连。Reno就使用这样的编址方式,使得原本不能共同工作的部件以一种新的方式联合在一起。假设数据编码器希望从无线收发器的缓冲区中取出数据,由于这个缓冲区已经映射到一个存储地址,因此编码器只需要从“存储器”中取出数据,然后转换数据,最后再写到存储器中即可。
最后,需要牢记的是,Reno节点最主要的特点是它包含了有特殊用途的硬件——加速引擎,这样能够以快速和高能效的方式实现底层的操作。通过提高这些操作的效率,系统整体的能耗将大大降低。