主要内容

802.11ac多用户MIMO预编码与WINNER II信道模型

该示例显示了在获胜者II衰落通道上的802.11ac™多用户的发送和接收处理。您必须下载并安装Winder II通道模型,用于Communications Toolbox™Add-on才能运行此示例。只需要一个获胜者II通道系统对象™来将频道从一个接入点设置到所有用户。

介绍

802.11ac支金宝app持多达4个用户和多达8个发射天线的下行(接入点到站)多用户传输,以增加链路的总吞吐量[1]。基于用户的预定传输时间,调度器查找其他较小的数据包准备用于传输到其他用户。如果可用,它会通过相同的间隔调度这些用户,这减少了多个传输所花费的总时间。

这种同时传输具有更高的复杂性,因为成功接收个人用户的有效负载需要预编码,也称为发送端波束形成。预编码假设信道状态信息(CSI)在发送端是已知的。一种探测包,如802.11交流传输波束形成(WLAN工具箱)示例,用于确定多用户传输中每个用户的CSI。每个用户向波束形成器反馈各自的CSI。波束形成器使用来自所有用户的CSI为后续数据传输设置预编码(空间映射)矩阵。

该示例使用信道反转技术,用于三个用户传输,其使用每个用户分配的不同数量的空间流和每个用户的不同速率参数。该系统的特征在于下图。

该示例生成多用户发送波形,将其通过多用户WINNER II通道,并为每个用户解码接收的信号,以计算错误比特。在数据传输之前,该示例使用一个空数据包(NDP)传输来为每个用户探测不同的信道,并在完美反馈的假设下确定预编码矩阵。

检查支持包安装情况金宝app

检查是否安装了“通信工具箱的WINNER II通道模型”支持包。金宝app

comm金宝appSupportPackageCheck (“CST_WINNER2”);

仿真参数及配置

对于802.11ac,允许最多八个空间流。在此示例中使用了8x8 MIMO配置,其中第一个用户具有三个流,第二个用户,第二个用户有一个,第三个用户分配了四个流。每个用户的不同速率参数和有效载荷大小被指定为传输配置的矢量参数。

s = rng (10);%为重复性设置RNG种子%的传输参数chanBW =“CBW80”%通道带宽numUsers = 3;%用户数量numstsvec = [3 1 4];%每个用户的流数userPos = [0 1 2];%的用户位置mcsvec = [4 6 8];%MCS每用户:16QAM,64QAM,256QAMapepVec = [520 192 856];%每用户的有效负载,以字节为单位chCodingVec = {“* *”“方法”“方法”};%每个用户的信道编码%预编码和均衡参数precodingType =“ZF”%预编码类型;ZF和MMSE的信噪比= 47;DB中%SNReqMethod =“ZF”%均衡方法%创建多用户VHT格式配置对象numTx =总和(numSTSVec);cfgVHTMU = wlanVHTConfig (“ChannelBandwidth”chanBW,...“NumUsers”numUsers,...'numtransmitantennas'numTx,...“GroupID”2,...“NumSpaceTimeStreams”numSTSVec,...“UserPositions”userPos,...“主持人”mcsVec,...“APEPLength”apepVec,...'频道码', chCodingVec);

发射天线的数量设置为所有使用的时空流的总和。这意味着没有空时分组编码(STBC)或空间扩展用于传输。

听起来(NDP)配置

在预编码中,信道探测首先用于确定用户(接收方)所经历的信道。该信道状态信息被发送回发送器,用于后续的数据传输。假设信道在两次传输中变化缓慢。对于多用户传输,将相同的NDP (Null Data Packet)传输到每个预定用户[2]。

VHT探测(NDP)配置,用于相同数量的流cfgVHTNDP = wlanVHTConfig (“ChannelBandwidth”chanBW,...“NumUsers”,1,...'numtransmitantennas'numTx,...“GroupID”,0,...“NumSpaceTimeStreams”总和(numSTSVec),...“主持人”,0,...“APEPLength”, 0);

指定的流的数量是所使用的所有时空流的总和。这允许完整的通道被发出声音。

%生成无数据的空数据包txNDPSig = wlanWaveformGenerator ([], cfgVHTNDP);NPDSigLen = size(txNDPSig, 1);

室内办公室的获胜者II渠道(A1)情景

在这个例子中,1Comm.Winner2Channel.在通信工具箱™的WINNER II信道模型中建立系统对象,对不同的用户模拟三个信道。为每个用户配置室内办公室(A1)非视线场景。在固定的功率延迟情况下,每个用户都会经历一个最大延迟为175 us的16路衰落信道。对于802.11ac,每个用户还被分配一个低移动性。

接入点采用半径为20cm的均匀圆形阵列(UCA)。每个用户使用均匀线性阵列(ULA),每个阵列之间的元素间距为5cm。还假设每个用户接收天线的数量等于分配给他们的时空流的数量。

%为获胜者II通道设置布局参数aa = winner2.antennaArray(“台湾”、numTx 0.2);i = 1:numUsers AA(i+1) = winner2。AntennaArray ('Ula', numSTSVec(我),0.05);结束STAIdx = 2: (numUsers + 1);APIdx = {1};rndSeed = 12;cfgLayout = winner2.layoutparset (STAIdx APIdx numUsers, AA, [], rndSeed);cfgLayout。的配对=[(1、numUsers); 2: (numUsers + 1)];对所有用户的一个接入点cfgLayout。numUsers ScenarioVector = 1 (1);% A1场景用于所有链接cfgLayout。numUsers PropagConditionVector = 0 (1);%仿真结果我= 1:麻木器为每个用户随机设置速度v = rand(3,1) -  0.5;cfglayout.stations(i + 1).velocity = v / r $(v,“摇来摇去”);结束%为WINNER II通道设置模型参数cfgModel = winner2.wimparset;cfgModel。FixedPdpUsed =“是的”;cfgModel。FixedAnglesUsed =“是的”;cfgModel。IntraClusterDsUsed =“不”;cfgModel。RandomSeed = 111;%可重复性% 3个用户的最大速度是1m/s。设置采样密度%字段以确保采样率与通道带宽匹配。maxMSVelocity = max(cell2mat(cellfun(@(x)) norm(x,“摇来摇去”),...{cfgLayout.Stations.Velocity},“UniformOutput”,错误的)));cfgmodel.uniformtimesampling =“是的”;cfgModel。SampleDensity =圆(physconst ('LightSpeed')/...cfgModel.CenterFrequency / 2 / (maxMSVelocity / wlanSampleRate (cfgVHTMU)));%创建WINNER II通道系统对象WINNERChan = comm.WINNER2Channel (cfgModel cfgLayout);%调用info方法检查一些派生的通道参数chanInfo = info (WINNERChan)
chanInfo = struct with fields: NumLinks: 3 NumBSElements: [8 8 8] NumMSElements: [3 1 4] NumPaths: [16 16 16] SampleRate: [8.0000e+07 8.0000e+07 8.0000e+07] ChannelFilterDelay: [7 7 7] NumSamplesProcessed: 0

存储每个用户的信道滤波延迟,以在接收端考虑其补偿。在实际应用中,通常采用符号时序估计。在发射机,额外的十个全零采样被附加,以考虑信道滤波器延迟。

chanDelay = chanInfo.ChannelFilterDelay;numPadZeros = 10;%设置modelconfig.numtimesamples以匹配输入信号的长度%避免警告winnerchan.modelconfig.numtimesamples = npdsiglen + numpadzeros;%为所有用户打开WINNER II频道chanOutNDP = WINNERChan ([txNDPSig; 0 (numPadZeros numTx)]);%增加情况下rxNDPSig = cellfun (@awgn chanOutNDP,...num2cell(信噪比* (numUsers, 1)),“UniformOutput”、假);

通道状态信息反馈

每个用户使用接收到的NDP信号估计自己的信道,并计算信道状态信息,然后发送回发送器。本例使用每个用户看到的通道的奇异值分解来计算CSI反馈。

垫=细胞(numUsers, 1);uIdx = 1: numUsers%基于每个用户的接收信号计算反馈矩阵垫{uIdx} = vhtCSIFeedback (rxNDPSig {uIdx} (chanDelay (uIdx) + 1:,:),...cfgVHTNDP、uIdx numSTSVec);结束

假设完美反馈,没有CSI的压缩或量化损失,发射机使用零强迫或基于最小均方误差(MMSE)的预编码技术计算数据传输的转向矩阵。两种方法都试图消除感兴趣用户的流内干扰和其他用户的干扰。基于mmse的方法避免了零强迫技术固有的噪声增强。因此,它在低信噪比下性能更好。

%将每个用户CSI打包成一个矩阵numST =长度(垫{1});%子载波数steeringMatrix = 0 (numST总和(numSTSVec)和(numSTSVec));% Nst-by-Nt-by-NstsuIdx = 1:numUsers stsIdx = sum(numSTSVec(1:uIdx-1))+(1:numSTSVec(uIdx));steeringMatrix (:,:, stsIdx) =垫{uIdx};% Nst-by-Nt-by-Nsts结束%强制零或MMSE预编码解决方案如果比较字符串(precodingType“ZF”)delta = 0;% Zero-forcing其他的delta =(numtx /(10 ^(snr / 10)))*眼睛(numtx);%的患者结束我= 1:numST%信道反转预编码h =挤压(steeringMatrix(我::));steeringMatrix(i,:,:) = h/(h'*h + delta);结束%根据转向矩阵设置空间映射cfgVHTMU。SpatialMapping =“自定义”;cfgvhtmu.spatialmappingmatrix = perfute(steeringmatrix,[1 3 2]);

数据传输

随机比特被用作单个用户的有效负载。单元阵列用于保存每个用户的数据位,txDataBits.对于多用户传输,将填充单个用户的有效负载,以使所有用户的传输持续时间相同。这种填充工艺在[1]。在此示例中,为简单起见,有效载荷填充零以为每个用户创建PSDU。

%创建数据序列,每个用户一个txDataBits =细胞(numUsers, 1);psduDataBits =细胞(numUsers, 1);uIdx = 1: numUsers%为每个用户生成有效负载txDataBits{uIdx} = randi([0 1], cfgvhtmuu . apeplength (uIdx)*8,1,'int8');% Pad有效载荷与零形成一个PSDU(txDataBits psduDataBits {uIdx} = {uIdx};...0 (cfgVHTMU.PSDULength (uIdx) -cfgVHTMU.APEPLength (uIdx)) * 8, 1,'int8'));结束

使用格式配置,cfgvhtmu.,以产生多用户VHT波形。

txSig = wlanWaveformGenerator (psduDataBits cfgVHTMU);

获奖者II通道对象不允许输入信号大小一旦锁定,因此我们必须在通过它之前调用释放方法。此外,在重新启动频道时,我们希望它能够在波形之前重新处理NDP,以便准确地模拟信道连续性。仅提取通道输出的波形部分以用于后续处理每个用户。

释放(WINNERChan);%设置ModelConfig。numtimessamples来匹配NDP +的总长度%波形和填充零WINNERChan.ModelConfig.NumTimeSamples =...winnerchan.modelconfig.numtimsamples +长度(txsig)+ numpadzeros;%通过获胜者II频道传输所有用户,10个全零%采样附加到通道滤波器延迟chanOut = WINNERChan ([txNDPSig;0 (numPadZeros numTx);...TXSIG;零(numpadzeros,numtx)]);%提取每个用户的波形输出@(x) x(NPDSigLen+numPadZeros+1:end,:),“UniformOutput”、假);%增加情况下rxSig = cellfun (@awgn chanOut,...num2cell(信噪比* (numUsers, 1)),“UniformOutput”、假);

每用户数据恢复

每个用户的接收信号都被单独处理。为了简单起见,本例假设没有前端损害,并且接收器知道传输配置。

用户号指定要解码传输的感兴趣的用户。这还用于索引与用户相关的配置对象的向量属性。

%从配置中获取现场索引,在接收器时已知印第安纳州= wlanFieldIndices (cfgVHTMU);%单用户接收器恢复有效载荷位rxDataBits =细胞(numUsers, 1);定标器= 0 (numUsers, 1);spAxes = gobject (sum (numSTSVec), 1);hfig =图(“名字”“每流均衡符号星座”);uIdx = 1:numUsers rxNSig = rxSig{uIdx}(chanDelay(uIdx)+1:end,:);%用户时空流stsU = numSTSVec (uIdx);估算VHT领域的噪声功率lltf = rxNSig (ind.LLTF (1): ind.LLTF (2):);demodLLTF = wlanLLTFDemodulate (lltf chanBW);据nVar = helperNoiseEstimate (demodLLTF chanBW,总和(numSTSVec));%基于VHT-LTF进行信道估计rxvhtltf = rxnsig(ind.vhtltf(1):Ind.vhtltf(2),:);Demodvhtltf = wlanvhtltfdemodulate(rxvhtltf,chanbw,numstsvec);chanest = wlanvhtltfchannelestimate(demodvhtltf,chanbw,numstsvec);%恢复VHT数据字段中的信息位rxvhtdata = rxnsig(ind.vhtdata(1):ind.vhtdata(2),:);[rxdatabits {uidx},〜,eqsym] = wlanvhtdatarecover(rxvhtdata,...据nVar成龙,cfgVHTMU uIdx,...“EqualizationMethod”eqMethod,“PilotPhaseTracking”'没有任何'...“LDPCDecodingMethod”“layered-bp”“MaximumLDPCIterationCount”6);%绘制每个用户所有流的均等符号定标器(uIdx) =装天花板(max (abs([真实(eqsym (:));图像放大(eqsym (:))))));i = 1:stsu子图(NumUsers,Max(Numstsvec),(UIDX-1)* max(numstsvec)+ i);绘图(重塑(eqsym(::,i),[],1),“。”);轴正方形spAxes(sum([0 numSTSVec(1:(uIdx-1))])+i) = gca;存储轴句柄标题([“用户”num2str(UIDX)”,流”num2str(i)]);网格结束结束%所有子图和比例图的比例轴i = 1:numel(spAxes) xlim(spAxes(i),[-max(scaler) max(scaler)]);ylim (spAxes(我),(-麦克斯(标量)马克斯(标量)));结束pos = get(hfig,'位置');集(hfig,'位置',[pos(1)*0.7 pos(2)*0.7 1.3*pos(3) 1.3*pos(4)];

逐流均衡符号星座图验证了仿真参数的有效性。请注意在发送端指定的每个用户的可识别的16QAM、64QAM和QPSK星座。还要观察单个用户在不同流上的EVM下降情况。这是信道反演技术的一个典型特征。

将恢复的数据位与传输的有效载荷位进行比较,以确定误码率。

%比较每个用户的APEPLength信息位ber = inf(1, numUsers);uIdx = 1:numUsers idx = (1:cfgVHTMU.APEPLength(uIdx)*8).';[~,误码率(uIdx)] = biterr (txDataBits {uIdx} (idx) rxDataBits {uIdx} (idx));disp ([“用户的误码率”num2str(UIDX)“:”num2str (ber (uIdx))));结束rng(年代);%恢复RNG状态
用户的误码率1:用户的0比特错误率2:0个用户3:0.014603

在噪声方差范围内的少量比特错误表明,尽管在单个流中看到evm的变化,但每个用户的所有流的数据解码都是成功的。

结论与进一步探索

该实例展示了如何使用WINNER II衰落信道系统对象来模拟802.11ac下的多用户VHT传输。进一步的研究包括修改传输参数、天线阵列、信道场景、LOS与NLOS传播、路径损失建模和阴影建模。

在WLAN工具箱中有这个示例的另一个版本,它为三个用户使用三个独立的TGac衰落信道:802.11ac多用户MIMO预编码(WLAN工具箱)

附录

这个例子使用了来自WLAN工具箱™的以下助手函数:

选定的参考书目

  1. 信息技术IEEE标准。系统间电信和信息交换。局域网和城域网。特殊要求。第11部分:无线局域网介质访问控制(MAC)和物理层(PHY)规范。修改件4:在6ghz以下的频段内实现高吞吐量的增强。

  2. 帕里赫,E.,R. Stacey,“下一代无线局域网:802.11n和802.11ac”,剑桥大学出版社,2013年。

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

  4. istwinner II,“WINNER II渠道模型”,D1.1.2, 2007年9月。

  5. Breit,G.,H. Sampath,S.Vermani等,“TGAC频道模型编纂”,版本12. IEEE 802.11-09 / 0308R12,2010年3月。