主要内容

大规模MIMO混合波束形成

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

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

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

简介

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

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

与目前的无线系统相比,毫米波波段的波长要小得多。尽管这允许一个阵列在相同的物理维度内包含更多的元素,但为每个天线元素提供一个发射-接收(TR)模块或一个射频链将变得昂贵得多。混合收发器是一种实用的解决方案,因为它们在射频领域使用模拟波束形成器,在基带领域使用数字波束形成器,射频链少于发射元件的数量[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的幂人口、难民和移民事务局。numTx = prm.numSTS * 8;% BS发射天线数(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]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系统人口、难民和移民事务局。chanSRate = 100 e6;%通道采样率,100 Msps人口、难民和移民事务局。ChanType =“散射”通道选项:'Scattering', 'MIMO'人口、难民和移民事务局。NFig = 8;噪音百分比(增加到更糟,5-10分贝)prm.nRays= 500;用于Frf, Fbb分区的射线数量

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

人口、难民和移民事务局。FFTLength = 256;人口、难民和移民事务局。CyclicPrefixLength = 64;人口、难民和移民事务局。numCarriers = 234;人口、难民和移民事务局。NullCarrierIndices = [1:7 129 256-5:256]';%守卫和DC人口、难民和移民事务局。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;%到零的符号数人口、难民和移民事务局。numPadZeros = numPadSym * (prm.FFTLength + prm.CyclicPrefixLength);

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

人口、难民和移民事务局。cLight = physconst (“光速”);人口、难民和移民事务局。λ= prm.cLight / prm.fc;获取发送和接收数组信息[isTxURA, expFactorTx isRxURA expFactorRx] = helperArrayInfo(人口、难民和移民事务局,真实);发射天线阵列定义数组位置和角度人口、难民和移民事务局。posTx = (0, 0, 0);% BS/发射阵列位置,[x;y;z],米如果isTxURA%均匀矩形数组txarray =分阶段。PartitionedArray (...“数组”,分阶段。([expFactorTx numSTS], 0.5 * prm.lambda),...“SubarraySelection”的(numSTS numTx),“SubarraySteering”“自定义”);其他的%均匀线性阵列txarray =分阶段。齿龈(numTx“ElementSpacing”0.5 * prm.lambda...“元素”,分阶段。IsotropicAntennaElement (“BackBaffled”、假));结束人口、难民和移民事务局。posTxElem = getElementPosition (txarray) / prm.lambda;spLoss = 0 (prm.numUsers, 1);人口、难民和移民事务局。prm.numUsers posRx = 0(3日);uIdx = 1: prm.numUsers%接收阵列如果isRxURA (uIdx)%均匀矩形数组rxarray =分阶段。PartitionedArray (...“数组”, phased.URA ([expFactorRx (uIdx) numSTSVec (uIdx)],...0.5 * prm.lambda),“SubarraySelection”的(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 = phased.IsotropicAntennaElement;人口、难民和移民事务局。posRxElem = [0;0;0);% LCS结束结束%移动位置(xRx yRx zRx] = sph2cart(函数(prm.mobileAngles (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);通道状态信息反馈黄芪丹参滴丸=细胞(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 *(根号(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, numRx黄芪丹参滴丸{uIdx} = helperMIMOChannelEstimate (rxOFDM (:, 1: numTx,:),人口、难民和移民事务局);结束

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

混合波束形成

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

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

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

计算发射端混合权值。如果prm.numUsers = = 1%单用户OMP%扩散射线在[az;el]=[-180:180;-90:90] 3D空间,等间距% txang = [-180:360/prm.nRays:180;90:180 / prm.nRays: 90);txang =[兰德(prm.nRays) * 360 - 180;兰德(prm.nRays) * 180 - 90);%随机在= steervec (prm.posTxElem txang);AtExp =复杂(0 (prm.numCarriers、尺寸(,1),大小(,2)));carrIdx = 1:人口、难民和移民事务局。numCarriers AtExp(carrIdx,:,:) = At;%对所有子运营商都一样结束%正交匹配追求混合权重润扬悬索桥(Fbb) = omphybweights(黄芪丹参滴丸{1},numSTS, numSTS, AtExp);v = Fbb;%设置基带预编码器(Fbb)对于平坦信道的子载波,% Frf是相同的mFrf = permute(mean(Frf,1),[2 3 1]);其他的多用户联合空间分割多路复用(Fbb mFrf] = helperJSDMTransmitWeights(黄芪丹参滴丸,人口、难民和移民事务局);多用户基带预编码%将每个用户的CSI打包到一个矩阵中(块对角线)steeringMatrix = 0 (prm.numCarriers总和(numSTSVec)和(numSTSVec));uIdx = 1: prm.numUsersstsIdx = 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);其他的%齿龈第一子载波的数组响应wts = mFrf。”*挤压(v (1::));模式(txarray、prm.fc 180:180 90:90,“类型”“efield”...“重量”出世(:1),“PropagationSpeed”, prm.cLight);结束prm.numSTS= numSTS;%返回进行数据传输

对于所建模的宽带OFDM系统,模拟权值mFrf,为多个子载波的平均权重。阵列响应模式显示由较强叶片表示的不同数据流。这些叶表示波束形成所达到的扩散或可分离性。的混合波束形成简介(相控阵系统工具箱)Example比较了单用户系统中由最优的全数字方法实现的模式与由所选混合方法实现的模式。

数据传输

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

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

%卷积编码器编码器= comm.ConvolutionalEncoder (...“TrellisStructure”(133 171 165), poly2trellis(7日),...“TerminationMethod”“终止”);txDataBits =细胞(人口、难民和移民事务局。numUsers, 1);gridData =复杂(0 (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 =复杂(0 (prm.numCarriers, prm.numDataSymbols numSTS));symIdx = 1: prm.numDataSymbolscarrIdx = 1:人口、难民和移民事务局。numCarriers Q =挤压(v(carrIdx,:,:));normQ = Q * sqrt(numTx)/norm(Q,“摇来摇去”);preData (carrIdx symIdx:) =挤压(gridData (carrIdx、symIdx:))。...* normQ;结束结束% Multi-antenna飞行员飞行员= helperGenPilots (prm.numDataSymbols numSTS);OFDM调制的数据txOFDM = ofdmmod (preData prm.FFTLength prm.CyclicPrefixLength,...prm.NullCarrierIndices prm.PilotCarrierIndices,飞行员);使用的子载波的%规模功率txOFDM = txOFDM * (prm。FFTLength /...√(prm.FFTLength-length prm.NullCarrierIndices))));生成带有反馈权重的序言和数据的前缀preambleSigD = helperGenPreamble(人口、难民和移民事务局,v);txSigSTS = [preambleSigD; txOFDM];% RF波束形成:对数字信号应用频响每个天线元件都连接到每个数据流txSig = txSigSTS * mFrf;

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

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

信号传播

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

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

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

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

同一通道用于测深和数据传输。数据传输持续时间较长,由数据符号数参数控制,prm.numDataSymbols.通过在数据信号前加上前导信号来模拟探测和传输阶段之间的信道演化。前导将通道启动到数据传输的有效状态,并从通道输出中忽略前导。

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

接收放大和信号恢复

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

hfig =图(“名字”'每个流的均衡符号星座');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] = ofdmEqualize (rxOFDM (numSTS + 1::,:),高清(:,stsIdx:)“算法”“zf”);%软解调rxSymbs = rxEq:) /√(numTx);rxLLRBits = qamdemod (rxSymbs prm.modMode,“UnitAveragePower”,真的,...“OutputType”“approxllr”“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(、(标量标量));甘氨胆酸ylim(、(标量标量));标题([“U”num2str (uIdx)”,DS”num2str (i)));网格结束%计算并显示EVM维生素与= comm.EVM (“归一化”的平均星座力量”...“ReferenceSignalSource”“从参考星座估计”...“ReferenceConstellation”...qammod ((0: prm.modMode-1)、prm.modMode“UnitAveragePower”1));rmsEVM =维生素(rxSymbs);disp ([“用户”num2str (uIdx)]);disp ([' RMS evm (%) = 'num2str (rmsEVM)]);%计算和显示误码率数量= comm.ErrorRate;措施=误码率(txDataBits {uIdx}, rxBits);流(' BER = %.5f;不。of Bits = %d;不。错误= %d\n'...(1),(3)措施的人,措施(2));结束
用户1 RMS EVM (%) = 0.38361 BER = 0.00000;不。的比特= 9354;不。用户2 RMS EVM (%) = 1.0311 BER = 0.00000;不。的比特= 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,在多用户和单用户系统之间切换,或

  • 渠道类型,人口、难民和移民事务局。ChanType,或

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

探索本例中使用的以下helper函数:

参考文献

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

  2. 李志,韩s, A. F. Molisch。毫米波多用户海量MIMO下行链路混合波束形成设计。IEEE ICC 2016,通信信号处理研讨会。

  3. El Ayach, Oma等人。毫米波MIMO系统中的空间稀疏预编码。IEEE无线通信汇刊,Vol. 13, No. 3, 2014年3月,pp. 1499-1513。

  4. Adhikary A., J. Nam, J-Y Ahn, G. Caire。联合空间划分和多路复用-大规模阵列制度。《IEEE信息理论汇刊》,Vol. 59, No. 10, 2013年10月,pp. 6441-6463。

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

  6. 水,D. S, G. J.福斯基尼,M. J.甘斯和J. M.卡恩。衰落相关及其对多单元天线系统容量的影响。《IEEE通信汇刊》,Vol. 48, No. 3, 2000年3月,第502-513页。

Baidu
map