管理AMI参数
这个例子展示了如何为用SerDes Toolbox构建的IBIS-AMI模型添加、删除、修改、重命名和隐藏AMI参数。这些AMI参数可以与现有的数据路径块、用户创建的MATLAB函数块或优化控制循环一起使用,并且可以传递给SerDes Toolbox创建的AMI模型可执行文件(dll)或从它们返回。
示例设置
本例将在Pass-through数据路径块旁边添加一个新的InOut参数“Count”。该参数将计算通过AMI_Init的传递次数(应该是1),然后将结果传递给AMI_GetWave,在那里它将继续计算传递总数。虽然这对于AMI模型开发可能不是特别有用的功能,但它可以演示在模型生成期间如何添加和使用新的AMI参数。
检查模型
本示例从一个只使用传递块的简单接收器模型开始。
open_system (“serdes_add_param.slx”)
该Simulink SerDes系统由配置块、刺激块、Tx块、模拟通道块和Rx块组成。
Tx子系统使用FFE数据路径块对AMI模型的时域部分进行建模,使用Init块对统计部分进行建模。本例中不使用Tx子系统。
模拟通道块具有目标频率、损耗、阻抗和Tx/Rx模拟模型参数的参数值。
Rx子系统有一个Pass-Through数据路径块和一个Init块,用于对AMI模型的统计部分建模。
运行模型
在编辑之前,运行模型以验证基本配置是否如预期的那样工作。生成了两个图。第一个是实时时域(gewave)眼图,随着模型的运行而更新。
第二个图包含统计(Init)和时域(gewave)模拟结果的视图。
如何添加新参数
打开Configuration块的块参数对话框,然后单击打开SerDes IBIS-AMI管理器按钮并选择AMI-Rx选项卡。
1.突出了PT数据路径块和按添加参数…
2.改变参数名称:数
3.验证当前值被设置为0
(这将是我们计数的起点)。
4.在描述类型:迭代计数的起始值
.
有四种可能的值使用:
在
:这些参数是AMI可执行文件的必需输入。出
:这些参数从AMI_Init和/或AMI_GetWave函数中输出并返回给EDA工具。InOut
:这些参数是AMI可执行文件的必需输入,也可以从AMI_Init和/或ami_gewave返回值到EDA工具。信息
:这些参数是用户和/或仿真工具的信息,模型不使用。
5.设置使用:InOut
有6个可能的参数类型:
浮动
:浮点数。整数
:没有小数或小数成分的整数。用户界面
:单位间隔(数据速率频率的倒数)。利用
:用于Tx FFE和Rx DFE延迟线的浮点数。布尔
: True和False值,不带引号。字符串
:用引号括起来的ASCII字符序列。
6.设置类型:整数
有三个可能的参数格式:
价值
:单个数据值。列表
:一组离散的值,用户可以从中选择一个值。范围
:一个连续的范围,用户可以在最小值和最大值之间选择任何值。
7.设置格式:价值
8.点击好吧要创建新参数,您将看到新块自动放置在画布上。
从初始化函数中访问新形参
新的参数从初始化函数(用于统计分析)通过脉冲量化MATLAB函数块访问。这个例子添加了一个InOut参数。在AMI_Init中使用新的InOut参数'Count':
1.在Rx子系统中,双击Init块以打开掩码。
2.按下刷新Init按钮将新的AMI参数传播到初始化子系统。
3.点击好吧关闭遮罩。
4.再次单击Init块并键入Ctrl-U查看Init掩码下面,然后双击initialize块打开initialize函数。
脉冲量化MATLAB函数块是一个自动生成的函数,提供SerDes系统块(IBIS-AMI Init)的脉冲响应处理。
注意,新的Count参数已自动添加为该MATLAB函数的输出,作为数据存储写块。不需要数据存储读取,因为输入参数是作为PTSignal Simulink.Parameter传入的。
5.双击脉冲量化MATLAB函数块在MATLAB中打开函数。此函数块中的'%% BEGIN:'和'% END:'行表示可以输入自定义用户代码的部分。当Refresh Init运行时,此部分中的数据不会被覆盖:
%% BEGIN:自定义用户代码区域(当“刷新初始化”按钮时保留熨平)
% END:自定义用户代码区域(当“刷新初始化”按钮时保留熨平)
当刷新Init运行时,它将我们的新参数添加到自定义用户代码区域,以便它可以根据需要使用:
%% BEGIN:自定义用户代码区域(当“刷新初始化”按钮时保留PTCount = PTParameter.Count;用户添加的AMI参数并行转换器IBIS-AMI经理% END:自定义用户代码区域(当“刷新Init”按钮是熨平)
6.要添加自定义代码,向下滚动到自定义用户代码部分,然后输入PTCount = PTCount + 1;
自定义用户代码部分应该如下所示:
%% BEGIN:自定义用户代码区域(当“刷新初始化”按钮时保留PTCount = PTParameter.Count;用户添加的AMI参数并行转换器IBIS-AMI经理PTCount=PTCount+1;%计算每次迭代通过这函数。% END:自定义用户代码区域(当“刷新Init”按钮是熨平)
7.保存更新后的MATLAB函数,然后运行Simulink项目来测试新代码。使用模拟数据检查器,验证Init之后的Count值现在是“1”。
注意,Count的最终值被写入PTSignal数据存储,因此它现在可以在AMI_GetWave中使用。
Usage如何影响Init中的参数
根据所选择的用法,参数以不同的方式显示在脉冲量化MATLAB函数块的自定义用户代码区域:
信息参数
信息参数是用户或模拟工具的信息,不会传递给模型,也不会被模型使用,因此它们不会显示在Initialize代码中。
在参数
参数为Simulink。参数对象显示为常量,可以在需要时使用。例如,一个名为'InParam'的In参数被添加到VGA块将显示如下:
VGAParameter.InParam;用户从SerDes IBIS-AMI中添加了AMI参数经理
输出参数
输出参数为Simulink。显示为参数的信号对象,其初始值在IBIS-AMI Manager中定义。例如,一个名为“OutParam”的输出参数被添加到VGA块,其当前值为“2”,将显示如下:
VGAOutParam = 2;用户从SerDes IBIS-AMI管理器中添加了AMI参数
输出参数使用一个数据存储写块来存储值,以便从Init传递到EDA工具(通过AMI_Parameters_Out字符串)和在GetWave中使用(如果需要)。在上面的例子中,名为“OutParam”的数据存储写块被自动添加到初始化函数中:
InOut参数
InOut参数使用Simulink。参数对象和一个Simulink。信号对象。例如,一个名为'InOutParam'的InOut参数被添加到VGA块将显示如下:
VGAInOutParam = VGAParameter.InOutParam;用户添加了AMI参数从并行转换器IBIS-AMI经理
输入值是通过使用Simulink访问的。VGAParameter参数参考。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):
从GetWave函数中访问一个新的参数
新参数会自动创建为常量、数据存储读或数据存储写类型的块,并添加到数据路径块的画布中。这个例子添加了一个InOut参数。在gewave中使用新的InOut参数'Count':
1.在Rx子系统中,单击Pass-Through数据路径块并键入Ctrl-U透过“直通”面具看。
2.添加一个Simulink/Math Operations总和块到画布上。
3.添加一个模型/来源常数块设置为画布,并将值设置为1
.
4.连接每个元素,这样Pass Through块现在看起来像下面这样:
7.保存,然后运行Simulink项目来测试新代码。
通过将Value Labels添加到Sum块的输出端口,可以看到GetWave之后的Count值为3.2e+04(每个符号的样本*符号的数量)。生成AMI模型可执行文件后,Count的值将在AMI模拟器的Parameters out字符串中可用。
使用如何影响gewave中的参数
根据所选择的Usage,可以通过不同的方式从gewave函数访问新参数。
信息参数
信息参数是用户或模拟工具的信息,模型不能使用。
在参数
参数为Simulink。通过添加Constant块使用的参数对象。例如,添加到Rx VGA块的名为“InParam”的In参数可以被任何Rx块通过添加一个像这样的常量块访问:
有关更多信息,请参见自定义SerDes工具箱数据路径控制信号.
输出参数
输出参数为Simulink。使用数据存储写块存储值的信号对象,用于从gewave传递到EDA工具(通过AMI_Parameters_Out字符串)或其他Rx块。例如,一个名为“OutParam”的输出参数被添加到Rx VGA块,可以像这样用数据存储写块写入:
InOut参数
InOut参数使用Simulink。参数对象和一个Simulink。信号对象。输入值可以通过常量块或数据存储读块来访问,而输出值则使用数据存储写块来存储值,以便通过gewave传递给EDA工具(通过AMI_Parameters_Out字符串)或其他Rx块。例如,如果一个名为'InOutParam'的InOut参数被添加到Rx VGA块,初始输入值可以被任何Rx块通过添加一个像这样的常量块访问:
或者,更新后的输入值可以像这样通过数据存储读块访问:
输出值可以像这样用数据存储写块写入:
如何重命名参数
SerDes工具箱内置系统对象使用的参数可以修改或隐藏,但不能重命名。
用户生成的AMI参数重命名如下。
更新AMI参数
1.打开Configuration块的块参数对话框,然后单击打开SerDes IBIS-AMI管理器按钮。
2.去任何一个AMI-Tx或AMI-Rx参数所在的TAB。
3.突出显示要重命名的参数并按编辑……
4.在参数名称字段中,根据需要更改名称。
5.点击好吧,然后您将看到画布上自动重命名的新参数。
更新初始化
1.推入使用参数的Tx或Rx子系统块。
2.双击Init块以打开掩码。
3.按下刷新Init按钮将AMI参数名称更改传播到初始化子系统。
4.点击好吧关闭遮罩。
5.再次单击Init块并键入Ctrl-U查看Init掩码下面,然后双击initialize块打开initialize函数。
6.双击脉冲量化MATLAB函数块在MATLAB中打开函数。
7.向下滚动到标题为:
%% BEGIN:自定义用户代码区域(当“刷新初始化”按钮时保留熨平)
8.您可以确认该参数的所有实例都已重命名。
9.保存并关闭MATLAB函数块。
更新GetWave
推入使用重命名参数的每个数据路径块,并重命名参数的每个实例。
验证结果
运行一个模拟以验证项目仍然在没有错误或警告的情况下运行。
如何删除参数
SerDes工具箱内置系统对象使用的参数可以被修改或隐藏,但不能被删除。
删除用户生成的AMI参数如下所示。
更新AMI参数
1.打开Configuration块的块参数对话框,然后单击打开SerDes IBIS-AMI管理器按钮。
2.去任何一个AMI-Tx或AMI-Rx参数所在的TAB。
3.选中需要删除的参数,按删除参数.
4.您将看到参数块自动从画布中删除。
更新初始化
注意:自定义用户代码区域中的参数不会自动删除,因此您将按照以下步骤注释或删除它们:
1.推入使用参数的Tx或Rx子系统块。
2.双击Init块以打开掩码。
3.按下刷新Init按钮从初始化子系统中删除任何已删除的Out或InOut参数数据存储。
4.点击好吧关闭遮罩。
5.再次单击Init块并键入Ctrl-U在Init掩码下查看
6.双击initialize块以打开initialize函数。
7.双击脉冲量化MATLAB函数块在MATLAB中打开函数。
8.向下滚动到标题为:
%% BEGIN:自定义用户代码区域(当“刷新初始化”按钮时保留熨平)
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工具箱中使用的所有参数编辑……按钮。但是,根据参数类型的不同,可以修改的参数值也不同。
对于内置的系统对象,只能修改以下字段:
当前值
描述
格式
默认的
列出值(用于格式列表)
类型/最小/最大值(用于格式范围)
对于用户定义的参数,所有字段都可以修改。
为抖动、模拟缓冲区建模和数据管理添加保留参数
保留的AMI参数包括:
抖动和噪声参数,如Tx_Rj, Tx_Dj, Tx_DCD, Rx_Rj, Rx_Dj, Rx_DCD, Rx_GausianNoise等
模拟缓冲区建模参数,如Ts4file、TX_V和RX_R
使用DLL_ID进行数据管理
这些是符合IBIS-AMI的模拟器用来相应修改模拟结果的后处理参数。通过SerDes IBIS-AMI Manager对话框添加这些参数保留参数…按钮AMI-Tx或AMI-Rx选项卡。
注意:保留参数AMI_Version如果在IBIS- ami管理器中启用了任何IBIS 7.0保留参数,将自动更改为7.0。
注意:有些保留参数只影响导出的IBIS-AMI模型,不包含在Simulink的仿真结果中。有关更多信息,请参见定制AMI参数.
例如,要将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
改变类型来
用户界面
.改变格式来
范围
.设置Typ价值
0.05
设置最小值价值
0.0
设置马克斯价值
0.1
点击好吧以保存更改。
这两个参数将出现在.ami文件的Reserved_Parameters部分,如下所示:
(Rx_Receiver_Sensitivity(使用信息)(类型Float)(值0.04))
(Rx_Dj(使用信息)(类型UI)(范围0.05 0.0 0.01))
另一个例子,你可以用试金石文件(也称为SnP文件)来定制发射机或接收器的模拟缓冲区建模。可以使用reserved参数启用此选项Ts4file在宜必思AMI管理器。
当您单击出口按钮,将出现一个对话框,您可以在其中为每个流程角模型选择s参数文件以支持保留参数Ts4file.
有关IBIS保留参数的更多信息,请参阅IBIS规范。