主要内容

大规模MIMO混合波束形成

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

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

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

介绍

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

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

与当前的无线系统相比,毫米波段的波长要小得多。虽然这允许阵列在相同的物理尺寸内包含更多的元素,但提供一个发射接收(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=总和(prm.numSTSVec);%必须是2的幂prm.numtx = prm.numsts * 8;%基站发射天线数量(2个功率)prm.numRx=prm.numSTSVec*4;%每个用户的接收天线数(任意>=numSTSVec)%每个用户具有相同的调制prm.bitsPerSubCarrier=4;%2:QPSK,4:16QAM,6:64QAM,8:256QAMprm.numDataSymbols=10;%OFDM数据符号数%MS位置:假设原点为BS%指定为[方位角;仰角]度的角度%az在[-180]范围内,el在[-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;%28 GHz系统prm.chanSRate=100e6;%信道采样率,100毫秒/秒圆型=“分散”;%信道选项:“散射”、“MIMO”prm.NFig=8;%噪声系数(增加至恶化,5-10 dB)prm.N天数=500;%Frf、Fbb分区的光线数

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

prm.fftlength = 256;prm.cyclicprefixlength = 64;prm.numcarriers = 234;prm.nullcarrierindices = [1:7 129 256-5:256]'%守卫和直流prm.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;%每个用户的代码速率相同numtails = 6;%终止尾位数prm.numFrmBits=numSTSVec.*(prm.numDataSymbols*prm.numCarriers*...prm.bitsPerSubCarrier*编码率)-numails;prm.modMode=2^prm.bitsPerSubCarrier;%调制顺序%信道滤波器延迟的原因numpadsym = 3;零的符号数量prm.numPadZeros=numPadSym*(prm.FFTLENGHT+prm.CYCLICPREFIXLENGHT);

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

prm.clight = physconst('LightSpeed');Prm.lambda = prm.clight / prm.fc;%获取发送和接收数组信息[isTxURA,expFactorTx,isRxURA,expFactorRx]=helperArrayInfo(prm,true);%发送天线阵列定义%数组位置和角度prm.posTx=[0;0;0];%基站/发射阵列位置[x;y;z],米如果伊斯特塞拉%均匀矩形阵列txarray=相控分区阵列(...'大批',分阶段.URA([expFactorTx numSTS],0.5*prm.lambda),...“子阵列选择”,一个(numSTS,numTx),“亚阵列转向”,“习俗”);其他的%均匀线阵txarray=相控.ULA(numTx,“元素间距”,0.5*prm.lambda,...“元素”相位各向同性天线元件(“背靠背”,假);终止prm.posTxElem=getElementPosition(txarray)/prm.lambda;spLoss=zeros(prm.numUsers,1);prm.posRx=zeros(3,prm.numUsers);对于uIdx=1:prm.numUsers%接收阵列如果isRxURA(uIdx)%均匀矩形阵列rxarray=相控分区阵列(...'大批',phased.URA([expFactorRx(uIdx)numSTSVec(uIdx)],...0.5*prm.lambda),“子阵列选择”,一个(numSTSVec(uIdx),...numrx(Uidx)),“亚阵列转向”,“习俗”);prm.posRxElem=getElementPosition(rxarray)/prm.lambda;其他的如果numRx(uIdx)>1%均匀线阵rxarray=相控.ULA(numRx(uIdx),...“元素间距”,0.5*prm.lambda,...“元素”,相位各向同性天线元素);prm.posRxElem=getElementPosition(rxarray)/prm.lambda;其他的rxarray=相位各向同性天线元素;prm.posRxElem=[0;0;0];%LCS终止终止%移动位置[xRx,yRx,zRx]=sph2cart(脱胶剂(prm.mobileAngles(1,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);终止

信道状态信息

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

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

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

%生成前导信号prm.numsts = numtx;%设置为numTx可发出所有频道的声音PreeAblesig = HelpergenProdeamble(PRM);%通过信道传输前导码prm.numsts = numsts;%为通道保留相同的阵列配置[rxPreSig,chanDelay]=助手应用多通道(前置码、prm、spLoss);%信道状态信息反馈hDp=单元(prm.numUsers,1);prm.numSTS=numTx;%设置为numTx以估计所有链接对于uIdx=1:prm.numUsers%前端放大器增益和热噪声rxpreamp = phased.receiverProamp(...“收益”,spLoss(uIdx),...%路径损耗的原因“噪音图”,prm.nfig,“参考温度”,290,...“采样器”,prm.chanSRate);rxPreSigAmp=rxPreAmp(rxPreSig{uIdx});%所用子载波的标度功率rxPreSigAmp=rxPreSigAmp*(sqrt(prm.fft长度-...长度(prm.nullcarrierindices)/ prm.fftlength);%正交频分复用解调rxOFDM=ofdmdemod(rxPreSigAmp(chanDelay(uIdx)+1:...完(努帕泽罗斯-钱德雷公墓(uIdx)),:),公墓长度,...prm.cyclicprefixlength,prm.cyclicprefixlength,...prm.无载货方、prm.飞行员载货方);%基于前导码的信道估计%numCarr、numTx、numRxhDp{uIdx}=helpermmochannelestimate(rxOFDM(:,1:numTx,:),prm);终止

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

混合波束形成

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

对于单用户系统,OMP分区算法对阵列响应向量非常敏感.理想地,这些响应矢量占通道所见的所有散射者,但是对于实际系统和沟道实现,这些响应向量是未知的,因此使用3维空间内的一组随机光线以覆盖尽可能多的散射仪。这prm.N日参数指定光线的数量。

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

%计算传输侧的混合权重如果prm.numUsers==1%单用户OMP[az; el] = [ -  180:180; -90:90] 3d空间,等间距%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 = erfute(steeringmatrix,[1 3 2]);终止%发射阵列模式图如果伊斯特塞拉%第一子载波的URA元素响应模式(txarray,prm.fc,-180:180,-90:90,“类型”,“埃菲尔德”,...'Elementweights'挤压(v(1,:,:),...'繁殖',prm.clight);其他的%乌拉%第一副载波的阵列响应WTS = MFRF。'*挤压(v(1,:,:));模式(txarray,prm.fc,-180:180,-90:90,“类型”,“埃菲尔德”,...“重量”,wts(:,1),'繁殖',prm.clight);终止prm.numsts = numsts;%恢复数据传输

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

数据传输

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

接下来,我们配置系统的数据发射机。该处理包括信道编码、到复杂符号的位映射、将单个数据流拆分到多个发射流、发射流的基带预编码、具有导频映射的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,“输入类型”,“比特”,...'onemaveragepower',对);%映射到图层:每个用户、每个符号、每个数据流stsidx = sum(numstsvec(1 :( uidx-1)))+(1:numstsvec(Uidx));griddata(:,:,stsidx)=重塑(映射yms,prm.numcarriers,...prm.numDataSymbols,numSTSVec(uIdx));终止%对子载波应用预编码权重,假设完美反馈preData=复数(零(prm.numCarriers,prm.numDataSymbols,numSTS));对于symIdx=1:prm.numDataSymbols对于carridx = 1:prm.numcarriers q =挤压(v(carridx,:,:));organq = q * sqrt(numtx)/ norm(q,“fro”);preData(carrIdx,symIdx,:)=压缩(gridData(carrIdx,symIdx,:))...*normQ;终止终止%多天线导频飞行员= HelperGenPilots(PRM.Numdatasymbols,Numsts);%数据的OFDM调制txOFDM=ofdmmod(预数据、prm.FFT长度、prm.CyclicPrefixLength、,...PRM.NULLCARRIERINDICES,PRM.PILOTCARRIERINDICES,飞行员);%所用子载波的标度功率txOFDM=txOFDM*(prm.fft长度/...sqrt((prm.fft长度(prm.nullcarrierndices));%生成带有反馈权重的前导码并预先发送到数据preambleSigD=helperGenPreamble(prm,v);txSigSTS=[preambleSigD;txOFDM];%射频波束形成:将Frf应用于数字信号%每个天线单元连接到每个数据流txSig=TXSIGST*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.fftlength-length-(prm.nullcarrierindices)).../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);%前端放大器增益和热噪声rxpreamp = phased.receiverProamp(...“收益”,spLoss(uIdx),...%路径损耗的原因“噪音图”,prm.nfig,“参考温度”,290,...“采样器”,prm.chansrate);rxsigamp = rxpreamp(rxsig {uidx});%占用子载波的缩放功率rxSigAmp=rxSigAmp*(sqrt(prm.FFT长度(prm.NullCarrierIndices)).../prm.fft长度);%正交频分复用解调rxOFDM=ofdmdemo(rxSigAmp(chanDelay(uIdx)+1:...完(努帕泽罗斯-钱德雷公墓(uIdx)),:),公墓长度,...prm.cyclicprefixlength,prm.cyclicprefixlength,...prm.无载货方、prm.飞行员载货方);%基于映射前导的信道估计HD = Helpermimochannelestimate(Rxofdm(:,1:numsts,:),prm);%MIMO均衡%为感兴趣的用户索引到流中[rxEq,CSI]=helperminoequalize(rxOFDM(:,numSTS+1:end,:),hD(:,stsIdx,:);%软解调rxSymbs=rxEq(:)/sqrt(numTx);rxLLRBits=qamdemod(rxSymbs,prm.modMode,'onemaveragepower'符合事实的...“输出类型”,“approxllr”,“噪音回避”,nVar);%解码前应用CSIrxLLRtmp=重塑(rxLLRBits,prm.bitsPerSubCarrier,[],...Prm.numdatasymbols,Stsu);csitmp = REPAPE(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)]);网格在…上;终止%计算并显示EVMevm=通信evm(“正常化”,“平均星座功率”,...“引用信号源”,“根据参考星座估计”,...“参考告知”,...qammod((0:prm.modMode-1)’,prm.modMode,'onemaveragepower',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(s);%恢复rng状态

结论与进一步探讨

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

该组可配置参数包括用户数,每个用户的数据流数,发送/接收天线元件,阵列位置和信道模型的数量。调整这些参数您可以研究参数的个人或对整个系统的组合效果。作为示例,各不相同:

  • 用户数量,prm.numusers.以及它们相应的数据流,PRM.NUMSTSVEC.,在多用户和单用户系统之间切换,或

  • 频道类型,圆型

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

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

参考

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

  2. 李Z.,S. HAN和A. F. Molisch。“用于毫米波多用户大量MIMO下行链路的混合波束形成设计。”IEEE ICC 2016,通信研讨会的信号处理。

  3. El Ayach,Oma,等。“在毫米波MIMO系统中”空间稀疏预编码“。无线通信的IEEE交易,Vol。2014年3月13日,第3月3日,第1499-1513。

  4. Adhikary A.,J.Nam,J-Y Ahn和G. Caire。“联合空间分裂与复用 - 大规模阵列制度。”IEEE关于信息理论的交易,Vol。59,2013年10月10日,第10月,第641-6463333。

  5. Spencer Q.,A.Swindlehurst,M.Haardt,“多用户MIMO信道中下行链路空间复用的迫零方法”,《信号处理IEEE交易》,第52卷,第2期,2004年2月,第461-471页。

  6. Shui,D. S.,G.Foschini,M. J. Gans和J. M. Kahn。“褪色相关性及其对多元首天线系统能力的影响。”通信的IEEE交易,卷。48,2000年3月3日,第502-513页。