使用脉冲响应度量全局调整接收机组件以提高SerDes性能
这个例子展示了如何将一组接收器组件作为一个系统使用函数进行优化optPulseMetric
计算从目标误码率(BER)下的脉冲响应估计的眼高度、宽度和通道操作裕度(COM)等指标,以评估特定配置的最佳性能。自适应以统计分析(Init)的方式进行,然后将优化结果传递到时域(GetWave)。
初始化SerDes系统与多个CTLEs和DFECDR
本例使用SerDes Designer模型rx_ctle_adapt_dfe_train
作为起点。在MATLAB®命令窗口中输入以下命令打开模型:
> > serdesDesigner(“rx_ctle_adapt_dfe_train.mat”)
该项目包含一个接收器部分,其中有两个CTLE块,后面跟着一个DFECDR块。在它们的默认配置中,这些块单独优化。本例的目标是将这些块作为一个系统进行优化。
为CTLE_LowFreq
块,峰值频率(GHz)设置为[10 11 12 13 14 15 16]
,直流增益(dB)设置为[0 0 0 0 0 0 0 0]
,以及峰值增益(dB)设置为0
.所有其他参数保持默认值。
为CTLE_HighFreq
块,规范设置为直流增益和交流增益
,峰值频率(GHz)设置为14
,直流增益(dB)设置为0
,以及交流增益(dB)设置为[0 12 3 4 5 6 7 8 9 10 11 12 13 14 15]
.所有其他参数保持默认值。
对于DFECDR块,初始抽头重量(V)设置为[0 0 0 0 0 0 0 0 0 0 0]
.所有其他参数保持默认值。
导出SerDes系统到Simulink®模型。
添加代码优化CTLEs和DFECDR作为系统
双击Rx块中的Init子系统,然后单击显示初始化按钮。可以将代码放在自定义用户代码区从以下步骤,并保存模型。为了便于理解,下面将代码分为几个小节。
注意:要完成该示例,还可以引用所附文件“rx_init_custom_user_code.m”
放在自定义用户代码区在Init子系统内部。有关Init子系统的详细信息,请参见SerDes系统中的统计分析.
初始化接收方参数
的第一部分自定义用户代码区检查两个ccle是否都处于适应模式,并实例化变量以保存临时值和最佳配置指标。
%% BEGIN:自定义用户代码区(按下“刷新初始化”按钮时保留)%如果两个ccle都处于适应模式,请使用全局适应如果CTLE_LowFreqParameter。Mode == 2 && CTLE_HighFreqParameter。模式== 2 CTLE_LowFreqInitBestConfig = 0;CTLE_HighFreqInitBestConfig = 0;bestMetric = 0;SPB = SymbolTime/SampleInterval;
扫描CTLE参数
示例代码设置CTLE。模式参数适应
来固定
允许算法控制每个块的值。在这种情况下,值被直接扫描,块被调用来处理脉冲响应。
CTLE_LowFreqInit。Mode = 1;CTLE_HighFreqInit。Mode = 1;为CTLE_LowFreqInitSweep = 0:1:6为CTLE_HighFreqInitSweep = 0:1:15在每个CTLE上设置当前扫描配置CTLE_LowFreqInit。ConfigSelect = CTLE_LowFreqInitSweep;CTLE_HighFreqInit。ConfigSelect = CTLE_HighFreqInitSweep;呼叫CTLEs和DFE[sweepImpulse, ~] = CTLE_LowFreqInit(LocalImpulse);[sweepImpulse, ~] = CTLE_HighFreqInit(sweepImpulse);[sweepImpulse, ~, ~, ~] = DFECDRInit(sweepImpulse);
将脉冲响应转换为脉冲响应并使用optPulseMetric进行评估
将脉冲响应转换为脉冲响应,以便由函数计算optPulseMetric
.脉冲响应比脉冲响应更适合基于度量的评估。的optPulseMetric
函数对SerDes系统进行整体优化。该函数报告了许多指标,您可以使用一种算法将多个接收器组件作为一个系统一起评估。
注意:这个函数optPulseMetric
是设计来分析单个响应,而不是一个响应矩阵,所以您可以使用sweepPulse (: 1)
从脉冲矩阵或脉冲矩阵中裁剪主响应。
%将DFE后的脉冲转换为脉冲,然后计算眼部指标扫描脉冲=脉冲2pulse(扫描脉冲,SPB,SampleInterval);eyeemetric = optPulseMetric(扫脉冲(:,1),SPB,SampleInterval,1e-6);选择眼部测量来评估结果sweepMetric = eyeMetric.maxMeanEyeHeight;% sweepMetric = eyeMetric.maxEyeHeight;% sweepMetric = eyeMetric.maxCOM;% sweepMetric = eyeMetric.centerMeanEyeHeight;% sweepMetric = eyeMetric.centerEyeHeight;% sweepMetric = eyeMetric.centerCOM;
评估光脉冲测量结果
根据与之前结果的比较,保存CTLE配置。最终的最佳配置保存在块上,用于最终的统计(Init)分析,然后传递给时域(GetWave)模拟。
%如果当前的扫描指标比以前更好,保存CTLE配置如果> bestMetric bestMetric = sweepMetric;CTLE_LowFreqInitBestConfig = CTLE_LowFreqInitSweep;CTLE_HighFreqInitBestConfig = CTLE_HighFreqInitSweep;结束结束结束将cles设置为扫描的最佳配置CTLE_LowFreqInit。ConfigSelect = CTLE_LowFreqInitBestConfig;CTLE_HighFreqInit。ConfigSelect = CTLE_HighFreqInitBestConfig;结束% END:自定义用户代码区(按下“刷新初始化”按钮时保留)
运行SerDes系统
运行SerDes系统并观察优化行为。您可以尝试更改评估的指标,以执行不同的优化。