此示例显示如何使用LTE工具箱™创建帧的数据,通过衰落通道并执行信道估计和均衡。创建两个图形,示出了接收和均衡的帧。
此示例显示了如何使用来自LTE工具箱的功能创建简单的发射机 - 通道接收器模拟。该示例在一个天线端口上生成一个值的数据。由于在该示例中未创建传输信道,则数据是随机位,QPSK调制并映射到子帧中的每个符号。将小区特定的参考信号和主和次级同步信号创建并映射到子帧。单独生成10个子帧以创建帧。框架是OFDM调制,通过扩展车辆型号(EVA5)衰落通道,添加和解调添加白色高斯噪声。使用信道和噪声估计的MMSE均衡,最后绘制接收和均衡资源网格。
单元格范围的设置在结构中指定enb
. 本例中使用的许多函数需要下面指定的设置子集。在此示例中,仅使用一个发射天线。
enb。NDLRB = 15;%资源块数enb.CellRefP=1;% 1个发射天线接口enb。NCellID = 10;%单元IDeNB.CyclicPrefix =.“正常”;正规循环前缀双工模式=“FDD”;%FDD.
操作SNR按值分贝配置SNRDB.
这也被转换成线性SNR。
SNRdB=22;期望的信噪比(dB)SNR = 10 ^(SNRDB / 20);%线性信噪比RNG('默认');%配置随机数生成器
通道模型使用结构配置。在这个例子中,使用了带有扩展车辆a (EVA)延迟轮廓和120Hz多普勒频率的衰落信道。这些参数以及MIMO相关和其他信道模型特定的参数被设置。
种子=1;%通道种子cfg.nrxants = 1;% 1接收天线cfg.delayprofile ='eva';%EVA延迟差cfg。DopplerFreq = 120;%120Hz多普勒频率cfg.mimocorrelation =.“低”;%低(否)MIMO相关性cfg.inittime = 0;%零初始化为零cfg.nterms = 16;褪色模型中使用的%振荡器cfg.modeltype ='gmeds';%瑞利衰落模型类型初始阶段=“随机”;%随机初始阶段cfg.cfg=“开”;%正常化延迟剖面功率cfg.normalizetxants =“开”;%发射天线的标准化
用户定义的窗口用于平均导频符号以降低噪声的效果。平均窗口大小以资源元素(RES),时间和频率在一起。在该示例中使用保守派的9×9窗口,作为EVA延迟配置文件,120Hz多普勒频率导致通道随时间和频率快速变化。9×9窗口包括在平均时立即围绕着感兴趣的飞行员的4个飞行员。选择平均窗口渠道估计数.
cec。PilotAverage =“用户定义”;%导频平均法cec.freqwindow = 9;res中的%频率平均窗口cec。TimeWindow = 9;%时间平均窗
通过导频估计之间的信道估计器来执行插值以创建所有RE的信道估计。为了改进估计,可以在内插时使用多个子帧。具有居中插值窗口的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)*位数%每个符号(2个用于QPSK)NumberFbits = K * L * P * 2;%创建随机比特流inputBits=randi([0 1],numberOfBits,1);%调制输入位inputSym = lteSymbolModulate (inputBits,“正交相移编码”);
帧将通过在循环中生成单个子帧并将每个创建的子帧附加到先前的子帧来创建。附加子帧的集合包含在txgrid.
.这个附加过程重复十次以创建一个框架。当OFDM调制的时域波形通过一个信道时,该波形将经历延时。为了避免由于这个延迟而错过任何样本,将生成一个额外的子帧,因此总共生成11个子帧。对于每一个子帧,添加细胞特定参考信号(细胞RS)。同时增加了主同步信号(PSS)和次同步信号(SSS)。注意,这些同步信号只出现在子帧0和5中,但是LTE工具箱负责在其他子帧中生成空信号和索引,以便在这些子帧中调用语法可以完全一致。
%用于帧内的所有子帧对于SF = 0:10%设置子帧号enb.nsubframe.=mod(sf,10);%生成空子帧子帧= lteDLResourceGrid (enb);%将输入符号映射到网格子帧(:)=inputSym;%产生同步信号pssSym = ltePSS (enb);sssSym = lteSSS (enb);pssInd = ltePSSIndices (enb);sssInd = lteSSSIndices (enb);%映射到网格的同步信号子帧(pssind)= psssym;子帧(SSSIND)= SSSSYM;%生成小区特定的参考信号符号和索引cellRsSym=ltecellers(enb);cellRsInd=lteCellRSIndices(enb);%将特定的参考信号映射到网格子帧(cellRsInd) = cellRsSym;%将子帧附加到要传输的网格txGrid=[txGrid子帧];%#好的结束
为了将频域OFDM符号转换为时域,需要OFDM调制。这是通过使用lteofdmodulate.
. 函数返回两个值;矩阵TXV波形
和一个结构信息
包含采样率。TXV波形
为得到的时域波形。每一列包含每个天线端口的时域信号。在本例中,由于只使用了一个天线端口,因此只返回一列。信息抽样
为时域波形产生时的采样率。这个值是通道模型所需要的。
[TxWaveForm,Info] = LTEOfdmodulate(eNB,TxGrid);txgrid = txgrid(:,1:140);
时域波形通过通道模型(LTEFADINGCHANNEL.
)由结构配置cfg
.通道模型需要时域波形的采样率,因此参数采样栅
设置为返回的值lteofdmodulate.
.由信道模型函数产生的波形包含每个接收天线一列。在本例中使用了一个接收天线,因此返回的波形有一列。
采样栅=信息抽样;%通过衰落通道模型传递数据rxwaveform = ltefadingChannel(CFG,TxWaveForm);
信噪比为
在哪里
是感兴趣的信号的能量和
是噪音的力量。OFDM解调前加入的噪声将通过FFT进行放大。因此,为了使接收机的信噪比正常化(OFDM解调后),必须对噪声进行缩放。放大是FFT大小的平方根。FFT的大小可根据时域波形的采样率确定(信息抽样
)和副载波间距(15 kHz)。要添加的噪声的功率可以按比例调整,这样
和
OFDM解调后归一化以达到所需的SNR(SNRDB.
).
%计算噪声增益N0 = 1 /(SQRT(2.0 * eNB.Cellrefp * Double(Info.nfft))* SNR);创建加性高斯白噪声噪声=N0*复数(randn(大小(RX波形)),randn(大小(RX波形));%向接收到的时域波形添加噪声rxwaveform = rxwaveform +噪声;
由信道在接收的时域信号中引起的偏移使用lteDLFrameOffset
.这个函数返回一个值抵消
它表示波形被延迟了多少个采样。对于所有天线接收到的波形,偏移被认为是相同的。接收到的时域波形可以被操纵以消除延迟使用抵消
.
offset = ltedlframeoffset(eNB,rxwaveform);rxwaveform = rxwaveform(1 + offset:结束,:);
时域波形经过OFDM解调,将其转换到频域并重建资源网格。这是通过使用lteofdmdemodulate.
.得到的网格是三维矩阵。行数表示子载波的数量。列数等于子帧中的OFDM符号的数量。对于从OFDM解调的返回网格,子载波和符号的数量是相同的,因为网格进入lteofdmodulate.
. 网格中的平面数(三维)对应于接收天线的数量。
rxGrid = lteOFDMDemodulate (enb rxWaveform);
在传输的资源网格的持续时间内创建频道的估计LTEDL信道估计
用来。信道估计函数由结构配置cec
.LTEDL信道估计
假设资源网格中的第一个子帧是子帧编号enb.nsubframe.
因此,必须在调用函数之前设置子帧编号。在此示例中,整个接收到的帧将在一次调用中估计,帧内的第一个子帧是子帧编号0。该函数返回一个4-D复数权重数组,信道将该复数权重应用于发射网格中每个可能的发射和接收天线组合的每个资源元素。可能的组合基于eNodeB配置enb
以及接收天线的数量(由接收资源网格的大小决定)。第1维是副载波,第2维是OFDM符号,第3维是接收天线,第4维是发射天线。在这个例子中,一个发射和一个接收天线被使用,因此尺寸estChannel
是180 -的- 140 - 1 - 1。
enb.nsubframe = 0;[Estchannel,噪声] =拉登中限(eNB,CEC,RxGrid);
使用的频道对所接收的资源网格的影响均衡使用lteequalizemse.
.这个函数使用信道的估计值estChannel
和噪音吵闹的
均衡所接收的资源网格rxgrid.
.函数返回eqGrid
这是均衡的网格。均衡网格的尺寸与原始传输网格相同(txgrid.
)在OFDM调制之前。
eqgrid = lteequalizemse(rxgrid,estchannel,噪音);
将收到的资源网格与均等资源网格进行比较。计算发送和均衡的网格和发送和接收网格之间的误差。这将创建两个矩阵(与资源阵列相同的大小),其包含每个符号的错误。为了轻松检查,所接收和均等的网格绘制在对数标度上使用冲浪
在hdbeLinkestimationequalizationResults.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 %Postequalissevm = EVM(TxGrid,EqGrid);流('后均衡信号的RMS EVM百分比:%0.3f%%\n',...postEqualisedEVM);
后均衡信号的RMS EVM百分比:15.598%
%绘制接收到的均衡资源网格hDownlinkEstimationEqualizationResults (rxGrid eqGrid);
下面的例子使用了helper函数: