此示例显示如何使用LTE工具箱™创建帧的数据,通过衰落通道并执行信道估计和均衡。创建两个图形,示出了接收和均衡的帧。
此示例显示了如何使用来自LTE工具箱的功能创建简单的发射机 - 通道接收器模拟。该示例在一个天线端口上生成一个值的数据。由于在该示例中未创建传输信道,则数据是随机位,QPSK调制并映射到子帧中的每个符号。将小区特定的参考信号和主和次级同步信号创建并映射到子帧。单独生成10个子帧以创建帧。框架是OFDM调制,通过扩展车辆型号(EVA5)衰落通道,添加和解调添加白色高斯噪声。使用信道和噪声估计的MMSE均衡,最后绘制接收和均衡资源网格。
单元格范围的设置在结构中指定eNB.
。此示例中使用的许多函数需要下面指定的设置的子集。在该示例中,仅使用一个发射天线。
enb.ndlrb = 15;%资源块数enb.cellrefp = 1;%一个传输天线端口eNB.ncellid = 10;%单元IDeNB.CyclicPrefix =.'正常';%正常循环前缀eNB.DuplexMode ='FDD';%FDD.
操作SNR按值分贝配置SNRDB.
这也被转换成线性SNR。
SNRDB = 22;%所需的SNR在DB中SNR = 10 ^(SNRDB / 20);%线性snr.RNG('默认');%配置随机数生成器
使用结构配置通道模型。在该示例中,使用具有扩展车辆A(EVA)延迟分布和120Hz多普勒频率的衰落通道。设置这些参数以及MIMO相关性和其他通道模型特定参数。
cfg.seed = 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.initphase =.“随机”;%随机初始阶段cfg.normalizepathgains ='开';%标准化延迟配置文件cfg.normalizetxants ='开';传输天线的%标准化
用户定义的窗口用于平均导频符号以降低噪声的效果。平均窗口大小以资源元素(RES),时间和频率在一起。在该示例中使用保守派的9×9窗口,作为EVA延迟配置文件,120Hz多普勒频率导致通道随时间和频率快速变化。9×9窗口包括在平均时立即围绕着感兴趣的飞行员的4个飞行员。选择平均窗口渠道估计数。
cec.pilotaverage =.'userdefined';%飞行员平均方法cec.freqwindow = 9;res中的%频率平均窗口cec.timewindow = 9;res中的%time平均窗口
通过导频估计之间的信道估计器来执行插值以创建所有RE的信道估计。为了改进估计,可以在内插时使用多个子帧。具有居中插值窗口的3个子帧的插值窗口使用来自3个连续子帧的导频估计来估计中心子帧。
cec.interpype ='立方';%立方插值cec.Interpwinsize = 3;%内插多达3个子帧%同时cec.interpwindow ='中心';%插值窗口方法
在该示例中,可以访问子帧资源网格尺寸是有用的。这些是使用的ltedlresourcegridsize.
。此函数返回包含子载波的数量的数组,以该顺序的传输天线端口数量,OFDM符号数和数量。
gridsize = ltedlresourcegridsize(eNB);k = gridsize(1);百分比的子载波数量l = gridsize(2);一个子帧中的%OFDM符号数P =网格化(3);百分比的发射天线端口
空资源网格txgrid.
是创建的,它将被子帧填充。
txgrid = [];
由于在该示例中使用传输信道,则通过通道发送的数据将是随机QPSK调制符号。创建一个符号的子帧,因此可以将符号映射到每个资源元素。传输和接收所需的其他信号将覆盖资源网格中的这些符号。
所需的数量是资源网格的大小(k * l * p)*位数%符号(2用于QPSK)NumberFbits = K * L * P * 2;%创建随机比特流InputBits = RANDI([0 1],NumberOfbits,1);%调制输入位InputSym = LTSymbolmodulate(InputBits,'QPSK');
将通过在循环内生成各个子帧并将每个创建的子帧附加到先前子帧来创建帧。附加子帧的集合包含在内txgrid.
。此附加重复十次以创建帧。当OFDM调制的时域波形通过通道时,波形将遇到延迟。为避免由于该延迟而错过的任何样本,因此产生额外的子帧,因此总共生成11个子帧。对于每个子帧,添加小区特定的参考信号(小区RS)。还添加了主要同步信号(PSS)和辅同步信号(SSS)。注意,这些同步信号仅在子帧0和5中出现,但是LTE工具箱在其他子帧中处理生成空信号和索引,使得这里的呼叫语法可以在子帧上完全统一。
帧内所有子帧的百分比对于SF = 0:10%设置子帧号enb.nsubframe = mod(sf,10);%生成空子帧子帧= LTEDLESOURCEGRID(eNB);%映射到网格的输入符号子帧(:) = inputsym;%生成同步信号psssym = ltepss(eNB);SSSSYM = LTESS(eNB);pssind = ltepssindices(eNB);SSSIND = LTESSINDICES(eNB);%映射到网格的同步信号子帧(pssind)= psssym;子帧(SSSIND)= SSSSYM;%生成小区特定的参考信号符号和索引Cellrssym = LTECellrs(eNB);cellrsind = ltecellrsindices(eNB);%将特定的参考信号映射到网格子帧(Cellrsind)= Cellrssym;%将子帧附加到要传输的网格txgrid = [txgrid子帧];%#OK.结束
为了将频域OFDM符号转换为时域,需要OFDM调制。这是实现的lteofdmodulate.
。该函数返回两个值;矩阵txwaveform.
和一个结构信息
包含采样率。txwaveform.
是结果的时域波形。每个列包含每个天线端口的时域信号。在此示例中,仅使用一个天线端口,只返回一个列。info.samplingrate.
是创建时域波形的采样率。通道模型需要此值。
[TxWaveForm,Info] = LTEOfdmodulate(eNB,TxGrid);txgrid = txgrid(:,1:140);
时域波形通过通道模型(LTEFADINGCHANNEL.
)由结构配置CFG.
。通道模型需要时域波形的采样率,因此参数cfg.samplingrate.
设置为返回的值lteofdmodulate.
。由通道模型功能生成的波形包含每个接收天线的一列。在该示例中,使用一个接收天线,因此返回的波形具有一列。
cfg.samplingrate = info.samplingrate;%通过衰落通道模型传递数据rxwaveform = ltefadingChannel(CFG,TxWaveForm);
SNR是给出的
在哪里
是感兴趣的信号的能量和
是噪音力量。在OFDM解调之前添加的噪声将由FFT放大。因此,要将接收器(OFDM解调后)标准化SNR,必须缩放噪声。扩增是FFT大小的平方根。FFT的大小可以从时域波形的采样率确定(info.samplingrate.
)和子载波间隔(15 kHz)。可以缩放要添加的噪声的力量
和
OFDM解调后归一化以达到所需的SNR(SNRDB.
)。
%计算噪声增益N0 = 1 /(SQRT(2.0 * eNB.Cellrefp * Double(Info.nfft))* SNR);%创建添加剂白色高斯噪声噪声= N0 *复合物(Randn(randn(rxwaveform)),randn(size(rxwaveform)));%为接收的时域波形添加噪声rxwaveform = rxwaveform +噪声;
使用所接收的时域信号中的信道引起的偏移量ltedlframeoffset.
。此函数返回一个值偏移
这表示波形已经延迟了多少个样本。偏移被认为是在所有天线上接收的波形的相同。然后可以操纵接收的时域波形以消除延迟使用偏移
。
offset = ltedlframeoffset(eNB,rxwaveform);rxwaveform = rxwaveform(1 + offset:结束,:);
时域波形经历OFDM解调以将其转换为频域并重新创建资源网格。这是使用的lteofdmdemodulate.
。得到的网格是三维矩阵。行数表示子载波的数量。列数等于子帧中的OFDM符号的数量。对于从OFDM解调的返回网格,子载波和符号的数量是相同的,因为网格进入lteofdmodulate.
。网格中的平面的数量(第3维度)对应于接收天线的数量。
rxgrid = lteofdmdemodulate(eNB,rxwaveform);
在传输的资源网格的持续时间内创建频道的估计LtedlchanneLeStimate
使用。信道估计函数由结构配置CEC.
。LtedlchanneLeStimate
假设资源网格中的第一个子帧是子帧号enb.nsubframe.
因此,必须在调用函数之前设置子帧号。在该示例中,整个接收的帧将在一个呼叫中估计,并且帧内的第一子帧是子帧编号。函数返回一个4-D阵列的复重权重,该信道适用于每个资源元素的每个资源元素可能的发射和接收天线组合。可能的组合基于eNodeB配置eNB.
和接收天线的数量(由所接收的资源网格的大小确定)。第一个尺寸是子载波,第二尺寸是OFDM符号,第3尺寸是接收天线,第四维度是发射天线。在该示例中,使用一个发射和一个接收天线因此的大小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预均衡接收信号的%EVMEVM = comm.evm;evm.averagingdimensions = [1 2];preequalisedevm = EVM(TxGrid,RxGrid);fprintf('预均衡信号的百分比RMS EVM:%0.3f %% \ n'那......preequalisedevm);
预均衡信号的百分比RMS EVM:124.133%
均衡后接收信号的%EVMPostequalissevm = EVM(TxGrid,EqGrid);fprintf('均衡信号的百分比RMS EVM:%0.3f %% \ n'那......Postequaliseevm);
均衡信号的百分比RMS EVM:15.598%
%绘制接收和均衡的资源网格hdbeLinkestimationequalizationResults(RxGrid,EqGrid);
此示例使用辅助功能: