主要内容

802.11AC多用户MIMO预编码与获胜者II频道模型

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

介绍

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

这种同步传输处于更高的复杂性,因为成功接收各个用户的有效载荷需要预编码,也称为发送端波束成形。预编码假设发射机已知信道状态信息(CSI)。声音包,如下所述802.11交流传输波束形成(WLAN工具箱)示例,用于在多用户传输中确定每个用户的CSI。每个用户将其单独的CSI馈送到波束形成器。波束形成器使用来自所有用户的CSI来设置后续数据传输的预编码(空间映射)矩阵。

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

该示例生成多用户发送波形,通过多用户获奖者II通道并对每个用户进行解码,以计算错误的比特。在数据传输之前,该示例使用NULL数据分组(NDP)传输来为每个用户发出不同的信道,并在完美反馈的假设下确定预编码矩阵。

检查支持包安装金宝app

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

comm金宝appSupportPackageCheck (“CST_WINNER2”);

仿真参数及配置

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

s = rng (10);%设置RNG种子可重复性%传输参数chanbw ='CBW80';% 信道带宽麻木器= 3;%用户数量numstsvec = [3 1 4];每个用户的流数UserPos = [0 1 2];%用户职位mcsvec = [4 6 8];%MCS每用户:16QAM,64QAM,256QAMapepVec = [520 192 856];每个用户的有效载荷,以字节为单位chcodingvec = {'贝卡''ldpc''ldpc'};每个用户的频道编码%预编码和均衡参数precodingtype ='ZF';%预编码类型;ZF和MMSE的信噪比= 47;%snr在db中eqmethod ='ZF';%均衡方法%创建多用户VHT格式配置对象numtx = sum(numstsvec);cfgvhtmu = wlanvhtconfig('信道带宽',chanbw,......'麻木商'numUsers,......'numtransmitantennas'numTx,......'groupid'2,......“NumSpaceTimeStreams”,numstsvec,......'userPositions',userpos,......'MCS',mcsvec,......“APEPLength”,apepvec,......'ChannelCoding',chcodingvec);

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

听起来(NDP)配置

为了预编码,首先用于确定用户(接收器)所经历的频道。该频道状态信息被发送回发射机,以便用于后续数据传输。假设通道在两个传输中变化缓慢。对于多用户传输,相同的NDP(空数据包)被发送到每个计划的用户[2]。

%VHT探测(NDP)配置,用于相同数量的流cfgVHTNDP = wlanVHTConfig ('信道带宽',chanbw,......'麻木商',1,......'numtransmitantennas'numTx,......'groupid',0,......“NumSpaceTimeStreams”,sum(numstsvec),......'MCS',0,......“APEPLength”, 0);

指定的流的数量是所使用的所有时空流的总和。这允许响应完整的通道。

%生成NULL数据包,没有数据txNDPSig = wlanWaveformGenerator ([], cfgVHTNDP);NPDSigLen = size(txNDPSig, 1);

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

在这个例子中,是1Comm.Winner2Channel.System对象在Communication Toolbox™的Winner II通道模型中设置为模拟三个通道到不同的用户。室内办公室(A1)为每个用户配置了非视线(NLOS)方案。通过固定的电源延迟配置文件,每个用户体验一个16路径衰落通道,最大延迟175次。每个用户也均适用于802.11ac的低移动性。

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

%为获胜者II通道设置布局参数aa = winner2.antennaArray(“台湾”、numTx 0.2);为了i = 1:numusers aa(i + 1)= winner2.antennaArray('Ula',numstsvec(i),0.05);结尾Staidx = 2 :(麻木器+ 1);apidx = {1};rndseed = 12;cfglayout = winner2.layoutparset(staidx,apidx,numusers,aa,[],rndseed);cfglayout.pairing = [(1,Numusers); 2 :(麻木器+ 1)];对所有用户的一个接入点cfgLayout。numUsers ScenarioVector = 1 (1);所有链接的%A1场景cfglayout.propagconditionVector =零(1,Numusers);%仿真结果为了我= 1:麻木器每个用户的%随机设置速度v = rand(3,1) -  0.5;cfglayout.stations(i + 1).velocity = v / r $(v,'fro');结尾%设置WINNER II通道的模型参数cfgModel = winner2.wimparset;cfgModel。FixedPdpUsed ='是的';cfgmodel.fixedanglesused =.'是的';cfgmodel.intraclusterdsused ='不';cfgmodel.randomseed = 111;%可重复性%3用户的最大速度为1m / s。设置采样度%字段以确保采样率与通道带宽匹配。maxMSVelocity = max(cell2mat(cellfun(@(x)) norm(x,'fro'),......{cfglayout.stations.velocity},“UniformOutput”,错误的)));cfgmodel.uniformtimesampling ='是的';cfgmodel.sampleDenty = round(physconst('LightSpeed'/......cfgmodel.centerfrequency / 2 /(maxmsvelocity / wlansamplervere(cfgvhtmu))));%创建获胜者II通道系统对象winnerchan = comm.winner2channel(cfgmodel,cfglayout);%调用info方法来检查一些派生信道参数chanInfo = info (WINNERChan)
chaninfo = struct with字段:numlinks:3个numbselements:[8 8] nummselements:[3 1 4] NumPaths:[16 16] Samplege:[8.0000E + 07 8.0000E + 07 8.0000E + 07] ChannelFilterdelay:[77 7] NumSamplesProcessed:0

存储每个用户的信道滤波延迟以解释其在接收器处的补偿。在实践中,将使用符号定时估计。在发射机处,附加额外的10个全零样本以解释通道过滤器延迟。

chanDelay = chanInfo.ChannelFilterDelay;numPadZeros = 10;%设置modelconfig.numtimesample,以匹配输入信号的长度%避免警告winnerchan.modelconfig.numtimesamples = npdsiglen + numpadzeros;%声音所有用户的获胜者II频道chanoutndp = winnerchan([txndpsig; zeros(numpadzeros,numtx)]);%adgn.rxndpsig = cellfun(@ awgn,chanoutndp,......num2cell(SNR *那些(Numusers,1)),“UniformOutput”、假);

信道状态信息反馈

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

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

假设完美的反馈,没有CSI的压缩或量化损耗,发射器使用基于零强制或最小均线 - 误差(MMSE)的预编码技术计算用于数据传输的转向矩阵。这两种方法都试图取消对感兴趣的用户的流内干扰和其他用户引起的干扰。基于MMSE的方法避免了零强制技术固有的噪声增强。结果,它在低SNR时表现更好。

%将每个用户CSI包装为矩阵numst = length(mat {1});%子载波数steeringmatrix = zeros(numst,sum(numstsvec),sum(numstsvec));% Nst-by-Nt-by-Nsts为了uIdx = 1:numUsers stsIdx = sum(numSTSVec(1:uIdx-1))+(1:numSTSVec(uIdx));steeringMatrix (:,:, stsIdx) =垫{uIdx};% Nst-by-Nt-by-Nsts结尾%零强制或MMSE预编码解决方案如果比较字符串(precodingType'ZF')delta = 0;%零强制别的delta =(numtx /(10 ^(snr / 10)))*眼睛(numtx);%的患者结尾为了我= 1:numst%信道反演预编码h =挤压(steeringmatrix(i,:,:));steeringmatrix(我,:,:) = h /(h'* h + delta);结尾%根据转向矩阵设置空间映射cfgvhtmu.spatialmapping =.“自定义”;cfgvhtmu.spatialmappingmatrix = perfute(steeringmatrix,[1 3 2]);

数据传输

随机位用作各个用户的有效载荷。单元阵列用于保存每个用户的数据位,txDataBits.对于多用户传输,填充了单个用户的有效负载,以便所有用户的传输持续时间相同。这个填充过程在[1]。在此示例下,为了简化,有效载荷与零填充以为每个用户创建PSDU。

%创建数据序列,每个用户一个Txdatabits = Cell(Numusers,1);psdudatabits = cell(麻木器,1);为了UIDX = 1:麻木器%为每个用户生成有效负载txdatabits {uidx} = randi([0 1],cfgvhtmu.apeplenth(uidx)* 8,1,'int8');用零的%pad有效载荷形成psdu(txDataBits psduDataBits {uIdx} = {uIdx};......零((cfgvhtmu.psdulength(uidx)-cfgvhtmu.apeplength(uidx))* 8,1,'int8'));结尾

使用格式配置,cfgvhtmu.如有转向矩阵,以生成多用户VHT波形。

txSig = wlanWaveformGenerator (psduDataBits cfgVHTMU);

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

释放(WINNERChan);%设置ModelConfig。NumTimeSamples来匹配NDP +的总长度%波形和填充零WINNERChan.ModelConfig.NumTimeSamples =......winnerchan.modelconfig.numtimsamples +长度(txsig)+ numpadzeros;%通过获胜者II通道发送所有用户,10个全零%样本附加以考虑通道过滤器延迟chanOut = WINNERChan ([txNDPSig;0 (numPadZeros numTx);......TXSIG;零(numpadzeros,numtx)]);%提取每个用户的波形输出chanout = cellfun(@(x)x(npdsiglen + numpadzeros + 1:结束,:),chanout,“UniformOutput”、假);%adgn.rxSig = cellfun (@awgn chanOut,......num2cell(SNR *那些(Numusers,1)),“UniformOutput”、假);

每个用户的数据恢复

每个用户的接收信号都被单独处理。为了简单起见,该示例假定没有前端损坏,并且发送配置由接收端已知。

用户号码指定用于传输解码的感兴趣的用户。这也用于索引到用户特定于用户特定对象的矢量属性。

%从配置中获取现场索引,在接收器时已知IND = WLANFIELDINDINDICES(CFGVHTMU);%单用户接收者恢复有效负载位rxdatabits = cell(Numusers,1);缩放器=零(麻木器,1);spaxes = gobjects(总和(numstsvec),1);hfig = figure('名称''每流均等符号星座');为了UIDX = 1:NUMUSERS RXNSIG = RXSIG {UIDX}(Chandelay(UIDX)+1:结束,:);%用户时空流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,......'均衡 - 方法',eqmethod,“PilotPhaseTracking”'没有任何'......“LDPCDecodingMethod”'分层BP''themplyldpciterationcount'6);%绘制每个用户所有流的均等符号缩放器(UIDX)= CEIL(MAX(ABS(ABS(eqsym(:)); impt(eqsym(:)))))))));为了i = 1:stsu子图(NumUsers,Max(NumStsvec),(UIDX-1)* MAX(NumStsvec)+ i);绘图(重塑(eqsym(:::,i),[],1),'。');轴正方形spax(sum([0 numstsvec(1 :( uidx-1)])+ i)= gca;%储存轴手柄标题(['用户'num2str(UIDX)”,流”num2str(i)]);网格;结尾结尾所有子尺度和比例图的%尺度轴为了i = 1:NUMER(SPAX)XLIM(SPAX(I),[ -  MAX(Scaler)Max(Scaler)]);ylim(spaxes(i),[ -  max(scaler)max(scaler)]);结尾pos = get(hfig,'位置');套装(HFIG,'位置',[POS(1)* 0.7 POS(2)* 0.7 1.3 * POS(3)1.3 * POS(4)]);

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

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

%将恢复位与每个用户Apepleencth信息位进行比较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:用户3:0.014603

尽管在各个流中看到的EVMS的变化,但噪声方差在噪声方差内的少量错误错误表示为每个用户的所有流进行成功的数据解码。

结论和进一步的探索

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

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

附录

此示例使用WLAN工具箱™中的以下助手函数:

选定的书目

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

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

  3. IEEE STD 802.11™-2012 IEEE信息技术标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格。

  4. IST获奖者II,“Winner II频道模型”,D1.1.2,2007年9月。

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