引言
目前随着无线通信技术(如GSM/GPRS、CDMA、GPS、WLAN等)和网络技术的发展,无线通信得到了广泛的应用,尤其以WLAN发展得最为迅速。1997年6月,IEEE(电子和电气工程师协会)推出了无线局域网的802.11标准,当时被认为是全球唯一的WLAN标准。不过由于它的速率最高只能达到2 Mb/s,在传输速率上无法与有线局域网相比,不能满足人们的需要,因此IEEE相继推出了802.11a/b/g。802.11b工作在2.4 GHz频段,传输速率最高可达11 Mb/s,比最初的802. 11标准快5倍,从而扩大了无线局域网的应用领域;802.11a工作在5 GHz频段,802.11g工作在标准的2.4 GHz频段,都可以达到54 Mb/s的最高传输速率。目前,WLAN作为一种实现宽带无线IP接入的典型方式,凭借其接入速率高、架构使用灵便、可支持移动计算、系统费用低及可扩展性较好等优点,越来越受到人们的青睐。本文将详细介绍一款支持802.11a/b/g协议的高速基带芯片,及其在通信系统中的典型应用设计,包括硬件设计和驱动开发。
1WT6104CLVG功能介绍
WT6104CLVG是由北京六合万通微电子技术有限公司生产的无线基带控制芯片。它是一款高度集成的无线局域网解决方案芯片,完整实现IEEE标准所规定的802.11a/b/g基带信号处理、协议处理以及各种附加增强功能模块;完全支持802.11a/b/g所要求的各种调制方式,能够完整提供协议规定的1~54 Mb/s的全部传输速率。该芯片还提供了大量的安全和加密算法,例如AES、TKIP、WEP、WPI等。针对移动设备的特点,它还提供多种工作模式,其工作频率为40 MHz,有效地降低了功耗;能够与多种RF无缝集成,并提供了多种主机接口,如Cardbus、MiniPCI、Memory接口。该芯片内部主要功能模块包括MAC、BaseBand、ADC/DAC以及RF接口;向上提供HCI接口,向下提供RF接口和SPI配置接口。
各模块功能如下:
① MAC功能模块完成了媒体接入层(MAC)所规定的所有协议。其中,包括安全和加密算法协议。
② BaseBand模块完全支持802.11b和802.11a要求的所有调制方式,能够完整提供协议规定的1~54 Mb/s的全部传输速率。
③ ADC/DAC是低功耗、单通道、差分输入/输出的模/数和数/模转换器,内部集成采样/保持放大器。
同时,WT6104CLVG具有节能功能,采用模拟电源3.3 V、数字电源1.8 V的双电源供电。
芯片内部集成了44 KB的存储单元。其分配如表1所列。
表1WT6104CLVG存储分配表
发送/接收缓冲区(T/RXBANKx)结构如下:
工作模式可以通过设置寄存器Chip_Power_Save(0x0130)在4种模式之间切换,如表2所列。
表24种工作模式
在Memory接口模式下,主机发起一个任意地址且数据高8位为8’h5A的写操作,即(P_CBEN[3] &&(P_AD_OUT [15∶8] == 8'h5A),就可以将芯片从sleep_mode模式唤醒,进入power_save模式。
2无线模块硬件电路设计
2.1WT6104CLVG与主控制器的接口设计
在本设计中主控制器选用Samsung公司的S3C2410。通过TST_MOD[2∶0]=3’b010将芯片设置为 Memory接口工作模式,直接与S3C2410的数据、地址、控制总线连接。P_AD_OUT_[15∶0]接S3C2410的低16位数据总线D[15∶0], P_AD_OUT_[31∶16]接低16位地址总线A[15∶0];P_CBEN_[1∶0]总线高低字节使能,低有效,分别接nWBE[1∶0]引脚;P_CBEN_[3∶2]分别接nWE、nOE引脚;P_IDSEL片选信号接nGCS1引脚;P_INIT接EINT1外部中断引脚。WT6104CLVG与S3C2410的连接电路如图1所示。
2.2WT6104CLVG与RF收发器的接口设计
RF芯片以络达科技公司的AL2230S芯片为例。它是一款支持802.11b/g无线协议的收发芯片。
WT6104CLVG芯片通过RF接口与AL2230S芯片连接。RF使能控制信号SHDN_OUT 接AL2230S的PLLON引脚;接收、发送通道使能信号A_RX_ENA、A_TX_ENA,分别接RXON、TXON引脚;PA_PE_11A、PA_PE_11G为802.11a/g模式使能信号,一起接PAON引脚;B[6∶0]收发控制信号线接AL2230S的GC[7∶1]引脚;TR_SW、TR_SW_BAR为收发切换控制信号;RF_CS片选信号接AL2230S的LE引脚;RF_SCLK、RF_SD_OUT为I2C接口信号线,分别接AL2230S的CLK、DATA引脚。具体连接如图2所示。WT6104CLVG通过I2C接口来配置AL2330S。
图1与S3C2410的连接电路图2与AL2230S的连接电路
基带芯片和RF收发芯片分开设计虽然增加了设计难度,但是设计起来更加灵活,可以根据需要选择发射功率大的收发芯片,从而扩大数据的传输距离。
3无线模块驱动软件设计
此设计以Microsoft公司的嵌入式操作系统Windows CE平台为例,详细介绍以WT6104CLVG芯片为核心的无线网卡的NIC驱动程序的设计。
3.1Windows CE平台下网络驱动模型
Windows CE提供强大的通信服务和网络功能,以及对PAN、LAN和WLAN广泛的无线支持;另外,还提供了Winsock、RAS、TAPI2.0、WinINet等编程接口。为简化驱动程序的开发以及将硬件层和协议层抽象化,Windows CE .net引入了NDIS(Network Driver Interface Specification,网络驱动程序接口规范)。NDIS支持以太网(802.3)、802.11、IrDA、WLAN以及令牌环网(802.5)微端口,NDIS库将网络硬件抽象为网络驱动程序。NDIS说明了网络驱动程序间的标准接口,因此可用来管理硬件的底层驱动程序抽象为上层驱动程序。NDIS支持以下几种类型的网络驱动程序:微端口驱动程序、中间层驱动程序、协议驱动程序。图3为Windows CE.net平台下基于NDIS的网络通信体系结构。
图3网络通信体系结构
NDIS微端口驱动程序又称“微端口NIC驱动程序”,有两项基本功能:
◆ 管理一个网络接口卡(NIC),包括通过NIC发送和接收数据;
◆ 与高层驱动程序(如传输协议驱动程序)相接。
一个微端口驱动程序与它的NIC通信,并且通过NDIS库与高层驱动程序通信。NDIS库向下提供了一整套的函数(NdisXxx函数),这些函数封装了微端口需要调用的所有操作系统函数;同时,微端口必须向上提供一组入口(MiniportXxx函数),使NDIS可以为了完成自己或高层驱动程序的任务而访问微端口。发送和接收操作表明了NDIS与高层驱动程序和微端口NIC的相互作用:
① 当一个传输驱动程序发送一个包时,它调用一个NDIS库所提供的NdisXxx函数。NDIS通过调用由微端口提供的合适的MiniportXxx函数将包传递给微端口,由微端口驱动程序通过调用恰当的驱动子函数将包传递给NIC来发送包。
② 当一个NIC接收到由其他NIC发送来的包时,它将产生一个由NDIS或NIC的微端口处理的中断。NDIS通过调用恰当的MiniportXxx函数指示NIC的微端口,由微端口通过调用恰当的NdisXxx函数把数据从NIC传送到上层驱动程序,同时指示上层驱动程序接收包。
NDIS既支持无连接环境下的微端口驱动程序,也支持面向连接的微端口驱动程序。
3.2Windows CE平台下无线局域支持组件配置
在Windows CE平台下要支持802.11xx无线网络,除了需要注册NIC驱动之外还要将以下组件添加到内核:
◆ Wired Local Area Network [802.3,802.5] (SYSGEN_ETHERNET=1)
◆ Wireless LAN[802.11]Automatic Configuration and 802.1x (SYSGEN_ETH_80211=1)
◆ Wireless Access Point[802.11] Support (SYSGEN_WIFI_AP=1)
◆ Networking Utilities[ipConfig,Ping,Route] (SYSGEN_NETUTILS=1)
◆ TCP/IP (SYSGEN_TCPIP=1)
◆ Core Server Support (SYSGEN_SERVICES=1)
◆ Web Server[HTTPD] (SYSGEN_HTTPD=1)
◆ "Cisco 802.11b PC Card". SYSGEN_ETH_CISCO=1
3.3WT6104CLVG和RF的初始化以及NIC驱动程序设计
主控制器通过WT6104CLVG的Memory接口实现其初始化,以及数据的发送和接收,对AL2330S可以通过I2C接口进行初始化配置和控制。该系统针对WT6104CLVG芯片开发了基于Windows CE的NDIS微端口驱动程序,它负责与WT6104CLVG通信,完成协议包数据的收发。在驱动程序中,向NDIS_MINIPORT_CHARACTERISTICS结构体变量WTChar赋予了一系列在驱动中实现的为微端口向上提供的一组入口函数(MiniportXxx函数)的指针,然后调用系统函数NdisMRegisterMiniport向NDIS注册了这些函数,并同时调用系统函数NdisMRegisterInterrupt向NDIS注册了一个系统中断。具体代码如下:
NDIS_MINIPORT_CHARACTERISTICS WTChar;
WTChar.MajorNdisVersion=WT_NDIS_MAJOR_VERSION;
WTChar.MinorNdisVersion=WT_NDIS_MINOR_VERSION;
WTChar.CheckForHangHandler=WTCheckForHang;
WTChar.DisableInterruptHandler=NULL;
WTChar.EnableInterruptHandler=NULL;
WTChar.HaltHandler=WTHalt;
WTChar.InitializeHandler=WTInitialize;
WTChar.QueryInformationHandler=WTQueryInformation;
WTChar.ResetHandler=WTReset;
WTChar.SendHandler=WT6104CLVGSend;
WTChar.ReturnPacketHandler=WTReturnPacket;
WTChar.SendPacketsHandler=WTSendPackets;
WTChar.SetInformationHandler=WTSetInformation;
WTChar.HandleInterruptHandler=WTHandleInterrupt;
WTChar.ISRHandler=WTIsr;
Status=NdisMRegisterMiniport(NdisWrapperHandle,&WTChar,
sizeof(NDIS_MINIPORT_CHARACTERISTICS));
数据包的发送流程如图4所示(接收流程与此相似)。
图4数据包发送流程
3.4WT6104CLVG NIC驱动程序的注册
WT6104CLVG NIC驱动程序的注册需要向platform.reg注册表文件中添加以下几项(其中,WTWLAN.DLL为驱动编译以后生成的动态库):
[HKEY_LOCAL_MACHINE\\Comm\\WTWLAN]
"DisplayName"="WLAN 802.11"
"Group"="NDIS"
"ImagePath"="WTWLAN.dll"
[HKEY_LOCAL_MACHINE\\Comm\\WTWLAN\\Linkage]
"Route"=multi_sz:"WTWLAN1"
[HKEY_LOCAL_MACHINE\\Comm\\WTWLAN1]
"DisplayName"="WLAN 802.11"
"Group"="NDIS"
"ImagePath"="WTWLAN.dll"
[HKEY_LOCAL_MACHINE\\Comm\\WTWLAN1\\Parms]
"BusNumber"=dword:0
"BusType"=dword:0
"InterruptNumber"=dword:26
"IoBaseAddress"=dword:0xa2000000
"Transceiver"=dword:3
"CardType"=dword:1
"sysintr"=dword:26
"NetworkAddress"="001217534633"
[HKEY_LOCAL_MACHINE\\Comm\\WTWLAN1\\Parms\\TcpIp]
"EnableDHCP"=dword:1
"DefaultGateway"="10.0.0.138"
"LLInterface"=""
"UseZeroBroadcast"=dword:0
"IpAddress"="10.0.0.125"
"Subnetmask"="255.255.255.0"
"DNS"="10.0.0.1"
"AutoCfg"=dword:00000001
[HKEY_LOCAL_MACHINE\\Comm\\Tcpip\\Linkage]
"Bind"="WTWLAN1"
结语
本文介绍了WT6104CLVG无线基带芯片,及其在无线通信系统中的典型设计。采用该芯片设计的无线通信系统工作在802.11g模式下,具有较高的传输速率,可广泛应用于安全监控、工业控制、医疗监护和视频监控等场合。该芯片目前已被多家公司应用在PC机和嵌入式应用领域,具有很好的应用前景。