>
首页 » 技术文章 » 802.11bMAC子层控制器的设计与验证

802.11bMAC子层控制器的设计与验证

作者:陈 奇,沈力为,杨莲兴  时间:2006-10-11 00:08  来源:
摘 要:IEEE 802.11b 协议是目前运用最为普遍的无线局域网标准。基于独立组网模式,对介质访问控制层进行VLSI 设计,并可方便地扩展为适用于骨干网模式的设计。设计的特色是采用了事件响应的设计路线以达到低功耗的目的;采用了基于内部总线共享的双总线系统架构,结合一种新颖的基于总线监控的调试方式,增强了设计的可测性,降低了验证成本,缩短了设计周期。

关键词:无线局域网;介质访问控制;事件驱动;总线监控

引言

1997 年,IEEE 发布了802.11 无线局域网(WLAN)协议,提出了局域网在物理层(PHY)和数据链路层(DLL)的技术规范。1999 年,IEEE又发布了802.11a 、b标准,将WLAN 的最高传输速率由1Mbps 分别提升到了54Mbps 和11Mbps。

802.11系列协议支持两种最基本的组网方式:独立组网(adhoc)和骨干网(infrastructure)。WLAN与有线网络区别最大之处是:在无线网络中物理介质由所有在连接范围内的站点(STA)共享。由于无线介质的信道的特殊性,802.11 系列定义介质访问控制(MAC)层对传输介质的访问采用的是载波侦听/冲突避免(CSMA/CA)机制,而不是802.3 采用的载波侦听/冲突检测(CSMA/CD)机制。为了避免冲突,802.11 系列协议提供了两种协调方式: 分布式协调(distributed coordination function,DCF)和点协调(point coordination function,PCF)。其中DCF是最基本的访问方式,而PCF 只应用于骨干网模式中。具体细节可参见协议。MAC子层位于逻辑链路控制(LLC)层和物理层之间,它使LLC 适应于不同的媒体访问技术和物理媒质。802.11b中MAC子层的主要功能是对无线介质空间利用CSMA/CA机制进行访问,完成对各种帧的封装、解封、发送和接收功能。

本文基于802.11b协议,针对适用于adhoc组网模式的MAC子层进行VLSI设计,并可根据adhoc与infrastructure两种组网模式的区别,非常方便地扩展成为适用于infrastructure网络的MAC子层设计。设计的整个硬件系统在FPGA上完成了功能验证。

MAC子层的设计思想和实现架构

对于MAC子层设计,使用了基于嵌入式芯片的系统构架。在系统级的设计过程中,采用了C语言对硬件进行建模,并进行了软硬件协同的系统级仿真,并以此来指导系统的软硬件划分。嵌入一个MCU内核来设计片上系统(SOC)现在已经成为了一种比较流行的设计方式。在FGPA验证中采用IBM公司的Microblaze 32位MCU,以及IBM的OPB(On-chip Peripheral Bus),组建了一个硬件平台。该内核是一个RISC架构的软核,使用32 位总线和哈佛(Havard)结构,采用PowerPC系列中使用的Coreconnect 技术和OPB结构,并可嵌入Xilinx公司Virtex2系列的FGPA中。在ASIC 实现时计划采用ARM9 嵌入式硬核和AMBA 总线控制硬核。

MAC的硬件系统通过中断发生器(Interrupt Generation)和总线接口(BUS Interface)连接OPB,从而与Microblaze软核连接起来。802.11b MAC子层协议中的帧服务子层由发送引擎(TX engine)和接收引擎(RX engine)来实现;帧序列服务子层由流量控制器(Traffic Controller)来实现,它是MAC子层硬件体系的核心模块。MAC子层硬件体系内部是通过一条内部总线(Local BUS)连接在一起,从而达到总线共享的目的。MAC子层中网络协调、同步、功耗管理等功能则借助Microblaze内核在MAC子层硬件结构的基础上实现。另外,物理汇聚子层界面(PLCP Interface)是MAC子层与PHY层的接口。

流量控制器的设计

流量控制器(Traffic Controller ,以下简称为TC)是整个MAC子层硬件体系的核心模块,是设计中的重点。它的任务是根据软件提交的数据帧或管理帧,在发送引擎和接收引擎的配合下,组织正确的帧交换序列并执行。TC可以被看成一个决策模块,根据一定的判决信息去控制其他模块。它在MAC中所起的作用就和CPU在计算机中的作用类似。

根据对协议的分析,TC本质上是一个非常复杂的状态机。它要执行很多等待、查询和判决的任务。因此,TC也是整个电路中翻转最为频繁、功耗最大的模块。为了实现低功耗的设计,本文完全采用事件驱动的方式来完成复杂的状态控制和操作。其基本思想是:将对于TC有效的判决信息统一规划成“事件”,即任何一个有效判据发生,就相当于产生了一个对应的事件,这样就可以很方便地把所有的事件集中起来,用一个事件池(event pool)来管理。仅当有事件发生,事件池才会激活时钟控制模块产生clk驱动事件处理电路工作,其本质上是一个异步时钟。事件处理电路在这个异步时钟的驱动下会首先查询一下发生的事件,然后根据现在的状态来判断接下来要执行的任务,当事件处理电路完成对此次事件的响应后,它会清除事件池中的事件,从而异步时钟也会停止,事件处理单元又进入“休眠”状态。采用异步的方式进行设计,有效地减少了电路的空翻,节省了功耗。

考虑到对于有些事件的响应操作比较繁杂,如需要通过总线和存储器进行交互,为了不影响处理其它子状态的新事件,采用了一个“线程”(thread)操作,让这个“硬件线程”去完成复杂的操作,而事件处理电路可以清除该事件而进入休眠状态,等待新的事件。采用硬件线程的另一个好处是在不同的工作模式下可t以共用一个硬件线程,从而减少了硬件资源的消耗。

根据adhoc网络的特点,把处于网络内的STA划分为信标竞争(Beacon Contention), ATIM(Announcement Traffic Indication Message)竞争,DCF 竞争和节约功耗(Power Save)这几个帧序列状态,在每个帧序列状态下再划分相应的子状态。这样不仅方便硬件的实现,而且很容易在此基础上,把只适用于adhoc网络的MAC子层设计扩展为可以支持infrastructure网络的设计。需要做的工作只是把infrastructure网络下STA所需要支持的这些帧序列状态加入到event operator中即可,而接口信号不需要进行修改。这样无疑大大增强了设计的可扩展性。

可测性设计

随着SOC设计的规模越来越大,验证方案也日趋复杂,验证所花费的精力也越来越多,最多可占整个设计的70 %。如何有效地对设计进行验证已成为SOC设计所不能回避的新问题。针对这种情况,在SOC可测性设计方面提出了一种全新的解决方案:一种基于总线共享型的系统架构,并配以总线监控和数据记录的跟踪调试器(debug tracer)。

设计中,采用了两条总线:外部总线OPB和内部总线Local BUS。OPB作为MCU的数据指令通道,使MCU与MAC子层的硬件模块相连,可以充分利用MCU的灵活、可配置性强等优点来验证硬件设计,达到软硬件协同工作,缩短设计时间。Local BUS 作为硬件系统内部的数据通道,连接内部各个模块,达到资源共享的目的。使用双总线结构的好处是:一旦设计要更换MCU 软核(如使用ARM)及其相应总线(AMBABUS),只需要新设计两条总线之间的接口模块(bus interface),而不必改变其他的硬件设计,使得设计的可移植性大大增强。双总线结构的另一个的好处就是便于验证和测试。

在VLSI系统的测试中,扫描链是最常用的一种调试方法,它通过将数字电路的寄存器连接成扫描链,将寄存器的数据串行输出到调试接口上进行观察,达到监控系统的目的。扫描链可以很方便地触及到系统内部,但也存在着一些弊端:扫描链工作时需要暂停系统的工作,完成数据观察后还需要使用扫描链恢复数据,整个过程的效率很低。

对于一个比较复杂的硬件系统,在发生故障时,最好能够首先定位发生差错的电路子模块,然后再对该子模块进一步调试。在本文的802.11b MAC子层的设计中,专用功能模块对数据包处理的情况和多模块协同工作时配合的时序情况是验证的重点。由于本文的MAC硬件系统采用的是标准的基于共享总线的框架,主要的电路模块都通过本地总线来访问内存,所以对总线上的数据进行观察就能很方便地了解整个系统的工作状况。这也是本文引入总线监控器的一个主要原因。总线监控器的工作原理如图1所示。

图1  总线监控器的原理图

总线监控器监控总线上的数据交互,将监控结果保存在存储器中。并把对总线进行访问的子模块、操作(读/写)、数据等信息通过UART接口输出到PC机上。这样,通过PC机上的监控程序,就能够了解MAC系统的工作情况,并定位发生故障的模块。另外,总线监控器不用像扫描链那样暂停系统的工作,整个监控行为不干扰系统的正常运行,这样就提高了测试效率。由于UART的通信速率(使用28800Hz)较低,所以电路中使用FIFO方式来缓存数据。

基于总线监控的跟踪调试器在大规模SOC设计中有两个显著优点: (1)电路规模小,一个总线监控器就可以实现对整个系统的监控; (2)监控行为完全不干扰系统的正常运行,这使得监控的结果更有效。因此,总线监控器为SOC设计提供了一种非常有效的调试及测试手段。

电路实现和验证结果

整个MAC子层硬件设计采用了TopDown 的流程。使用C语言验证了系统的可行性,并以此为基础,进行了VHDL代码的RTL级设计,使用了ModelSim对RTL进行了功能仿真,采用了Synplify对整个电路进行了基于FPGA的综合。综合后电路大小约为4KLUTs。

本文验证平台采用的是Xilinx公司Virtex2系列的FPGA,型号为XC2000vff896。该FPGA 提供一个Microblaze的软核。本文通过EDK3.2 将要验证的IP 核(即MAC子层硬件)同Microblaze内核逻辑铰链起来,然后将它们一起转入ISE 5.2 ,再利用在线逻辑分析仪(Chipscope Pro)插入一些组合电路,最后下载到FPGA上。通过Chipscope Pro来观察FPGA内部节点重要的控制信号波形,同时利用总线监控器观测memory端口数据流量,这样能丰富观测监控手段,方便对电路实现FPGA调试。

本文对adhoc 模式下,MAC子层硬件电路实现的CSMA/CA、DCF 协调和各种帧序列交换都进行了FP2GA 验证。图2为用Chipscope Pro 观测到的系统工作的一个例子。系统中的一个模块发送了RTS帧,在rxdatastal 信号线上可以看到发送的数据类型为0x00B4(RTS帧),持续时间为0x0A0B,接收端地址(RA)为000000ABCDEF,发送端地址(TA)为0x000000123456,最后的4个字节为FCS的检验值。接收端在收到RTS 后回复了CTS 帧(类型0x00C4 ,信号线rxdatasta2)。

用类似的方法,本文验证了802.11b协议中规定的所有帧:如信标帧(Beacon frame)、发送流量信息帧(ATIMframe)、数据帧(data frame)、应答帧(ACKframe)、请求发送帧(RTS frame)和清除发送帧(CTS frame)等。验证结果表明:在adhoc模式下的STA能按照协议的规定发送、接收各类MAC帧,并能做出正确的响应,以及处理出错情况,完全符合IEEE 802.11b协议标准。

图2 系统仿真波形

整个MAC子层设计完全遵守IEEE 802.11b协议,具有很好的兼容性。本文利用总线监控器和在线逻辑分析仪两种手段结合使用来实现对MAC子层电路的FPGA 验证。这无疑给今后基于嵌入内核的SOC设计的验证提供了一种可以借鉴的方法。

相关推荐

基于扩频通信技术的无线局域网组网设计

扩频通信  无线局域网  2011-08-02

WAPI标准国际化再遇干扰

无线局域网  WAPI  2011-06-23

基于无线局域网的矿下定位卡设计与实现

GPS  无线局域网  2011-03-14

Lantiq推出新款802.11n无线局域网解决方案

2010-08-30

WAPI基础架构虎符TePA正式成为国际标准

WAPI  无线局域网  2010-08-10

WAPI产业成员增至72家

无线局域网  WAPI  2010-07-22
在线研讨会
焦点