主要内容

不同均衡器的误码率性能

这个例子展示了在通带为空的静态信道中几种类型的均衡器的误码率性能。该示例构造并实现一个线性均衡器对象和一个决策反馈均衡器(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,第4个Ed的数字通信第10.2.3节。,有关频道的更多详细信息。)设置数据和噪声发生器的初始状态。设置EB / NO范围。

%系统仿真参数FS = 1;%采样频率(名义)nBits = 2048;%每向量的BPSK符号数maxerrs = 200;每个EB / NO的%目标误差数maxbits = 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] =交易([]);const =星座(bpskmod);%的信号星座mlseType =“理想”%完美信道估计首先mlseMode ='续'%没有MLSE重置信道估计参数chnlEst = chnl;最初完美估计prefixlen = 2 * chnllen;循环前缀长度过多= 1;%长度的估计信道脉冲响应百分比超出真实长度%初始化模拟的图形。绘制无与伦比的渠道%频率响应,理想BPSK系统的误码率。德国人= Berawgn(EBNO,'psk'米,'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 = comm.LinearEqualizer ('算法'algType,...'忘记事实',忘记请求,...'numtaps'nWts,...'星座'常量,...“ReferenceTap”圆(nWts / 2),...“TrainingFlagInputPort”,真正的);dfeEq = comm.DecisionFeedbackEqualizer ('算法'algType,...'忘记事实',忘记请求,...“NumForwardTaps”nFwdWts,...'numfedbacktaps'nFbkWts,...'星座'常量,...“ReferenceTap”圆(nFwdWts / 2),...“TrainingFlagInputPort”,真正的);

线性均衡器

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

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

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

决策反馈均衡器

运行DFE,并绘制每个数据块的均衡信号频谱,BER和突发误差性能。请注意,DFE能够更好地减轻信道NULL,而不是线性均衡器,如频谱图和BER绘图所示。给定EB / NO值的绘制BER点被更新每个数据块,因此它们根据该块中收集的错误数向上或向下移动。还要注意,由于通过馈送检测到的位而不是正确的比特引起的错误传播,DFE误差有些突发。突发错误图表明,随着BER减小,发生了大量的错误,其错误到达五位或更少。(如果DFE均衡器始终在培训模式下运行,则错误将不那么突发。)

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

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

关闭(HFIG(ISHGHANDLE(HFIG)));eqType ='dfe';eqber_adaptive;

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

使用完美的频道估计运行MLSE均衡器,并为每个数据块绘制BER和突发错误性能。请注意,错误以极其爆发的方式发生。特别观察,特别是在低贝尔斯,所以误差的压倒性百分比以一个或两个比特的误差间隔发生。

看到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;