ug471 7 Series FPGAs SelectIO Resources User Guide

一、SelectIO 的基础用法

基础用法目标:

实现简单的输入/输出控制,满足GPIO 控制、LED 显示、按键检测等一般接口或低速通信需求

支持的功能:

功能 描述
单端输入/输出 使用 IOBUF 实现双向 I/O 缓冲器
输出驱动能力调节 可设置为 2mA, 4mA, 8mA, 12mA 等
上拉/下拉电阻 可配置内部上拉或下拉电阻
输入同步寄存器 防止亚稳态,提高稳定性
LVCMOS/LVTTL 接口标准 最常见的数字电平接口

常见应用场景:

  • 控制 LED、按键、开关等简单外设
  • UART、SPI、I2C 等低速串行接口
  • ADC数据采集
  • 分频时钟输出

示例代码:使用 IOBUF 实现双向 I/O

IOBUF io_inst (
    .O (data_in),     // 输入信号
    .IO(data_pin),    // FPGA 引脚
    .I (data_out),    // 输出信号
    .T (output_en)    // 三态控制,0=输出,1=输入
);

Vivado 中的配置方法:

  • 在 I/O Planning 视图中分配引脚
  • 配置驱动强度、上下拉等属性
  • XDC 约束

二、SelectIO 的进阶用法

进阶用法目标:

实现高速接口、DDR 模式、差分信号传输、延迟校准等功能,满足高性能通信或存储器接口需求。

支持的功能:

功能 描述
DDR 模式支持 使用 ODDR/IDDR 实现在一个时钟周期内传输两个数据位
差分接口 支持 LVDS、RSDS、Mini-LVDS 等差分信号标准
IDELAY / ODELAY 延迟单元 调整输入/输出信号的延时以对齐时序
ISERDES / OSERDES 原语 实现高速串并转换,用于千兆级接口
数据眼图对齐 对高速源同步接口进行精确采样点调整
特定接口协议支持 DDR3 SDRAM、HDMI、LVDS Camera、RGMII 等

常见应用场景:

  • DDR3/DDR4 存储器接口
  • HDMI 发送端(TMDS 编码)
  • 千兆以太网接口(RGMII、SGMII)
  • 工业相机图像采集(Camera Link、LVDS 视频流)
  • 高速 ADC/DAC 接口

示例代码:使用 ODDR 实现 DDR 输出模式

ODDR #(
    .DDR_CLK_EDGE("OPPOSITE_EDGE"), // 上升沿和下降沿分别采样 D1 和 D2
    .INIT(1'b0),
    .SRTYPE("SYNC")
) ODDR_inst (
    .Q (data_out),      // 输出信号
    .C (clk),           // 时钟
    .CE(1'b1),          // 使能始终打开
    .D1(data_even),     // 第一个数据
    .D2(data_odd),      // 第二个数据
    .R(1'b0),           // 复位
    .S(1'b0)            // 置位
);

三、用法对比

特性 基础用法 进阶用法
目标 简单 I/O 控制 高速接口、DDR、差分通信
数据率 < 100 Mbps > 200 Mbps,可达 Gbps
常用原语 IOBUF、BUFG、FDCE ODDR、IDDR、ISERDESE2、OSERDESE2、ODELAYE2
典型接口 UART、GPIO、I2C DDR3、LVDS、RGMII、HDMI
XDC 约束 IO约束 时序约束
是否需要 PLL/MMCM 通常需要
开发工具支持 Vivado GUI + HDL Vivado IP Integrator + 原语 + 时序分析

四、如何选择基础 or 进阶用法?

设计需求 推荐用法
控制 LED、读取按键、GPIO 扩展 基础用法
UART、I2C、SPI 基础用法
DDR3/DDR4 进阶用法
LVDS 视频传输、摄像头接口 进阶用法
高速以太网接口(RGMII、SGMII) 进阶用法
HDMI 发送/接收 进阶用法
MIG 核 进阶用法

建议

  • 入门学习推荐先掌握基础用法,熟悉引脚配置、IOBUF 使用、XDC 文件编写。
  • 当涉及高速接口或 DDR 操作时,再深入学习进阶用法,包括 ODDR、ISERDES、IDELAY 等模块的使用。
posted @ 2025-07-04 11:31  Radiumlrb  阅读(119)  评论(0)    收藏  举报