使用脉冲响应度量对接收机组件进行全局调整以提高SerDes性能
这个例子展示了如何将一组接收器组件作为一个使用函数的系统来执行优化optPulseMetric
计算从目标误码率(BER)下的脉冲响应估计的眼高度、宽度和通道运行裕度(COM)等指标,以评估特定配置的最佳性能。自适应以统计分析(Init)的形式进行,然后将优化结果传递给时域(gewave)。
用多个ctl和DFECDR初始化SerDes系统
本例使用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]
,峰值增益(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系统的统计分析。
初始化接收机参数
第一部分自定义用户代码区检查两个cctl是否处于适应模式,并实例化变量以保存临时值和最佳配置指标。
%% BEGIN:自定义用户代码区(当按下“刷新初始化”按钮时保留)如果两个ctle都处于Adapt模式,则使用全局适配如果CTLE_LowFreqParameter。Mode == 2 && CTLE_HighFreqParameter。模式== 2 CTLE_LowFreqInitBestConfig = 0;CTLE_HighFreqInitBestConfig = 0;bestMetric = 0;SPB = SymbolTime / SampleInterval;
扫描CTLE参数
示例代码设置CTLE。模式参数的适应
来固定
允许算法控制每个块的值。在这种情况下,值被直接扫描,块被调用来处理脉冲响应。
CTLE_LowFreqInit。模式= 1;CTLE_HighFreqInit。模式= 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
函数对SerDes系统进行整体优化。这个函数报告了许多指标,您可以使用一种算法将多个接收器组件作为一个系统一起评估。
注意:这个函数optPulseMetric
是设计来分析单个响应,而不是响应矩阵,所以您可以使用sweepPulse (: 1)
从脉冲矩阵或脉冲矩阵中裁剪主响应。
将DFE后的脉冲转换为脉冲,然后计算眼部指标SampleInterval sweepPulse = impulse2pulse (sweepImpulse SPB);eyeMetric = optPulseMetric (sweepPulse (: 1), SPB, SampleInterval, 1 e-6);%选择眼部测量来评估结果sweepMetric = eyeMetric.maxMeanEyeHeight;% sweepMetric = eymetric . maxeyeheight;% sweepMetric = eyeMetric.maxCOM;% sweepMetric = eyeMetric.centerMeanEyeHeight;% sweepMetric = eyeMetric.centerEyeHeight;% sweepMetric = eyeMetric.centerCOM;
评估optPulseMetric结果
根据与前面结果的比较保存CTLE配置。最终的最佳配置保存在块上,用于最终的统计(Init)分析,然后传递到时域(gewave)模拟。
%如果当前的扫描指标优于以前的,保存CTLE配置如果> bestMetric;CTLE_LowFreqInitBestConfig = CTLE_LowFreqInitSweep;CTLE_HighFreqInitBestConfig = CTLE_HighFreqInitSweep;结束结束结束将CTLEs设置为从扫描开始的最佳配置CTLE_LowFreqInit。ConfigSelect = CTLE_LowFreqInitBestConfig;CTLE_HighFreqInit。ConfigSelect = CTLE_HighFreqInitBestConfig;结束% END:自定义用户代码区(当按下“刷新初始化”按钮时保留)
运行并行转换器系统
运行SerDes系统,观察优化行为。您可以尝试更改评估的指标,以执行不同的优化。