大规模MIMO混合波束形成

该示例显示了如何在大规模MIMO通信系统的发射端使用混合波束形成,使用多用户和单用户系统的技术。该示例使用全信道探测来确定发射机处的信道状态信息。它将所需的预编码划分为数字基带和nalog RF组件,对多用户和单用户系统使用不同的技术。简化的全数字接收机恢复多个传输数据流,以突出通信系统的共同优点,即EVM和BER。

该示例采用了基于散射的空间信道模型,该模型考虑了发射/接收空间位置和天线方向图。还提供了一个更简单的静态平坦MIMO信道,用于链路验证。

该示例需要通信工具箱™和相控阵系统工具箱™。

介绍

对高数据速率和更多用户容量的不断增长的需求增加了更有效地使用可用频谱的需求。多用户MIMO (MU-MIMO)通过允许一个基站(BS)发射机与多个移动基站(MS)接收机使用相同的时频资源同时通信来提高频谱效率。海量MIMO允许BS天线单元的数量达到数十或数百个数量级,从而也将单元中的数据流数量增加到一个较大的值。

下一代5G无线系统使用毫米波(mmWave)频段来利用其更宽的带宽。5G系统还部署了大规模天线阵列,以减轻毫米波段的严重传播损耗。

与当前的无线系统相比,毫米波段的波长要小得多。虽然这允许阵列在相同的物理尺寸内包含更多的元素,但提供一个发射接收(TR)的成本要高得多模块或RF链,用于每个天线单元。混合收发器是一种实用的解决方案,因为它们在RF中使用模拟波束形成器,在基带域中使用数字波束形成器,RF链少于发射单元的数量[1].

本示例使用多用户MIMO-OFDM系统突出显示所需预编码在发射机端划分为其数字基带和射频模拟组件相控阵MIMO-OFDM预编码例如,该示例示出了发送端预编码矩阵的公式及其在MIMO-OFDM系统中的应用。

s=rng(67);%为重复性设置RNG状态

系统参数

为示例定义系统参数。修改这些参数以探索其对系统的影响。

%多用户系统,每个用户有单/多流prm.numUsers=4;%用户数prm.numSTSVec=[3 2 1 2];%每个用户独立数据流的数量prm.numSTS= sum(prm.numSTSVec);%必须是2的幂prm.numTx=prm.numSTS*8;%基站发射天线数量(2个功率)人口、难民和移民事务局。numRx = prm.numSTSVec * 4;%每个用户的接收天线数(任意>=numSTSVec)%每个用户具有相同的调制人口、难民和移民事务局。bitsPerSubCarrier = 4;%2:QPSK,4:16QAM,6:64QAM,8:256QAMprm.numDataSymbols= 10;%OFDM数据符号数%MS位置:假设原点为BS%指定为[方位角;仰角]度的角度% az在范围[-180 180],el在范围[-90 90],例如[45;0]最大范围=1000;%在BS 1000米范围内的所有MSsprm.mobileRanges=randi([1最大范围],1,prm.numUsers);prm.mobileAngles=[rand(1,prm.numUsers)*360-180;...兰特(1,百万美元)*180-90];prm.fc=28e9;%28GHz系统人口、难民和移民事务局。chanSRate = 100 e6;%通道采样率,100 Msps圆型=“散射”%信道选项:“散射”、“MIMO”prm.NFig=8;%噪声值(增加至恶化,5-10 dB)prm.nRays= 500;%Frf、Fbb分区的光线数

定义用于系统的OFDM调制参数。

prm.fft长度=256;prm.CyclicPrefixLength=64;prm.numCarriers=234;prm.NullCarrierIndices=[1:7129256-5:256];%警卫和DCprm.PilotCarrierDices=[26 54 90 118 140 168 204 232];Nondaidx=[prm.NullCarrierDices;prm.PilotCarrierDices];prm.CarrierLocations=setdiff((1:prm.FFTLength)’,sort(Nondaidx));numSTS=prm.numSTS;numTx=prm.numTx;numRx=prm.numRx;numSTSVec=prm.numSTSVec;codeRate=1/3;%每个用户的代码速率相同数值=6;%终端尾位数prm.numFrmBits=numSTSVec.*(prm.numDataSymbols*prm.numCarriers*...prm.bitsPerSubCarrier*编码率)-numails;prm.modMode=2^prm.bitsPerSubCarrier;%调制顺序%通道滤波器延迟numPadSym=3;%要归零的符号数人口、难民和移民事务局。numPadZeros = numPadSym * (prm.FFTLength + prm.CyclicPrefixLength);

定义系统的发送和接收阵列以及位置参数。

prm.cLight=physconst(“光速”);prm.lambda=prm.cLight/prm.fc;%获取发送和接收阵列信息[isTxURA, expFactorTx isRxURA expFactorRx] = helperArrayInfo(人口、难民和移民事务局,真实);%发射天线阵列定义%阵列位置和角度prm.posTx=[0;0;0];%基站/发射阵列位置[x;y;z],米如果伊斯特塞拉%均匀矩形阵列txarray=相控分区阵列(...“数组”,分阶段.URA([expFactorTx numSTS],0.5*prm.lambda),...“SubarraySelection”的(numSTS numTx),“亚阵列转向”“习俗”);其他的均匀线性阵列txarray =分阶段。齿龈(numTx“元素间距”,0.5*prm.lambda,...“元素”,分阶段。IsotropicAntennaElement (“背靠背”,假);结束人口、难民和移民事务局。posTxElem = getElementPosition (txarray) / prm.lambda;spLoss = 0 (prm.numUsers, 1);人口、难民和移民事务局。prm.numUsers posRx = 0(3日);uIdx=1:prm.numUsers%接收阵列如果isRxURA(uIdx)%均匀矩形阵列rxarray=相控分区阵列(...“数组”, phased.URA ([expFactorRx (uIdx) numSTSVec (uIdx)],...0.5*prm.lambda),“SubarraySelection”的(numSTSVec (uIdx),...numRx(uIdx)),“亚阵列转向”“习俗”);prm.posRxElem=getElementPosition(rxarray)/prm.lambda;其他的如果numRx(uIdx)>1均匀线性阵列rxarray = phased.ULA (numRx (uIdx),...“元素间距”,0.5*prm.lambda,...“元素”,相位各向同性天线元素);prm.posRxElem=getElementPosition(rxarray)/prm.lambda;其他的rxarray = phased.IsotropicAntennaElement;人口、难民和移民事务局。posRxElem = [0;0;0);%LCS结束结束%移动位置(xRx yRx zRx] = sph2cart(函数(prm.mobileAngles (uIdx)),...deg2rad(prm.mobileAngles(2,uIdx)),...prm.mobileRanges(uIdx));prm.posRx(:,uIdx)=[xRx;yRx;zRx];[toRxRange,toRxAng]=射程角(prm.posTx,prm.posRx(:,uIdx));spLoss(uIdx)=fspl(toRxRange,prm.lambda);结束

信道状态信息

对于空间复用系统,发射机处信道信息的可用性允许应用预编码以最大化感兴趣的方向和信道上的信号能量。在慢变信道的假设下,首先探测信道有助于实现这一点。BS通过使用参考传输对信道进行发声,MS接收机使用该参考传输来估计信道。MS将信道估计信息发送回BS,以计算后续数据传输所需的预编码。

下图显示了建模的通道测深的处理过程。

对于所选的MIMO系统,前导信号通过所有发射天线单元发送,并在接收端处理信道。接收天线单元执行预放大、OFDM解调和所有链路的频域信道估计。

%生成前导信号prm.numSTS=numTx;%设置为numTx以发出所有通道的声音preambleSig=helperGenPreamble(prm);%在信道上发送序言prm.numSTS=numSTS;%为通道保留相同的阵列配置[rxPreSig,chanDelay]=助手应用多通道(前置码、prm、spLoss);%通道状态信息反馈hDp=单元(prm.numUsers,1);prm.numSTS=numTx;%设置为numTx以估计所有链接uIdx=1:prm.numUsers%前端放大器增益和热噪声RxStreamp=相控接收前置放大器(...“收益”,spLoss(uIdx),...%路径损耗的原因“噪音图”,prm.NFig,“ReferenceTemperature”,290,...“采样器”, prm.chanSRate);rxPreSigAmp = rxPreAmp (rxPreSig {uIdx});%所用子载波的标度功率rxPreSigAmp=rxPreSigAmp*(sqrt(prm.fft长度-...长度(prm.nullcarrierDices))/prm.FFTLength);%正交频分复用解调rxOFDM=ofdmdemod(rxPreSigAmp(chanDelay(uIdx)+1:...完(努帕泽罗斯-钱德雷公墓(uIdx)),:),公墓长度,...prm.循环喷射长度,prm.循环喷射长度,...prm.NullCarrierIndices prm.PilotCarrierIndices);%基于前导码的信道估计%numCarr、numTx、numRxhDp{uIdx}=helpermmochannelestimate(rxOFDM(:,1:numTx,:),prm);结束

对于多用户系统,信道估计从每个MS反馈,并由BS用于确定预编码权重。该示例假设完美反馈,没有量化或实现延迟。

混合波束形成

该示例使用正交匹配追踪(OMP)算法[3.]对于单用户系统和联合空分复用(JSDM)技术[24对于多用户系统,确定数字基带Fbb射频模拟降维所选系统配置的预编码权重。

对于单用户系统,OMP分区算法对阵列响应向量敏感. 理想情况下,这些响应向量考虑了通道看到的所有散射体,但对于实际系统和通道实现来说,这些响应向量是未知的,因此使用三维空间中的随机射线集来覆盖尽可能多的散射体。这个prm.nRays参数指定射线的数量。

对于多用户系统,JSDM将具有相似发射信道协方差的用户分组在一起,并通过基于块对角化方法的模拟预编码器抑制组间干扰[5]。在这里,每个用户都被分配到自己的组中,因此不会减少发声或反馈开销。

%计算发送侧的混合权值如果prm.numUsers==1%单用户OMP%在[az;el]=[-180:180;-90:90]三维空间中传播光线,等间距%txang=[-180:360/prm.天数:180;-90:180/prm.天数:90];txang=[兰特(1,公升)*360-180;兰特(1,公升)*180-90];%随机的At=steervec(prm.posTxElem,txang);AtExp=complex(零(prm.numCarriers,大小(At,1),大小(At,2));carrIdx=1:prm.numCarriers AtExp(carrIdx,:,:)=At;%所有子载波相同结束%正交匹配追求混合权重[Fbb,Frf]=omphybweights(hDp{1},numSTS,numSTS,AtExp);v=Fbb;%设置基带预编码器(Fbb)%对于平坦信道,Frf在子载波上是相同的mFrf=排列(平均值(Frf,1),[2 3 1]);其他的%多用户联合空分复用[Fbb,mFrf]=助手JSDMTransmitweights(hDp,prm);%多用户基带预编码%将每个用户的CSI打包到矩阵中(块对角)steeringMatrix=零(prm.numCarriers、sum(numSTSVec)、sum(numSTSVec));uIdx=1:prm.numUsers stsIdx=sum(numSTSVec(1:uIdx-1))+(1:numSTSVec(uIdx));steeringMatrix(:,stsIdx,stsIdx)=Fbb{uIdx};%Nst by Nst by Nst结束v=排列(steeringMatrix[1 3 2]);结束%发射阵列模式图如果伊斯特塞拉%第一子载波的URA元素响应模式(txarray,prm.fc,-180:180,-90:90,“类型”“埃菲尔德”...“元素权重”挤压(v(1,:,:),...“传播速度”,prm.cLight);其他的%齿龈%第一副载波的阵列响应挤压(v(1,:,:);模式(txarray,prm.fc,-180:180,-90:90,“类型”“埃菲尔德”...“重量”,wts(:,1),“传播速度”,prm.cLight);结束prm.numSTS=numSTS;%恢复数据传输

对于建模的宽带OFDM系统,模拟权重,mFrf,是多个子载波上的平均权重。阵列响应模式显示由较强波瓣表示的不同数据流。这些波瓣表示通过波束形成实现的扩展或可分离性混合波束形成简介实例比较了由最优的全数字方法实现的模式,以及由选择的混合方法实现的模式,对于一个单用户系统。

数据传输

该示例模拟了一种架构,其中每个数据流映射到单个射频链,每个天线单元连接到每个射频链。下图显示了这一点。

接下来,我们配置系统的数据发射机。该处理包括信道编码、到复杂符号的位映射、将单个数据流拆分到多个发射流、发射流的基带预编码、具有导频映射的OFDM调制以及用于所有所用发射天线的RF模拟波束形成。

%卷积编码器编码器=公共卷积编码器(...“网格结构”,poly2trellis(7[133 171 165]),...“终止方法”“终止”);txDataBits=单元(prm.numesers,1);gridData=复数(零(prm.numCarriers,prm.numDataSymbols,numSTS));uIdx=1:prm.numUsers%从每个用户的位生成映射符号txDataBits{uIdx}=randi([0,1],prm.numFrmBits(uIdx),1);encodedBits=encoder(txDataBits{uIdx});%位到QAM符号映射mappedSym=qammod(encodedBits,prm.modMode,“输入类型”“比特”...“单位平均功率”,对);%映射到图层:每个用户、每个符号、每个数据流stsIdx=sum(numSTSVec(1:(uIdx-1))+(1:numSTSVec(uIdx));gridData(:,:,stsIdx)=重塑(mappedSym,prm.numCarriers,...prm.numDataSymbols,numSTSVec(uIdx));结束%对子载波应用预编码权重,假设完美反馈preData=复数(零(prm.numCarriers,prm.numDataSymbols,numSTS));symIdx=1:prm.numDataSymbolscarrIdx=1:prm.numCarriers Q=挤压(v(carrIdx,:,:);normQ=Q*sqrt(numTx)/normQ(Q,“fro”);preData (carrIdx symIdx:) =挤压(gridData (carrIdx、symIdx:))。...*normQ;结束结束% Multi-antenna飞行员pilots=helperGenPilots(prm.numDataSymbols,numSTS);%数据的OFDM调制txOFDM = ofdmmod (preData prm.FFTLength prm.CyclicPrefixLength,...prm.空载体、prm.引航员载体、引航员);%所用子载波的标度功率txOFDM=txOFDM*(prm.fft长度/...√(prm.FFTLength-length prm.NullCarrierIndices))));%生成带有反馈权重的前导码并预先发送到数据preambleSigD=helperGenPreamble(prm,v);txSigSTS=[preambleSigD;txOFDM];%射频波束形成:将Frf应用于数字信号%每个天线单元连接到每个数据流txSig = txSigSTS * mFrf;

对于选定的全连接射频架构,每个天线单元使用prm.numSTS相移器,如给定的个别列mFrf矩阵

数据发送和接收的处理如下所示。

信号传播

该示例为空间MIMO信道和更简单的静态平坦MIMO信道提供了一个选项,用于验证目的。

散射模型采用参数化散射体数目的单反射射线追踪近似。对于本例,散射体的数量被设置为100。“散射”选项将散射体随机放置在接收器周围的一个球体内,类似于单环模型[6].

信道模型允许路径损耗建模以及视线(LOS)和非视线传播条件。该示例假设具有线性或矩形几何结构的非视距传播和各向同性天线单元方向图。

%将空间定义的信道应用于发射信号[rxSig,chanDelay]=帮助器应用多通道(txSig,prm,spLoss,前置码SIG);

同一信道用于探测和数据传输。数据传输具有更长的持续时间,并由数据符号数参数控制,prm.numDataSymbols.在探测级和传输级之间的信道演化模型中,将前置信号前置到数据信号。序言使通道进入数据传输的有效状态,并且在通道输出中被忽略。

对于多用户系统,对每个用户的独立信道进行建模。

接收放大和信号恢复

按用户建模的接收机通过放大和添加热噪声来补偿路径损耗。与发射机一样,MIMO-OFDM系统中使用的接收机包含许多阶段,包括OFDM解调、MIMO均衡、QAM解映射和信道解码。

hfig =图(“名字”“每个流的均衡符号星座”);scFact=((prm.fft长度(prm.nullcarrierndices)).../prm.fftlelength^2)/numTx;nVar=noisepow(prm.chanSRate,prm.NFig,290)/scFact;解码器=comm.ViterbiDecoder(“InputFormat”“未量化”...“网格结构”,poly2trellis(7[133 171 165]),...“终止方法”“终止”“OutputDataType”“双人”);uIdx=1:prm.numUsers stsU=numSTSVec(uIdx);stsIdx=sum(numSTSVec(1:(uIdx-1))+(1:stsU);%前端放大器增益和热噪声RxStreamp=相控接收前置放大器(...“收益”,spLoss(uIdx),...%路径损耗的原因“噪音图”,prm.NFig,“ReferenceTemperature”,290,...“采样器”,prm.chanSRate);rxSigAmp=rxStreamp(rxSig{uIdx});%已占用子载波功率比例rxSigAmp=rxSigAmp*(sqrt(prm.FFT长度(prm.NullCarrierIndices)).../prm.fft长度);%正交频分复用解调rxOFDM=ofdmdemo(rxSigAmp(chanDelay(uIdx)+1:...完(努帕泽罗斯-钱德雷公墓(uIdx)),:),公墓长度,...prm.循环喷射长度,prm.循环喷射长度,...prm.NullCarrierIndices prm.PilotCarrierIndices);%基于映射前导的信道估计hD=帮助终端信道估计(rxOFDM(:,1:numSTS,:),prm);%MIMO均衡%为感兴趣的用户索引到流中[rxEq, CSI] = helperMIMOEqualize (rxOFDM (numSTS + 1::,:),高清(:,stsIdx:));%软解调rxSymbs=rxEq(:)/sqrt(numTx);rxLLRBits=qamdemod(rxSymbs,prm.modMode,“单位平均功率”符合事实的...“OutputType”“approxllr”“噪音回避”,nVar);%解码前应用CSIrxLLRtmp=重塑(rxLLRBits,prm.bitsPerSubCarrier,[],...prm.numDataSymbols,stsU);csitmp=重塑(CSI,1,[],1,numSTSVec(uIdx));rxScaledLLR=rxLLRtmp.*csitmp;%软输入信道解码rxdecode=解码器(rxScaledLLR(:);%解码接收位rxBits = rxDecoded (1: prm.numFrmBits (uIdx));%为每个用户的所有流绘制均衡符号scaler=ceil(max(abs([real(rxSymbs(:);imag(rxSymbs(:)]))));i=1:stsU子地块(prm.numUsers,最大值(numSTSVec),(uIdx-1)*最大值(numSTSVec)+i);绘图(重塑(rxEq(:,:,i)/sqrt(numTx),[],1),“。”);轴线广场xlim(gca,[-scaler-scaler]);ylim(gca,[-scaler-scaler]);title([“你”num2str(uIdx)“,DS”num2str(i)];网格在…上结束%计算并显示EVM维生素与= comm.EVM (“正常化”的平均星座力量”...“引用信号源”“根据参考星座估计”...“参考告知”...qammod((0:prm.modMode-1)’,prm.modMode,“单位平均功率”,1)); rmsEVM=evm(rxSymbs);disp([“用户”num2str(uIdx)];disp(['RMS EVM(%)='num2str (rmsEVM)]);%计算并显示误码率ber=comm.ErrorRate;measures=ber(txDataBits{uIdx},rxBits);fprintf('BER=%.5f;位数=%d;错误数=%d\n'...措施(1)、措施(3)、措施(2));结束
用户1 RMS EVM(%)=0.38361 BER=0.00000;位数=9354;错误数量=0用户2 RMS EVM(%)=1.0311 BER=0.00000;位数=6234;错误数量=0用户3 RMS EVM(%)=2.1462 BER=0.00000;位数=3114;错误数量=0用户4 RMS EVM(%)=1.0024 BER=0.00000;位数=6234;错误数=0

对于建模的MIMO系统,所显示的均衡符号的接收星座提供了接收的定性评估。实际误码率通过比较每个用户的实际发送比特和接收解码比特来提供定量数字。

rng(年代);%恢复RNG状态

结论与进一步探讨

该示例重点介绍了混合波束形成在多用户MIMO-OFDM系统中的应用。它允许您通过更改一些系统范围的参数来探索各种信道模型的不同系统配置。

这组可配置参数包括用户数量、每个用户的数据流数量、发射/接收天线单元数量、阵列位置和信道模型。调整这些参数可以研究参数对整个系统的单独或组合影响。例如,可以改变:

  • 用户数量,珠穆塞斯,以及相应的数据流,prm.numSTSVec,在多用户和单用户系统之间切换,或

  • 渠道类型,圆型

  • 射线的数量,prm.nRays,用于单用户系统。

探索示例使用的以下帮助器函数:

工具书类

  1. Molisch,A.F.等人,“大规模MIMO的混合波束形成:一项调查”,《IEEE®通信杂志》,第55卷,第9期,2017年9月,第134-141页。

  2. 李志强、韩南山和莫利希,“毫米波多用户大规模MIMO下行链路的混合波束形成设计”,IEEE ICC 2016,通信信号处理研讨会。

  3. El Ayach,Oma,等人,《毫米波MIMO系统中的空间稀疏预编码》,《IEEE无线通信学报》,第13卷,第3期,2014年3月,第1499-1513页。

  4. Adhikary A.,J.Nam,J-Y Ahn和G.Caire.“联合空分复用-大规模阵列体制”,《IEEE信息论学报》,第59卷,第10期,2013年10月,第6441-6463页。

  5. 史文彬,“多用户MIMO信道下行空间多路复用的零强迫方法”。IEEE信号处理学报,第52卷,第2期,2004年2月,第461-471页。

  6. Shui,D.S.,G.J.Foschini,M.J.Gans和J.M.Kahn.“衰落相关性及其对多元件天线系统容量的影响”,《IEEE通信学报》,第48卷,第3期,2000年3月,第502-513页。