主要内容

大规模的MIMO混合波束形成

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

该示例采用基于散射的空间通道模型,其考虑发送/接收空间位置和天线图案。还提供了更简单的静态平板MIMO通道,可用于链接验证目的。

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

介绍

不断增长的高数据速率和更多用户能力的需求增加了更有效地使用可用频谱的需要。通过允许基站(BS)发射器通过使用相同的时间频率资源与多个移动台(MS)接收器同时通信来改善频谱效率。大规模的MIMO允许BS天线元素的数量大约为数十或数百个,因此还增加了小区中的数据流的数量到大值。

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

与当前的无线系统相比,MMWAVE频带中的波长要小得多。虽然这允许阵列在相同的物理维度内包含更多元素,但是为每个天线元件提供一个发送接收(TR)模块或RF链变得更加昂贵。混合收发器是一种实用的解决方案,因为它们在基带域中的RF和数字波束形成器中使用模拟波束形成器的组合,而RF链越多于发射元素的数量[1]。

此示例使用多用户MIMO-OFDM系统来突出显示所需预编码的划分到发射器端的数字基带和RF模拟组件。在系统上建立突出显示的系统相控阵MIMO-OFDM预编码本实例给出了发送端预编码矩阵的表达式及其在MIMO-OFDM系统中的应用。

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

系统参数

为示例定义系统参数。修改这些参数,查看对系统的影响。

%多用户系统,每个用户单个/多个流prm.numUsers= 4;%用户数量prm.numSTSVec= [3 2 1 2];%每个用户独立数据流的数量PRM.NUMSTS.= sum(prm.numSTSVec);%一定是2的幂人口、难民和移民事务局。numTx = prm.numSTS * 8;百分比的BS发射天线(功率为2)prm.numrx = prm.numstsvec * 4;%每个用户接收天线数量(任意>= numSTSVec)%每个用户具有相同的调制prm.bitspersubcarier = 4;% 2: qpsk, 4: 16qam, 6: 64qam, 8: 256qamprm.numdatasymbols = 10;% OFDM数据符号数% MS职位:以本科学历为基础%指定为[方位角;仰角]度的角度%az范围[-180180],El在范围内[-9090],例如,[45; 0]maxRange = 1000;% BS 1000米以内的所有MSs人口、难民和移民事务局。mobileRanges = randi([1 maxRange],1,prm.numUsers);人口、难民和移民事务局。mobileAngles =[兰德(prm.numUsers) * 360 - 180;......兰特(prm.numUsers) * 180 - 90);人口、难民和移民事务局。fc = 28 e9;% 28 GHz系统prm.chansrate = 100e6;%信道采样率,100 mspsprm.chantype.='散射';%频道选项:'散射','mimo'prm.nfig = 8;%噪声系数(增加到恶化,5-10 dB)prm.nrays = 500;FBB分区的FRF的百分比数量

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

人口、难民和移民事务局。FFTLength = 256;人口、难民和移民事务局。CyclicPrefixLength = 64;人口、难民和移民事务局。numCarriers = 234;人口、难民和移民事务局。NullCarrierIndices = [1:7 129 256-5:256]';防护和直流百分比人口、难民和移民事务局。PilotCarrierIndices = [26 54 90 118 140 168 204 232]';nonDataIdx = [prm.NullCarrierIndices;prm.PilotCarrierIndices];人口、难民和移民事务局。CarriersLocations = setdiff((1:prm.FFTLength)', sort(nonDataIdx));numSTS = prm.numSTS;numTx = prm.numTx;numRx = prm.numRx;numSTSVec = prm.numSTSVec; codeRate = 1/3;每个用户相同的码率numTails = 6;%终止尾比特数人口、难民和移民事务局。numFrmBits = numSTSVec。* (prm.numDataSymbols * prm.numCarriers *......prm.bitsPerSubCarrier * codeRate) -numTails;人口、难民和移民事务局。modMode = 2 ^ prm.bitsPerSubCarrier;%调制顺序频道滤波器延迟的%帐户numPadSym = 3;百分数的符号到零prm.numpadzeros = numpadsym *(prm.fftlength + prm.cyclicprefixlength);

定义系统的发送和接收数组和位置参数。

人口、难民和移民事务局。cLight = physconst (“光速”);人口、难民和移民事务局。λ= prm.cLight / prm.fc;%获取发送和接收数组信息[Istxura,Expactortx,Isrxura,Expfactorrx] = HelperarrayInfo(PRM,True);%发射天线阵列定义%数组位置和角度prm.postx = [0; 0; 0];%bs /发射阵列位置,[x; y; z],米如果isTxURA%均匀矩形阵列txarray =分阶段。PartitionedArray (......“数组”,分阶段。([expFactorTx numSTS], 0.5 * prm.lambda),......'子阵列选择',(numsts,numtx),“SubarraySteering”“自定义”);其他的%均匀线性阵列txarray = phased.ula(numtx,'ElementsPacing',0.5 * prm.lambda,......'元素',序列。异丙啶anteNneElement(“BackBaffled”、假));结尾prm.postxelem = getElementPosition(txArray)/prm.lambda;sploss = zeros(prm.numusers,1);prm.posrx = zeros(3,prm.numusers);为了uIdx = 1: prm.numUsers%接收阵列如果isRxURA (uIdx)%均匀矩形阵列rxarray =分阶段。PartitionedArray (......“数组”,相算诅咒([expfactorrx(Uidx)numstsvec(Uidx)],......0.5 * prm.lambda),'子阵列选择',那些(numstsvec(Uidx),......numRx (uIdx)),“SubarraySteering”“自定义”);人口、难民和移民事务局。posRxElem = getElementPosition (rxarray) / prm.lambda;其他的如果numrx(Uidx)> 1%均匀线性阵列rxarray = phased.ula(numrx(uidx),......'ElementsPacing',0.5 * prm.lambda,......'元素', phased.IsotropicAntennaElement);人口、难民和移民事务局。posRxElem = getElementPosition (rxarray) / prm.lambda;其他的rxarray =阶段。异丙哒植物;prm.posrxelem = [0;0;0];% LCS结尾结尾%移动位置[XRX,YRX,ZRX] = SPH2CART(DEG2RAD(PRM.MOBILEANGLES(1,UIDX)),......uIdx函数(prm.mobileAngles (2)),......prm.mobileranges(UIDX));prm.posrx(:,uidx)= [xrx; yrx; zrx];[torxrange,torxang] = rangeangle(prm.postx,prm.posrx(:,uidx));Sploss(UIDX)= FSPL(TorxRange,PRM.Lambda);结尾

信道状态信息

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

下面的原理图显示了信道探测模型的处理过程。

对于所选择的MIMO系统,将在所有发送天线元件上发送前导信号,并在接收器核对频道的接收器中进行处理。接收器天线元件对所有链路进行预放大,OFDM解调和频域信道估计。

%生成前置信号prm.numsts = numtx;%设置为numtx声音所有频道preambleSig = helperGenPreamble(人口、难民和移民事务局);%在信道上发送序言PRM.NUMSTS.= numSTS;%保持相同的阵列配置[rxPreSig, chanDelay] = helperApplyMUChannel(人口、难民和移民事务局,preambleSig spLoss);%信道状态信息反馈HDP = CELL(PRM.NUMUSERS,1);prm.numsts = numtx;%设置为numTx以估计所有链接为了uIdx = 1: prm.numUsers%前端放大器增益和热噪声rxPreAmp =分阶段。ReceiverPreamp (......'获得'spLoss (uIdx),......%表示路径损失“NoiseFigure”人口、难民和移民事务局。NFig,“ReferenceTemperature”,290,......“SampleRate”, prm.chanSRate);rxpresigamp = rxpreamp(rxpresig {uidx});使用的副载波的%比例功率rxPreSigAmp = rxPreSigAmp * (sqrt(prm. prm. prm))FFTLength -......长度(prm.NullCarrierIndices)) / prm.FFTLength);% OFDM解调rxOFDM = ofdmdemod (rxPreSigAmp (chanDelay (uIdx) + 1:......结束(prm.numPadZeros-chanDelay (uIdx)):), prm.FFTLength,......prm.CyclicPrefixLength prm.CyclicPrefixLength,......prm.NullCarrierIndices prm.PilotCarrierIndices);信道估计从序言%numcarr,numtx,numrxHDP {UIDX} = HelperMimochanneleStimate(Rxofdm(:,1:numtx,:),prm);结尾

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

混合波束形成

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

对于单用户系统,OMP分区算法对阵列响应向量敏感.理想情况下,这些响应向量可以解释通道看到的所有散射体,但对于实际的系统和通道实现来说,这些响应向量是未知的,所以在三维空间中使用一组随机射线来覆盖尽可能多的散射体。的PRM.NRAYS.参数指定光线的数量。

对于多用户系统,JSDM将传输信道协方差相似的用户分组在一起,通过基于块对角化方法的模拟预编码器抑制群间干扰[5.]。这里每个用户被分配到自己的组中,从而导致声音或反馈开销的缩小。

%计算发射侧的混合体重如果prm.numUsers = = 1%单用户OMP% Spread rays in [az;el]=[-180:180;-90:90] 3D空间,等距% tang = [-180:360/prm.nRays:180;90:180 / prm.nRays: 90);txang =[兰德(prm.nRays) * 360 - 180;兰德(prm.nRays) * 180 - 90);%随机在= steervec(prm.postxelem,txang);Atexp =复合物(零(prm.numcarriers,size(at,1),尺寸(at,2))));为了carrIdx = 1:人口、难民和移民事务局。numCarriers AtExp(carrIdx,:,:) = At;所有子运营商相同结尾%正交匹配追求混合体重润扬悬索桥(Fbb) = omphybweights(黄芪丹参滴丸{1},numSTS, numSTS, AtExp);v = Fbb;%设置基带预编码器(FBB)%频响在平坦信道的子载波之间是相同的MFRF =润滑(平均值(FRF,1),[2 3 1]);其他的多用户联合空间分割多路复用(Fbb mFrf] = helperJSDMTransmitWeights(黄芪丹参滴丸,人口、难民和移民事务局);多用户基带预编码将每个用户的CSI打包成一个矩阵(块对角线)steeringMatrix = 0 (prm.numCarriers总和(numSTSVec)和(numSTSVec));为了UIDX = 1:prm.numusers stsidx = sum(numstsvec(1:uidx-1))+(1:numstsvec(Uidx));steeringmatrix(:,stsidx,stsidx)= fbb {uidx};% Nst-by-Nsts-by-Nsts结尾v = permute(steeringMatrix,[1 3 2]);结尾%发送阵列模式图如果isTxURA第一个子载波的%URA元素响应图案(TxArray,PRM.FC,-180:180,-90:90,“类型”“efield”......“ElementWeights”, mFrf。*挤压(v (1::)),......“PropagationSpeed”, prm.cLight);其他的%ula%第一副载波阵列响应wts = mFrf。”*挤压(v (1::));图案(TxArray,PRM.FC,-180:180,-90:90,“类型”“efield”......'重量'出世(:1),“PropagationSpeed”, prm.cLight);结尾PRM.NUMSTS.= numSTS;%恢复数据传输

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

数据传输

该示例为一个体系结构建模,其中每个数据流映射到单独的射频链,每个天线元素连接到每个射频链。如下图所示。

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

%卷积编码器Encoder = Comm.convolutionAlencoder(......“TrellisStructure”(133 171 165), poly2trellis(7日),......'terminationmethod'“终止”);txdatabits = cell(prm.numusers,1);griddata =复杂(零(prm.numcarriers,prm.numdatasymbols,numsts));为了uIdx = 1: prm.numUsers%从每个用户的位生成映射符号txDataBits {uIdx} =兰迪([0,1],prm.numFrmBits (uIdx), 1);encodedBits =编码器(txDataBits {uIdx});%位到QAM符号的映射mappedSym = qammod (encodedBits prm.modMode,“InputType”“一点”......“UnitAveragePower”,真的);%映射到层:每个用户,每个符号,每个数据流stsIdx =总和(numSTSVec (1: (uIdx-1))) + (1: numSTSVec (uIdx));gridData (:,:, stsIdx) =重塑(mappedSym prm.numCarriers,......prm.numdatasymbols,numstsvec(Uidx));结尾%对子载波应用预编码权,假设是完美反馈predata = complex(zeros(prm.numcarriers,prm.numdatasymbols,numsts));为了symIdx = 1: prm.numDataSymbols为了carrIdx = 1:人口、难民和移民事务局。numCarriers Q = squeeze(v(carrIdx,:,:));normQ = Q * sqrt(numTx)/norm(Q,'fro');predata(carridx,symidx,:) =挤压(griddata(carridx,symidx,:))。'......* normQ;结尾结尾%多天线飞行员飞行员= helperGenPilots (prm.numDataSymbols numSTS);ofdm调制数据txofdm = ofdmmod(predata,prm.fftlength,prm.cyclicprefixlength,......prm.NullCarrierIndices prm.PilotCarrierIndices,飞行员);使用的副载波的%比例功率txofdm = txofdm *(prm.fftlength /......sqrt((prm.fftlength-长度(prm.nullcarrierindes)))));%生成带有反馈权重的前导和数据的前置PreeAblesigd = HelpergenProdeamble(PRM,V);txsigsts = [前期行程指数; txofdm];%射频波束形成:对数字信号施加频响%每个天线元件连接到每个数据流txsig = txsigsts * mfrf;

对于所选的全连接射频架构,每个天线单元使用PRM.NUMSTS.相移器,由各个列给出的mFrf矩阵。

数据传输和接收模型的处理如下所示。

信号传播

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

散射模型使用具有参数化散射仪的单反冲射线追踪近似。对于此示例,散射体的数量设置为100.“散射”选项模拟散射器在接收器周围的球体内随机放置,类似于单环模型[6.]。

信道模型允许路径损失建模和视线(LOS)和非视线传播条件。该例子假设非los传播和各向同性天线单元模式与线性或矩形几何。

%对发送信号应用一个空间定义的通道[rxSig, chanDelay] = helperApplyMUChannel(人口、难民和移民事务局,txSig spLoss, preambleSig);

同一信道用于探测和数据传输。数据传输持续时间较长,由数据符号数参数控制,prm.numdatasymbols..声音和传输级之间的频道演变是通过预先输入前导信号到数据信号的模型建模的。前导码将通道归功于数据传输的有效状态,并且从信道输出忽略。

对于多用户系统,每个用户的独立通道被建模。

接收放大和信号恢复

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

hfig = figure('名称'“每个流的均衡符号星座”);scFact = ((prm.FFTLength-length (prm.NullCarrierIndices))....../ prm.FFTLength ^ 2) / numTx;据nVar = noisepow (prm.chanSRate prm.NFig 290) / scFact;解码器= comm.ViterbiDecoder (“InputFormat”“Unquantized”......“TrellisStructure”,poly2trellis(7, [133 171 165]),......'terminationmethod'“终止”“OutputDataType”“双”);为了uIdx = 1: prm.numUsersstsU = numSTSVec(uIdx); stsIdx = sum(numSTSVec(1:(uIdx-1)))+(1:stsU);%前端放大器增益和热噪声rxPreAmp =分阶段。ReceiverPreamp (......'获得'spLoss (uIdx),......%表示路径损失“NoiseFigure”人口、难民和移民事务局。NFig,“ReferenceTemperature”,290,......“SampleRate”, prm.chanSRate);rxSigAmp = rxPreAmp (rxSig {uIdx});占用子运营商的%级别功率rxSigAmp = rxSigAmp *(√prm.FFTLength-length (prm.NullCarrierIndices))....../prm.fftlength);% OFDM解调rxOFDM = ofdmdemod (rxSigAmp (chanDelay (uIdx) + 1:......结束(prm.numPadZeros-chanDelay (uIdx)):), prm.FFTLength,......prm.CyclicPrefixLength prm.CyclicPrefixLength,......prm.NullCarrierIndices prm.PilotCarrierIndices);从映射前导码的%信道估计高清= helperMIMOChannelEstimate (rxOFDM (: 1: numSTS,:),人口、难民和移民事务局);%分配均衡%索引为感兴趣的用户流[rxeq,csi] = helpermimoequalize(rxofdm(:,numsts + 1:结束,:),hd(:,stsidx,:));%软解调rxSymbs = rxEq:) /√(numTx);rxLLRBits = qamdemod (rxSymbs prm.modMode,“UnitAveragePower”,真的,......'OutputType''近似'“NoiseVariance”,nvar);%在解码前应用CSIrxLLRtmp =重塑(rxLLRBits prm.bitsPerSubCarrier, [],......prm.numDataSymbols stsU);csitmp =重塑(CSI 1 [], 1, numSTSVec (uIdx));rxScaledLLR = rxLLRtmp。* csitmp;%软输入通道解码rxDecoded =解码器(rxScaledLLR (:));%解码接收位rxbits = rxdecoded(1:prm.numfrmbits(uidx));%绘制每个用户的所有流的均衡符号定标器=装天花板(max (abs([真实(rxSymbs (:));图像放大(rxSymbs (:))))));为了i = 1:stsU subplot(prm.;numUsers马克斯(numSTSVec), (uIdx-1) *马克斯(numSTSVec) + i);情节(重塑(rxEq (:,:, i) /√(numTx), [], 1),'。');轴广场XLIM(GCA,[ -  Scaler Scaler]);ylim(GCA,[ - 缩放器缩放器]);标题([“U”num2str (uIdx)”,DS”num2str (i)));网格;结尾%计算并显示EVMEVM = comm.evm(“归一化”'平均星座力量'......“ReferenceSignalSource”“根据参考星座估算”......“ReferenceConstellation”......qammod ((0: prm.modMode-1)、prm.modMode“UnitAveragePower”1));rmsEVM =维生素(rxSymbs);disp ([“用户”num2str (uIdx)]);disp (['RMS EVM(%)='num2str(rmsevm)]);%计算并显示误码率Ber = Comm.Errorrate;措施= BER(TXDATABITS {UIDX},RXBITS);fprintf('BER =%.5F;比特数=%d;错误=%d \ n'......(1),(3)措施的人,措施(2));结尾
用户1 RMS EVM (%) = 0.38361 BER = 0.00000;不。位= 9354;不。用户2 RMS EVM (%) = 1.0311 BER = 0.00000;不。of Bits = 6234;不。用户3 RMS EVM (%) = 2.1462 BER = 0.00000;不。 of Bits = 3114; No. of errors = 0 User 4 RMS EVM (%) = 1.0024 BER = 0.00000; No. of Bits = 6234; No. of errors = 0

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

RNG;恢复RNG状态

结论与进一步探索

这个例子强调了混合波束形成在多用户MIMO-OFDM系统中的使用。它允许您通过更改一些系统范围的参数来探索各种通道模型的不同系统配置。

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

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

  • 渠道类型,prm.chantype., 要么

  • 射线的数量,PRM.NRAYS.,用于单用户系统。

探索示例使用的以下辅助功能:

参考文献

  1. Molisch,A. F.等人。“杂交光束形成用于大规模MIMO:调查”。IEEE®通讯杂志,Vol。55,2017年9月9日,第134-141页。

  2. 李志,韩树生,莫利士。“基于毫米波多用户大规模MIMO下行链路的混合波束形成设计”。通信信号处理技术研讨会。

  3. El Ayach, Oma等人。《毫米波MIMO系统中的空间稀疏预编码》。IEEE Transactions on Wireless Communications, Vol. 13, No. 3, 2014年3月,pp. 1499-1513。

  4. Adhikary A., J. Nam, J. y Ahn, G. Caire。联合空间分割和多路复用-大规模阵列体制IEEE Transactions on Information Theory,第59卷,第10期,2013年10月,6441-6463页。

  5. 斯宾塞Q.,A. SwindLehurst,M. Haardt,“用于多用户MIMO通道中的下行链路空间复用的零强制方法。”IEEE在信号处理中的交易,Vol。52,2004,2月2日,第461-471页。

  6. 水,D. S., G. J. Foschini, M. J. Gans和J. M. Kahn。衰落相关及其对多单元天线系统容量的影响。IEEE通讯汇刊,第48卷,第3期,2000年3月,第502-513页。