FPGA 进阶 30:IO 规划与 Bank——Bank 电压、IO 标准、管脚分配
本文是
fpga/进阶层第 34 篇。管脚分配是 FPGA 和硬件设计的交界点:约束写在 XDC 里,能不能用在芯片和 PCB 上。约束语法见 XDC 约束入门,高速管脚的等长/端接见板级信号完整性。
本文要回答的问题
- Bank 是什么?VCCO 怎么决定能用哪些电平?
- 哪些管脚是专用的(时钟脚、差分对、配置脚、收发器)?
- IO 规划的正确流程是什么?XDC 要写哪些属性?
- 画板前怎么用工具提前验证管脚可行性?
一、Bank 与 VCCO:电压决定标准
FPGA 几百个 IO 按 Bank 分组(7 系列每 Bank 约 50 脚、有独立供电),关键电源:
- VCCO:Bank 输出驱动/输入参考电压,决定该 Bank 能用的电平标准;
- VREF(部分 Bank/标准):SSTL、HSTL 等需要参考电压,可外部供或内部开启;
- VCCAUX:辅助电压(1.8V,全片统一)。
| IO 标准 | 所需 VCCO | 典型用途 |
|---|---|---|
| LVCMOS33 / LVTTL | 3.3V | 按键、LED、普通外设 |
| LVCMOS25 / 18 / 15 / 12 | 同名电压 | 与对应电压器件连接 |
| LVDS_33(输出) | 3.3V | 3.3V Bank 上的差分输出 |
| LVDS(1.8V 原生) | 1.8V | 高速差分输入输出(推荐) |
| TMDS_33 | 3.3V | HDMI/DVI(见视频流水线) |
| SSTL15/135 等 | DDR 电压 + VTT/VREF | DDR3/DDR4 |
规则:同一 Bank 的 VCCO 是一个值,混标准前查器件手册的 Bank 兼容表;DDR、MIG、高速收发器等 IP 会自己提出 Bank/VCCAUX/VREF 要求,按 IP 手册固定。

二、专用管脚:这些不能随便用
| 管脚类型 | 约束 | 说明 |
|---|---|---|
| MRCC/SRCC(时钟脚) | 晶振、随路时钟必须放这 | MRCC 可驱动全局时钟/MMCM;SRCC 限区域;普通脚接时钟偏斜大 |
| 差分对 P/N | LVDS/差分信号必须成对 | 封装图中成对脚(如 T18/T19),错脚无法用差分标准 |
| 配置 Bank(Bank0/14/15 等) | 配置期间有专用用途 | 模式脚、init/done、配置 Flash 脚;启动后多数可复用但有限制 |
| JTAG(TCK/TMS/TDI/TDO) | 保留给下载调试 | 不分配给普通功能 |
| GTP/GTX/GTH 收发器 | 专用差分对+参考时钟脚 | PCIe/SerDes/光口,不能当普通 IO,参考钟走 MGTREFCLK |
| VCCB/VREF、电源地 | 非 IO | 按手册供电 |
三、XDC 管脚约束
# 基本:脚位 + 电平
set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33 PULLUP true} [get_ports key]
# 差分 LVDS 输入:开内部端接
set_property -dict {PACKAGE_PIN B6 IOSTANDARD LVDS DIFF_TERM true} [get_ports rx_p]
# 高速输出:快沿、强驱动(注意振铃,配合端接)
set_property -dict {PACKAGE_PIN H4 IOSTANDARD LVCMOS33 SLEW FAST DRIVE 12} [get_ports clk_out]常用属性:PULLUP/PULLDOWN(上下拉)、SLEW FAST|SLOW(边沿快慢)、DRIVE(驱动电流 mA)、DIFF_TERM(差分内部端接)。管脚与原理图一一对应,改板必须同步。
四、IO 规划流程(推荐)
- 列外设表:每个外设的信号清单、电平标准、电压、方向、速率、差分与否;
- 按电压分 Bank:3.3V 的一组、1.8V 的一组;高速差分集中到支持 LVDS 的 Bank;
- 让 IP 占坑:先例化 MIG/PCIe/HDMI 等 IP,它们会锁定一批 Bank 和专用脚;
- 时钟走 MRCC:晶振、源同步随路时钟放 MRCC/SRCC;
- 差分配对:对着封装图选 P/N 对;
- I/O Planning 验证:Vivado 综合后开 I/O Ports 视图填脚,跑 DRC——电压冲突、非差分对、普通脚放时钟都会报错;
- 导出给硬件:生成 CSV/XDC 管脚表给 PCB 工程师;画板后有小改用 pin swap(换到同性质空脚)在工具里重分配,可免改板。
常见坑对照
| 坑 | 后果 | 正确做法 |
|---|---|---|
| 同 Bank 混 3.3V/1.8V 器件 | 通信失败甚至过压 | 按 VCCO 分 Bank,查兼容表 |
| 差分信号放在非成对脚 | 工具报错/无法实现 | 封装图上选 P/N 对 |
| 晶振放普通 IO | 时钟偏斜大、时序差 | MRCC/SRCC |
| LVDS 接收忘开 DIFF_TERM | 信号质量差、误码 | 输入加 DIFF_TERM true |
| 配置 Bank 管脚随意占用 | 配置失败/启动异常 | 保留配置脚,复用查手册 |
| 改板不同步 XDC | 管脚全乱 | 管脚表纳入版本管理 |
| 高速信号 SLEW/端接不管 | 振铃、过冲、误码 | 见板级 SI 篇,硬件协同 |
相关与延伸
前置:XDC 约束入门、约束实战。 高速物理层:LVDS 源同步、高速收发器、DDR MIG、视频 TMDS。 板级协同:等长/阻抗/端接见板级信号完整性。
一句话总结
FPGA 管脚按 Bank 分组,每个 Bank 一个 VCCO 电压,IO 标准必须与 VCCO 匹配——3.3V 外设进 VCCO=3.3V 的 Bank(LVCMOS33/TMDS33),1.8V LVDS 进 1.8V Bank,混标准前必查手册兼容表。专用脚要让出来:晶振/随路时钟走 MRCC/SRCC(普通脚接时钟偏斜大)、差分信号必须用封装上成对的 P/N、配置脚/JTAG/收发器 Bank 不能乱占。XDC 里每脚至少写 PACKAGE_PIN + IOSTANDARD,按需加 PULLUP/SLEW/DRIVE/DIFF_TERM。正确流程:列外设电平表 → 按电压分 Bank → IP 先占坑 → 时钟走 MRCC、差分配对 → Vivado I/O Planning 视图填脚跑 DRC 提前验证 → 管脚表交硬件并纳入版本管理,小改走 pin swap。