IEEE®802.11™WLAN - OFDM信标接收机与USRP®硬件

这个例子展示了如何使用使用SDRu (Software Defined Radio USRP®)System objects™的通用软件无线电外设(USRP®)设备来实现WLAN接收器。接收机能够恢复802.11 OFDM非ht信标帧[1]发送通过空中从商业802.11硬件。OFDM信标可从的802.11a / g / n的/ ac接入点被发送,并在5GHz频带通常发现。如SSID地址和MAC地址的分组信息被打印到恢复期间命令行。这个例子假设接入点在范围内并发送OFDM在期望的信道信标。

请参阅的设置和配置部分USRP®电台文件有关配置主机与SDRu接收系统对象的工作细节。

此示例需要WLAN Toolbox™。

介绍

这个例子有以下目标:

  • 接收使用SDRu系统对象从MATLAB®商用WLAN发射器的信号。

  • 示出了与现实世界的信号,并且无线电硬件表明整个数据包的同步和解码使用WLAN工具箱和通信工具箱™的。

在这个例子中,系统SDRuReceiver对象接收由通过空中传输已损坏的数据,并输出其由WLAN RF前端处理对象的复基带信号。此示例示出了在流送装置一起工作,以恢复数据包的WLAN信号恢复功能。它还示出了如何解码所恢复的使用WLAN工具箱介质访问控制(MAC)层的数据包。

代码架构

功能runWLANNonHTReceiver工具包捕获和使用两个系统同步对象,comm.SDRuReceiver和RFFrontEnd。一旦被捕获,分组被解码与WLAN工具箱功能。

SDRu接收机

MATLAB使用SDRu接收系统对象与USRP®板进行通信。参数结构Config.RadioInfo设置硬件参数,例如获得DecimationFactorMasterClockRate

射频前端

nonHTFrontEnd提供分组同步和收集。这发生在四个阶段:

  1. 分组检测:任何处理开始之前必须被检测的数据包。这是通过自动关联输入符号来完成。由于每个802.11 OFDM分组的开头包含一个称为L-STF重复结构,当这个分组是本将发生在相关峰。然后将L-STF被提取并且用于粗略频率偏移估计。

  1. 符号定时:一旦分组被检测到,几个未来符号被捕获到一缓冲器中。针对此缓冲区互相关以定位L-LTF。定位的L-LTF首先提供精细符号定时,识别OFDM符号边界在分组中的所有连续的符号。整个L-LTF被捕获后,将其用于信道估计和精细频率偏移估计。

  1. L-SIG解码:将L-LTF之后的第一个OFDM符号是L-SIG字段中。此字段必须被回收并解码,以确定所述调制,编码率,以及随后的有效载荷的长度。该信息被使用的L-SIG为一个完整的有效载荷之后捕获数据的正确的金额。

  1. 有效载荷译码:所有的OFDM符号在L-SIG后被缓冲到由L-SIG字段决定的长度。在所有的符号被捕获后,它们被解调和解码到它们的源位。然后对源位进行计算。这个评估包括帧检查序列(FCS)验证和头部和主体的提取。如果数据包是子类型烽火时,摘要信息将被打印关于所恢复的数据包。

一旦接收到一个完整的包或在处理链中发生任何故障,接收方将返回到包检测来搜索更多的包。在请求的捕获时间内重复此过程。捕获时间与从radio提取的数据量有关,而与物理模拟的运行时间无关。

检查WLAN工具箱的存在

如果isempty(版本('WLAN')错误('请安装WLAN工具箱来运行此示例。');结束

搜索到无线

发现无线电(S)连接到您的计算机。这个例子使用采用所述第一USRP®无线电发现findsdru功能。检查无线电是否可用。记录基于该类型的无线电类型和配置集。

Config.RadioInfo = getRadioInfoWLANBeacon();DISP(Config.RadioInfo);

设置仿真参数

请求来自命令行仿真参数的用户输入。您会被要求1)在几秒钟内捕获持续时间,2)绘制状态(开/关),3)的数据来显示的量从回收的分组,4),以使供应商查找为MAC地址,5)感兴趣的频带和6)的渠道,你要扫描。如果供应商查找启用此功能也将下载一个MAC地址查找表,由IEEE公之于众。

配置。SimInfo = getUserInputWLANBeacon ();

要找到有效的通道号在你的地理位置,请参考的文档

获取通道数回复=输入([“你想扫描的波段是什么?\n”...'1个== 5GHz频带(默认)\ N'...'2 == 2.4 GHz波段\n[1]: '),'S');如果的isEmpty(回复)回复='1';结束如果STRCMP(回复,'1')bandToScan = 5;validChannels = [...'7-16(5.035-5.080千兆赫)\ N'...'34-64(5.170-5.320千兆赫)\ N'...' 100-144 (5.550-5.720 GHz)\n'...'149-165(5.745-5.825千兆赫)\ N'...];defaultChannels =“(153 157)”;其他的bandToScan = 2.4;validChannels = [...'1-13(2.412-2.472千兆赫)\ N'...' 14 (2.484 GHz)\n'...];defaultChannels ='[1 6]';结束%获取渠道扫描回复=输入([“有效的信道号为。\ n”validChannels...“你想要哪个频道扫描?“defaultChannels':'),'S');如果的isEmpty(回复)回复= defaultChannels;结束channelsToScan =重塑(str2num(回复),[],1);%#确定

代码生成加速

为了提高接收器功能的性能,如果您有有效的MATLAB Coder™许可证,请生成代码。

runCodegen = FALSE;如果checkCodegenLicense应答=输入(“你想生成接收机MEX文件?Y / N [N]:''S');如果的isEmpty(回复)回复='N';结束如果strcmpi(回答,“Y”)runCodegen = TRUE;结束结束compileIt = runCodegen;%为接收方生成MEX文件如果compileIt fprintf中('为接收器\n生成MEX文件');明确runWLANNonHTReceiver_mex代码生成('runWLANNonHTReceiver''-args'{1E9,coder.Constant(配置)});结束

捕获和基于OFDM的解码包

捕获并尝试解码在通道列表上的数据包的时间请求。所述中心频率是所述无线电的可调参数;因此,可以更改它,而不必为整个receiver函数重新生成代码。

对于信道= 1:长度(channelsToScan)对于信道计算%中心频率WiFiCenterFrequency = helperWLANChannelFrequency(channelsToScan(信道),bandToScan);%运行接收器fprintf中('运行在频道%d接收机(%1.3F千兆赫)\ N'...channelsToScan(信道),WiFiCenterFrequency / 1E9);如果runCodegen runWLANNonHTReceiver_mex(WiFiCenterFrequency,配置);其他的runWLANNonHTReceiver(WiFiCenterFrequency,配置);结束结束%运行完整fprintf中(“理想的通道(s)扫描\ n”);

当运行模拟,将回收的数据包,当他们被捕获解码。如果他们通过自己的FCS检查,他们是亚型烽火,信息将被打印到命令行。示例输出如下:

在153信道运行接收器(5.765 GHz) SSID: w-guest数据包解码:1——SSID: w-guest数据包解码:2——###处理了100毫秒的接收数据…SSID: w-guest数据包解码:3—SSID: w-guest数据包解码:4—###处理了200毫秒的接收数据…运行接收器在通道157 (5.785 GHz) SSID: w-guest数据包解码:5—###处理100毫秒的接收数据…SSID: w-guest数据包解码:6—###处理200毫秒的接收数据…所需的通道(s)扫描

不同USRP®子板的增益行为差别很大。因此,在这个例子中所定义的增益设置可能无法很好地适合于你的女儿板。如果数据包没有正确接收系统的解码,就可以改变源信号的增益SDRu接收机系统对象,通过更改配置。的值接收器的初始化文件

所需的采集时间不应超过5秒。为了确保USRP®的连续数据,使用了突发模式,该模式将样本存储在一个单独的缓冲区中。这个缓冲区的最大大小取决于操作系统,如果收集时间太长,就会超过这个缓冲区的最大大小。当使用b系列USRP®设备时,运行无线电复位是有用的call_uhd_app( 'b2xx_fx3_utils', ' - d')如果函数runWLANNonHTReceiver过早地退出。

附录

这个例子使用了下面的脚本和帮助函数:

以下WLAN功能的工具箱还使用:

参考

  1. IEEE标准802.11-2012 (IEEE标准802.11-2007的修订)- IEEE信息技术标准-系统和城域网之间的电信和信息交换-特殊要求第11部分:无线LAN媒介访问控制(MAC)和物理层(PHY)规范

版权声明

通用软件无线电Peripheral®和USRP®是美国国家仪器公司的商标。