MIMO-OFDM预编码与相控阵

本例显示如何在采用波束形成的MIMO-OFDM通信系统中使用相控阵。它使用来自通信工具箱™和相控阵系统工具箱™的组件,为MIMO-OFDM通信系统建模,包括发射机和前端接收器组件。使用用户指定的参数,您可以根据不同空间位置和阵列大小的误码率和星座来验证系统的性能。

该示例使用了通信工具箱和相控阵系统工具箱中的函数和系统对象™和requires

  • WINNER II通道模型通信工具箱

介绍

MIMO-OFDM系统是目前无线系统(如5G NR、LTE、WLAN)的标准,因为它们对频率选择信道和高数据速率具有鲁棒性。随着支持的数据速率需求的不断增加,这些系统在配置上变得越来越复杂和更大,天线元素和资源万博1manbetx(副载波)的数量也在不断增加。

有了天线阵列和空间多路复用,有效的技术来实现传输是必要的[6]。波束形成就是这样一种技术,它被用来提高信噪比(SNR),最终提高系统性能,正如这里测量的比特误码率(BER) [1]。

这个例子说明了一个不对称的MIMO-OFDM单用户系统,其中最大数量的天线元件在发射端和接收端可以分别是1024和32,有多达16个独立的数据流。它建立了一个空间信道模型,其中阵列位置和天线模式被纳入到整体系统设计中。为简单起见,为单点对点链接(一个基站与一个移动用户通信)建模。链路使用信道探测向发射机提供波束形成所需的信道信息。

这个例子提供了几个空间定义的信道模型的选择,特别是一个WINNER II信道模型和一个基于散射的模型,两者都说明了发射/接收的空间位置和天线模式。

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

系统参数

为系统定义参数。可以修改这些参数,以探讨它们对系统的影响。

与多个流%单用户系统人口、难民和移民事务局。numUsers = 1;用户数%prm.numSTS = 16;独立数据流的数量,4/8/16/32/64人口、难民和移民事务局。numTx = 32;发射天线的数量%人口、难民和移民事务局。numRx = 16;接收天线的%数人口、难民和移民事务局。bitsPerSubCarrier = 6;% 2: QPSK, 4,16qam, 6,64qam, 8,256qamprm.numDataSymbols= 10;OFDM数据符号的%数人口、难民和移民事务局。fc = 4 e9;% 4 GHz系统人口、难民和移民事务局。chanSRate = 100 e6;%通道采样率,100msps人口、难民和移民事务局。ChanType =“散射”;%通道选项:“赢家”、“分散”、%’ScatteringFcn”、“StaticFlat”人口、难民和移民事务局。NFig = 5;噪音数字,dB阵列位置和角度人口、难民和移民事务局。posTx = (0, 0, 0);% BS/发射阵列位置,[x;y;z],米prm.mobileRange = 300;%米%角指定为[方位角;仰角],AZ = [ -  90 90],EL = [ -  90 90]人口、难民和移民事务局。mobileAngle = [33;0);%度人口、难民和移民事务局。steeringAngle = [30;-20);%传输转向角度(接近活动角度)prm.enSteering = TRUE;%启用/禁用操舵

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

人口、难民和移民事务局。FFTLength = 256;人口、难民和移民事务局。CyclicPrefixLength = 64;人口、难民和移民事务局。numCarriers = 234;人口、难民和移民事务局。numguardbandcarrier = [7 6];人口、难民和移民事务局。飞行员指数= [26 54 90 118 140 168 204 232]; nonDataIdx = [(1:prm.NumGuardBandCarriers(1))'; prm.FFTLength/2+1;(prm.FFTLength-prm.NumGuardBandCarriers(2)1:prm.FFTLength)';prm.PilotCarrierIndices。');人口、难民和移民事务局。CarriersLocations = setdiff ((1: prm.FFTLength),排序(nonDataIdx));numTx = prm.numTx;numRx = prm.numRx;numSTS = prm.numSTS;人口、难民和移民事务局。numFrmBits = numSTS * prm.numDataSymbols * prm.numCarriers *prm.bitsPerSubCarrier * 1/3-6;终端比特%的账户人口、难民和移民事务局。modMode = 2 ^ prm.bitsPerSubCarrier;%调制顺序%是信道滤波器延迟的原因人口、难民和移民事务局。numPadZeros = 3 * (prm.FFTLength + prm.CyclicPrefixLength);获取发送和接收阵列信息prm.numSTSVec = numSTS;[isTxURA,expFactorTx,isRxURA,expFactorRx] = helperArrayInfo(PRM,TRUE);

用于信道探测,数据发送和接收中的示例模型的处理示于下面的框图。

根据所建立的空间感知系统的基站位置和移动基站位置,计算其自由空间路径损耗。

人口、难民和移民事务局。cLight = physconst (“光速”);人口、难民和移民事务局。λ= prm.cLight / prm.fc;%移动位置(xRx yRx zRx] = sph2cart(函数(prm.mobileAngle (1)),deg2rad(prm.mobileAngle(2)),prm.mobileRange);prm.posRx = [XRX; YRX; ZRX];[toRxRange,toRxAng] = rangeangle(prm.posTx,prm.posRx);spLoss = fspl(toRxRange,prm.lambda);gainFactor = 1;

通道测深

对于一个空间多路复用系统,发送端信道信息的可用性允许采用预编码以最大限度地提高感兴趣方向和信道上的信号能量。在一个缓慢变化的信道的假设下,这是便利的,通过探空信道,其中为参考传输,接收机估计信道并将此信息反馈给发射机。

对于所选择的系统中,前同步码信号在所有发送天线元件发送的,并处理在接收机处占信道。接收器组件进行预放大,OFDM解调,频域信道估计,和计算使用每一数据子载波的奇异值分解(SVD)基于信道对角化的反馈权值。

%生成所述前导信号preambleSigSTS = helperGenPreamble(人口、难民和移民事务局);%重复过numTxpreambleSig = 0(大小(preambleSigSTS, 1), numTx);1:numSTS preambleSig(:,(i-1)*expFactorTx+(1:expFactorTx)) =repmat (preambleSigSTS(:,我),1,expFactorTx);结束通过信道传输序言[rxPreSig, chanDelay] = helperApplyChannel(人口、难民和移民事务局,preambleSig spLoss);前端放大器增益和热噪声rxPreAmp = phased.ReceiverPreamp (“获得”,gainFactor * spLoss,%考虑路径损失“噪声系数”prm.NFig,“ReferenceTemperature”, 290,'采样率', prm.chanSRate);rxPreSigAmp = rxPreAmp(rxPreSig);rxPreSigAmp = rxPreSigAmp *%规模实力(SQRT(prm.FFTLength森(prm.NumGuardBandCarriers)-1)/(prm.FFTLength));% OFDM解调demodulatorOFDM = comm.OFDMDemodulator (“FFTLength”prm.FFTLength,“NumGuardBandCarriers”prm.NumGuardBandCarriers。’,'RemoveDCCarrier',真的,'PilotOutputPort',真的,“PilotCarrierIndices”prm.PilotCarrierIndices。’,“CyclicPrefixLength”prm.CyclicPrefixLength,“NumSymbols”numSTS,单独%前导符号“NumReceiveAntennas”, numRx);rxOFDM = demodulatorOFDM (rxPreSigAmp(chanDelay + 1:最终(prm.numPadZeros-chanDelay),:));%信道估计从序言% numCarr, numSTS, numRx高清= helperMIMOChannelEstimate (rxOFDM (: 1: numSTS,:),人口、难民和移民事务局);%计算反馈权重v = diagbfweights (hD);

在介绍简明,前端同步包括载波和定时恢复被假定。权重计算使用diagbfweights因而是反馈给发射机,以便随后应用的实际数据传输。

数据传输

接下来,我们配置系统的数据传输。该处理包括信道编码,位映射到复数符号,各个数据流,以多个发射流的拆分,这些发送流的预编码,OFDM调制与导频映射和复制所采用的发送天线。

%卷积编码器编码器= comm.ConvolutionalEncoder (“TrellisStructure”(133 171 165), poly2trellis(7日),“TerminationMethod”,“终止”);%生成从比特映射的符号txBits = randi([0,1],prm.numFrmBits,1);encodedBits =编码器(txBits);位到QAM符号的映射mappedSym = qammod (encodedBits prm.modMode,“InputType”,“一点”,“UnitAveragePower”,真正的);%映射到层:每个符号,每个数据流的GridData =重塑(mappedSym,prm.numCarriers,prm.numDataSymbols,numSTS);%实施预编码权重的子载波,假设完美的反馈preData =复杂(0 (prm.numCarriers, prm.numDataSymbols numSTS));symIdx = 1: prm.numDataSymbolscarrIdx = 1:人口、难民和移民事务局。Q = squeeze(v(carrIdx,:,:));normQ = Q * sqrt(numTx)/norm(Q,“摇来摇去”);preData carrIdx、symIdx: =挤压(gridData (carrIdx、symIdx:))。‘* normQ;结束结束OFDM调制的数据modulatorOFDM = comm.OFDMModulator (“FFTLength”prm.FFTLength,“NumGuardBandCarriers”prm.NumGuardBandCarriers。’,“InsertDCNull”,真的,“PilotInputPort”,真的,“PilotCarrierIndices”prm.PilotCarrierIndices。’,“CyclicPrefixLength”prm.CyclicPrefixLength,“NumSymbols”,prm.numDataSymbols,“NumTransmitAntennas”, numSTS);% Multi-antenna飞行员飞行员= helperGenPilots(prm.numDataSymbols,numSTS);txOFDM = modulatorOFDM(preData,导频);txOFDM = txOFDM *(prm.FFTLength /√prm.FFTLength-sum prm.NumGuardBandCarriers) 1));%规模实力%生成与反馈的权重,并在前面加上数据序言preambleSigD = helperGenPreamble(人口、难民和移民事务局,v);txSigSTS = [preambleSigD; txOFDM];重复numTxtxSig = 0(大小(txSigSTS, 1), numTx);i = 1:numSTS txSig(:,(i-1)*expFactorTx+(1:expFactorTx)) =repmat (txSigSTS(:,我),1,expFactorTx);结束

用于预编码,前同步码信号被再生,以使信道估计。它被预设于数据部分,以形成传输包,然后将其在发射天线复制。

发射波束转向

相控阵系统工具箱提供了适用于无线通信系统中相控阵的设计和仿真的组件。

在空间感知系统中,从基站发送的信号被导向移动方向,以便将辐射的能量集中在所需的方向。这是通过对每个天线元件应用相移来控制传输来实现的。

本例在发射机处使用线性或矩形阵列,具体取决于所选的数据流的数量和发射天线的数量。

每个天线元件的增益%放大器= phased.Transmitter(“PeakPower”,1 / numTx,“获得”, 0);%放大以达到每个元件的峰值传输功率numTx txSig(:,n) =放大器(txSig(:,n));结束%发射天线阵列定义如果isTxURA%均匀矩形阵列arrayTx = phase . ura ([expFactorTx,numSTS],[0.5 0.5]*pr .lambda,“元素”phased.IsotropicAntennaElement (“BackBaffled”,真的));其他的%均匀线性阵列arrayTx = phased.ULA (numTx,“ElementSpacing”0.5 * prm.lambda“元素”phased.IsotropicAntennaElement (“BackBaffled”,真的));结束%用于评估操舵重量SteerVecTx = phased.SteeringVector (“SensorArray”,arrayTx,'PropagationSpeed', prm.cLight);%生成航向权重wT = SteerVecTx (prm.fc prm.steeringAngle);辐射沿控制方向,不需要信号合并radiatorTx = phased.Radiator (“传感器”,arrayTx,'WeightsInputPort',真的,'PropagationSpeed'prm.cLight,“OperatingFrequency”prm.fc,“CombineRadiatedSignals”、假);如果人口、难民和移民事务局。enSteering txSteerSig = radiatorTx(txSig,repmat(prm.mobileAngle,1,numTx),连词(wT));其他的txSteerSig = txSig;结束%使数组可视化h =图(“位置”图([10 55 22 35])菜单条的,“没有”);h.Name =“发射阵列几何”;viewArray (arrayTx);可视化传输模式和转向h =图(“位置”([32 55 22 30])菜单条的,“没有”);h.Name =“发射阵列响应模式”;模式(arrayTx prm.fc,'PropagationSpeed'prm.cLight,“重量”、wT);h =图(“位置”([54 55 22 35])菜单条的,“没有”);h.Name =“发射阵列方位图”;patternAzimuth(arrayTx,prm.fc,'PropagationSpeed'prm.cLight,“重量”、wT);如果isTxURA H =系数(“位置”,figposition([76 55 22 35]),菜单条的,“没有”);h.Name =“发射阵列高程模式”;patternElevation(arrayTx,prm.fc,'PropagationSpeed'prm.cLight,“重量”、wT);结束

图中显示了阵列几何形状和传输阵列在多个视图中的响应。响应显示由转向角度指定的传输方向。

本例假定转向角已知且接近移动角。在实际系统中,这将由接收机的到达角估计来估计,作为信道探测或初始波束跟踪程序的一部分。

信号传播

该示例为空间MIMO通道提供了三个选项,并为评估目的提供了一个更简单的静态MIMO通道。

的WINNER II信道模型[5]是一个空间限定的MIMO信道,其允许用户指定所述阵列的几何形状和位置的信息。它被配置为使用典型的城市微室内场景非常低的移动速度。

这两个基于散射的通道使用单反射路径通过每个散射器,其中散射器的数量是用户指定的。对于本例,散射体的数量被设置为100。“散射”选项模拟了随机放置在发射器和接收器之间的一个圆圈内的散射体,而“散射fcn”则完全随机地模拟了它们的位置。

该模型允许路径损失建模和视线(LOS)和非LOS传播条件。本例假设非los传播和具有线性几何形状的各向同性天线单元模式。

对被操纵信号应用一个空间定义的信道[rxSig, chanDelay] = helperApplyChannel(人口、难民和移民事务局,txSteerSig spLoss, preambleSig);

测深和数据传输使用同一信道,数据传输持续时间较长,由数据符号个数参数控制,prm.numDataSymbols

接收光束控制

接收器操纵事件信号与发送端转向对准,每个接收元件。热噪声和接收机增益被应用。匀速直线或具有各向同性响应矩形阵列被建模以匹配信道和发送器阵列。

rxPreAmp = phased.ReceiverPreamp (“获得”,gainFactor * spLoss,%表示路径丢失“噪声系数”prm.NFig,“ReferenceTemperature”, 290,'采样率', prm.chanSRate);前端放大器增益和热噪声rxSigAmp = rxPreAmp (rxSig);= rxSigAmp *%规模实力(返回值(人口、难民和移民事务局。FFTLength - sum (prm.NumGuardBandCarriers) 1) / (prm.FFTLength));%接收数组如果isRxURA%均匀矩形阵列arrayRx = phased.URA ([expFactorRx numSTS], 0.5 * prm.lambda,“元素”phased.IsotropicAntennaElement (“BackBaffled”,真的));其他的%均匀线性阵列arrayRx = phased.ULA (numRx,“ElementSpacing”0.5 * prm.lambda“元素”, phased.IsotropicAntennaElement);结束%用于评估接收侧转向砝码SteerVecRx = phased.SteeringVector (“SensorArray”,arrayRx,'PropagationSpeed', prm.cLight);%生成用于向移动转向方向的权重或者说是= SteerVecRx (prm.fc toRxAng);沿着移动接收方向引导如果人口、难民和移民事务局。rxSteerSig = rxSigAmp.*(wR');其他的rxSteerSig = rxSigAmp;结束%使数组可视化h =图(“位置”([10 20 22 35])菜单条的,“没有”);h.Name =“接收阵列几何”;viewArray (arrayRx);可视化接收模式和转向h =图(“位置”,figposition([32 20 22 30]));h.Name =“接收阵列响应模式”;模式(arrayRx prm.fc,'PropagationSpeed'prm.cLight,“重量”,或者说是);h =图(“位置”([54 20 22 35])菜单条的,“没有”);h.Name =“接收阵列方位图”;patternAzimuth (arrayRx prm.fc,'PropagationSpeed'prm.cLight,“重量”,或者说是);如果isRxURA图(“位置”,figposition([76 20 22 35]),菜单条的,“没有”);h.Name =“接收阵列仰角图”;patternElevation (arrayRx prm.fc,'PropagationSpeed'prm.cLight,“重量”,或者说是);结束

接收天线图案反映传输转向。

信号恢复

接收天线阵列将传播的信号传递到接收机,以恢复嵌入在信号中的原始信息。MIMO-OFDM系统中使用的接收机与发射机类似,也包含许多组件,包括OFDM解调器、MIMO均衡器、QAM解调器和信道解码器。

demodulatorOFDM = comm.OFDMDemodulator (“FFTLength”prm.FFTLength,“NumGuardBandCarriers”prm.NumGuardBandCarriers。’,'RemoveDCCarrier',真的,'PilotOutputPort',真的,“PilotCarrierIndices”prm.PilotCarrierIndices。’,“CyclicPrefixLength”prm.CyclicPrefixLength,“NumSymbols”, numSTS + prm.numDataSymbols,序言和数据“NumReceiveAntennas”, numRx);% OFDM解调rxOFDM = demodulatorOFDM (rxSteerSig (chanDelay + 1:结束- (prm.numPadZeros-chanDelay):));%信道估计从映射的前导高清= helperMIMOChannelEstimate (rxOFDM (: 1: numSTS,:),人口、难民和移民事务局);%MIMO均衡[rxEq, CSI] = helperMIMOEqualize (rxOFDM (numSTS + 1::,:),高清);%软解调scFact = ((prm.FFTLength-sum (prm.NumGuardBandCarriers) 1)/ prm.FFTLength ^ 2) / numTx;据nVar = noisepow (prm.chanSRate prm.NFig 290) / scFact;rxSymbs = rxEq:) /√(numTx);rxLLRBits = qamdemod (rxSymbs prm.modMode,“UnitAveragePower”,真的,“OutputType”,“approxllr”,'NoiseVariance'据nVar);%在解码之前应用CSIrxLLRtmp =重塑(rxLLRBits,prm.bitsPerSubCarrier,[]prm.numDataSymbols numSTS);csitmp =重塑(CSI 1 [], 1, numSTS);rxScaledLLR = rxLLRtmp。* csitmp;%软输入信道译码解码器= comm.ViterbiDecoder ('InputFormat',“未量化”,“TrellisStructure”,poly2trellis(7,[133 171 165]),“TerminationMethod”,“终止”,“OutputDataType”,“双”);rxDecoded =解码器(rxScaledLLR (:));%已解码接收位rxBits = rxDecoded (1: prm.numFrmBits);

对于建模的MIMO系统,显示的均衡符号的接收星座提供了接收的定性评估。实际比特误码率通过比较实际传输比特与接收的解码比特提供定量数字。

接收星座显示%constDiag = comm.ConstellationDiagram(“SamplesPerSymbol”1,“ShowReferenceConstellation”,真的,'ReferenceConstellation',qammod ((0: prm.modMode-1)、prm.modMode“UnitAveragePower”,真正的),“ColorFading”假的,“位置”([20 20 35 40])“标题”,“平衡的符号”,'EnableMeasurements',真的,“MeasurementInterval”,长度(rxSymbs));constDiag(rxSymbs);%计算和显示误码率数量= comm.ErrorRate;措施=误码率(txBits rxBits);流(的误码率= % .5f;不。比特数= %d;不。错误数= %d\n',(1),(3)措施的人,措施(2));rng(年代);%恢复RNG状态
数量= 0.00000;不。比特数= 74874;不。误差= 0

结论与进一步探索

该示例性高亮显示使用相控天线阵列用于波束形成的MIMO-OFDM系统的。它占在所述基站处的空间几何形状和阵列的位置和移动站为单个用户系统。使用信道探测,它示出预编码是如何在当前的无线系统中实现,并且天线阵列的转向如何建模。

在一组可配置的参数内,你可以改变数据流的数量,发射/接收天线元素,站或阵列位置和几何,信道模型和他们的配置,以研究参数的个别或综合对系统的影响。例如,只需改变发射天线的数量,就可以看到对控制波束主瓣的影响以及由此产生的系统性能。

该实例还简化了前端同步、信道反馈、用户速度和路径损耗模型的假设,这些模型在实际系统中需要进一步考虑。各个系统也有它们自己的程序,这些程序必须并入建模中[2,3.,4]。

探索以下使用的辅助函数:

选定的参考书目

  1. Perahia, Eldad和Robert Stacey。下一代无线局域网:802.11n和802.11ac。剑桥大学出版社,2013年。

  2. 信息技术IEEE标准。系统之间的电信和信息交换。局域网和城域网。特殊要求。第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规范。

  3. 3 gpp TS 36.213。“物理层过程。”3.rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:https://www.3gpp.org

  4. 3 gpp TS 36.101。用户设备(UE)无线电发射和接收。3.rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:https://www.3gpp.org

  5. Kyosti, Pekka, Juha Meinila等。赢家二频道模型。D1.1.2 V1.2。IST-4-027756冠军II, 2007年9月。

  6. 李志伟主编,“无线通信的MIMO系统技术”,华中科技大学出版社,2006年。