主要内容

LTE下行信道估计与均衡

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

简介

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

它是设置

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

enb。NDLRB = 15;%资源块数量enb。CellRefP = 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 =“爱娃”% EVA延迟扩散cfg。DopplerFreq = 120;多普勒频率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个子帧。对每一个子帧添加Cell- specific Reference Signal (Cell RS)。新增PSS (Primary Synchronization Signal)和SSS (Secondary Synchronization Signal)。注意,这些同步信号只出现在子帧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调制。

= lteEqualizeMMSE(rxGrid, estChannel, noiseEst);

分析

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

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

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

图中包含一个axes对象。标题为Equalized resource grid的axis对象包含一个类型为surface的对象。

附录

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

Baidu
map