主要内容

不同均衡器的误码率性能

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

随着仿真的进行,它更新了一个误码率图,用于均衡方法之间的比较分析。它还显示了线性均衡和DFE均衡信号的信号频谱。它还显示了错误的相对突发性,表明在低误码率下,MLSE算法和DFE算法都会出现错误突发。特别是,反馈检测位的DFE错误性能比反馈正确位的DFE错误性能更高。最后,在模拟的“不完美”MLSE部分,它显示并动态更新估计的信道响应。

为了使用这个示例进行实验,您可以改变诸如信道脉冲响应、均衡器tap权值的数量、递归最小二乘(RLS)遗忘因子、最小均方(LMS)步长、MLSE回溯长度、估计信道长度的误差、以及每Eb/No值采集的最大错误数。

代码结构

这个例子依赖于这些辅助脚本和函数在Eb/No值范围内执行链接模拟。

eqber_自适应.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节,第4版,了解该频道的更多细节。)设置数据和噪声发生器的初始状态。设置“Eb/No”范围。

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

自适应均衡器参数

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

%线性均衡器参数nWts = 31;%重量数阿尔格型=“RLS”;%RLS算法遗忘因子=0.999999;% RLS算法参数% DFE参数-使用与线性均衡器相同的更新算法nFwdWts = 15;%前馈权重数nFbkWts=15;%反馈权重数

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

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

MLSE均衡器参数tbLen=30;MLSE均衡器回溯长度numStates = M ^ (chnlLen-1);%网格状态数[mlseMetric, mlseStates mlseInputs] =交易([]);const =星座(bpskMod);%信号星座mlseType =“理想的”;%一开始是完美的信道估计多模=“合同”;%没有MLSE重置%信道估计参数chnlEst=chnl;初始完美估计百分比prefixLen = 2 * chnlLen;%循环前缀长度excessEst = 1;估计信道脉冲响应长度的%%超出真实长度初始化模拟的图形。绘制不均衡信道%理想BPSK系统的频率响应和误码率。idealBER = berawgn (EbNo,相移键控的M“nondiff”); [hBER,hLegend,legendString,hLinSpec,hDfeSpec,hers,hText1,hText2,...hFit、hEstPlot、hFig、hLinFig、hDfeFig]=eqber_图形(“init”,...chnl、EbNo、idealBER、nBits);

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

RLS更新算法用于调整均衡器抽头权重,参考抽头设置为中心抽头。

linEq=通信线性再鉴定器(“算法”algType,...“ForgettingFactor”forgetFactor,...“NumTaps”nWts,...“星座”,const,...“参考地图”圆(nWts / 2),...“TrainingFlagInputPort”,true);dfeEq=通信判决反馈均衡器(“算法”algType,...“ForgettingFactor”forgetFactor,...“NumForwardTaps”nFwdWts,...“NumFeedbackTaps”nFbkWts,...“星座”,const,...“参考地图”,圆形(nFwdWts/2),...“TrainingFlagInputPort”,对);

线性均衡器

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

看见eqber_自适应.m获取自适应均衡器的模拟代码列表。

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

判决反馈均衡器

运行DFE,并绘制每个数据块的均衡信号频谱、误码率和突发错误性能。请注意,DFE比线性均衡器更能减轻信道零值,如图所示的频谱图和误码率图所示。每个数据块都会更新给定Eb/No值的标绘BER点,因此它们会根据在该数据块中收集的错误数量向上或向下移动。还请注意,由于反馈被检测位而不是正确位导致的错误传播,DFE错误有些突发。突发错误图表明,当误码率降低时,当错误间到达小于或等于5比特时,会出现大量错误。(如果DFE均衡器一直在训练模式下运行,误差就会小得多。)

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

看见eqber_自适应.m获取自适应均衡器的模拟代码列表。

关闭(hFig (ishghandle (hFig)));eqType =“教育部”;eqber_自适应;

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

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

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