主要内容

使用相控阵的MIMO-OFDM预编码

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

该示例使用函数和系统对象™从通​​信工具箱和分阶段阵列系统工具箱,并需要

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

介绍

MIMO-OFDM系统是当前无线系统(例如5G NR,LTE,WLAN)的常态,由于它们对频率选择通道的鲁棒性和启用了高数据速率。随着所支持的数据率的需求不断增加,这些系统在配置的配置中获得更复杂,更大,越来越多的天金宝app线元素,以及分配的资源(子载波)。

通过天线阵列和空间复用,有效的技术来实现传输[6.].波束成形是一种这样的技术,它用于改善最终改善系统性能的信噪比(SNR),如误码率(BER)所测量的那样,在此测量1].

该示例说明了非对称MIMO-OFDM单用户系统,其中发送和接收端的最大天线元件数可以分别为1024和32,最多16个独立的数据流。它模拟了一个空间通道,其中阵列位置和天线图案结合到整个系统设计中。为简单起见,建模单个点对点链路(与一个移动用户通信的一个基站)被建模。该链接使用信道听起来为发送器提供所需的频道信息。

该示例提供了几个空间定义的信道模型的选择,特别是WINNER II信道模型和基于散射的模型,这两个模型都考虑了发射/接收空间位置和天线方向图。

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

系统参数

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

多流单用户系统prm.numusers = 1;%用户数量人口、难民和移民事务局。numSTS = 16;%数据流的数量,4/8/16/32/64prm.numtx = 32;%发送天线数prm.numrx = 16;%接收天线数量prm.bitspersubcarrier = 6;%2:QPSK,4:16QAM,6:64QAM,8:256QAMprm.numdatasymbols = 10;%数量的OFDM数据符号PRM.FC = 4E9;%4 GHz系统prm.chansrate = 100e6;%信道采样率,100 mspsprm.chantype =.'散射'%频道选项:“赢家”、“分散”,%“散射FCN”、“静态平坦”prm.nfig = 5;%噪声系数,dB%数组位置和角度prm.posTx=[0;0;0];%BS/发射阵列位置,[x;Yz] ,米人口、难民和移民事务局。mobileRange = 300;%仪表%指定角度为[方位角;仰角],az=[-90 90], el=[-90 90]prm.mobileangle = [33;0];%程度prm.steeringAngle=[30-20];%透射转向角度(靠近Mobileangle)人口、难民和移民事务局。enSteering = true;%启用/禁用转向

下面指定了用于定义用于系统的OFDM调制的参数。

prm.fftlength = 256;prm.cyclicprefixlength = 64;prm.numcarriers = 234;prm.numguardbandcarriers = [7 6];prm.pilotcarrierindices = [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。';];PRM.CarriersLocations = setDiff((1:prm.fftlength)',sort(nondataidx));numtx = prm.numtx;numrx = prm.numrx;numsts = prm.numsts;prm.numfrmbits = numsts * prm.numdatasymbols * prm.numcarriers *...prm.bitspersubcarier * 1/3-6;%终止位的帐户prm.modMode=2^prm.bitsPerSubCarrier;%调制顺序频道滤波器延迟的%帐户prm.numpadzeros = 3 *(prm.fftlength + prm.cyclicprefixlength);%获取发送和接收数组信息人口、难民和移民事务局。numSTSVec = numSTS;[isTxURA, expFactorTx isRxURA expFactorRx] = helperArrayInfo(人口、难民和移民事务局,真实);

本例中建模的信道探测、数据传输和接收的处理过程如下图所示。

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

prm.clight = physconst('LightSpeed');Prm.lambda = prm.clight / prm.fc;%移动位置[XRX,YRX,ZRX] = SPH2CART(DEG2RAD(PRM.MOBILEANGLE(1)),...函数prm.mobileAngle (2)), prm.mobileRange);人口、难民和移民事务局。posRx = (xRx; yRx; zRx);[toRxRange, toRxAng] = rangeangle (prm.posTx prm.posRx);spLoss = fspl (toRxRange prm.lambda);gainFactor = 1;

频道听起来

对于空间多路复用的系统,发射机处的信道信息的可用性允许应用预编码以最大化感兴趣的方向和信道中的信号能量。在缓慢变化的信道的假设下,通过第一通道首先探测这一点,其中用于参考传输,接收器估计信道并将该信息馈送回发射机。

对于所选的系统,前导信号通过所有发射天线单元发送,并在接收端处理信道。接收机组件执行预放大、OFDM解调、频域信道估计,并使用每个数据子载波的奇异值分解(SVD)计算基于信道对角化的反馈权值。

%生成前置信号PreeAblesigsts = HelpergenProdeamble(PRM);在numTx上重复%preamblesig = zeros(大小(preambleglegsts,1),numtx);为了i = 1:numsts preeAbleble(:,(i-1)* expactortx +(1:expactortx))=...repmat(前期前锋(:,i),1,expactortx);结尾%在通道上传输序言[rxPreSig,chanDelay]=帮助器应用信道(前置码、prm、spLoss);%前端放大器增益和热噪声rxpreamp = phased.receiverProamp(...“收益”, gainFactor * spLoss,...%账户用于路径损耗“NoiseFigure”,prm.nfig,...'referenceTemperature',290,...“SampleRate”, prm.chanSRate);rxPreSigAmp = rxPreAmp (rxPreSig);rxPreSigAmp = rxPreSigAmp *...%级别功率(√prm.FFTLength-sum prm.NumGuardBandCarriers) 1) / (prm.FFTLength));%OFDM解调解调器OFDM=通信OFDM解调器(...'fftlength',prm.fft长度,...'numguardbandcarriers',prm.numguardandcarriers。',...“RemoveDCCarrier”是的,...“PilotOutputPort”是的,...'pilotcarrierindices',prm.Pilotcarriends,...'cyclicprefixlength',prm.CyclicPrefixLength,...“NumSymbols”,numsts,...%序言符号单独“numreceiveantens”,numrx);rxofdm = demodulatorofdm(...rxPreSigAmp (chanDelay + 1:结束- (prm.numPadZeros-chanDelay):));%基于前导码的信道估计%numcarr,numsts,numrxHD = Helpermimochannelestimate(Rxofdm(:,1:numsts,:),prm);%计算反馈权重v = diagbfweights(HD);

为了简洁,我们假设了包括载波和定时恢复在内的前端同步。使用digbfweights.然后反馈给发射机,用于后续实际数据的传输。

数据传输

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

%卷积编码器编码器=公共卷积编码器(...“网格结构”,Poly2trellis(7,[133 171 165]),...“终止方法”“终止”);%从位生成映射符号txbits = randi([0,1],prm.numfrmbits,1);EncodedBits =编码器(TXBITS);%位为QAM符号映射mappedsym = qammod(encodedbits,prm.modmode,'输入类型''少量'...'onemaveragepower',对);%映射到图层:每个符号,每个数据流gridData =重塑(mappedSym prm.numCarriers、prm.numDataSymbols numSTS);%对子载波应用预编码权,假设是完美反馈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;结尾结尾%数据的OFDM调制modulatorofdm = comm.ofdmmodulator(...'fftlength',prm.fft长度,...'numguardbandcarriers',prm.numguardandcarriers。',...“InsertDCNull”是的,...'pilotinputport'是的,...'pilotcarrierindices',prm.Pilotcarriends,...'cyclicprefixlength',prm.CyclicPrefixLength,...“NumSymbols”prm.numDataSymbols,...'numtransmitantennas',numsts);%多天线飞行员飞行员= helperGenPilots (prm.numDataSymbols numSTS);txOFDM = modulatorOFDM (preData,飞行员);txOFDM = txOFDM * (prm。FFTLength /...sqrt(prm.fftlength-sum(prm.numguardbandcarriers)-1));%级别功率%生成带有反馈权重的前导和数据的前置PreeAblesigd = HelpergenProdeamble(PRM,V);txsigsts = [前期行程指数; txofdm];%在numTx上重复txsig = zeros(大小(txsigsts,1),numtx);为了i = 1:numsts txsig(:,(i-1)* expactortx +(1:expactortx))=...Repmat(TXSIGSTS(:,i),1,expactortx);结尾

对于预编码,前导信号被重新生成以进行信道估计。它被附加到数据部分以形成传输包,然后在传输天线上复制。

传输光束控制

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

对于空间意识的系统,从基站传递的信号朝向移动的方向转向,以便将辐射能量聚焦在所需方向上。这是通过将相位移施加到每个天线元件来实现以转向传输来实现。

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

%每个天线单元的增益放大器=分阶段。发射机('峰值功率'1 / numTx,“收益”,0);%放大以实现每个元件的峰值发射功率为了n = 1:numtx txsig(:,n)=放大器(txsig(:,n));结尾%发送天线阵列定义如果isTxURA%均匀矩形阵列arraytx = phased.ura([expactortx,numsts],[0.5 0.5] * prm.lambda,...'元素',序列。异丙啶anteNneElement('底板',真的));别的%均匀线性阵列arraytx = phased.ula(numtx,...'ElementsPacing',0.5*prm.lambda,...'元素',序列。异丙啶anteNneElement('底板',真的));结尾评估转向权重的%steervectx = phased.steringvector('sensorarray'arrayTx,...“PropagationSpeed”,prm.clight);%为转向方向产生重量wT=SteeringVectx(prm.fc,prm.steeringAngle);%沿着转向方向辐射,没有信号组合radiatortx =相位.Radiator('传感器'arrayTx,...“WeightsInputPort”是的,...“PropagationSpeed”,prm.clight,...“工作频率”,prm.fc,...'combineradiatedsignals',假);如果prm.enstering txsteersig = radiatortx(txsig,repmat(prm.mobileangle,1,numtx),...conj(wT));别的txSteerSig=txSig;结尾%可视化数组h =图('位置',figposition([10 55 22 35]),'菜单栏''没有任何');h.Name =“传送阵几何”;ViewArray(ArrayTX);%可视化传输模式和转向h =图('位置',figposition([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 = figure('位置',figposition([76 55 22 35]),'菜单栏''没有任何');h.Name =“发射阵列仰角图”;patternElevation (arrayTx prm.fc,“PropagationSpeed”,prm.clight,...'重量'、wT);结尾

绘图指示阵列几何和多个视图中的发送阵列响应。响应显示由转向角指定的传输方向。

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

信号传播

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

获胜者II频道模型[5.是一个空间定义的MIMO信道,允许您指定阵列几何形状和位置信息。它被配置为使用典型的城市微蜂窝室内场景,移动速度非常低。

两个基于散射的通道使用单个反弹路径通过每个散射体,其中散射体的数量由用户指定。在本例中,散射体的数量设置为100。“散射”选项对随机放置在发射器和接收器之间圆圈内的散射体进行建模,而“散射FCN”则对其放置进行完全随机建模。

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

%将空间定义的通道应用于转向信号[rxsig,chandelay] = HelperapplyChannel(Txsteersig,PRM,Sploss,PREAMBLESIG);

同一信道用于探测和数据传输,数据传输的持续时间更长,由数据符号数参数控制,prm.numdatasymbols.

接收光束转向

接收器控制事件信号,使其与发射端控制对齐,每个接收元件。应用了热噪声和接收机增益。采用各向同性响应的均匀线性或矩形阵列来匹配信道和发射机阵列。

rxpreamp = phased.receiverProamp(...“收益”, gainFactor * spLoss,...%路径损耗的原因“NoiseFigure”,prm.nfig,...'referenceTemperature',290,...“SampleRate”, prm.chanSRate);%前端放大器增益和热噪声rxsigamp = rxpreamp(rxsig);rxsigamp = rxsigamp *...%级别功率(sqrt(prm.fftlength  -  sum(prm.numguardbandcarriers)-1)/(prm.fftlength));%接收数组如果Isrxura.%均匀矩形阵列arrayRx=phased.URA([expFactorRx,numSTS],0.5*prm.lambda,...'元素',序列。异丙啶anteNneElement('底板',真的));别的%均匀线性阵列arrayrx = phased.ula(numrx,...'ElementsPacing',0.5*prm.lambda,...'元素'相位各向同性天线;结尾%用于评估接收侧转向重量SteeringVecRx=相控。SteeringVector('sensorarray'arrayRx,...“PropagationSpeed”,prm.clight);%生成朝向移动方向的权重wR=SteerVecRx(prm.fc,toRxAng);沿着移动接收方向的%转向如果prm.enstering 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,'重量',wR);h=数字('位置',figposition([54 20 22 35]),'菜单栏''没有任何');h.Name ='接收数组方位角模式';Pictorageazimuth(arrayrx,prm.fc,“PropagationSpeed”,prm.clight,'重量',wR);如果isRxURA图('位置',figposition([76 20 22 35]),'菜单栏''没有任何');h.Name =“接收阵列仰角模式”;图案形式(arrayrx,prm.fc,“PropagationSpeed”,prm.clight,...'重量',wR);结尾

接收天线方向图反映变速箱转向。

信号恢复

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

解调器OFDM=通信OFDM解调器(...'fftlength',prm.fft长度,...'numguardbandcarriers',prm.numguardandcarriers。',...“RemoveDCCarrier”是的,...“PilotOutputPort”是的,...'pilotcarrierindices',prm.Pilotcarriends,...'cyclicprefixlength',prm.CyclicPrefixLength,...“NumSymbols”,numsts + prm.numdatasymbols,...%序言和数据“numreceiveantens”,numrx);%OFDM解调rxofdm = demodulatorofdm(...rxSteerSig(chanDelay+1:end-(prm.numPadZeros chanDelay),:);%基于映射前导的信道估计HD = Helpermimochannelestimate(Rxofdm(:,1:numsts,:),prm);%分配均衡[rxeq,csi] = HelpermoimoEqualize(rxofdm(:,numsts + 1:结束,:),hd);%软解调scfact =((prm.fftlength-sum(prm.numguardbandcarriers)-1).../prm.fftlength^2)/ numtx;nvar = noisepow(prm.chansrate,prm.nfig,290)/ scfact;rxsymbs = rxeq(:) / sqrt(numtx);rxllrbits = qamdemod(rxsymbs,prm.modmode,'onemaveragepower'是的,...'OutputType''近似'“NoiseVariance”,nvar);%在解码之前应用CSIrxLLRtmp =重塑(rxLLRBits prm.bitsPerSubCarrier, [],...prm.numDataSymbols,NUMST);csitmp=重塑(CSI,1,[],1,numSTS);rxScaledLLR=rxLLRtmp.*csitmp;%软输入信道解码解码器= comm.viterbidecoder(...“InputFormat”“Unquantized”...“网格结构”,poly2trellis(7, [133 171 165]),...“终止方法”“终止”...'outputdatatype''双倍的'); rxdecode=解码器(rxScaledLLR(:);%解码接收位rxbits = rxdecoded(1:prm.numfrmbits);

对于模型的MIMO系统,所显示的均衡符号的接收星座提供了对接收的定性评估。实际误码率通过将实际发送位与接收的解码位进行比较,提供定量图。

%显示接收星座constDiag = comm.ConstellationDiagram (...“SamplesPerSymbol”, 1...“ShowReferenceTellation”是的,...“ReferenceConstellation”...qammod((0:prm.modmode-1)',prm.modmode,'onemaveragepower'是的,...“褪色”,错误的,...'位置',图([20 20 35 40]),...'标题''均等的符号'...“EnableMeasurements”是的,...'MeasurementInterval'长度(rxSymbs));constDiag (rxSymbs);%计算并显示误码率Ber = Comm.Errorrate;措施= BER(TXBITS,RXBITS);fprintf('BER =%.5F;比特数=%d;错误=%d \ n'...措施(1),措施(3),措施(2));RNG;%恢复rng状态
BER = 0.00000;比特数= 74874;错误数= 0

结论与进一步探讨

这个例子强调了相控天线阵列在波束形成MIMO-OFDM系统中的使用。它解释了单个用户系统的基站和移动基站阵列的空间几何形状和位置。以信道测深为例,说明了在目前的无线系统中如何实现预编码,以及如何建立天线阵的转向模型。

在一组可配置参数中,您可以改变数据流的数量、发射/接收天线单元、站点或阵列位置和几何结构、信道模型及其配置,以研究参数对系统的单独或组合影响。例如,仅改变发射天线的数量,以查看对转向波束主瓣的影响以及由此产生的系统性能。

该示例还简化了前端同步,信道反馈,用户速度和路径损耗模型的假设,这需要进一步考虑实际系统。各个系统还有自己的程序,必须折叠到建模中[23.4.].

探索使用以下辅助功能:

选定的书目

  1. 荔枝,埃尔塔德和罗伯特斯蒂奇。下一代无线局域网:802.11n和802.11ac。剑桥大学出版社,2013年出版社。

  2. IEEE®STD802.11™-2012信息技术的IEEE标准 - 系统之间的电信和信息交流 - 本地和大都市区域网络 - 特定要求 - 第11部分:无线LAN介质访问控制(MAC)和物理层(PHY)规格。

  3. 3GPP TS 36.213。“物理层程序。”第三代合作伙伴计划;技术规范集团无线电接入网络;演化的通用地面无线电接入(E-UTRA)。URL:https://www.3gpp.org.

  4. 3GPP TS 36.101。”用户设备(UE)无线电传输和接收。“第三代合作项目;无线接入网技术规范;演进的通用地面无线电接入(E-UTRA)。网址:https://www.3gpp.org.

  5. Kyosti,Pekka,Juha Meinila,等。获奖者II频道模型。D1.1.2,V1.2。IST-4-027756 Winner II,2007年9月。

  6. George Tsoulos,Ed。,“无线通信MIMO系统技术”,CRC Press,Boca Raton,FL,2006。