主要内容

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

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

请参阅的安装和配置部分USRP®无线电文件有关配置主机以使用SDRu接收器系统对象的详细信息,请参阅。

此示例需要WLAN工具箱™。

介绍

此示例具有以下目标:

  • 使用SDRu系统对象在MATLAB®中接收来自商用WLAN发射机的信号。

  • 说明WLAN工具箱和通信工具箱的使用™ 通过真实信号和无线电硬件演示全数据包同步和解码。

在此示例中,SdrureReceiver系统对象接收因空中传输而损坏的数据,并输出由WLAN RF前端对象处理的复杂基带信号。此示例显示WLAN信号恢复功能在流式排列中协同工作以恢复数据包。它还显示了如何解码记录使用WLAN工具箱验证媒体访问控制(MAC)层数据包。

代码架构

功能runWLANNonHTReceiver使用两个系统对象comm.SDRuReceiver和RFFrontEnd实现数据包捕获和同步。一旦捕获,数据包将使用WLAN工具箱功能进行解码。

SDRu接收机

MATLAB使用SDRu接收系统对象与USRP®板进行通信。参数结构Config.radio信息设置硬件参数,如获得,决定因素,及主钟.

射频前端

非HTC前端提供数据包同步和收集。这分为四个阶段:

  1. 数据包检测:在任何处理开始之前必须检测数据包。这是通过对输入符号进行自动相关来实现的。由于每个802.11 OFDM数据包的开头都包含一个称为L-STF的重复结构,因此当该数据包存在时,相关中会出现峰值。然后提取L-STF并将其用于粗频偏移估计。

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

  1. L-SIG解码:L-LTF之后的第一个OFDM符号是L-SIG字段。必须恢复并解码该字段,以确定后续有效负载的调制、码率和长度。该信息用于捕获L-SIG之后完整有效负载的正确数据量。

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

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

检查是否存在WLAN工具箱

如果isempty(版本(“无线局域网”)错误(“请安装WLAN工具箱以运行此示例。”);结束

探索无线电

查找连接到计算机的收音机。本示例使用了使用芬德鲁功能。检查收音机是否可用。记录收音机类型并根据该类型设置配置。

Config.RadioInfo=getRadioInfo-WLanBeacon();显示(配置放射性信息);

设置模拟参数

从命令行请求用户输入模拟参数。系统将要求您提供1)以秒为单位的捕获持续时间,2)打印状态(开/关),3)从恢复的数据包中显示的数据量,4)启用mac地址的供应商查找,5)感兴趣的频带,以及6)要扫描的通道。如果启用供应商查找,此功能还将下载由IEEE公开提供的MAC地址查找表。

配置。SimInfo = getUserInputWLANBeacon ();

要查找您所在地理位置的有效频道号,请参阅的文档.

获取通道数回复=输入([“你想扫描哪个波段?”\ n”,...'1==5 GHz频段(默认值)\n',...'2 == 2.4 GHz频带\n[1]: '],'s');如果我没有(答复)答复='1';结束如果strcmp(答复,'1')波段扫描=5;有效通道=[...“7-16(5.035-5.080 GHz)\n”...“34-64(5.170-5.320 GHz)\n”...' 100-144 (5.550-5.720 GHz)\n'...“149-165(5.745-5.825 GHz)\n”...];defaultChannels =“(153 157)”;其他的波段扫描=2.4;有效通道=[...“1-13(2.412-2.472 GHz)\n”...' 14 (2.484 GHz)\n'...];defaultChannels ='[1 6]';结束%获取要扫描的通道回复=输入(['有效的频道号是:\n'有效通道...“您要扫描哪些频道?”defaultChannels':'],'s');如果isempty(reply)reply=defaultChannels;结束channelsToScan=重塑(str2num(回复),[],1);%#正常

码元加速

为了提高接收机功能的性能,如果您有有效的MATLAB编码器,请生成代码™ 执照。

runCodegen=false;如果checkCodegenLicense reply = input('是否要为接收器生成MEX文件?是/否[N]:','s');如果我没有(答复)答复=“不”;结束如果strcmpi(回答,“Y”)runCodegen=true;结束结束compileIt=runCodegen;%为receiver生成MEX文件如果编译fprintf(为接收端\n生成MEX文件); 清楚的runWLANNonHTReceiver_mex编码基因(“runWLANNonHTReceiver”,“-args”,{1e9,coder.Constant(Config)});结束

基于OFDM的数据包捕获与解码

根据所请求的时间量,在通道列表中捕获并尝试解码数据包。中心频率是收音机的可调参数;因此,可以在不为整个接收方函数重新生成代码的情况下更改它。

对于通道=1:长度(通道扫描)%计算通道的中心频率WiFiCenterFrequency=HelperLanchannelFrequency(信道扫描,频带扫描);%运行接收器fprintf('正在通道%d(%1.3f GHz)上运行接收器\n',...信道扫描(信道),无线中心频率/1e9);如果runCodegen runWLANNonHTReceiver_mex(WiFiCenterFrequency,配置);其他的runWLANNonHTReceiver(WiFiCenterFrequency,配置);结束结束%完成fprintf(“理想的通道(s)扫描\ n”);

在运行模拟时,一旦捕获到恢复的数据包,就会对其进行解码。如果这些数据包通过了FCS检查,并且属于子类型灯塔,信息将打印到命令行。示例输出如下:

Running receiver at channel 153 (5.765 GHz) SSID: w-guest Packets Decoded: 1 --------------- SSID: w-guest Packets Decoded: 2 --------------- ###处理100毫秒的接收数据…SSID: w-guest Packets Decoded: 3 --------------- SSID: w-guest Packets Decoded: 4 --------------- ###处理200毫秒的接收数据…Running receiver at channel 157 (5.785 GHz) SSID: w-guest Packets Decoded: 5 --------------- ###处理100毫秒的接收数据…SSID: w-guest Packets Decoded: 6 --------------- ### #处理200毫秒的接收数据…所需的通道(s)扫描

不同USRP®子板的增益行为差异很大。因此,本示例中定义的增益设置可能不适合您的子板。如果接收系统未正确解码数据包,您可以在中改变源信号的增益SDRu接收机通过修改配置。USRPGain值接收器初始化文件.

所需的收集时间不应超过5秒。为了确保来自USRP®的连续数据,使用突发模式,它在单独的缓冲区内部存储样本。这个缓冲区的最大大小取决于操作系统,当收集时间太长时将会超过。当使用b系列USRP®设备时,可以通过运行来重置无线电调用“uhd”应用程序('b2xx\u fx3\u utils','-D')如果函数runWLANNonHTReceiver过早地退出。

附录

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

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

工具书类

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

版权声明

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