I/O 行为 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文

对于串联配置设计的阶段 1 所需的每个 I/O,此 I/O 所在的整个 bank 都必须在阶段 1 比特流内进行配置。除此 bank 外,还会启用配置 bank (65),因此以下详细信息适用于这 2 个 bank(或者如果复位管脚位于配置 bank 内,则适用于其中 1 个 bank)。对于 PCI Express,阶段 1 设计中所需的唯一信号为 sys_reset 输入端口。因此,与 sys_reset 端口位于相同 I/O bank 内的任何阶段 2 I/O 都随阶段 1 一起进行配置。与 sys_reset 位于相同 I/O bank 内的任何管脚在内部都处于未连接状态,因此输出管脚会展现出未知行为,直至阶段 2 配置完成其内部连接为止。并且,针对阶段 2 功能需要初始化的组件除非在完成阶段 2 编程后由设计进行复位,否则这些组件不应布局在这些 I/O bank 中。

如果输出管脚必须与 sys_reset 管脚驻留在相同 bank 内,并且其值在阶段 2 完成前不得浮动,那么可采用以下方法。在阶段 1 完成(当输出变为有效时)与阶段 2 完成(当驱动逻辑变为有效时)之间使用保持处于三态的 OBUFT。mcap_design_switch 信号可用于控制启用管脚,当握手事件完成时释放此输出。

提示: 在顶层设计中,推断或例化 OBUFT。使用 mcap_design_switch 控制启用(名为 T 的端口)- 注意极性!
OBUFT test_out_obuf (.O(test_out), .I(test_internal), .T(!mcap_design_switch));

使用以下语法作为示例,创建 Pblock 以包含复位管脚位置。此 Pblock 应包含整个 I/O bank 和关联的 I/O 资源与时钟设置原语。FPGA slice 资源的第 1 列同样应包含在 Pblock 内,以便与部分配置边界对齐。应置于此区域中的所有逻辑都应添加到 Pblock 内,并使用 HD.TANDEM 属性将这些逻辑标识为阶段 1。请谨记,此逻辑在加载阶段 1 后即变为有效,而驱动逻辑可能要在加载阶段 2 之后才会变为有效。创建系统设计时应牢记此考虑因素。建议将其组合在一起,组成其独立的 Pblock。以下是名为 test_out_obuf 的输出端口的示例。

# Create a new Pblock
create_pblock IO_pblock
set_property HD.TANDEM 1 [get_cells <my_cell>]
# Range the Pblock to include the entire IO Bank and the associate XiPhy and clocking
primitives.
resize_pblock [get_pblocks IO_pblock] -add { \
IOB_X1Y52:IOB_X1Y103 \
SLICE_X86Y60:SLICE_X86Y119 \
MMCME3_ADV_X1Y1 \
PLLE3_ADV_X1Y2:PLLE3_ADV_X1Y3 \
PLL_SELECT_SITE_X1Y8:PLL_SELECT_SITE_X1Y15 \
BITSLICE_CONTROL_X1Y8:BITSLICE_CONTROL_X1Y15 \
BITSLICE_TX_X1Y8:BITSLICE_TX_X1Y15 \
BITSLICE_RX_TX_X1Y52:BITSLICE_RX_TX_X1Y103 \
XIPHY_FEEDTHROUGH_X4Y1:XIPHY_FEEDTHROUGH_X7Y1 \
RIU_OR_X1Y4:RIU_OR_X1Y7 \
}
# Add components and routes to stage 1 external Pblock
# This constraint should be repeated for each primitive within this pblock region
add_cells_to_pblock [get_pblocks IO_pblock] [get_cells test_out_obuf]
# Identify the logic within this pblock as stage1 logic by applying the HD.TANDEM
property.
# This constraint should be repeated for each primitive within this pblock region
set_property HD.TANDEM 1 [get_cells test_out_obuf]

默认情况下在阶段 2 配置期间,内部上拉电阻器会将设计中的剩余用户 I/O 强制拉高。当 PUDC_B 管脚保持高电平有效状态时,使用此管脚会强制使超出上述 3 个 bank 范围外的所有 bank 中的 I/O 都变为三态模式。在阶段 1 和阶段 2 之间(对于 PCIe 可能需大量时间),每个 I/O 的内部弱下拉将把这些管脚拉低,因为在此期间这些管脚未配置。仅限在这两个配置阶段内才会考虑使用 PUDC_B,在这两个阶段之间则不予使用,因此此管脚的值可能会根据外部电阻器值进行切换。在阶段 2 完成后,所有 I/O 在其已配置状态下都会被释放。