主要内容

802.11ac多用户MIMO预编码

本例显示了衰落信道上802.11ac™多用户下行链路传输的发送和接收处理。该示例使用基于信道奇异值分解(SVD)的线性预编码技术。

简介

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

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

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

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

仿真参数及配置

对于802.11ac,最多允许有8个空间流。本例中使用了三个用户的6x6 MIMO配置,其中第一个用户有三个流,第二个用户有一个流,第三个用户有两个流分配给它。最多四个用户的不同速率参数和有效载荷大小被指定为矢量参数。在传输配置中根据活动用户的数量对它们进行适当的索引。

S = rng(21);为可重复性设置RNG种子传输参数chanBW =“CBW80”;通道带宽%numUsers = 3;%活动用户数numSTSAll = [3 1 2 2];% 4个用户的流量userPos = [0 1 2 3];最多4个用户的用户位置mcsVec = [4 6 2 2];最多4个用户apepVec = [15120 8192 5400 6000];%有效负载,以字节为单位,用于4个用户chCodingVec = {“* *”,“方法”,“方法”,“* *”};4个用户的信道编码通道和接收器参数chanMdl =“模型(一个”;TGac衰落信道模型precodingType =“ZF”;%预编码类型;ZF或MMSE信噪比= 38;%信噪比(dB)eqMethod =“ZF”;均衡法适当地创建多用户VHT格式配置对象%索引到活动用户的向量值如果(numUsers==1) groupID = 0;其他的groupID = 2;结束numSTSVec = numSTSAll(1:numUsers);numTx = sum(numSTSVec);cfgVHTMU = wlanVHTConfig(“ChannelBandwidth”chanBW,...“NumUsers”numUsers,...“NumTransmitAntennas”numTx,...“GroupID”groupID,...“NumSpaceTimeStreams”numSTSVec,...“UserPositions”userPos (1: numUsers),...“主持人”mcsVec (1: numUsers),...“APEPLength”apepVec (1: numUsers),...“ChannelCoding”chCodingVec (1: numUsers));

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

测深(NDP)配置

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

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

指定的流的数量是使用的所有时空流的总和。这样就可以播放完整的通道。

生成空数据包,没有数据txNDPSig = wlanWaveformGenerator([], cfgVHTNDP);

传输通道

TGac多用户信道由接入点和空间分离站之间的独立单用户MIMO信道组成[3.].在本例中,相同的延迟配置文件Model-A通道应用于每个用户,尽管各个用户可能遇到不同的情况。平坦衰落信道允许一个更简单的接收器,无需前端同步。还假设每个用户的接收天线数量等于分配给他们的时空流的数量。

本例中使用单元格数组存储每个用户元素,允许灵活数量的用户。在这里,作为一个例子,每个用户的TGac通道的每个实例都存储为单元格数组的一个元素。

创建三个独立的通道TGAC = cell(numUsers, 1);chanSeeds = [1111 2222 3333 4444];最多4个用户uIndex = [10 5 2 1];最多4个用户chanDelay = 0 (numUsers, 1);uIdx = 1:numUsers TGAC{uIdx} = wlanTGacChannel(...“ChannelBandwidth”, cfgVHTMU。ChannelBandwidth,...“DelayProfile”chanMdl,...“UserIndex”uIndex (uIdx),...“NumTransmitAntennas”numTx,...“NumReceiveAntennas”numSTSVec (uIdx),...“RandomStream”,“mt19937ar with seed”,...“种子”chanSeeds (uIdx),...“SampleRate”wlanSampleRate (cfgVHTMU),...“TransmitReceiveDistance”5);chanInfo = info(TGAC{uIdx});chanDelay(uIdx) = chanInfo.ChannelFilterDelay;结束

每个用户的通道使用不同的种子来生成随机数。指定了不同的用户索引,以允许对群集的到达(AoA)和离开(AoD)角度应用随机角度偏移。信道滤波延迟被存储以允许在接收端进行补偿。在实践中,将使用符号时序估计。

附加零以允许通道过滤器延迟txNDPSig = [txNDPSig;0 (10, numTx)];为每个用户播放所有传输流的独立频道rxNDPSig = cell(numUsers, 1);uIdx = 1:numUsers rxNDPChan = TGAC{uIdx}(txNDPSig);为每个接收者增加WGNrxNDPSig{uIdx} = awgn(rxNDPChan, snr);结束

信道状态信息反馈

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

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

假设完美反馈,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);通过每个用户衰落信道传输rxSig = cell(numUsers, 1);uIdx = 1:numUsers附加零以允许通道过滤器延迟rxSig{uIdx} = TGAC{uIdx}([txSig;0 (10, numTx)]);结束

每用户数据恢复

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

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

从配置中获取字段索引,假设在接收端已知ind = wlanFieldIndices(cfgVHTMU);%单用户接收器回收有效载荷位rxDataBits = cell(numUsers, 1);标量= 0 (numUsers, 1);spAxes = gobjects(sum(numSTSVec), 1);Hfig = figure(“名字”,“每流均衡符号星座”);uIdx = 1:numUsers为每个接收者增加WGNrxNSig = awgn(rxSig{uIdx}, snr);rxNSig = rxNSig(chanDelay(uIdx)+1:end,:);%用户时空流stsU = numSTSVec(uIdx);基于VHT-LTF进行信道估计rxhtltf = rxNSig(ind.VHTLTF(1):ind.VHTLTF(2),:);demodVHTLTF = wlanVHTLTFDemodulate(rxVHTLTF, chanBW, numSTSVec);chanEst = wlanVHTLTFChannelEstimate(demodVHTLTF, chanBW, numSTSVec);获得单个流通道估计chanEstSSPilots = vhtSingleStreamChannelEstimate(demodVHTLTF,cfgVHTMU);从波形中提取VHT数据样本rxVHTData = rxNSig(ind.VHTData(1):ind.VHTData(2),:);估计VHT数据场的噪声功率nVar = vhtNoiseEstimate(rxVHTData,chanEstSSPilots,cfgVHTMU);恢复VHT数据字段中的信息位[rxDataBits{uIdx}, ~, eqsym] = wlanVHTDataRecover(rxVHTData,...chanEst, nVar, cfgVHTMU, uIdx,“EqualizationMethod”eqMethod,...“PilotPhaseTracking”,“没有”,“LDPCDecodingMethod”,“norm-min-sum”);为每个用户的所有流绘制均衡符号标量(uIdx) = ceil(max(abs([real(eqsym(:)));图像放大(eqsym (:))))));i = 1:stsU subplot(numUsers, max(numSTSVec), (uIdx-1)*max(numSTSVec)+i);Plot(重塑(eqsym(:,:,i), [], 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.00013228用户2误码率:0用户3误码率:0

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

结论及进一步探索

该示例展示了多用户传输配置、独立的每用户信道建模以及使用信道反转预编码技术的单个接收处理。

进一步的探索包括修改传输和信道参数,替代预编码技术,更现实的接收机和反馈机制结合延迟和量化。

附录

本例使用了以下helper函数:

选定的参考书目

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

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

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