主要内容

自定义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模型模拟器中进行测试。

参考文献

一种总线标准团体。

另请参阅

||

相关的话题

Baidu
map