自定义SerDes工具箱数据路径控制信号
这个例子展示了如何在SerDes系统数据路径中通过添加新的自定义AMI参数和使用MATLAB®函数块来定制控制信号。这允许您自定义现有的控件参数,而无需修改SerDes Toolbox™库中的内置块。
这个例子展示了如何添加一个新的AMI参数来控制FFE块使用的三个发射机抽头的操作。自定义AMI参数同时将所有三个tap设置为PCIe4规范定义的十个值之一,或者允许您输入三个自定义浮点tap值。要了解关于如何定义PCIe4发射器模型的更多信息,请参见PCIe4发射器/接收器IBIS-AMI型号.
PCIe4转移模型
本例中的发射机型号符合PCIe4规范。接收器是一个简单的直通模型。符合PCIe4标准的发射机使用3.
-tap前馈均衡器(FFE),具有一个预tap和一个后tap,和十个预设。
打开模型adding_tx_ffe_params
.SerDes系统Simulink®模型由配置、刺激、Tx、模拟通道和Rx块组成。
open_system (“adding_tx_ffe_params.slx”)
Tx子系统包含一个用于对AMI模型的时域部分建模的FFE块和一个用于对统计部分建模的Init块。
模拟通道块的PCIe4参数值目标频率,损失,阻抗和Tx/Rx模拟模型参数。
Rx子系统有一个Pass-Through块和一个Init块。
添加新的AMI参数
向发射器添加一个新的AMI参数,该参数可用于Init和GetWave数据路径块和函数。该参数也包含在Tx IBIS-AMI文件中。
双击Configuration块打开块参数对话框。单击打开SerDes IBIS-AMI管理器按钮。去AMI-Tx选项卡的“SerDeS IBIS-AMI Manager”对话框。
选择FFE参数,然后单击添加参数…来添加一个新的FFE子参数。
参数名称设置为
ConfigSelect
.保持当前值作为
0
.在“描述”中添加
前/主/后tap配置选择器
.保持使用作为
在
.设置类型来
整数
.设置格式来
列表
.下列表格式的细节,设置默认的来
0
.集列表值来
[-1 0 1 2 3 4 5 6 7 8 9]
集List_Tip值来
(“用户定义”“P0”“P1”“P2”“P3”“P4”“P5”“P6”“P7”“P8”“票数”]
一个新参数ConfigSelect*被添加到AMI-Tx选项卡。
修改初始化
修改Tx子系统中的Init块中的Initialize MATLAB函数,以使用新添加的ConfigSelect*参数。的ConfigSelect*参数控制现有的三个发射机丝锥。为此,添加一个switch语句,它接受的值ConfigSelect*并自动设置所有三个Tx点击的值,忽略用户定义的每个点击的值。如果一个ConfigSelect的价值-1
使用时,则用户定义的Tx tap值将不变地传递到FFE数据路径块。
在Tx子系统中,双击Init块以打开块参数对话框并单击刷新Init按钮将新的AMI参数传播到Initialize子系统。
类型Ctrl-U查看掩码下的Init块,然后双击initialize块打开initialize函数。
双击脉冲量化MATLAB函数块,打开MATLAB中的函数。这是一个自动生成的函数,它提供SerDes系统块(IBIS AMI-Init)的脉冲响应处理。的% %开始:
而且%结束:
行表示可以输入自定义用户代码的部分。当Refresh Init运行时,此部分中的数据不会被覆盖:
%% BEGIN:自定义用户代码区(当按下“刷新初始化”按钮时保留)FFEParameter.ConfigSelect;用户添加了AMI参数% END:自定义用户代码区(当按下“刷新初始化”按钮时保留)
要添加自定义ConfigSelect控件代码,向下滚动“客户用户代码”区域,注释掉FFEParameter。ConfigSelect
行,然后输入以下代码:
%% BEGIN:自定义用户代码区(当按下“刷新初始化”按钮时保留)% FFEParameter.ConfigSelect;用户添加了AMI参数开关FFEParameter。ConfigSelect情况下-1%用户定义的轻按权重FFEInit。TapWeights = FFEParameter.TapWeights;情况下0% PCIe配置:P0FFEInit。TapWeights = [0.000 0.750 -0.250];情况下1PCIe配置:P1 . %FFEInit。TapWeights = [0.000 0.830 -0.167];情况下2% PCIe配置:P2FFEInit。TapWeights = [0.000 0.800 -0.200];情况下3.% PCIe配置:P3FFEInit。TapWeights = [0.000 0.875 -0.125];情况下4PCIe配置:P4FFEInit。TapWeights = [0.000 1.000 0.000];情况下5% PCIe配置:P5FFEInit。TapWeights = [-0.100 0.900 0.000];情况下6PCIe配置:P6FFEInit。TapWeights = [-0.125 0.875 0.000];情况下7PCIe配置:P7FFEInit。TapWeights = [-0.100 0.700 -0.200];情况下8PCIe配置:P8FFEInit。TapWeights = [-0.125 0.750 -0.125];情况下9PCIe配置:P9FFEInit。TapWeights = [-0.166 0.834 0.000];否则FFEInit。TapWeights = FFEParameter.TapWeights;结束% END:自定义用户代码区(当按下“刷新初始化”按钮时保留)
要测试新的FFE控制参数是否正常工作,请从Configuration块打开SerDes IBIS-AMI Manager对话框。在AMI-Tx选项卡中,编辑ConfigSelect*参数设置当前值来P7
.这对应于PCIe配置P7: Pre = -0.100, Main = 0.700, Post = -0.200。
运行仿真并观察Init统计分析的结果。注意:时域波形将不会是正确的,直到您连接的常数块为新参数ConfigSelect在FFE的画布中。在下一节中,您将看到如何做到这一点。
接下来,设置当前值的ConfigSelect*参数用户定义的
.这对应于用户定义的tap权重:Pre = 0.000, Main = 1.000, Post = 0.000。
运行仿真并观察Init统计分析的结果。
尝试不同的值ConfigSelect*检查操作是否正确。统计眼的打开和关闭基于由FFE应用的均衡量。根据模拟通道块中定义的损失,眼睛变化的多少和创建最睁开眼睛的tap值各不相同。
修改GetWave
要修改GetWave,请添加一个新的MATLAB函数,其操作方式与Initialize函数相同。
在Tx子系统中,键入Ctrl-U查看FFE块的掩码下面。
可以看到,一个Constant块被IBIS-AMI管理器自动添加到画布中恒定值设置为
FFEParameter。ConfigSelect
.从Simulink/用户定义库向画布中添加一个MATLAB函数块。
重命名MATLAB函数块为
PCIe4FFEconfig
.双击MATLAB函数块,用以下代码替换模板代码:
% PCIe4点击配置选择器%根据指定的PCIe4选择预定义的Tx FFE抽头权重%的配置。%%的输入:% TapWeightsIn:用户定义的浮点点击权重值。0-9: PCIe4定义的配置(P0-P9)。% -1:用户定义的配置(来自TapWeightsIn)。%输出:% TapWeightsOut:要使用的点击权重数组。%函数TapWeightsOut = PCIe4FFEconfig(TapWeightsIn, ConfigSelect)
开关ConfigSelect情况下-1%用户定义的轻按权重TapWeightsOut = TapWeightsIn;情况下0% PCIe配置:P0TapWeightsOut = [0.000 0.750 -0.250];情况下1PCIe配置:P1 . %TapWeightsOut = [0.000 0.833 -0.167];情况下2% PCIe配置:P2TapWeightsOut = [0.000 0.800 -0.200];情况下3.% PCIe配置:P3TapWeightsOut = [0.000 0.875 -0.125];情况下4PCIe配置:P4TapWeightsOut = [0.000 1.000 0.000];情况下5% PCIe配置:P5TapWeightsOut = [-0.100 0.900 0.000];情况下6PCIe配置:P6TapWeightsOut = [-0.125 0.875 0.000];情况下7PCIe配置:P7TapWeightsOut = [-0.100 0.700 -0.200];情况下8PCIe配置:P8TapWeightsOut = [-0.125 0.750 -0.125];情况下9PCIe配置:P9TapWeightsOut = [-0.166 0.834 0.000];否则TapWeightsOut = TapWeightsIn;结束
重新连接FFE子系统,使FFETapWeights和FFEConfigSelect常量块连接到新定义的PCIe4FFEconfig MATLAB函数块的输入。来自PCIe4FFEconfig块的TapWeightsOut信号连接到TapWeightsFFE块的端口。
要测试新的FFE控制参数是否正常工作,请从Configuration块打开SerDes IBIS-AMI Manager对话框。在AMI-Tx选项卡中,编辑ConfigSelect*参数设置当前值来P7
.这对应于PCIe配置P7: Pre = -0.100, Main = 0.700, Post = -0.200。观察输出波形。
接下来,设置当前值的ConfigSelect*参数用户定义的
.这对应于用户定义的tap权重:Pre = 0.000, Main = 1.000, Post = 0.000。观察输出波形的变化。
尝试不同的值ConfigSelect*检查操作是否正确。时域眼的打开和关闭基于由FFE应用的均衡量。根据模拟通道块中定义的损失,眼睛变化的多少和创建最睁开眼睛的tap值各不相同。
导出Tx IBIS-AMI模型
验证Init和GetWave的行为是否符合预期,然后生成最终的符合IBIS-AMI的PCIe4模型可执行文件、IBIS和AMI文件。
双击Configuration块打开块参数对话框。单击打开SerDes IBIS-AMI管理器按钮,然后选择出口标签:
更新Tx模型名称来
pcie4_tx
.Tx和Rx角百分比被设置为
10
.这将缩放最小/最大模拟模型角值+/-10%。验证二元模型是选为模型类型这将创建支持统计(Init)和时域(GetWave)分析的模型可执行程序。
设置Tx模型位忽略参数
3.
因为有三个水龙头在Tx FFE。设置模型出口来Tx只.
设置IBIS文件名(.ibs)来
pcie4_tx_serdes.ibs
单击出口控件中生成模型的按钮目标目录.
测试生成IBIS-AMI模型
PCIe4发射器IBIS-AMI模型现在已经完成,可以在任何工业标准AMI模型模拟器中进行测试。