LTE下行信道估计与均衡
本示例展示了如何使用LTE Toolbox™创建一帧数据,将其通过衰落信道并执行信道估计和均衡。创建两个图来说明所接收的和均衡的帧。
简介
此示例显示如何使用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;% 120Hz多普勒频率cfg。MIMOCorrelation =“低”;低(无)MIMO相关性cfg。InitTime = 0;%初始化时间为0cfg。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;%频率平均窗口在REscec。TimeWindow = 9;在REs中平均窗口时间%
信道估计器在导频估计之间执行插值,为所有res创建信道估计。为了改进估计,可以在插值时使用多个子帧。具有中心插补窗口的3个子帧插补窗口使用来自3个连续子帧的导频估计来估计中心子帧。
cec。InterpType =“立方”;三次插值百分比cec。InterpWinSize = 3;插值最多3个子帧同时%cec。InterpWindow =“中心”;插值开窗方法
子帧资源网格大小
在本例中,访问子帧资源网格维度非常有用。这些都是由lteDLResourceGridSize
.这个函数返回一个数组,按照顺序包含子载波的数量、OFDM符号的数量和发射天线端口的数量。
gridsize = lteDLResourceGridSize(enb);K =网格大小(1);子载波数%L =网格尺寸(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 = ltesymbol调制(inputBits,“正交相移编码”);
框架生成
通过在循环中生成单独的子帧,并将每个创建的子帧附加到前面的子帧,可以创建帧。附加子帧的集合包含在txGrid
.这个附加重复十次以创建一个框架。当OFDM调制时域波形通过信道时,波形将经历延迟。为了避免由于这种延迟而错过任何样本,生成了一个额外的子帧,因此总共生成了11个子帧。对于每个子帧,添加单元特定参考信号(Cell RS)。新增主同步信号(PSS)和从同步信号(SSS)。请注意,这些同步信号只出现在子帧0和5中,但是LTE工具箱负责在其他子帧中生成空信号和索引,以便这里的调用语法可以在子帧之间完全一致。
用于帧内的所有子帧为Sf = 0:10设置子帧号enb。N年代ubframe = mod(sf,10);生成空子帧subframe = lteDLResourceGrid(enb);将输入符号映射到网格subframe(:) = inputSym;生成同步信号pssSym = ltePSS(enb);sssSym = lteSSS(enb);pssInd = ltePSSIndices(enb);sssInd = lteSSSIndices(enb);将同步信号映射到网格subframe(pssInd) = pssSym;subframe(sssInd) = sssSym;生成单元特定的参考信号符号和指数cellRsSym = lteCellRS(enb);cellrind = lteCellRSIndices(enb);将单元格特定的参考信号映射到网格subframe(cellRsInd) = cellRsSym;将子帧附加到要传输的网格txGrid = [txGrid子帧];% #好吧结束
OFDM调制
为了将频域OFDM符号转换到时域,需要进行OFDM调制。这是通过使用lteOFDMModulate
.函数返回两个值;一个矩阵txWaveform
一个结构信息
包含采样率。txWaveform
是得到的时域波形。每一列包含每个天线端口的时域信号。在本例中,由于只使用了一个天线端口,因此只返回一列。信息。年代amplingRate
是创建时域波形时的采样率。这个值是通道模型所需要的。
[tx波形,info] = lteofdm调制(enb,txGrid);txGrid = txGrid(:,1:140);
衰落信道
时域波形通过信道模型(lteFadingChannel
)由结构配置cfg
.信道模型要求时域波形的采样率,因此参数cfg。年代amplingRate
设置为返回的值lteOFDMModulate
.由信道模型函数生成的波形包含每个接收天线的一列。在本例中使用一个接收天线,因此返回的波形有一列。
cfg。年代amplingRate = info.SamplingRate;通过衰落通道模型传递数据rx波形= lteFadingChannel(cfg, tx波形);
添加剂噪声
信噪比由
在哪里
感兴趣的信号的能量是
就是噪声功率。在OFDM解调前添加的噪声将被FFT放大。因此,为了使接收机的信噪比正常化(在OFDM解调之后),必须对噪声进行缩放。放大是FFT大小的平方根。FFT的大小可由时域波形的采样率(信息。年代amplingRate
)和副载波间距(15 kHz)。要添加的噪声的功率可以缩放,以便
而且
在OFDM解调后进行归一化,以达到预期的信噪比(SNRdB
).
计算噪声增益N0 = 1/(√(2.0*enb.CellRefP*double(info.Nfft))*信噪比);创建加性高斯白噪声噪声= N0*complex(randn(size(rx波形)),randn(size(rx波形)));在接收到的时域波形中添加噪声rx波形= rx波形+噪声;
同步
在接收的时域信号中,由信道引起的偏移量通过lteDLFrameOffset
.这个函数返回一个值抵消
它表示波形被延迟了多少个样本。对于所有天线接收到的波形,偏移量被认为是相同的。接收到的时域波形可以被操纵,以消除延迟使用抵消
.
offset = lteDLFrameOffset(enb, rx波形);rx波形= rx波形(1+offset:end,:);
OFDM解调
时域波形经过OFDM解调,转换到频域,重建资源网格。这是通过使用lteOFDMDemodulate
.生成的网格是一个三维矩阵。行数表示子载波数。列数等于一个子帧中的OFDM符号数。对于OFDM解调返回的网格,子载波和符号的数量与网格传入的相同lteOFDMModulate
.网格中的平面数(第三维)对应接收天线的数量。
rxGrid = lteOFDMDemodulate(enb, rx波形);
信道估计
在传输资源网格的持续时间内创建信道的估计lteDLChannelEstimate
使用。信道估计功能由结构配置cec
.lteDLChannelEstimate
假设资源网格中的第一个子帧是子帧号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预均衡接收信号的% EVMEVM = com .EVM;维生素。AveragingDimensions = [1 2];preEqualisedEVM = EVM(txGrid,rxGrid);流('预均衡信号RMS EVM百分比:%0.3f%%\n',...preEqualisedEVM);
预均衡信号RMS EVM百分比:124.133%
后均衡接收信号的% EVMpostEqualisedEVM = EVM(txGrid,eqGrid);流('后均衡信号的RMS EVM百分比:%0.3f%%\n',...postEqualisedEVM);
后均衡信号RMS EVM百分比:15.598%
绘制接收和均衡的资源网格hDownlinkEstimationEqualizationResults (rxGrid eqGrid);
附录
下面的例子使用了helper函数: