关键词:802.11b网卡 媒体访问控制 EPXA1 开发平台
无线局域网媒体访问控制(MAC)协议的开发是目前各种无线应用研究的热点。同时MAC协议的开发、调试和实现离不开物理层(PHY)的支持。很多MAC协议的开发者由于没有物理层的支持,只能停留在协议仿真的阶段。本文提出了一个可以通过无线链路收发信号(可以与基于802.11b的无线局域网AP以及无线网卡通信)的无线MAC开发平台。该平台利用现有802.11b无线网卡的物理层部分(包括天线、射频芯片、中频芯片和基带处理器),再加上EPXA1开发板构成。利用该平台,可以EPXA1开发板上进行各种MAC协议的开发和调试。
1 系统架构
系统主要由三部分构成:802.11b无线网卡、EPXA1开发板以及两者之间转接PCB板,如图1所示。
系统中使用的802.11b无线网卡通过标准的PCMCIA接口与笔记本相连。该无线网卡最大的特点是MAC控制芯片和基带处理芯片以及前端中射频芯片是分离的,只有这样才能将其MAC芯片替换成EPXA1开发板。在无线网卡启动之前必须给基带处理芯片以及前端中频、射频芯片的控制寄存器设置合适的值。这是控制逻辑PLCI部分要做的工作。该网卡的主要组成芯片有:
(a) HFA3841(Wireless LAN Medium Access Controller)是该无线网卡的MAC部分,在本设计中,将其替换成笔者的开发板。
(b) HFA3861B(Baseband processor)是无线网卡的基带处理器[3],在网卡启动过程中,需要通过相应的串行配置口对其进行配置。
(c) HFA3863A(RF/IF converter and synthesizer)芯片进行射频到中频的变换[4],需要通过相应配置口进行控制寄存器的配置。
(d) HFA3783 芯片进行中频到基带的变换[5],也需要通过相应配置口进行寄存器的配置(工作模式和工作频率等)。
Altera公司的EPXA1开发板集成了ARM922T嵌入式微处理器以及相应外设,其外设中拥有10万等效系统门的可编程逻辑器件以及相应的扩展I/O口,不需要再另外设计FPGA电路,更方便了软件和硬件的协同设计。同时,Altera公司提供的QnartusII软件,也提供了对硬件和软件协同设计的良好支持。
转接PCB板用于连接EPXA1开发板的扩展I/O口和802.11b无线网卡上有用的信号线。板上设计了一个PCMCIA插槽,用来固定无线网卡,转接板使用了隔离芯片SN74CBTD3384进行电平转换和保护EPXA1开发板,同时也通过该板给无线网卡供电。
2 设计过程
2.1 对802.11b无线网卡的处理
首先拿掉无线网卡的MAC芯片,然后将MAC芯片上与基带处理器、前端射频以及中频芯片相连的线引出,因为在网卡启动过程中,需要通过这些线对前端芯片进行相应配置。图2是无线网卡的MAC芯片与其他芯片之间的连接关系,在设计过程要确保将这些线引出到EPXA1开发板上。
2.2 转接PCB板的设计
可以参照PCMCIA接口标准,将其中的电源线、地线以及有用的地址线和数据线连接到EPXA1的扩展I/O口(逻辑高电平为5V),连接过程使用了SN74CBTD3384进行电平转换(5V到3.3V的转换)。另外在EPXA1的扩展I/O口中,有提供3.3V和5V电源的引脚,可以作为无线网卡的电源,PCB板上还可以加上测试引脚,方便硬件的调试。
2.3 PLCI部分的设计
整个系统的构架和PLCI所处的位置如图3所示。PLCI(物理层控制接口)和PLDI(物理层数据接口)是设计的重点,是利用EPXA1的可编程逻辑实现的,主要编程语言是Verilog HDL。PLCI是MAC与物理层的控制接口,它实现了对前端芯片(包括HFA3861B、HFA3683以及HFA3783)的控制寄存器的配置,包括产生配置所需的串行数据、时钟及片选信号。PLDI是MAC与物理层的数据接口,是MAC与PHY交换数据的通路;而ARM9嵌入式微处理器则运行C语言代码实现各种无线MAC协议。ARM9与外围设备之间通过AHB总线连接。
在写程序之前,首先要弄清楚各个控制寄存器的读写过程。
BBP(基带处理器)的控制接口是一个典型的三线接口,即只有时钟(SCLK、)数据(SD)和片选(CS_BAR)三个信号,没有单独的读/写使能信号,面临早用了地址的最高位来标识读或写操作。每次读/写操作时,数据线(SD)上先后出现串行的地址和数据,其中地址位的MSB(A7)=1时为写操作,表明将数据写入该地址对应的寄存器中;地址位MSB(A7)=0时为读操作,表面后面的数据是从该地址指示的寄存器中读取出来的。
HFA3683与HFA3783的读写时序相同,通过LE_RF和LE_I的有效(低有效)来决定对哪块芯片进行读写。
DATA线上的串行数据是在时钟的上升沿写入芯片中的一个20位的移位寄存器,然后在LE的上升沿写入根据LSB1和LSB2两位对应的地址。
上述的串行输出数据(SD)和时钟(SCLK)由PLCI逻辑产生。各前端芯片利用时钟的上升沿来采集数据的,所以数据与时钟的上升沿要严格对齐,有足够的建立时间和保持时间。
在PLCI的设计中,定义了一些寄存器与CPU通信,这些寄存器根据相应芯片读写时序的要求,有不同的宽度,例如BBP的写寄存器有17位,低8位为要写入的数据,高8位为要写入的寄存器的地址,最高位用来表明写入操作是否完成。以便启动下一次读写操作。
ESS(Excalibur Strpe Simulator)是一个Stripe仿真模型,它可以仿真CPU指令的执行,并用来观察PLD to Stripe和Stripe to PLD的总线时序。ADS 1.2带的AXD调试器可以模块CPU执行指令的情况,并观察每条指令执行之后系统的状态。
通过AXD Debugger与ESS的结合,可以观察一条PLD-to-Stripe或者Stripe-to-PLD总线操作指令执行后相应总线上的时序,再结合ModelSim进行仿真,方便了程序的调试。图4是ModelSim中对BBP进行配置时的仿真波形,该波形与要求的BBP的写入逻辑是一致的。
3 系统的启动和验证
在启动系统前,还必须写一个PLCI.C文件,在其中利用c函数对PLCI.V中定义的寄存器进行读写操作。
//BBP的写操作函数
void BBP_wr(long val)
{
*BBP_WRITE=vall0x8000;
//val的高八位是地址,低八位为数据,最高位置1表明为写寄存器操作
while(((*BBP_WRITE)&0x10000)==0x10000){}
//读取标志位,一直到操作完成
}
RF以及IF芯片的写操作函数类似。
BBP总共有49个寄存器要进行写入操作。
HFA3683有三个控制寄存器需要写入,HFA3783有四个控制寄存器。后面两个芯片共同的寄存器有:模式寄存器M(用于控制芯片的工作模式)、R counter寄存器和A/B counter(用于控制频率综合器的综合频率),R counter和A/B counter的具体值需要对无线网卡工作时的射频和中频频率进行测量得到。按照802.11b协议的规定之一,无线网卡工作时共有14个信道[2],所以得到的射频芯片(HFA3683A)工作频率共有14个(即有14种不同的R、A、B值),中频(HFA783)芯片的工作频率有一个。
使用的编程工具是Quartus II,它可以分别编译硬件部分(PLCI.V主要是或者verilog HDL语言)和软件部分(PLCI.C),然后再一起编译生成.hex文件下载到开发板上。
验证过程:将无线网卡设置成接收状态(RX_PE置高、TX_PEL置低、RADIO_PE置低,PE1置高、PE2置高、RESET置高、TR/SW置低)。另外需要设置好一个802.11b的AP(Access Point),将其设置在一个固定的工作频道上,同时设置RF/IF Converter的控制寄存器,使网卡也工作在该频道上。此时用逻辑分析仪监测来自BBP的三个信号:RXC、RXD、MD_RDY信号,可以在逻辑分析上得到如图5所示波形。
本系统提供了一条至MAC的最高速率为22Mbps的串行数据链路,结合EPAX1开发板上的嵌入式微处理器可以构建各种无线局域网演示系统。利用现有的无线网卡作为物理层,可以给那些专注于上层协议开发的人更多的方便。只要有相应的控制逻辑,这种系统构建方式也适用于其它的开发板,给想验证和实现自己开发MAC协议的人带来了一条捷径。笔者目前正在利用此平台开发802.11e媒体访问控制协议。