主要内容

不同均衡器的误码率性能

这个例子展示了在通带为空的静态信道中几种类型的均衡器的误码率性能。该示例构造并实现一个线性均衡器对象和一个决策反馈均衡器(DFE)对象。它还初始化并调用最大似然序列估计(MLSE)均衡器。首先使用完全的信道知识调用MLSE均衡器,然后使用直接但不完全的信道估计技术。

随着仿真的进行,它会更新误码率图,以便于对各种均衡方法进行比较分析。给出了线性均衡信号和DFE均衡信号的谱图。它还显示了错误的相对突发性,表明在低BERs时,MLSE算法和DFE算法都存在错误突发。特别是,当被检测位反馈时,DFE的误差性能比正确位反馈时更强。最后,在仿真的“不完美”MLSE部分,显示并动态更新估计的信道响应。

要使用此示例进行实验,您可以更改信道冲激响应、均衡器抽头权重的数量、递归最小二乘(RLS)遗忘因子、最小均方(LMS)等参数步长、MLSE回溯长度、估计信道长度中的错误以及在每个Eb/No值处收集的最大错误数。

代码结构

此示例依赖于这些帮助器脚本和函数在一系列Eb/No值上执行链路模拟。

eqber_adaptive.m-一个脚本,运行线性和DFE均衡器的链接模拟

eqber_mlse.m-为理想和非理想MLSE均衡器运行链路模拟的脚本

eqber_siggen.m-一个脚本,生成一个没有脉冲整形的二进制相移键控(BPSK)信号,然后通过通道处理它并添加噪声

eqber_graphics.m-一个函数,生成和更新显示线性、DFE和MLSE均衡器性能的图。

脚本eqber_adaptive和eqber_mlse演示了如何跨多个数据块使用自适应均衡器和MLSE均衡器,以便在数据块之间保留状态信息。

信号及通道参数

设置与信号和信道相关的参数。使用无任何脉冲整形的BPSK和5抽头实值对称信道脉冲响应。(有关信道的更多详细信息,请参阅J.Proakis第四版《数字通信》第10.2.3节。)设置数据和噪声发生器的初始状态。设置Eb/No范围。

%系统仿真参数Fs=1;%采样频率(名义)nBits = 2048;%每个向量的BPSK符号数最大误差=200;%每个Eb/No的目标错误数最大比特数=1e6;%每一Eb/号的最大符号数目%调制信号参数M = 2;%调制顺序Rs=Fs;%符号率nSamp=Fs/Rs;每个符号%样本Rb = Rs * log2 (M);%比特率%信道参数CHNL = [0.227 0.460 0.688 0.460 0.227]';%信道冲激响应chnlLen =长度(chnl);%通道长度,在样本中EbNo=0:14;在dB %1 = 0(大小(EbNo));%初始化值创建BPSK调制器bpskMod=comm.BPSKModulator;%指定随机数生成器的种子,以确保可重复性。rng (12345)

自适应均衡器参数

设置线性和DFE均衡器的参数值。使用31分频的线性均衡器,和带有15个前馈和反馈分频的DFE。对第一块数据使用递归最小二乘(RLS)算法,确保快速收敛。之后采用最小均方(LMS)算法,以保证快速的执行速度。

线性均衡器参数nWts=31;权重百分比algType =RLS的% RLS算法forgetFactor = 0.999999;%RLS算法的参数% DFE参数-使用与线性均衡器相同的更新算法nFwdWts=15;%前馈权重数nFbkWts = 15;%反馈权重数

MLSE均衡器&信道估计参数和初始可视化

设置MLSE均衡器的参数。使用信道冲激响应长度六倍的回溯长度。初始化均衡器状态。将均衡模式设置为“连续”,以在多个数据块上实现无缝均衡。在信道估计技术中使用循环前缀,并设置前缀的长度。假设信道冲激响应的估计长度比实际长度长一个样本。

%MLSE均衡器参数tbLen = 30;%MLSE均衡器回溯长度numStates=M^(chnlLen-1);格子状态的数量[mlseMetric,mlseStates,mlseInputs]=交易([]);常数=星座(bpskMod);%的信号星座mlseType =“理想”%完美信道估计首先mlseMode =“续”%没有MLSE重置信道估计参数chnlEst = chnl;%初始完美估计prefixLen=2*chnlen;循环前缀长度超标=1;%估计信道冲激响应的长度%超出实际长度%初始化模拟图形。绘制不均匀通道%频率响应,理想BPSK系统的误码率。idealBER=berawgn(EbNo,“psk”米,“非敌方”);(hb、hLegend legendString、hLinSpec hDfeSpec,赫尔,hText1, hText2,...hFit、hEstPlot hFig、hLinFig hDfeFig] = eqber_graphics (“init”...chnl、EbNo idealBER nBits);

构造RLS和LMS线性和DFE均衡器对象

采用RLS更新算法调整均衡器点击权重,并将参考点击设置为中心点击。

linEq = comm.LinearEqualizer (“算法”algType,...“遗忘因子”,健忘者,...“NumTaps”nWts,...“星座”常量,...“ReferenceTap”圆(nWts / 2),...“TrainingFlagInputPort”,对);dfeEq=通信判决反馈均衡器(“算法”algType,...“遗忘因子”,健忘者,...“NumForwardTaps”nFwdWts,...“NumFeedbackTaps”nFbkWts,...“星座”常量,...“ReferenceTap”圆(nFwdWts / 2),...“TrainingFlagInputPort”,真正的);

线性均衡器

运行线性均衡器,并绘制每个数据块的均衡信号频谱、误码率和突发错误性能。注意,随着Eb/No的增加,线性均衡的信号频谱具有逐渐加深的零值。这突出了一个事实,即线性均衡器必须有更多的水龙头,以充分均衡与深空通道。还需要注意的是,错误发生的间隔时间很短,这在如此高的错误率下是可以预料到的。

看到eqber_adaptive.m获取自适应均衡器的仿真代码列表。

firstRun = true;%标志以确保已知噪声和数据的初始状态eqType =“线性”;eqber_adaptive;

判决反馈均衡器

运行DFE,并绘制每个数据块的均衡信号频谱、误码率和突发错误性能。请注意,DFE比线性均衡器能够更好地缓解信道零点,如频谱图和误码率图所示。在给定Eb/No值下绘制的误码率点在每个数据块都会更新,因此它们会向上移动或下降,取决于该块中收集的错误数。还要注意的是,由于反馈检测到的位而不是正确的位而导致的错误传播,DFE错误有些突发。突发错误图显示,随着误码率的降低,出现大量错误,错误到达时间为5位或更少(如果DFE均衡器始终在训练模式下运行,则错误的突发性会小得多。)

对于每个数据块,如果这些错误是随机发生的,该图还表明平均的错误间隔。

看到eqber_adaptive.m获取自适应均衡器的仿真代码列表。

关闭(hFig(ishghandle(hFig));eqType=“dfe”;eqber_adaptive;

理想的MLSE均衡器,具有完善的信道知识

使用完美的信道估计运行MLSE均衡器,并绘制每个数据块的误码率和突发错误性能。请注意,错误以非常突发的方式发生。请注意,特别是在低误码率下,绝大多数错误发生在一个或两个位的错误间隔内。

看到eqber_mlse.m查看MLSE均衡器的模拟代码列表。

关闭(hLinFig (ishghandle (hLinFig)), hDfeFig (ishghandle (hDfeFig)));eqType =“mlse”;mlseType =“理想”;eqber_mlse;

不完全信道估计的MLSE均衡器

使用不完美信道估计运行MLSE均衡器,并绘制每个数据块的误码率和突发错误性能。这些结果与理想的MLSE结果相当接近。(信道估计算法高度依赖于数据,因此传输数据块的FFT没有零值。)注意估计的信道图与实际信道频谱图的比较。

看到eqber_mlse.m查看MLSE均衡器的模拟代码列表。

mlseType =“不完美”;eqber_mlse;