
原文第 7 章IP Integrator 中的参数传递Propagating Parameters参数传递parameter propagation是 IP integrator 中最强大的功能之一。该功能使 IP 能够根据其在设计中的连接方式自动更新自身的参数化配置。IP 在封装时可以附带特定的传递规则IP integrator 会在图面生成过程中运行这些规则。例如在下图中IP0 有一条 64 位宽的数据总线。随后添加并连接了 IP1 和 IP2。图 147参数传递概念图略见原文IP0 ──→ IP1 ──→ IP2 用户指定 默认位宽 32 传递后更新为 Width 64 传递所得值 输入位宽 64在本例中IP2 的默认数据总线位宽为 32 位。当你运行参数传递规则时工具会提示你 IP2 的总线位宽不同。假设 IP2 的数据总线位宽可以通过更改参数来修改IP integrator 便可以自动更新 IP2。如果某个 IP 无法根据其连接关系更新参数以匹配属性则会显示错误提醒你设计中存在潜在问题。这个简单的例子展示了参数传递的威力——能够被参数传递纠正或识别出来的错误类型往往是直到仿真阶段才会被发现的错误。使用总线接口Bus Interface总线接口是共享同一功能的一组信号的集合。例如一个 AXI4-Lite 主接口包含大量独立信号外加多条总线这些都是建立连接所必需的。IP integrator 的重要特性之一就是能够将逻辑上成组的总线接口从一个 IP 连接到另一个 IP或从 IP 连接到 IP integrator 设计的边界乃至 FPGA 的 I/O 边界。如果不把这些信号封装成总线接口IP 的符号上会显示一个极长且难以使用的底层端口列表逐个连接将非常困难。在 IP-XACT 中可以利用总线接口的概念将一组信号归组——总线接口带有自己的端口映射port map将物理端口在 IP 的 RTL 或网表上可用映射到该接口类型的 IP-XACT 抽象定义文件中所定义的逻辑端口。AMD 提供了许多接口定义包括标准化的 AXI 协议和其他行业标准信号接口但一些遗留或自定义实现具有独特的 IP 信号协议。你可以定义自己的接口、捕获预期的信号集合并确保这些信号在 IP 之间一一对应存在。更多信息请参见《Vivado Design Suite 用户指南创建与封装自定义 IPUG1118》中的创建新接口定义部分。常见的内部总线接口常见的总线接口示例包括符合 AXI 规范的总线如 AXI4、AXI4-Lite 和 AXI4-Stream。AXIMM 接口包含全部三个子集AXI4、AXI3 和 AXI4-Lite。其他接口还包括 block RAM 接口。I/O 总线接口将一组通往 I/O 端口的信号归组的总线接口称为 I/O 接口。示例包括UART、I2C、SPI、Ethernet、PCI® 和 DDR。特殊信号Special Signals特殊信号包括时钟Clock复位Reset中断Interrupt时钟使能Clock Enable传统算术 IP 的数据信号这些 IP 没有任何 AXI 接口例如加法器、减法器和乘法器以下各节介绍这些特殊信号。时钟Clock时钟接口可以关联以下参数。这些参数用于设计生成过程当该 IP 与设计中的其他 IP 配合使用时是必需的。ASSOCIATED_BUSIF该列表包含所有运行在此时钟频率下的总线接口的名称。此参数的取值是以冒号:分隔的字符串列表。如果边界上没有运行在此时钟速率下的接口信号将此字段留空。图 148ASSOCIATED_BUSIF图略见原文上图显示了所选时钟接口端口的 ASSOCIATED_BUSIF 参数其中以冒号分隔列出了主接口M00_AXI和M01_AXI与从接口S00_AXI和S01_AXI。如果其中某个接口如M00_AXI不运行在此时钟频率下则不要将该接口列入此时钟的 ASSOCIATED_BUSIF 参数。ASSOCIATED_RESET该列表的取值为复位端口的名称不是复位容器接口的名称。此参数的取值是以冒号:分隔的字符串列表。如果设计中没有复位将此字段留空。ASSOCIATED_CLKEN该列表的取值为时钟使能端口的名称不是容器接口的名称。此参数的取值是以冒号:分隔的字符串列表。如果设计中没有时钟使能信号将此字段留空。FREQ_HZ此参数以正整数格式记录时钟运行的频率单位为赫兹。仅需要为所有输出时钟指定此参数。PHASE此参数记录时钟的相位。默认值为 0有效值为 0 到 360。如果无法以固定方式指定 PHASE则必须像更新 FREQ_HZ 一样在bd.tcl中更新它。CLK_DOMAIN此参数是一个字符串 ID。默认情况下IP integrator 假定所有输出时钟相互独立并为整个块设计中的所有时钟输出分配唯一 ID。此 ID 由 IP integrator 自动分配如果同一时钟域有多个输出时钟则由 IP 管理。要查看时钟网络上的属性选中源时钟端口或引脚分析该对象上的属性。下图显示了 Clocking Wizard 以及所选引脚上的时钟属性。图 149时钟属性图略见原文你也可以双击某个端口或引脚查看所选对象的定制对话框。复位Reset此容器总线接口包含POLARITY极性参数。该参数的有效值为ACTIVE_HIGH或ACTIVE_LOW默认为ACTIVE_LOW。要查看复位网络上的属性选中复位端口或引脚分析该对象上的属性如下图所示。图 150复位信号图略见原文下图为属性Properties窗口。图 151复位属性窗口图略见原文中断Interrupt此总线接口包含SENSITIVITY敏感度参数有效值为LEVEL_HIGH、LEVEL_LOW、EDGE_RISING和EDGE_FALLING默认为LEVEL_HIGH。要查看中断引脚上的属性高亮选中该引脚并查看属性窗口如下图所示。图 152中断属性块图与属性窗口图略见原文时钟使能Clock Enable与时钟使能关联的参数有两个FREQ_HZ和PHASE。参数传递Parameter Propagation在 IP integrator 中当你选择运行Validate Design验证设计时就会发生参数传递。你可以通过以下方式之一运行验证点击 AMD Vivado™ IDE 工具栏中的Validate Design。点击设计画布工具栏中的Validate Design按钮或按F6。从 Vivado 菜单中选择Tools → Validate Design。在 Tcl Console 中使用 Tcl 命令validate_bd_design。更多信息请参见《Vivado Design Suite Tcl 命令参考指南UG835》。参数传递会将某个 IP 实例的配置与它所连接的其他实例的配置同步。配置同步发生在总线接口参数上。IP integrator 中的参数传递主要基于接口参数的**赋值强度assignment strength**概念。接口参数的强度可以是USER、CONSTANT、PROPAGATED或DEFAULT。当工具跨连接比较参数时总是将强度较高的参数值复制给强度较低的参数。定制 GUI 中的参数在非工程模式Non-Project Mode下你必须配置 IP 的所有用户参数。在 IP integrator 的上下文中任何由参数传递自动更新的用户参数在 IP 定制对话框中都会显示为灰色。灰色的参数表示你不能直接在该 IP 上设置这些用户参数——属性值由工具自动计算。在某些情况下自动计算的值可能并非最优。在这些情形下你可以覆盖这些传递而来的值。你会遇到参数传递的情形如下自动计算的参数Auto-computed parameters由 IP integrator 自动计算你无法覆盖。例如下图中的 Ext Reset Logic Level 参数显示为灰色表示你无法更改此参数。下图显示了 Processor System Reset 的 Re-customize IP 窗格。图 153自动计算的参数图略见原文可覆盖的参数Override-able parameters可以覆盖的自动计算参数。例如你可以更改 LMB block RAM 控制器的 SLMB Address Decode Mask。当你将鼠标悬停在滑块按钮上时它会提示该参数由系统控制但你可以通过将按钮从Auto切换为Manual来更改它。下图显示了这些设置。图 154可覆盖的参数图略见原文用户可配置的参数User configurable parameters仅可由用户配置。下图中以红框标出的即为这类参数。图 155用户可配置的参数图略见原文常量Constants无法设置的参数。