FPGA 原型验证专题 35:多 FPGA IO 引出、连接器与引脚规划——从割边到物理管脚的电平、SI 与取舍流程
更新时间:2026-09-13。本文是原型外围姊妹系列第十篇、模块 C(真实接口接入)的收尾。13 跨 FPGA 互联与 TDM SerDes/跨片同步/降频 解决的是"割边信号在逻辑层怎么过片";31 速率适配器 Speed Adapter 弹性FIFO/两种范式解决的是"对外接口怎么速率适配"。本篇补最后一公里:这两类信号怎么从逻辑网络变成 FPGA 物理引脚上的电平,穿过连接器,且在系统跑起来后不出信号完整性问题。
这一篇在体系里的位置
再合理的逻辑分区(12 多 FPGA 分区算法 割集/容量/图划分)、再强的速率适配,最终都要受限于一个硬约束:FPGA 的物理引脚和高速收发器数量是有限且固定的。SoC 内部信号数量远超 FPGA 外露 IO,跨片割边、对外接口、调试 trace、时钟复位都在抢同一批引脚和 bank。引脚规划不是"实现末尾填个 XDC",而是反过来约束分区算法、TDM 比例、接口取舍的一级设计变量。很多项目的进度不是栽在综合不过,而是栽在"割边数超过板上可用差分对、最后两周还在重新分区/改板"。
本文要回答的问题
- 从逻辑割边到物理引脚,中间经过哪些决策(IO 标准、bank、差分对、连接器、走线)?
- 单端/差分、LVCMOS/LVDS/SubLVDS/PODL 等电平怎么选?bank 供电冲突怎么避免?
- 跨片互联用普通并行 IO 还是 SerDes?TDM 比例和引脚数怎么交换?
- 连接器(高密度阵列、FMC/HSMC/VHDCI、高速差分)选型和引脚映射有什么讲究?
- 信号完整性、随路时钟、源同步、引脚保持(dont-touch)怎么写进约束?
- 割边/对外信号超出物理 IO 时,按什么流程取舍?
- 引脚规划为什么必须和逻辑分区、接口子卡规划协同迭代?
一、信号的三类去向与资源竞争
多 FPGA 原型上,需要占物理引脚的信号分三类,它们抢同一批资源:
| 类别 | 例子 | 特点 |
|---|---|---|
| 跨片互联信号 | 分区割边(地址/数据/控制/时钟) | 数量最大,决定 TDM 比例,常走并行差分或 SerDes |
| 对外接口信号 | DDR/PCIe/以太网/USB/MIPI/UART…(72~75 篇) | 有电气/协议硬要求,绑定特定 bank/收发器/refclk |
| 观测与系统信号 | trace、调试口、时钟、复位、状态灯 | trace 可能很宽(69 篇),时钟/复位要求专用/低抖动 |
物理资源则是四种有限供给:**普通用户 IO 引脚(按 bank 分组、受 VCCIO 限制)、高速差分对(成对、部分可作 SerDes 参考)、GTH/GTY 等串行收发器(数量少、位置固定、需 refclk 引脚)、时钟 capable 引脚(MRCC/SRCC,数量少)。**引脚规划的本质是在这四种资源上给三类信号做可行分配,并反过来在不可行时调整分区和需求。

二、IO 标准、bank 供电与差分对分配
1) IO 标准由"对端"和"速率"共同决定,不能逐个引脚随意选。FPGA 每个 bank 的 VCCIO 是统一的(部分高级器件支持更细粒度,但原型设计按 bank 统一假设最稳),同一 bank 里不能混压。因此引脚分配的第一步不是画连线,而是按电平标准给信号分组、再把组分到 bank:板间/接口板互联常用 LVDS 或低压差分(抗干扰、速率高、一对传一位),板内短距低速可用 LVCMOS;DDR 接口的 PODL/SSTL 必须放在带对应 VTT/ODT 支持的专用 bank。跨片信号若用单端 LVCMOS 跑较高频率,串扰和同步开关噪声(SSN)会明显,割边宽总线一般优先差分。
**2) 差分对必须落在器件的 P/N 对上。**每对有固定的主/从(master/slave)引脚,内部有专用差分缓冲,不能拿任意两个普通 IO 凑一对。规划时先统计可用差分对总数和每 bank 分布,再分配割边和高速接口;随路时钟/源同步时钟必须落在时钟 capable 引脚上才能用全局/区域时钟缓冲(BUFIO/BUFR/BUFG),普通引脚进来的时钟会极大抖动甚至不能用作时钟。
**3) 同步总线要成组、同 bank/邻 bank、等长。**一组并行总线(割边数据总线、源同步接口)尽量放在同 bank 或相邻 bank,便于约束同组、匹配延迟和走等长;把一条总线撒到三个角上的 bank,时序收敛和 PCB 走线都会变成噩梦。字节组(byte lane)天然是分组单元。
**4) 预留与对称。**留出一定比例空闲 IO(经验 10%~20%)给后期加观测信号、飞线救急、工程改样;多片 FPGA 间同类信号尽量对称分配,降低约束和接口板复杂度。
三、跨片互联:并行 IO 还是 SerDes,引脚与 TDM 的交换
13 跨 FPGA 互联与 TDM SerDes/跨片同步/降频讲过割边要靠 TDM 在物理线上分时复用。物理上承载 TDM 通道有两种主流方式,引脚规划阶段就要定:
- 宽并行 LVDS 互联:几十~几百对差分线,在中高速时钟下并行传多个 TDM 时隙,延迟低、实现简单,是多 FPGA 板的传统主力;代价是吃大量差分对和连接器管脚,板级走线密。
- SerDes/高速串行互联(Aurora 等,02 篇):几对高速收发器传很大聚合带宽,省普通 IO、距离远(可出机箱/接交换网络板),代价是占用稀缺 GTH/GTY、有 SerDes 编解码延迟和更复杂的时钟/复位/训练,对"割边很多但板上差分对不够"的情形是关键出路。
引脚数 ↔ TDM 比的交换关系:给定割边信号数 N、可分配物理通道数 P(并行对或 SerDes 等效时隙),TDM 比约为 N/P。TDM 比越大,跨片信号被时间拉得越长、系统可达频率越低(19 原型频率与时序收敛 TDM 降频/关键路径)。这就是引脚规划反向约束分区的核心机制:
- 割边太多 → 物理通道不够 → TDM 比飙升 → 频率塌方;
- 解法要么加物理通道(更多差分对/上 SerDes),要么减少割边(重新分区,12 多 FPGA 分区算法 割集/容量/图划分),要么降低对频率的要求。
- 这个权衡必须在"分区—引脚—板级"之间迭代,不能分区定死后才发现脚不够。商用原型 Compiler 通常把板级可用互联拓扑作为分区约束输入,让割边优先落在已布线的互联通道上。
四、连接器选型与引脚映射
FPGA 的 BGA 球不是直接焊外设线的,中间经连接器体系(75 篇的接口板/交换网络/子卡)。引脚规划要"规划到连接器":
- 高密度阵列连接器(厂商专用 mezzanine、Samtec/Q 系列等):管脚多、间距小、地针密,承载 FPGA 到接口板的原始大批 IO,引脚分配要保证信号-地-信号的回流针排布,控制阻抗。
- 标准 mezzanine(FMC/VITA 57、HSMC 等):引脚定义标准化,子卡可互换;FMC 分 LPC/HPC,含一定数量差分对和收发器/时钟,选槽位时核对差分对数、SerDes 数、时钟脚是否够该子卡。
- 高速差分/光口连接器:承载 SerDes 互联(Aurora/PCIe/网络),要配合参考时钟引脚和 AC 耦合电容位置。
- 专用调试/低速头:JTAG、UART、GPIO、状态灯、时钟/复位引出,用普通排针/调试连接器,单独成组便于飞线和示波器探头。
映射纪律:
- 一个逻辑信号组对应连接器上连续/成区的脚,不要把一条总线打散到多个连接器,降低走线与 SI 风险。
- 差分对在连接器上也要成对、同组、邻地针,跨越连接器的 P/N 不能错配,极性在需要时可在 FPGA 内反转但要记录。
- SerDes 与其 refclk 就近、同连接器/同区,减少参考时钟偏斜与噪声。
- 跨板信号名与 FPGA 管脚约束、网表端口、接口板网表四处一致——这是最容易出错的"命名不同步",应有自动从统一引脚表生成 XDC 和接口板引脚表的流程,而不是两处手抄。
五、信号完整性、源同步时钟与约束协同
引脚规划不是数字逻辑的事,高速 IO 的 SI 必须在引脚和约束阶段就考虑:
- 回流与地:高速信号需要完整参考平面和就近地针/过孔,跨分割、缺地针会造成阻抗突变和 EMI;差分对要等长、受控阻抗。
- 源同步接口:割边并行总线常带一个随路时钟(source-synchronous),数据与时钟的相位/延迟关系靠 IDELAY/IDELAYCTRL、MMCM 相移或 I/O SERDES 校准;时钟必须进时钟 capable 脚,数据-时钟偏斜在同组内约束匹配。降频后仍要保证这一接收结构成立。
- 引脚与时序约束联动:XDC 里
set_property PACKAGE_PIN/IOSTANDARD、create_clock(物理端口时钟)、set_input_delay/set_output_delay、伪路径/异步约束要与引脚分配一起评审;割边 TDM 通道、跨片异步时钟要有明确的 CDC 约束(与 18 原型约束体系 SDC/XDC/跨片时序/例外一致)。 - 保留测试点:关键时钟、复位、握手、训练状态、至少一组割边数据在接口板/连接板上留探头测试点,bring-up 时用示波器验证物理层(呼应 33 PCIe/SerDes 上原型 硬核/降速子卡/LTSSM)。
- 电平兼容与热插拔:接口板/子卡可能带电插拔或上电顺序不同,IO 电平、热插拔缓冲、钳位要核对,避免倒灌损伤 FPGA bank。
关键信号的特殊保护:时钟、复位、JTAG/调试、build_id 等系统信号应加 dont-touch/锁定约束,避免综合或分区工具把它们优化、复用或挪作跨片 TDM(与 14 可观测性插桩 dont_touch/probe/可见性预算、28 处理器 JTAG/调试口上原型 GDB/trace/失真同一原则);这些信号一旦在重新综合后悄悄换脚,接口板和调试器会全线失效且极难排查。
六、物理 IO 不够时的取舍流程
当"割边 + 对外接口 + 观测信号"的需求超过物理 IO/差分对/收发器供给,按下面顺序做权衡,每一步都记录代价,而不是私下砍信号:
- 重审分区,先减割边:用图划分(12 多 FPGA 分区算法 割集/容量/图划分)把强耦合模块归并同片,从源头减少跨片信号数;这是最划算的一步,往往一次分区调整省出几十对脚。
- 提高 TDM 比:在可接受的频率损失内,让更多割边时分复用同一物理通道;评估对系统频率和关键路径的影响(19 原型频率与时序收敛 TDM 降频/关键路径),不要把频率压到软件/OS 无法接受。
- 并行改串行:把部分割边从宽并行 LVDS 迁到 SerDes/Aurora,用少量收发器换大批普通 IO;代价是延迟、收发器资源和时钟/训练复杂度。
- 砍/缩观测面:trace 宽度、预留调试信号通常最先让步——改为窄 trace、只引关键组、或用片上 trace buffer 少占外部脚(trace 深度工程见后续 D3 篇;69 篇也建议片上 trace 优先)。
- 降接口规格:外设降代/降宽(PCIe x8→x1、Gen3→Gen1、显示降分辨率、并行总线降位宽),把省下的收发器/引脚让给割边;与软件/系统团队确认降规格不影响要验证的功能。
- 增加 FPGA 片数或换更大封装:当以上都不足,上板卡容量/IO 更富余的器件或加片——成本和机架空间上升,属于容量规划层面的决策(后续 F1 篇)。
- 冻结引脚基线:取舍完成后锁定一版引脚/约束基线并纳入 manifest(20 比特流烧录与四方版本一致 manifest/门禁),此后任何引脚变更都要评估对接口板/子卡/线缆的影响,禁止私自改脚。
七、引脚工程检查清单
分区/规划阶段:①三类信号(割边/对外/观测)和四种资源(IO/差分对/收发器/时钟脚)建账,余量 ≥10%~20%;②按电平标准分组到 bank,同组总线同/邻 bank;③差分对、SerDes+refclk、源同步时钟脚预分配;④割边数 vs 物理通道算出 TDM 比并评估频率;⑤连接器槽位差分对/收发器/时钟满足子卡要求。
约束/实现阶段:⑥XDC 的 PACKAGE_PIN/IOSTANDARD/端口时钟/延迟/CDC 约束齐全且与统一引脚表一致;⑦关键时钟/复位/JTAG/build_id 加锁定保护;⑧高速走线等长、阻抗、回流地针/过孔、AC 耦合核对;⑨关键信号留测试点。
上板阶段:⑩示波器/ILA 验证时钟、复位、训练握手与一组割边物理层;⑪反复上下电/复位看跨片链路训练稳定;⑫引脚基线、接口板版本、子卡版本随 build_id 锁定可追溯。
八、引脚表作为活文档:从统一数据源到自动生成
引脚规划失败的组织,几乎都败在"同一份信息抄了四遍、四遍不一致":原理图有一份、FPGA 约束 XDC 一份、接口板/子卡网表一份、软件团队的引脚说明又一份。分区每改一次,靠人手工同步,迟早漏掉一处,而漏掉的那一处通常要到上板示波器阶段才暴露。成熟做法是把引脚规划做成单一事实源 + 自动生成:
**统一引脚表(pin manifest)的字段建议。**每行至少包含:信号逻辑名(与网表端口一致)、所属功能组、源端 FPGA/端口方向、PACKAGE_PIN、IOSTANDARD/VCCIO、P/N 配对号、差分/单端、是否时钟 capable、所在 bank、连接器名+连接器管脚、对端板/子卡及管脚、电平转换/端接要求、是否锁定保护、备注(用途/变更原因)。这张表用 CSV/表格或结构化文件维护在版本库里。
生成物。从这张表用脚本生成:①各 FPGA 的 XDC 片段(PACKAGE_PIN/IOSTANDARD/差分对属性/时钟脚属性/DONT_TOUCH 锁定);②给硬件团队的接口板/线缆连线表;③给软件/调试团队的引脚速查(哪个连接器上有 UART/JTAG/状态灯);④与分区割边报告的对账结果(割边信号是否每个都有物理通道、方向是否正确)。脚本同时做规则检查:同 bank 混压、差分对没落在合法 P/N、时钟信号落在普通脚、一个管脚被两个信号占用、连接器管脚越界等,错误直接在 CI 里红灯。
**变更走评审而不是直接改表。**引脚基线一旦冻结(第六节),任何改动走小型评审:为什么改、影响哪些板/线缆/子卡、是否需要改板或跳线、软件侧是否要改配置。每次变更 bump 引脚表版本并与比特流 build_id 绑定——拿到一块板,能查出它该配哪版引脚表、哪版接口板、哪版子卡(与 20 比特流烧录与四方版本一致 manifest/门禁 完全同构)。
**早期不完美也值得做。**第一次做这套自动生成会觉得麻烦,但一个跨多 FPGA、多个接口板子卡、分区会反复调整十几轮的项目里,手工同步几乎必然出错。哪怕最初只是一个几十行的 CSV 转 XDC 脚本,也能消灭最致命的那类"网表端口和管脚对不上、上电才发现"的事故。引脚表和 58 篇的 info_table 思想一脉相承:用一张可追溯的映射表,把跨工具/跨团队的对应关系显式化、机器可检查化。
与系列及现有篇目的链接
- 跨片逻辑层:13 跨 FPGA 互联与 TDM SerDes/跨片同步/降频
- 分区算法:12 多 FPGA 分区算法 割集/容量/图划分、频率影响 19 原型频率与时序收敛 TDM 降频/关键路径
- 约束与插桩保护:18 原型约束体系 SDC/XDC/跨片时序/例外、14 可观测性插桩 dont_touch/probe/可见性预算
- 接口与子卡:31 速率适配器 Speed Adapter 弹性FIFO/两种范式、33 PCIe/SerDes 上原型 硬核/降速子卡/LTSSM、34 以太网/USB/MIPI 外设接入 子卡生态/等时实时性
- 调试/串行互联/SI:28 处理器 JTAG/调试口上原型 GDB/trace/失真、02 Aurora/JTAG 串行、39 FPGA SI/PI 板级、30 IO 规划
- 版本纪律:20 比特流烧录与四方版本一致 manifest/门禁
总结
一句话总结:引脚规划是把逻辑割边、对外接口和观测时钟三类信号,塞进用户 IO/差分对/SerDes/时钟 capable 脚四种有限物理资源的一级设计变量,它反向约束分区和 TDM,而不是实现末期填 XDC;做法上先按电平标准把信号分组到统一 VCCIO 的 bank(同组总线同/邻 bank、差分对必须落器件 P/N 对、源同步时钟必须进时钟 capable 脚、留 10%~20% 余量),跨片在宽并行 LVDS(吃脚多、延迟低)与 SerDes/Aurora(几对收发器换大批 IO、有编解码延迟)之间按"割边数/物理通道≈TDM 比,TDM 比越高频率越低"的关系权衡,并让商用 Compiler 把板级互联拓扑当分区约束;信号经高密度阵列/标准 FMC/HMC/高速差分连接器成组成区映射,保证差分成对邻地、SerDes 与 refclk 就近、信号名在网表/XDC/接口板/子卡四处由统一引脚表自动生成,高速脚在规划阶段就落实回流地、等长受控阻抗、源同步延迟校准、CDC 约束和测试点,时钟/复位/JTAG/build_id 加 dont-touch 锁定防止重综合后悄悄换脚;当物理脚不够时,严格按"重分区减割边(最划算)→提高 TDM 比→并行改串行→先砍 trace/观测宽度→接口降代降宽→加片或换大封装"的顺序取舍并记录代价,最后冻结引脚基线随 build_id 锁定——把"分区—引脚—板级"做成协同迭代而非串行交接,才能避免项目末期栽在"割边超过差分对、最后两周还在改板重分区"这种本可预防的事故上。