主要内容

LTE下行信道估计与均衡

这个例子展示了如何使用LTE工具箱™创建一帧值的数据,将其通过衰落信道并执行信道估计和均衡。创建了两幅图来说明所接收的和均衡的框架。

介绍

这个示例展示了如何使用LTE工具箱中的函数创建一个简单的发射机-信道-接收机模拟。该示例在一个天线端口上生成一帧值的数据。由于在本例中没有创建传输信道,数据是随机位,QPSK被调制并映射到子帧中的每个符号。一个细胞特定的参考信号和主次同步信号被创建并映射到子帧。单独生成10个子帧来创建一帧。该帧经OFDM调制,通过扩展车辆A模型(EVA5)衰落信道,加入加性高斯白噪声并解调。利用信道估计和噪声估计进行MMSE均衡,最后绘制接收资源网格和均衡资源网格。

它是设置

单元格范围的设置在结构中指定enb.本例中使用的许多函数需要下面指定的设置的子集。本例中只使用了一个发射天线。

enb。NDLRB = 15;%资源块数enb。CellRefP = 1;% 1个发射天线接口enb。NCellID = 10;%细胞IDenb。CyclicPrefix =“正常”正规循环前缀enb。DuplexMode =“FDD”% FDD

信噪比配置

操作信噪比由该值配置为分贝SNRdB也可以转换成线性信噪比。

SNRdB = 22;期望的信噪比(dB)信噪比= 10 ^ (SNRdB / 20);%线性信噪比rng (“默认”);%配置随机数生成器

通道模型配置

通道模型使用结构配置。在这个例子中,使用了带有扩展车辆a (EVA)延迟轮廓和120Hz多普勒频率的衰落信道。这些参数以及MIMO相关和其他信道模型特定的参数被设置。

cfg。年代eed = 1;%通道种子cfg。NRxAnts = 1;% 1接收天线cfg。DelayProfile =“爱娃”延迟扩展%cfg。DopplerFreq = 120;% 120Hz多普勒频率cfg。MIMOCorrelation =“低”%低(无)MIMO相关cfg。InitTime = 0;%在时间0初始化cfg。NTerms = 16;衰落模型中使用的振荡器cfg。ModelType =“GMEDS”%瑞利衰落模型类型cfg。InitPhase =“随机”%随机初始阶段cfg。NormalizePathGains =“上”正规化延迟轮廓功率cfg。NormalizeTxAnts =“上”传送天线规格化

信道估计配置

用户自定义窗口用于平均导频符号,以减少噪声的影响。平均窗口大小是根据资源元素(REs)配置的,包括时间和频率。本例中使用了一个保守的9 × 9窗口作为EVA延迟轮廓和120Hz多普勒频率导致信道随时间和频率快速变化。一个9乘9的窗口包括4个飞行员在平均时立即围绕感兴趣的飞行员。中讨论了选择平均窗口信道估计

cec。PilotAverage =“UserDefined”导频平均法cec。FreqWindow = 9;% REs中的频率平均窗口cec。TimeWindow = 9;在REs中时间平均窗口

信道估计器在导频估计之间进行插值,为所有res创建信道估计。为了改进估计,在插值时可以使用多个子帧。带有中心插值窗口的3个子帧插值窗口使用来自3个连续子帧的导频估计来估计中心子帧。

cec。InterpType =“立方”%三次插值cec。InterpWinSize = 3;%最多插入3个子帧同时%cec。InterpWindow =“中心”%插值加窗方法

子帧资源网格大小

在本例中,访问子框架资源网格维度是很有用的。这些是用lteDLResourceGridSize.这个函数返回一个数组,该数组包含子载波的数量、OFDM符号的数量和发送天线端口的数量。

gridsize = lteDLResourceGridSize (enb);K = gridsize (1);%子载波数L = gridsize (2);%一帧OFDM符号数P = gridsize (3);%发送天线端口数

传输资源网格

一个空的资源网格txGrid被创建,它将被填充子帧。

txGrid = [];

有效载荷数据生成

由于本例中没有使用传输信道,因此通过该信道发送的数据将是随机的QPSK调制符号。创建符号的子帧值,以便将符号映射到每个资源元素。传输和接收所需的其他信号将覆盖资源网格中的这些符号。

%所需的位数是资源网格的大小(K*L*P) *位数每符号% (QPSK为2)numberOfBits = K * L * P * 2;%创建随机比特流inputBits = randi([0 1], numberOfBits, 1);%调制输入位inputSym = lteSymbolModulate (inputBits,“正交相移编码”);

框架生成

该帧将通过在循环中生成单独的子帧并将每个创建的子帧附加到之前的子帧来创建。附加子帧的集合包含在其中txGrid.这个附加过程重复十次以创建一个框架。当OFDM调制的时域波形通过一个信道时,该波形将经历延时。为了避免由于这个延迟而错过任何样本,将生成一个额外的子帧,因此总共生成11个子帧。对于每一个子帧,添加细胞特定参考信号(细胞RS)。同时增加了主同步信号(PSS)和次同步信号(SSS)。注意,这些同步信号只出现在子帧0和5中,但是LTE工具箱负责在其他子帧中生成空信号和索引,以便在这些子帧中调用语法可以完全一致。

%用于帧内的所有子帧科幻小说= 0:10%设置子帧数enb。N年代ubframe = mod(sf,10);%生成空子帧子帧= lteDLResourceGrid (enb);将输入符号映射到网格子帧(:)= inputSym;%产生同步信号pssSym = ltePSS (enb);sssSym = lteSSS (enb);pssInd = ltePSSIndices (enb);sssInd = lteSSSIndices (enb);将同步信号映射到网格子帧(pssInd) = pssSym;子帧(sssInd) = sssSym;%生成细胞特定的参考信号符号和索引cellRsSym = lteCellRS (enb);cellRsInd = lteCellRSIndices (enb);将单元格特定的参考信号映射到网格子帧(cellRsInd) = cellRsSym;%附加子帧到要传输的网格txGrid = [txGrid子帧];% #好吧结束

OFDM调制

为了将频域的OFDM符号转换为时域,需要进行OFDM调制。这是通过使用lteOFDMModulate.函数返回两个值;一个矩阵txWaveform和结构信息包含采样率。txWaveform为得到的时域波形。每一列包含每个天线端口的时域信号。在本例中,由于只使用了一个天线端口,因此只返回一列。信息。年代amplingRate为时域波形产生时的采样率。这个值是通道模型所需要的。

[txWaveform,信息]= lteOFDMModulate (enb txGrid);txGrid = txGrid (:, 1:140);

衰落信道

时域波形通过信道模型(lteFadingChannel)由结构配置cfg.信道模型要求时域波形的采样率,因此需要参数cfg。年代amplingRate设置为lteOFDMModulate.由信道模型函数产生的波形包含每个接收天线一列。在本例中使用了一个接收天线,因此返回的波形有一列。

cfg。年代amplingRate = info.SamplingRate;将数据通过衰落信道模型txWaveform rxWaveform = lteFadingChannel (cfg);

添加剂噪声

信噪比为 年代 N R E 年代 / N 0 在哪里 E 年代 能量是感兴趣的信号吗 N 0 为噪声功率。OFDM解调前增加的噪声会被FFT放大。因此,为了使接收机(OFDM解调后)的信噪比归一化,必须对噪声进行缩放。放大倍数是FFT大小的平方根。FFT的大小可以由时域波形的采样率(信息。年代amplingRate)和副载波间距(15 kHz)。要添加的噪声的功率可以按比例调整,这样 E 年代 N 0 在OFDM解调后归一化,以达到预期的信噪比(SNRdB).

计算噪声增益N0 = 1 /(√(2.0 * enb.CellRefP *双(info.Nfft)) *信噪比);创建加性高斯白噪声噪音= N0 *复杂(randn(大小(rxWaveform)), randn(大小(rxWaveform)));%在接收到的时域波形中加入噪声rx波形= rx波形+噪声;

同步

由信道在接收的时域信号中引起的偏移使用lteDLFrameOffset.这个函数返回一个值抵消它表示波形被延迟了多少个采样。对于所有天线接收到的波形,偏移被认为是相同的。接收到的时域波形可以被操纵以消除延迟使用抵消

抵消= lteDLFrameOffset (enb rxWaveform);rxWaveform = rxWaveform(1 +抵消:最终,);

OFDM解调

时域波形经过OFDM解调,将其转换到频域并重建资源网格。这是通过使用lteOFDMDemodulate.得到的网格是一个三维矩阵。行数表示子载波的数量。列数等于子帧中的OFDM符号数。从OFDM解调返回的网格的子载波和符号的数量与进入的网格相同lteOFDMModulate.网格中第三维平面的数量与接收天线的数量相对应。

rxGrid = lteOFDMDemodulate (enb rxWaveform);

信道估计

创建信道在传输资源网格持续时间内的估计lteDLChannelEstimate使用。信道估计功能由该结构配置ceclteDLChannelEstimate假设资源网格中的第一个子帧是子帧号enb。N年代ubframe因此,子帧号必须在调用函数之前设置。在这个例子中,整个接收帧将在一个呼叫中被估计,并且帧内的第一个子帧是子帧号0。对于每个可能的发射和接收天线组合,该函数返回一个由复权值组成的4-D阵列,信道将其应用于发射网格中的每个资源元素。可能的组合方式以eNodeB配置为准enb以及接收天线的数量(由接收资源网格的大小决定)。第1维是副载波,第2维是OFDM符号,第3维是接收天线,第4维是发射天线。在这个例子中,一个发射和一个接收天线被使用,因此尺寸estChannel是180 -的- 140 - 1 - 1。

enb。N年代ubframe = 0; [estChannel, noiseEst] = lteDLChannelEstimate(enb,cec,rxGrid);

MMSE均衡

信道对接收的资源网格的影响被均衡使用lteEqualizeMMSE.这个函数使用信道的估计值estChannel和噪音噪音均衡接收的资源网格rxGrid.函数返回eqGrid也就是均衡网格。均衡栅格的尺寸与原始传输栅格相同(txGrid)在OFDM调制之前。

eqGrid = lteEqualizeMMSE(rxGrid, estChannel, noiseEst);

分析

将接收的资源网格与均衡的资源网格进行比较。计算了发射和均衡网格与发射和接收网格之间的误差。这将创建两个矩阵(与资源数组大小相同),其中包含每个符号的错误。为了便于检查,接收到的均衡网格用对数尺度绘制冲浪hDownlinkEstimationEqualizationResults.m.这些图表明,执行信道均衡极大地减少了接收资源网格中的错误。

计算传输和均衡电网之间的误差eqError = txGrid - eqGrid;rxError = txGrid - rxGrid;%计算所有输入值的EVM预均衡接收信号的EVM %维生素与= comm.EVM;维生素。AveragingDimensions = [1 2];preEqualisedEVM =维生素(txGrid rxGrid);流(预均衡信号的百分比RMS EVM: %0.3f%%\n...preEqualisedEVM);
预均衡信号百分率RMS EVM: 124.133%
均衡后接收信号的EVM %postEqualisedEVM =维生素(txGrid eqGrid);流('后均衡信号的百分比RMS EVM: %0.3f%%\n'...postEqualisedEVM);
后均衡信号的RMS百分比:15.598%
%绘制接收到的均衡资源网格hDownlinkEstimationEqualizationResults (rxGrid eqGrid);

图中包含一个轴对象。标题为“接收资源网格”的axis对象包含一个类型为surface的对象。

图中包含一个轴对象。标题为“均衡资源网格”的axis对象包含一个类型为surface的对象。

附录

下面的例子使用了helper函数: