主要内容

MIMO-OFDM系统的波束形成

这个例子展示了如何用波束形成对点对点MIMO-OFDM系统建模。目前,802.11x系列等无线标准已采用MIMO (multiple input-multiple output)和OFDM (orthogonal frequency division multiplexing)技术相结合,以提供更高的数据速率。由于MIMO采用天线阵列,可以采用波束形成来提高接收信噪比,从而降低误码率。

此示例需要Communications Toolbox™。

简介

术语MIMO用于描述存在多个发射器或多个接收器的系统。在实践中,该系统可以采用多种不同的形式,如单输入多输出(SIMO)或多输入单输出(MISO)系统。本例演示了下行链路MISO系统。基站采用8单元ULA作为发射机,移动单元作为单天线接收机。

系统的其余部分配置如下。发射功率为8瓦,发射增益为-8 dB。移动接收器是固定的,位于2750米远,并与发射机的视距相差3度。一个功率为1瓦,增益为-20 dB的干涉器位于9000米,距离发射机的视距20度。

初始化系统常量rng (2014);gc = helperGetDesignSpecsParameters();可调参数tp。txPower = 9;%瓦特tp。txGain = -8;% dBtp。mobileRange = 2750;% mtp。mobileAngle = 3;%度tp. interpower = 1;%瓦特tp. intergain = -20;% dBtp.interfRange = 9000;% mtp. interangle = 20;%度tp。numTXElements = 8;tp。转向角= 0;%度tp。rxGain = 108.8320 - tp.txGain;% dBnumTx = tp.numTXElements;

整个场景可以在下图中描绘。

helperPlotMIMOEnvironment (gc, tp);

信号传输

首先,配置系统的发射器。

[编码器,扰频器,modulatorOFDM steeringvec,发射机,...散热器,飞行员,numdatasymbs,frmSz] = helperMIMOTxSetup(gc,tp);

发射机子系统中有很多部件,如卷积编码器、扰频器、QAM调制器、OFDM调制器等。消息首先转换为信息比特流,然后经过源编码和调制阶段以准备辐射。

txBits = randi([0,1], frmSz,1);编码=编码器(txBits);bitsS =扰频器(编码);tx = qammod(bitsS,gc.modMode,“InputType”“一点”“UnitAveragePower”,真正的);

在OFDM系统中,数据由多个相互正交的子载波承载。

ofdm1 =重塑(tx, gc.numCarriers,numDataSymbols);

然后,数据流被复制到发射阵列中的所有辐射元素

ofdmData = repmat(ofdm1,[1,1, numTx]);txOFDM = modulatorOFDM(ofdmData,导频);%的规模txOFDM = txOFDM *...gc.FFTLength /√gc.FFTLength-sum (gc.NumGuardBandCarriers) 1));%放大以实现每个通道的峰值TX功率n = 1:numTx txOFDM(:,n) =发射器(txOFDM(:,n));结束

在MIMO系统中,还可以分离多个用户的空间分割多路复用(SDMA)。在这些情况下,数据流通常由对应于所需方向的权重调制,以便一旦辐射,信号在该方向上最大化。由于在MIMO信道中,阵列中不同单元辐射出的信号可能会经过不同的传播环境,因此每个天线辐射出的信号都应该单独传播。这可以通过将CombineRadiatedSignals设置为false来实现。散热器组件。

散热器。CombineRadiatedSignals = false;

为了实现预编码,阵列中每个天线辐射的数据流通过与其辐射方向相对应的相移进行调制。这种预编码的目的是确保这些数据流在数组被引导到那个方向时同步添加。预编码可以指定为在散热器上使用的权重。

wR = steeringvec(gc.fc,[-tp.mobileAngle;0]);

同时,阵列也被引导到一个给定的转向角度,因此总权重是预编码和转向权重的组合。

wT = steeringvec(gc.fc,[tp. steingangle;0]);权重= wT.* wR;

传输的信号由

txOFDM =散热器(txOFDM,repmat([tp.mobileAngle;0],1,numTx),conj(重量));

请注意,传输信号txOFDM是一个矩阵,其列表示从传输数组中相应元素辐射出来的数据流。

信号传播

接下来,信号通过MIMO通道传播。一般来说,有两种对接收信号强度的传播效应是感兴趣的:一种是由于传播距离造成的传播损耗,通常称为自由空间路径损耗;另一种是由于多路径导致的衰落。这个例子模拟了这两种效果。

(通道、interferenceTransmitter toRxAng spLoss] =...helperMIMOEnvSetup (gc, tp);[sigFade, chPathG] = channel(txOFDM);sigLoss = sigFade/sqrt(db2pow(sloss (1)));

为了模拟更真实的移动环境,下一节还将插入干扰源。注意,在无线通信系统中,干扰通常来自不同的移动用户。

%产生干扰并应用增益和传播损失numBits = size(sigFade,1);intersymbols = wgn(numBits,1,1,“线性”“复杂”);intersymbols = interferenceTransmitter(intersymbols);interfLoss = intersymbols /sqrt(db2pow(sloss (2)));

信号接收

接收天线收集传播信号和干扰,并将它们传递给接收机,以恢复嵌入在信号中的原始信息。MIMO-OFDM系统的接收端与系统的发射端一样,也包含了OFDM解调器、QAM解调器、解扰器、均衡器、维特比解码器等多个阶段。

[收集器,接收机,demodulatorOFDM,解码器,解码器)=...helperMIMORxSetup (gc, tp, numDataSymbols);rxSig = collector([sigLoss interfLoss],toRxAng);前端放大器增益和热噪声rxSig =接收器(rxSig);rxOFDM = rxSig *...(sqrt(gc.FFTLength-sum(gc.NumGuardBandCarriers)-1)) / (gc.FFTLength);OFDM解调rxOFDM =解调ofdm (rxOFDM);%信道估计hD = helperidealchannelestimate (gc, numDataSymbols, chPathG);%均衡rxEq = helperEqualizer(rxOFDM, hD, numTx);%折叠OFDM矩阵rxSymbs = rxEq(:);rxBitsS = qamdemod(rxSymbs,gc.modMode,“UnitAveragePower”,真的,...“OutputType”“一点”);rxCoded = descrambler(rxBitsS);rxDeCoded =解码器(rxCoded);rxBits = rxDeCoded(1:frmSz);

将解码后的输出与原始消息流进行比较表明,结果的误码率对于通信系统来说太高了。星座图如下图所示:

ber = com . errorrate;测量= ber(txBits, rxBits);流('BER = %.2f%%;不。of Bits = %d;不。误差= %d\n'...措施(1)* 100,(3)措施,措施(2));
Ber = 32.07%;不。of Bits = 30714;不。错误数= 9850
constdiag = com . constellationdiagram (“SamplesPerSymbol”, 1...“ReferenceConstellation”[],“ColorFading”,真的,...“位置”, gc.constPlotPosition);显示接收星座constdiag (rxSymbs);

较高的误码率主要是由于移动设备偏离了基站阵列的转向方向。如果移动方向与转向方向一致,则可大大提高误码率。

tp。转向角度= tp.mobileAngle;操纵发射机主瓣wT = steeringvec(gc.fc,[tp. steingangle;0]);[txBits, rxBits,rxSymbs] = helperRerunMIMOBeamformingExample(gc,tp,wT);重置(ber);测量= ber(txBits, rxBits);流('BER = %.2f%%;不。of Bits = %d;不。误差= %d\n'...措施(1)* 100,(3)措施,措施(2));
Ber = 0.02%;不。of Bits = 30714;不。误差= 5
constdiag (rxSymbs);

因此,系统对转向误差非常敏感。另一方面,正是这种空间敏感性使得SDMA能够在空间上区分多个用户。

移相器量化效应

到目前为止的讨论假设光束可以被引导到精确的期望方向。然而,在现实中,这往往是不正确的,特别是当使用模拟移相器时。模拟移相器只有有限的精度,并根据相移中使用的比特数进行分类。例如,一个3位移相器只能表示360度内8个不同的角度。因此,如果在模拟中包含这样的量化,系统性能会下降,这可以从星座图中观察到。

%具有量化效果的模拟移相器释放(steeringvec);steeringvec。NumPhaseShifterBits = 4;wTq = steeringvec(gc.fc,[tp. steingangle;0]);[txBits, rxBits,rxSymbs] = helperRerunMIMOBeamformingExample(gc,tp,wTq);重置(ber);测量= ber(txBits, rxBits);流('BER = %.2f%%;不。of Bits = %d;不。误差= %d\n'...措施(1)* 100,(3)措施,措施(2));constdiag = com . constellationdiagram (“SamplesPerSymbol”, 1...“ReferenceConstellation”[],“ColorFading”,真的,...“位置”, gc.constPlotPosition);constdiag (rxSymbs);
Ber = 0.02%;不。of Bits = 30714;不。错误数= 7

总结

本例展示了采用波束形成的点对点MIMO-OFDM系统的系统级仿真。仿真模拟了许多系统组件,如编码、发射波束形成、预编码、多径衰落、信道估计、均衡和解码。

参考

[1] Houman Zarrinkoub,用MATLAB理解LTE, Wiley, 2014

[2]西奥多·s·拉帕波特等。毫米波无线通信,普伦蒂斯霍尔,2014

另请参阅