引言
AdHoc网络是一种对等网络,它是由一组带有无线收发装置,兼有主机和路由功能的移动节点组成的临时性多跳自治网络。由于其具有自组织性、无基础设施要求以及容易搭建等优点,这种网络在抢险救灾、野外施工、战时通信等方面有着广阔的应用前景。但正是因为它没有中心节点,节点具有移动性这些特征,使得它的介质访问控制(MAC)协议成为无线AdHoc网络研究的热点和重点之一。
目前MAC协议主要分为两类: 第一类主要是基于随机竞争机制的,如CSMA、IEEE 802.11、MACA等(IEEE 802.11是这一类型协议的典型代表);第二类主要是时分多址接入(TDMA),在时分多址接入中,每个节点分配一个固定时隙,从而保证无冲突传输。经典的TDMA接入方式是固定TDMA,改进的TDMA接入方式包括动态时隙分配DTDMA,分组预约PRAMA等。相对于随机接入,TDMA减少了分组碰撞,提高了信道利用率。随着多媒体业务和有QoS要求业务的增长,TDMA逐渐成为一个研究热点。为了满足对TDMA接入方式的研究需要,设计并实现了一种基于TDMA固定接入方式和多种改进接入方式的AdHoc网络无线网卡。
1 AdHoc网络中无线网卡实现的功能介绍
1.1 AdHoc网络的通用协议栈
根据AdHoc网络的特征,仿照OSI的经典7层协议栈模型和TCP/IP的体系结构,将AdHoc网络的协议划分为5层,如图1所示[1],其中虚线方框表示可选的功能部分。在通用协议栈结构中,物理层完成无线信号的调制解调、加密、发送和接收等任务。数据链路层中的MAC子层控制移动节点对共享无线信道的访问;逻辑链路控制子层负责数据流的复用、数据帧的检测、分组的转发/确认、优先级排队、差错控制和流量控制等。网络层需要实现邻居发现、分组路由、拥塞控制和网络互联功能。传输层负责排序接收的数据并将其送交相应的应用程序,检测分组的错误和重传分组。应用层协议用于提供面向用户的各种应用服务。需要注意的是,该协议栈是一个通用AdHoc网络协议栈,对于具体的应用场合,可以对该协议栈进行简化,以满足系统和应用要求。
图1 AdHoc网络的通用协议栈结构
1.2 无线网卡实现的功能
AdHoc网络终端设备由无线网卡和移动主机(笔记本电脑、PDA等)构成。根据AdHoc网络的通用协议栈模型,就可以清晰地区分无线网卡和移动主机实现的功能,如图2所示。
图2 终端设备功能模块
无线网卡主要实现物理层和MAC层功能,其中物理层实现频率选择、载波产生和监听、信号监测、调制解调、数据的发送接收等功能。目前一般采用基于2.4 GHz免费的ISM频带。MAC层实现TDMA固定接入控制和多种改进接入控制,具体包括时间同步、时隙化分、时隙分配、时隙预约等。网络层、传输层和应用层功能由移动主机来实现,这样就构成了一个完整的TDMA接入方式AdHoc网络终端设备。
2 无线网卡硬件设计
2.1 硬件系统的设计方案
根据无线网卡的功能要求,选用无线收发芯片和微控制器作为核心器件来构建无线网卡的硬件平台。无线收发芯片主要实现无线信号的调制解调、发送和接收等功能;微控制器主要实现对无线收发芯片的设置、控制、数据交换功能,接入功能以及与移动主机进行数据通信的功能。硬件系统结构框图如图3所示。
图3 硬件系统结构框图
2.2 硬件系统的电路设计
无线收发芯片采用Chipcon公司的CC2400、它是一款能够进行基带调制解调,工作在2.4 GHz频段上的RF半双工收发芯片。该芯片的传输速率最高可达1 Mbps,具有低功耗,低电压等特性;有通用的数字接口,可以方便地和各种微控制器实现数据交换。微控制器使用Atmel公司的AT91SAM7S256,它是一款基于ARM7内核的32位高性能微控制器,工作主频最高可达60 MHz。该芯片内部集成了SPI、SSC、USART、USB等多种接口,为设计提供了多种选择。无线网卡硬件电路设计如图4(a)和(b)所示。
图4 无线网卡硬件电路
2.3 硬件系统的接口设计
根据CC2400芯片的数据手册可知,AT91SAM7S256通过SI、SO、SCLK和CSn接口,完成对CC2400的设置和控制。当CC2400采用非缓冲区模式时,AT91SAM7S256通过DIO和DCLK接口,完成与CC2400之间的数据交换。此外,AT91SAM7S256通过GPIO口,监视CC2400的频率锁定状态、载波检测状态等。
AT91SAM7S256的SPI接口(由NPCS0、MOSI、MISO和SPCK组成)负责对CC2400的寄存器进行初始化,并对CC2400完成打开主晶体振荡器、打开频率合成器、置发、置收、关掉收发等各种命令操作;SSC接口(由TD、RD、TK和RK组成)负责与CC2400进行数据交换;IRQ1中断输入口(与通用I/O口复用)负责对CC2400的载波检测状态进行实时监视。AT91SAM7S256可以选择使用USART同步异步串口或USB接口,实现无线网卡与移动主机之间的数据通信。
为了实现AT91SAM7S256的SPI接口对CC2400的各个寄存器进行正确的读写操作,AT91SAM7S256的SPI接口设置要注意以下几点:
① AT91SAM7S256的SPI接口能够传输的数据长度为8~16位,而配置一个CC2400的寄存器需要传输24位的数据(7位地址信息,1位读写操作标志和16位数据信息)。因此SPI接口采用8位长度进行数据传输,传输3次就能满足传输24位长度数据要求。
② 24位数据传输的格式是先传读写标志位和7位的寄存器地址(地址的高位先传),再传数据的高8位,最后传数据的低8位。在数据传输过程中,NPCS0片选信号必须保持低电平。
③ 对于CC2400的命令选通寄存器的操作,只需完成一个写操作,在写操作中不需要传输任何数据,即只需传输写操作标志和寄存器地址就行了。
AT91SAM7S256的SSC接口具有连续数据传输的能力,能够与CC2400进行连续的数据交换。由于AT91SAM7S256与CC2400之间的基带数据交换量比较大,因此数据传输时AT91SAM7S256采用PDC中断方式,完成数据的连续传输,这样可以节降低CPU的使用率。为了方便地进行数据存取,需要将SSC接口设置为8位的数据传输格式,先传数据的高位。需要注意的一点是: 无论数据收发,都是由CC2400来提供时钟的,而CC2400产生发送时钟的条件是置发时就产生发送时钟,产生接收时钟的条件是CC2400检测到物理帧的同步字时就产生接收时钟。也就是说,AT91SAM7S256和CC2400之间开始进行数据交换时,数据和时钟是同时出现的。其中,CC2400在非缓冲区模式下,传输的物理帧的帧格式为前导码、同步字和数据域,因此采用SSC接口进行连续数据传输时,不需要额外的帧同步信号,就能实现正确的连续数据传输。
无线网卡在进行接入时,有时需要检测信道中载波状况;而CC2400提供了载波自动检测功能,即通过GPIO6引脚高低电平的输出来指示载波检测结果。因此连接CC2400的GPIO6引脚和AT91SAM7S256的IRQ1引脚,通过IRQ1的中断指示就能及时得到载波的状态。
3 无线网卡的软件设计
软件设计主要包括AT91SAM7S256对CC2400的初始化和收发控制等物理层操作,以及在MAC层实现TDMA固定接入和多种改进接入。AT91SAM7S256对CC2400的初始化工作主要有复位CC2400,配置CC2400的各个寄存器,打开主晶体振荡器,打开频率合成器等操作。AT91SAM7S256对CC2400的收发控制工作主要有置发,置收,关掉收发等操作。TDMA接入部分主要包括时间同步、时隙化分、时隙分配、时隙预约等。
图5为AT91SAM7S256对CC2400的操作流程。
按照图5的流程来操作无线网卡,就能够正确地进行数据收发,进而实现MAC层TDMA固定接入和多种改进接入。
图5为AT91SAM7S256对CC2400的操作流程。
4 结论
采用AT91SAM7S256加CC2400硬件平台和自主开发的MAC协议软件,可实现TDMA接入方式的AdHoc网络无线网卡。笔者使用该网卡完成了多个节点之间的AdHoc组网,并实现了多种类型数据业务的传输。该网卡为研究和应用TDMA固定接入方式和多种改进接入方式提供了可靠的研究平台,是对现有AdHoc网络MAC接入方式重要的和有意义的补充。TDMA固定接入方式和多种改进接入方式不仅适合于恒定比特流的业务传输,而且能够满足突发性数据业务和有QoS要求的业务传输。因此,基于TDMA接入技术的无线网卡在AdHoc网络中具有非常广阔的应用前景。