主要内容

不同均衡器的误码率性能

此示例显示了在通带为null的静态信道中几种类型的均衡器的误码率性能。该示例构造并实现了线性均衡器对象和决策反馈均衡器(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 tap实值对称通道脉冲响应。(有关通道的更多细节,请参阅J. Proakis的《数字通信》第4版第10.2.3节。)设置数据和噪声发生器的初始状态。设置Eb/No范围。

系统仿真参数Fs = 1;%采样频率(假设)nBits = 2048;每个向量BPSK符号的百分比maxErrs = 200;每个Eb/No的目标错误数%maxBits = 1e6;每个Eb/No的最大符号数%调制信号参数M = 2;调制%阶数Rs = Fs;符号率nSamp = Fs/Rs;每个符号的样本百分比k = log2(M);每个符号的比特数%Rb = Rs*k;比特率通道参数CHNL = [0.227 0.460 0.688 0.460 0.227]';%通道脉冲响应chnlLen =长度(chnl);%通道长度,以样本为单位EbNo = 0:14;% (dB)BER = 0 (size(EbNo));%初始化值创建BPSK调制器bpskMod = com . bpskmodulator;为随机数生成器指定一个种子,以确保可重复性。rng (12345)

自适应均衡器参数

设置线性和DFE均衡器的参数值。使用31个丝锥线性均衡器,和一个有15个前馈和反馈丝锥的DFE。对第一块数据采用递归最小二乘(RLS)算法,以保证快速的tap收敛。其后采用最小均方(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] = deal([]);const = constellation(bpskMod);%信号星座mlseType =“理想”%完美的渠道估计mlseMode =“合同”% no MLSE重置信道估计参数chnlester = chnl;初始完美估计百分比prefixLen = 2* chnlen;%循环前缀长度overessest = 1;估计通道脉冲响应长度的%%超出真实长度初始化模拟图形。画出非均衡通道%频率响应,以及理想BPSK系统的误码率。* * * * * * * * * * * * * *相移键控的米,“nondiff”);(hb、hLegend legendString、hLinSpec hDfeSpec,赫尔,hText1, hText2,...hFit,hEstPlot,hFig,hLinFig,hDfeFig] = eqber_graphics(“init”...chnl、EbNo idealBER nBits);

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

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

linEq = com . linearequalizer (“算法”algType,...“ForgettingFactor”forgetFactor,...“NumTaps”nWts,...“星座”常量,...“ReferenceTap”圆(nWts / 2),...“TrainingFlagInputPort”,真正的);dfeEq = com . decisionfeedbackkequalizer (“算法”algType,...“ForgettingFactor”forgetFactor,...“NumForwardTaps”nFwdWts,...“NumFeedbackTaps”nFbkWts,...“星座”常量,...“ReferenceTap”圆(nFwdWts / 2),...“TrainingFlagInputPort”,真正的);

线性均衡器

运行线性均衡器,并绘制每个数据块的均衡信号频谱、误码率和突发错误性能。请注意,随着Eb/No的增加,线性均衡信号频谱的零值逐渐加深。这突出了一个事实,即线性均衡器必须有更多的点击,以充分平衡具有深空的通道。还要注意,这些错误发生在很小的误差间隔内,这在如此高的错误率下是意料之中的。

看到eqber_adaptive.m获取自适应均衡器的模拟代码清单。

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

决策反馈均衡器

运行DFE,并绘制每个数据块的均衡信号频谱、误码率和突发错误性能。请注意,如频谱图和误码率图所示,DFE比线性均衡器能够更好地缓解信道零。在给定Eb/No值处绘制的BER点在每个数据块上更新,因此它们根据该块中收集的错误数量向上或向下移动。还要注意的是,由于反馈检测到的位而不是正确的位所引起的错误传播,DFE错误有些突发性。突发错误图表明,随着误码率的降低,出现了大量的错误,误差之间的到达为5位或更少。(如果DFE均衡器一直在训练模式下运行,错误就不会那么严重了。)

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

看到eqber_adaptive.m获取自适应均衡器的模拟代码清单。

关闭(hFig (ishghandle (hFig)));eqType =“教育部”;eqber_adaptive;

理想的MLSE均衡器,与完美的渠道知识

运行具有完美信道估计的MLSE均衡器,并绘制每个数据块的误码率和突发错误性能。请注意,错误以一种非常突发的方式发生。观察,特别是在低BERs时,绝大多数的错误发生在误差间隔为1或2位的情况下。

看到eqber_mlse.m参阅MLSE均衡器的模拟代码清单。

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

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

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

看到eqber_mlse.m参阅MLSE均衡器的模拟代码清单。

mlseType =“不完美”;eqber_mlse;