主要内容

基于WINNER II信道模型的802.11ac多用户MIMO预编码

本例显示了在WINNER II衰落信道上802.11ac™多用户下行链路传输的发送和接收处理。要运行此示例,必须下载并安装WINNER II通信工具箱™附加组件的信道模型。只需要一个WINNER II通道系统对象™来设置从一个接入点到所有用户的通道。

简介

802.11ac支金宝app持最多4个用户的下行(接入点到站)多用户传输和最多8个传输天线,以增加链路的总吞吐量[1].根据用户的预定传输时间,调度器查找准备传输给其他用户的其他较小的数据包。如果可用,它会按照相同的间隔对这些用户进行调度,从而减少多次传输所花费的总时间。

这种同步传输具有更高的复杂性,因为成功接收单个用户的有效载荷需要预编码,也称为传输端波束形成。预编码假定信道状态信息(CSI)在发送端是已知的。方法中所描述的探测包802.11ac传输波束形成(WLAN工具箱)示例,用于确定多用户传输中每个用户的CSI。每个用户都将自己的CSI反馈给波束形成器。波束形成器使用所有用户的CSI设置预编码(空间映射)矩阵,用于后续数据传输。

本例对三用户传输使用信道反转技术,每个用户分配不同数量的空间流,每个用户的速率参数也不同。这个系统可以用下图来描述。

本例生成多用户传输波形,将其通过多用户WINNER II通道,并为每个用户解码接收到的信号以计算出错位。在数据传输之前,本例使用空数据包(NDP)传输为每个用户发出不同的信道,并在完全反馈的假设下确定预编码矩阵。

检查支持包是否安装金宝app

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

comm金宝appSupportPackageCheck (“CST_WINNER2”);

仿真参数及配置

对于802.11ac,最多允许有8个空间流。本例中使用了三个用户的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)eqMethod =“ZF”;均衡法创建多用户VHT格式配置对象numTx = sum(numSTSVec);cfgVHTMU = wlanVHTConfig(“ChannelBandwidth”chanBW,...“NumUsers”numUsers,...“NumTransmitAntennas”numTx,...“GroupID”2,...“NumSpaceTimeStreams”numSTSVec,...“UserPositions”userPos,...“主持人”mcsVec,...“APEPLength”apepVec,...“ChannelCoding”, chCodingVec);

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

测深(NDP)配置

对于预编码,首先使用信道探测来确定用户(接收机)所经历的信道。此信道状态信息被发送回发射机,用于后续的数据传输。假设信道在两次传输中变化缓慢。对于多用户传输,相同的NDP(空数据包)被传输到每个预定用户[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);

WINNER II室内办公(A1)场景通道

在这个例子中,是1comm.WINNER2Channel在WINNER II通信工具箱信道模型™中设置系统对象,以模拟面向不同用户的三个信道。为每个用户配置室内办公A1 NLOS场景。使用固定的电源延迟配置文件,每个用户体验到16路衰落信道,最大延迟为175 us。每个用户还被分配了一个适合802.11ac的低移动性。

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

设置WINNER II频道布局参数AA = winner2。AntennaArray (“台湾”、numTx 0.2);i = 1:numUsers AA(i+1) = winner2。AntennaArray (“乌拉”, numSTSVec(我),0.05);结束staaidx = 2:(numUsers+1);APIdx = {1};rndSeed = 12;cfgLayout = winner2.layoutparset(staaidx,APIdx,numUsers,AA,[],rndSeed);cfgLayout。配对= [ones(1,numUsers);2:(numUsers+1)];%所有用户的一个访问点cfgLayout。场景向量= ones(1,numUsers);% A1场景用于所有链接cfgLayout。传播条件向量= 0 (1,numUsers);%仿真结果i = 1:numUsers为每个用户随机设置速度V = rand(3,1) - 0.5;cfgLayout.Stations (i + 1)。速度= v/范数(v,“摇来摇去”);结束WINNER II通道模型参数设置cfgModel = winner2.wimparset;cfgModel。FixedPdpUsed =“是的”;cfgModel。FixedAnglesUsed =“是的”;cfgModel。IntraClusterDsUsed =“不”;cfgModel。RandomSeed = 111;%可重复性3个用户的最大速度为1m/s。设置SampleDensity%字段,以确保采样率与通道带宽匹配。maxMSVelocity = max(cell2mat(cellfun(@(x) norm(x,“摇来摇去”),...{cfgLayout.Stations.Velocity},“UniformOutput”、假)));cfgModel。UniformTimeSampling =“是的”;cfgModel。SampleDensity = round(physconst(“光速”) /...cfgModel.CenterFrequency / 2 / (maxMSVelocity / wlanSampleRate (cfgVHTMU)));创建WINNER II通道系统对象WINNERChan = com . winner2channel (cfgModel, cflayout);调用info方法检查一些派生通道参数chanInfo = info(WINNERChan)
chanInfo = struct with fields: NumLinks: 3 numselements: [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

存储每个用户的信道滤波延迟,以说明其在接收端的补偿。在实践中,将使用符号时序估计。在发射机,额外的10个全零样本被追加,以考虑信道滤波器延迟。

chanDelay = chanInfo.ChannelFilterDelay;numPadZeros = 10;设置ModelConfig。NumTimeSamples来匹配输入信号的长度%避免警告winnerchane . modelconfig . numtimesamples = NPDSigLen + numPadZeros;为所有用户播放WINNER II频道chanOutNDP = WINNERChan([txNDPSig;zero (numPadZeros,numTx)]);添加AWGNrxNDPSig = cellfun(@awgn,chanOutNDP,...num2cell(信噪比* (numUsers, 1)),“UniformOutput”、假);

信道状态信息反馈

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

mat = cell(numUsers,1);uIdx = 1:numUsers根据每个用户接收到的信号计算反馈矩阵mat{uIdx} = vhtCSIFeedback(rxNDPSig{uIdx}(chanDelay(uIdx)+1:end,:),...cfgVHTNDP、uIdx numSTSVec);结束

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

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

数据传输

随机位被用作单个用户的有效载荷。单元格数组用于保存每个用户的数据位,txDataBits.对于多用户传输,单个用户有效载荷被填充,以便所有用户的传输持续时间相同。填充过程在[的9.12.6节中描述。1].在本例中,为简单起见,有效负载用0填充,为每个用户创建一个PSDU。

创建数据序列,每个用户一个txDataBits = cell(numUsers,1);psduDataBits = cell(numUsers,1);uIdx = 1:numUsers为每个用户生成有效负载txDataBits{uIdx} = randi([0 1],cfgVHTMU.APEPLength(uIdx)*8,1,“int8”);%用零填充有效载荷以形成PSDUpsduDataBits{uIdx} = [txDataBits{uIdx};...0 (cfgVHTMU.PSDULength (uIdx) -cfgVHTMU.APEPLength (uIdx)) * 8, 1,“int8”));结束

使用格式配置,cfgVHTMU,结合转向矩阵,生成多用户VHT波形。

txSig = wlanWaveformGenerator(psduDataBits,cfgVHTMU);

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

释放(WINNERChan);设置ModelConfig。NumTimeSamples来匹配NDP加的总长度%波形和填充零WINNERChan.ModelConfig.NumTimeSamples =...winnerchane . modelconfig . numtimesamples + length(txSig) + numPadZeros;通过WINNER II信道为所有用户传输,有10个全零%的样本附加,以考虑信道滤波器延迟chanOut = WINNERChan([txNDPSig;0 (numPadZeros numTx);...txSig;0 (numPadZeros numTx)]);提取每个用户的波形输出chanOut = cellfun(@(x) x(NPDSigLen+numPadZeros+1:end,:),chanOut,“UniformOutput”、假);添加AWGNrxSig = cellfun(@awgn,chanOut,...num2cell(信噪比* (numUsers, 1)),“UniformOutput”、假);

每用户数据恢复

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

用户号指定要为传输解码的用户。这也用于索引特定于用户的配置对象的向量属性。

从配置中获取字段索引,假设在接收端已知ind = wlanFieldIndices(cfgVHTMU);%单用户接收器回收有效载荷位rxDataBits = cell(numUsers,1);标量= 0 (numUsers,1);spAxes = gobjects(sum(numSTSVec),1);Hfig = figure(“名字”“每流均衡符号星座”);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,sum(numSTSVec));基于VHT-LTF进行信道估计rxhtltf = 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) = ceil(max(abs([real(eqsym(:)));图像放大(eqsym (:))))));i = 1:stsU subplot(numUsers,max(numSTSVec),(uIdx-1)*max(numSTSVec)+i);情节(重塑(eqsym(:,:我),[],1),“。”);轴广场spAxes(sum([0 numSTSVec(1:(uIdx-1))])+i) = gca;存储轴句柄标题([“用户”num2str (uIdx)',流'num2str (i)));网格;结束结束%所有子图和比例图的刻度轴i = 1:数字(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).';[~,ber(uIdx)] = biterr(txDataBits{uIdx}(idx),rxDataBits{uIdx}(idx));disp ([“用户误码率”num2str (uIdx)“:”num2str (ber (uIdx))));结束rng(年代);恢复RNG状态
用户1误码率:0用户2误码率:0用户3误码率:0.00014603

在噪声方差范围内的少量误码表明每个用户的所有流都成功解码了数据,尽管在各个流中看到的EVMs存在差异。

结论及进一步探索

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

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

附录

本例使用WLAN Toolbox™中的以下helper函数:

选定的参考书目

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

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

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

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

  5. Breit, G., H. Sampath, S. Vermani等,“TGac通道模型补遗”,第12版。IEEE 802.11-09/0308r12, 2010年3月。