这个示例展示了如何为使用SerDes工具箱构建的IBIS-AMI模型添加、删除、修改、重命名和隐藏AMI参数。这些AMI参数可以与现有的数据路径块、用户创建的MATLAB函数块或优化控制循环一起使用,并且可以传递给或从SerDes工具箱创建的AMI模型可执行文件(dll)返回。
此示例将添加新的InOut参数“count”与传递数据路径块旁边。此参数将通过AMI_INIT(应为1)计算通过的传递数,然后将结果传递给AMI_GETWAVE,在那里它将继续计算通过的总数。虽然这可能不是AMI模型开发的尤其有用的功能,但它将用于演示在模型生成期间添加和使用新的AMI参数。
检查模型
本例从一个简单的接收器模型开始,该模型只使用一个直通块。
open_system (“serdes_add_param.slx”)
该Simu金宝applink SerDes系统由Configuration、Stimulus、Tx、Analog Channel和Rx模块组成。
Tx子系统具有FFE数据路径块来建模AMI模型的时域部分,以及Init块来建模统计部分。本例中不使用Tx子系统。
模拟通道块具有目标频率,损耗,阻抗和Tx / Rx模拟模型参数的参数值。
Rx子系统有一个Pass-Through数据路径块和一个Init块,用于对AMI模型的统计部分建模。
运行模型
运行模型以验证基本配置是否在编辑之前按预期工作。产生两个图。第一个是当模型正在运行时更新的实时时域(GetWave)眼图。
第二个图包含统计(Init)和时域(GetWave)模拟结果的视图。
打开配置块的“块参数”对话框,然后单击“打开SerDes IBIS-AMI管理器按钮并选择AMI-Rx标签。
1.突出了PT数据路径块并按下添加参数…
2.改变参数名称:数数
3.验证当前值被设置为0
(这将是我们计数的起点)。
4.在描述类型:迭代计数的起始值
.
有四个可能的值使用:
在
:这些参数是AMI可执行文件所需的输入。
出
:这些参数由AMI_Init和/或AMI_GetWave函数输出并返回到EDA工具。
InOut
:这些参数是必需的输入到AMI可执行文件,也可以从AMI_INIT和/或AMI_GETWAVE返回到EDA工具的值。
信息
:这些参数是用户和/或仿真工具的信息,模型不使用这些参数。
5.设置使用:InOut
有六个可能的参数类型:
漂浮
:浮点数。
整数
:没有分数或十进制组件的整数数字。
UI.
:单位间隔(与数据速率频率相反)。
利用
:用于Tx FFE和Rx DFE延迟线的浮点数。
布尔
: True和False值,不带引号。
字符串
:用引号括起来的ASCII字符序列。
6.设置类型:整数
有三个可能的参数格式:
价值
:单个数据值。
列表
:一个离散的值集,用户可以从中选择一个值。
范围
:一个连续的范围,用户可以在最小值和最大值之间选择任何值。
7.设置格式:价值
8.点击好吧要创建新参数,那么您将看到自动放在画布上的新块。
通过MATLAB函数块的impulse seequalization访问Initialize函数(用于统计分析)中的新参数。本例增加了一个InOut参数。在AMI_Init中使用新的InOut参数'Count':
1.在RX子系统中,双击Init块以打开掩码。
2.按下刷新Init按钮将新的AMI参数传播到初始化子系统。
3.点击好吧合上面具。
4.再次单击init块并键入Ctrl-U查看Init掩码,然后双击initialize块打开initialize函数。
impulse qualization MATLAB函数块是一个自动生成的函数,提供SerDes系统块(IBIS-AMI Init)的脉冲响应处理。
注意,新的Count参数已被自动添加为这个MATLAB函数的输出,作为数据存储写块。不需要数据存储读,因为输入参数是作为PTSignal Simulink.Parameter传入的。金宝app
5.双击禁止稳定化MATLAB功能块在MATLAB中打开函数。“%% begin:”和'%端:'此功能块中的行表示可以输入自定义用户代码的部分。运行刷新init时,本节中的数据不会被覆盖:
%% BEGIN:自定义用户代码区域(当按下“刷新Init”按钮时保留)
% END:自定义用户代码区域(当按下“刷新Init”按钮时保留)
当刷新Init运行,它将我们的新参数添加到自定义用户代码区域,以便可以根据需要使用它:
%% BEGIN:自定义用户代码区域(当按下“刷新Init”按钮时保留)PTCount = PTParameter.Count;%用户从SerDes IBIS-AMI管理器中添加了AMI参数% END:自定义用户代码区域(当按下“刷新Init”按钮时保留)
6.要添加自定义代码,请向下滚动到自定义用户代码部分,然后滚动PTCount = PTCount + 1;
自定义用户代码部分应该如下所示:
%% BEGIN:自定义用户代码区域(当按下“刷新Init”按钮时保留)PTCount = PTParameter.Count;%用户从SerDes IBIS-AMI管理器中添加了AMI参数PTCount = PTCount + 1;%通过此功能计算每次迭代。% END:自定义用户代码区域(当按下“刷新Init”按钮时保留)
7.保存更新后的MATLAB函数,然后运行Simulink项目来测试新代码。金宝app使用仿真数据检查器,验证Init后的Count值现在是'1'。
注意,Count的最终值被写入PTSignal数据存储,因此现在在AMI_GetWave中可用。
根据使用的选择,参数显示在自定义用户代码区域的脉冲均等MATLAB函数块的不同方式:
信息参数
INFO参数是用户或模拟工具的信息,并且未传递给或模型使用,因此它们不会显示在初始化代码中。
在参数
在参数是Simulink。金宝app参数对象显示为可在需要时使用的常量。例如,一个名为“InParam”的In参数被添加到VGA块,显示如下:
VGAParameter.InParam;%用户从SerDes IBIS-AMI管理器中添加了AMI参数
参加参数
输出参数为Simulink。金宝app信号对象显示为参数,具有在IBIS-AMI管理器中定义的初始值。例如,一个名为“OutParam”的输出参数被添加到VGA块中,其当前值为“2”,将显示如下:
VGAOutParam = 2;%用户从SerDes IBIS-AMI管理器中添加了AMI参数
输出参数使用数据存储写块来存储从Init传递到EDA工具的值(通过AMI_Parameters_Out字符串)和用于GetWave(如果需要)。在上面的例子中,一个名为OutParam的数据存储写块被自动添加到初始化函数中:
InOut参数
InOut参数使用两个Simulink。金宝app参数对象和Simulink。金宝app信号对象。例如,一个名为“InOutParam”的InOut参数被添加到VGA块会显示如下:
VGAInOutParam = VGAParameter.InOutParam;%用户从SerDes IBIS-AMI管理器中添加了AMI参数
通过使用Simulink来访问Input值。金宝appVGAParameter参数参考。InOutParam, while the output value uses a Data Store Write block to store values. In the above example, a Data Store Write block named 'InOutParam' was automatically added to the Initialize Function for passing values out of Init to the EDA tool (via the AMI_Parameters_Out string) and for use in GetWave (if desired):
新参数将自动创建为类型为常量、数据存储读或数据存储写的块,并添加到数据路径块的画布中。本例增加了一个InOut参数。在GetWave中使用新的InOut参数'Count':
1.在Rx子系统中,单击Pass-Through数据路径块并键入Ctrl-U在直通面罩下看。
2.添加一个Si金宝appmulink/Math Operations和块到画布。
3.添加一个模型金宝app/来源常数块,并将值设置为1
.
4.连接每个元素,以便通过块现在看起来像以下内容:
7.保存,然后运行Simulink项目来测金宝app试新代码。
通过将值标签添加到SUM块的输出端口,请参阅GetWave之后的计数值为3.2E + 04(每个符号的示例*符号数)。生成AMI模型可执行文件后,计数的值将在AMI模拟器中的参数输出字符串中可用。
从GetWave函数以不同的方式访问新参数,这取决于所选择的Usage。
信息参数
信息参数为用户或仿真工具提供信息,模型不能使用。
在参数
在参数是Simulink。金宝app通过添加常量块使用的参数对象。例如,一个名为“InParam”的In参数被添加到Rx VGA块中,可以被任何Rx块通过添加一个常量块访问,就像这样:
有关更多信息,请参见自定义SERDES工具箱数据路径控制信号.
参加参数
输出参数为Simulink。金宝app信号对象使用数据存储写块来存储从GetWave传递到EDA工具(通过AMI_Parameters_Out字符串)或其他Rx块的值。例如,一个名为“OutParam”的输出参数被添加到Rx VGA块中,可以用数据存储写块这样写:
InOut参数
InOut参数使用两个Simulink。金宝app参数对象和Simulink。金宝app信号对象。输入值可以与一个常数块或访问数据存储读取块,而输出值使用数据存储块写入存储值传递出GetWave EDA工具(通过AMI_Parameters_Out字符串)或其他Rx块。例如,如果一个名为“InOutParam”的InOut参数被添加到Rx VGA块中,初始的Input值可以被任何Rx块通过添加一个常量块访问,就像这样:
另外,可以使用数据存储读块访问更新后的Input值,如下所示:
输出值可以通过数据存储写块写入,如下所示:
SerDes工具箱内置系统对象使用的参数可以修改或隐藏,但不能重命名。
用户生成的AMI参数重命名如下。
更新AMI参数
1.打开配置块的“块参数”对话框,然后单击“打开SerDes IBIS-AMI管理器按钮。
2.去AMI-Tx或AMI-Rx选项卡,参数所在的位置。
3.突出显示要重命名的参数并按下编辑...
4.在Parameter name字段中,根据需要更改名称。
5.点击好吧,然后您将看到在画布上自动重命名的新参数。
更新初始化
1.推入使用参数的Tx或Rx子系统块。
2.双击Init块以打开蒙版。
3.按下刷新Init按钮将AMI参数名称传播到初始化子系统。
4.点击好吧合上面具。
5.再次单击Init块并输入Ctrl-U查看Init掩码,然后双击initialize块打开initialize函数。
6.双击禁止稳定化MATLAB功能块在MATLAB中打开函数。
7.向下滚动到标题为:
%% BEGIN:自定义用户代码区域(当按下“刷新Init”按钮时保留)
8.可以确认该参数的所有实例都已重命名。
9.保存并关闭MATLAB函数块。
更新GetWave
推入使用重命名参数的每个数据路径块,并重命名参数的每个实例。
验证结果
运行模拟以验证该项目仍然没有错误或警告运行。
可以修改或隐藏SERDES工具箱内置系统对象的参数,但无法删除。
删除用户生成的AMI参数如下。
更新AMI参数
1.打开配置块的“块参数”对话框,然后单击“打开SerDes IBIS-AMI管理器按钮。
2.去AMI-Tx或AMI-Rx选项卡,参数所在的位置。
3.选中需要删除的参数,按“”键删除参数.
4.您将看到参数块自动从画布中删除。
更新初始化
注意:自定义用户代码区域中的参数不会自动删除,因此您将按照以下步骤注释或删除它们:
1.推入使用参数的Tx或Rx子系统块。
2.双击Init块以打开蒙版。
3.按下刷新Init按钮以从初始化子系统中删除任何已删除的Out或InOut参数数据存储。
4.点击好吧合上面具。
5.再次单击Init块并输入Ctrl-U查看Init掩码
6.双击initialize block to open the Initialize Function.
7.双击禁止稳定化MATLAB功能块在MATLAB中打开函数。
8.向下滚动到标题为:
%% BEGIN:自定义用户代码区域(当按下“刷新Init”按钮时保留)
9.删除或注释删除参数的所有实例。
10.保存并关闭MATLAB函数块。
更新GetWave
推入使用了已删除参数的每个数据路径块,并删除该参数的每个实例。
验证结果
运行模拟以验证该项目仍然没有错误或警告运行。
可能有时是模型功能需要参数,但需要从用户隐藏。例如,要使用户更改FFE模式,请编辑FFE模式参数并选中“隐藏”复选框。
这将阻止该参数出现在.ami文件中—有效地将参数硬编码为其默认值。换句话说,FFE模式参数仍然存在于代码中,以便FFE继续按照预期工作,但用户不能再更改该值。
要隐藏init和getWave的参数:
1.通过双击感兴趣的数据路径块来打开掩码。
2.扩大IBIS-AMI参数显示要包含在IBIS-AMI模型中的参数列表。
3.取消选择要隐藏的参数。
关于隐藏参数,需要记住以下几点:
当隐藏参数时,请检查当前参数值是否正确。当前值将始终用作该参数的默认值。
隐藏参数对模型可执行文件没有影响。它只从生成的.ami文件中删除参数。
如果隐藏参数的类型是Out或InOut,它仍然会显示在模型可执行文件的AMI_Parameters_Out字符串中。
属性通过SerDes IBIS-AMI管理器对话框修改SerDes工具箱中使用的所有参数编辑...按钮。但是,可以修改的参数值取决于它们是哪种类型的参数。
对于内置的System Objects,只有以下字段可以修改:
当前值
描述
格式
默认的
列表值(用于格式列表)
典型值/最小值/最大值(用于格式范围)
对于用户定义的参数,可以修改所有字段。
预留的AMI参数包括:
抖动和噪声参数,如TX_RJ,TX_DJ,TX_DCD,RX_RJ,RX_DJ,RX_DCD,RX_GAUSNOISE等
模拟缓冲区建模参数,如Ts4file, TX_V,和RX_R
使用DLL_ID进行数据管理
这些是符合IBIS-AMI的模拟器用来相应地修改模拟结果的后处理参数。属性通过SerDes IBIS-AMI管理器对话框添加这些参数保留参数…按钮AMI-Tx或AMI-Rx标签。
注意:保留参数AMI_Version如果在IBIS- ami管理器中启用了任何IBIS 7.0保留参数,则会自动更改为7.0。
例如,要将Rx_Receiver_Sensitivity和Rx_Dj添加到receiver .ami文件中,单击保留参数…按钮打开Rx添加/删除抖动和噪声对话框,选择rx_receiver_sensitivity.和Rx_Dj盒子,然后点击好吧将这些参数添加到RX AMI文件的“保留参数”部分。
要为这两个新参数设置值:
选择rx_receiver_sensitivity.,然后单击编辑...按钮打开“添加/编辑AMI参数”对话框。
设置当前值到0.04
改变格式到价值
.
点击好吧保存更改。
选择Rx_Dj,然后单击编辑...按钮以提出添加/编辑AMI参数对话框。
设置当前值到0.0
改变类型到UI.
.
改变格式到范围
.
设置典型价值0.05
设置闵价值0.0
设置马克斯价值0.1
点击好吧保存更改。
这两个参数将出现在.ami文件的Reserved_Parameters部分,如下所示:
(Rx_Receiver_Sensitivity (Usage Info)(Type Float)(Value 0.04))
(Rx_Dj (Usage Info) (Type UI) (Range 0.05 0.0 0.01))
另一个例子,你可以用试金石文件(也称为SnP文件),用于定制发送器或接收器的模拟缓冲区建模。可以使用reserved参数启用该选项ts4file.在IBIS AMI Manager中。
当你点击出口IBIS AMI Manager中的按钮,将出现一个对话框,您可以在其中选择每个进程角模型的S参数文件以支持保留参数金宝appts4file..
有关IBIS保留参数的更多信息,请参阅IBIS规范。