主要内容

自定义SerDes工具箱数据路径控制信号

本示例展示如何通过添加新的自定义AMI参数和使用MATLAB®函数块自定义SerDes系统数据路径中的控制信号。这允许您自定义现有的控件参数,而无需修改SerDes Toolbox™库中的内置块。

这个例子展示了如何添加一个新的AMI参数来控制FFE块使用的三个发送开关的操作。自定义AMI参数同时将所有三个轻按设置为PCIe4规范定义的十个值之一,或者允许您输入三个自定义浮点轻按值。有关如何定义PCIe4发射机模型的详细信息,请参见PCIe4发射机/接收机IBIS-AMI型号

传输模型

本例中的发射器型号符合PCIe4规范。接收器是一个简单的直通模型。一个符合PCIe4标准的发射机使用3.-tap前馈均衡器(FFE),具有一个预tap和一个后tap,以及十个预置。

打开模型adding_tx_ffe_params.SerDes系统Simulink®模金宝app型由配置、刺激、Tx、模拟通道和Rx块组成。

open_system (“adding_tx_ffe_params.slx”

  • Tx子系统包含FFE块(用于对AMI模型的时域部分建模)和Init块(用于对统计部分建模)。

  • 模拟通道块具有PCIe4参数值目标频率损失阻抗Tx/Rx模拟模型参数。

  • Rx子系统有一个Pass-Through块和一个Init块。

添加新的AMI参数

向发射器添加一个新的AMI参数,该参数可用于Init和GetWave数据路径块和函数。参数也包含在Tx IBIS-AMI文件中。

双击配置块,打开块参数对话框。单击打开SerDes IBIS-AMI管理器按钮。去AMI-Tx“SerDeS IBIS-AMI管理器”页签。

  • 选择FFE参数,然后单击添加参数…来添加一个新的FFE子参数。

  • 参数名称设置为ConfigSelect

  • 保持当前值作为0

  • 在“描述”中添加预/主/后轻敲配置选择器

  • 保持使用作为

  • 设置类型整数

  • 设置格式列表

  • 格式详细信息,设置默认的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;情况下0PCIe配置:P0FFEInit。TapWeights = [0.000 0.750 -0.250];情况下1PCIe配置:P1FFEInit。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];情况下4% PCIe配置:P4FFEInit。TapWeights = [0.000 1.000 0.000];情况下5PCIe配置:P5 . %FFEInit。TapWeights = [-0.100 0.900 0.000];情况下6% PCIe配置:P6FFEInit。TapWeights = [-0.125 0.875 0.000];情况下7% PCIe配置:P7FFEInit。TapWeights = [-0.100 0.700 -0.200];情况下8% PCIe配置:P8FFEInit。TapWeights = [-0.125 0.750 -0.125];情况下9% PCIe配置: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统计分析的结果。注意:在为新参数连接Constant块之前,时域波形不会正确ConfigSelect在FFE的画布中。在下一节中,您将看到如何做到这一点。

接下来,设置当前值ConfigSelect*参数到用户定义的.这对应于用户定义的tap权重:Pre = 0.000, Main = 1.000, Post = 0.000。

运行仿真并观察Init统计分析的结果。

尝试不同的价值ConfigSelect*以验证操作正确。统计的眼睛根据FFE应用的均衡量打开和关闭。眼睛变化的程度,以及创建最睁开眼睛的tap值根据Analog Channel块中定义的损失而变化。

修改GetWave

要修改GetWave,请添加一个新的MATLAB函数,其操作方式与Initialize函数相同。

在Tx子系统中,键入Ctrl-U去看FFE区块的面具下。

  • 可以看到,IBIS-AMI管理器自动将Constant块添加到画布中恒定值设置为FFEParameter。ConfigSelect

  • 从Simulink/用户定义库向画布添加MATLAB函数块。金宝app

  • 将MATLAB函数块重命名为PCIe4FFEconfig

  • 双击MATLAB函数块,将模板代码替换为如下代码:

% PCIe4点击配置选择器%根据指定的PCIe4选择预定义的Tx FFE抽头权重%的配置。%的输入:% TapWeightsIn:用户定义的浮点权重值。0-9: PCIe4定义的配置(P0-P9)。% -1:用户自定义配置(来自TapWeightsIn)。%输出:% TapWeightsOut:要使用的轻敲权重数组。函数TapWeightsOut = PCIe4FFEconfig(TapWeightsIn, ConfigSelect)
开关ConfigSelect情况下-1用户自定义轻拍重量TapWeightsOut = TapWeightsIn;情况下0PCIe配置:P0TapWeightsOut = [0.000 0.750 -0.250];情况下1PCIe配置:P1TapWeightsOut = [0.000 0.833 -0.167];情况下2% PCIe配置:P2TapWeightsOut = [0.000 0.800 -0.200];情况下3.% PCIe配置:P3TapWeightsOut = [0.000 0.875 -0.125];情况下4% PCIe配置:P4TapWeightsOut = [0.000 1.000 0.000];情况下5PCIe配置:P5 . %TapWeightsOut = [-0.100 0.900 0.000];情况下6% PCIe配置:P6TapWeightsOut = [-0.125 0.875 0.000];情况下7% PCIe配置:P7TapWeightsOut = [-0.100 0.700 -0.200];情况下8% PCIe配置:P8TapWeightsOut = [-0.125 0.750 -0.125];情况下9% PCIe配置: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值根据Analog Channel块中定义的损失而变化。

导出Tx IBIS-AMI模型

验证Init和GetWave的行为符合预期,然后生成最终的符合IBIS-AMI的PCIe4模型可执行文件、IBIS和AMI文件。

双击配置块,打开块参数对话框。单击打开SerDes IBIS-AMI管理器按钮,然后选择出口标签:

  • 更新Tx型号名称pcie4_tx

  • Tx和Rx角百分比设置为10.这将按+/-10%的比例缩放模拟模型的最小/最大角值。

  • 验证二元模型选择为模型类型这将创建支持统计(Init)和时域(GetWave)分析的模型可执行文件。金宝app

  • 设置Tx模型忽略比特参数3.因为Tx FFE有三个水龙头。

  • 设置要导出的模型Tx只

  • 设置IBIS文件名称(.ibs)pcie4_tx_serdes.ibs

  • 单击出口按钮中生成模型目标目录

测试生成IBIS-AMI模型

PCIe4发射器IBIS-AMI模型现已完成,可以在任何行业标准AMI模型模拟器中进行测试。

参考文献

一种总线标准团体。

另请参阅

||

相关的话题