主要内容

不同均衡器的误码率性能

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

随着仿真的进行,更新了误码率图,用于均衡方法之间的对比分析。给出了线性均衡和DFE均衡信号的信号谱。结果表明,在较低的误码率下,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版的《数字通信》第10.2.3节,了解有关该通道的更多细节。)设置数据和噪声发生器的初始状态。设置Eb/No范围。

系统仿真参数Fs = 1;%采样频率(概念)nBits = 2048;每个向量的BPSK符号的%数目maxerrors = 200;%每个Eb的目标错误数/NomaxBits = 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 = length(chnl);%通道长度,以样本为单位EbNo = 0:14;% (dB)BER = 0 (size(EbNo));%初始化值%创建BPSK调制器bpskMod = com . 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] = deal([]);const = constellation(bpskMod);%信号星座mlseType =“理想”;%完美信道估计mlseMode =“合同”;% no MLSE复位%信道估计参数chnleast = chnl;初始完美估计百分比prefixLen = 2* chnlen;%循环前缀长度overest = 1;估计信道脉冲响应的%长度%超出真实长度%初始化模拟图形。绘制非均匀信道%的频率响应,以及理想BPSK系统的误码率。idealBER = berawgn(n);相移键控的米,“nondiff”);(hb、hLegend legendString、hLinSpec hDfeSpec,赫尔,hText1, hText2,hFit, hstplot,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 . decisionfeedbackqualizer ()“算法”algType,“ForgettingFactor”forgetFactor,“NumForwardTaps”nFwdWts,“NumFeedbackTaps”nFbkWts,“星座”常量,“ReferenceTap”圆(nFwdWts / 2),“TrainingFlagInputPort”,真正的);

线性均衡器

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

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

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

决策反馈均衡器

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

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

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

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

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

运行具有完美信道估计的MLSE均衡器,并绘制每个数据块的误码率和突发误差性能。请注意,错误以非常突然的方式发生。请注意,特别是在低ber时,绝大多数错误发生在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;