FPGA 专家 40:多板 FPGA 系统——难点从 RTL 搬到系统互联
本文是
fpga/专家层第 43 篇。单系统内多 FPGA 分区见 02 多 FPGA 原型系统 ASIC 分区/TDM,链路物理裕量见 专家 26,时间同步协议见 专家 36。
一、介质与拓扑

| 介质 | 距离 | 延迟 | 适用 |
|---|---|---|---|
| 板对板/背板 | 机柜内 | 最低 | 原型、模块化,连接器针数受限 |
| 铜缆 DAC/双轴 | 米级 | 低 | 机箱间灵活连接 |
| 光 SFP/QSFP | 远 | 略高、异步 | 远距/强干扰/高密度 |
拓扑选择与逻辑分区联动:全互联(小)→ mesh/torus(大多跳)→ 交换星型/层次化;ASIC 原型优先最小化跨片 cut 信号。
二、时钟分发两种哲学

硬同步:主钟 → 扇出芯片 → 等长差分 → 各板 PLL(锁相整形) → 同源同相
松耦合:各板独立钟 → CDR + 弹性 FIFO 吸收频率差 → SyncE/PTP/WR 对齐时间三、系统 bring-up 阶梯

- 电源/时钟(PLL lock)
- 主先配、从后配,状态回采
- PRBS 逐段环回(近端→板内→跨板),全 lane 误码验收
- 全链路 link-up 后释放全局业务复位
- 心跳+自动发现(EEPROM ID)→ 业务流量
- 在位/热插拔、跨板 JTAG 链、远程上下电与重配
四、协议与系统级坑
- 端到端反压(每段都有反压不等于端到端不丢)、防环路缓冲死锁;
- 协议按场景:Aurora 轻量原型、以太网可路由、PCIe Switch 主机中心化;
- 运维:板址发现、线缆长度/极性预算、连接器寿命、机箱散热与背板供电裕量。
五、联合调试
同源时钟时间戳 + 系统触发总线广播停采 + 各板本地缓存回传合并;持续监测 BER、温度、水位。
六、互联协议设计:流控、保序与链路健康管理

多板系统真正的复杂度不在“把信号送出去”,而在让多块异步、独立复位、可能热插拔的板卡在长期运行中可靠地交换带语义的数据。任何一条板间链路都要回答四件事:数据怎么成帧、接收方跟不上怎么办、消息顺序与重复如何处理、链路坏了系统怎么感知和恢复。
成帧与编码:板间常用 SerDes 承载自定义轻量协议或 Aurora/Interlaken/JESD/以太网等。自定义协议至少要有:对齐字符/块标识(如 K 字符、固定同步头)、帧长与序号、CRC/校验、空闲字符(维持 CDR)。要明确字节通道绑定(多 lane 时 lane deskew)、极性/通道交换的支持策略;8b/10b、64b/66b 等编码方式的选择影响 DC 平衡、开销和延迟。控制面与数据面分离:低速管理(配置、状态、热插拔)走 I2C/带外管理通道,高速用户数据走 SerDes,二者不要混在一个状态机里,否则链路挂死时连管理命令都进不去。
**流控(credit/反压)**必须端到端且有界。逐跳的 ready/valid 反压在板内可行,但跨板往返延迟长、缓存有限,纯反压容易把对端 FIFO 灌满;信用机制(接收方定期/初始化时通告可用缓冲 credit,发送方按 credit 发送)是更稳的选择,credit 本身要能周期性重同步(防止丢一个 credit 导致死锁)。设计时要给出每段缓冲深度的推导:链路速率差、最大突发、credit 往返延迟三者决定 FIFO 下界,溢出必须是“有计数、可复位、绝不静默”的事件。链路两侧时钟异步,全部跨域走异步 FIFO 并通过 CDC 评审(见 专家 38)。
保序、重复与超时:给出明确语义——同一条虚电路内保序(实现上序列号 + 不绕过队头,或带序号重排缓冲),不同流之间允许并行;发送要有超时重传或至少“请求—应答”事务层,绝不无限等待;重复帧由序号去重;链路复位期间在途数据有定义(丢弃并通知上层,或在设计可证明时回放)。在不可靠物理介质(背板连接器、长铜缆、光模块)上,轻量重传/前向纠错应作为协议的一部分设计,而不是靠应用层“重试一下”。
链路健康管理包括:物理层(PLL lock、信号检测、CDR)、协议层(对齐状态、CRC 错误计数、非法字符、credit 错误)、性能层(延迟、队列水位、利用率)三层遥测;心跳/保活帧用于无流量时监测;错误率超过阈值触发降速、重训练或倒换冗余链路(与 FRER/保护倒换思想类似)。所有健康事件要有计数器可读、有中断可报、有 BIST/环回可诊断(见 专家 39):近端 PMA 环回测芯片收发器,远端 PCS 环回测整条板上通道,板间互发测对端,层次分明。协议设计文档里应写清链路状态机(DOWN→TRAIN→UP→降级/恢复的完整迁移和每个状态的超时与重试次数),这是多板系统 bring-up 和现场维护的核心抓手。
七、时钟分发与时间同步的系统级实现
多板系统里“每块板自己用自己的晶振”只能在纯异步消息模型下工作;一旦涉及同步采样、相参处理、确定性调度或跨板时间戳,就必须有系统级时钟/时间方案。两条哲学(分发时钟与分发时间)在正文中已对照,这里展开工程实现。
直接时钟分发:一个主时钟模块(恒温晶振/铷钟/GPS 驯服时钟)经时钟缓冲器、等长背板走线送到各板。工程难点是扇出与完整性:多点负载使阻抗不连续,常用点到点 + 板载缓冲器的树型/星型结构而非一条总线挂多个接收器;时钟走内层带状线或严格阻抗控制的差分对,远离噪声源和开关电源;接收端用带内部端接的专用时钟缓冲/收发器参考时钟脚。还要给出频率漂移预算:缓冲器附加抖动、连接器插损、板间偏斜逐级累加,末端相位噪声必须满足最严协议(常是高速收发器和 ADC 的 JESD204)。时钟主设备要有冗余与自动倒换,倒换时的相位不连续要能被下游重新训练吸收,或采用 hitless-switch 的保持模式。
时间同步(PTP/1588/gPTP/SyncE):网络各板用普通晶振,靠协议对齐时间。FPGA 侧的关键模块是:硬件时间戳单元(在 MAC/PHY 边界打时间戳,见 专家 36)、可调频率的本地时钟计数器(DDS 式调谐字实现连续驯服,避免跳时)、伺服环(PI 控制器,可放软核)、透明时钟需要的驻留时间插入逻辑。多板系统常见混合方案:物理上分发一个高稳定 10MHz/频率基准(甚至 PPS)作为各板振荡器的驯服参考,逻辑上仍各自维护时间计数器并可在需要时做一次相位对齐——这样既有低漂移又不必分发高速时钟。JESD204 子类 1 的 SYSREF 分发则是“确定性延迟对齐”的专用方案:SYSREF 必须在满足建立/保持的相位上被所有器件捕获,通常用一次性的周期脉冲 + 各器件延迟调整(LMFC 对齐)。
系统级时序规划应输出一张总图:主时钟源、缓冲/冗余树、各板 PLL 及生成频率、需要相位关系的接口(哪些必须同源、哪些用异步 FIFO 隔离)、时间戳时基和 PTP 拓扑、复位释放与时钟就绪(DONE/PLL_LOCK)的汇合逻辑。典型坑:多板各自复位导致链路在时钟未稳时训练(应在所有 PLL lock 后统一进入训练);热插入板的时钟缓冲在背板上造成反射(热插拔要用可禁用的时钟缓冲器);不同批次晶振频率差导致长周期 FIFO 慢慢灌满(弹性缓冲要有监控和主动丢弃/插补策略)。把“频率同源到什么程度、时间对齐到什么精度、失效后如何保持”作为系统需求定量写清,是时钟方案评审的核心。
八、系统级故障模式、冗余与可维护性
单板产品失效的影响有限,多板系统的典型灾难是级联与不可诊断:一块板的电源故障拖垮背板、一条链路挂死让控制机永远等待、故障板无法从系统中隔离。系统设计阶段必须显式枚举故障模式并设计隔离、降级和恢复机制。
故障模式枚举(FMEA 思路):板卡级(不供电、配置失败、FPGA 挂死、过热)、链路级(误码率升高、训练失败、单方向通、连接器接触不良)、时钟/电源级(主时钟丢失、电源轨跌落、背板供电过流)、软件/配置级(错误比特流、版本不匹配、描述符死锁)。对每一类给出:检测手段(BIST、心跳、监控、看门狗)、系统行为(隔离/复位/倒换/安全态)、恢复路径(自动重试次数、硬下电、人工介入)、现场可见性(告警码、日志、LED)。
隔离与冗余:电源上每板独立热插拔/电子保险丝,单板过流不拉垮背板;时钟主备冗余、关键数据链路冗余(双平面/双交换板,发送双份在接收消除,或快速保护倒换);控制通道与数据通道物理分离,保证数据面故障时带外管理仍可达。看门狗分层:FPGA 内逻辑看门狗(状态机喂狗)、板级 MCU/BMC 看门狗(可硬复位 FPGA 和电源)、系统主控看门狗(可对整板下电重启);每层都有独立时钟,避免“被看的狗拿着钥匙”。复位策略要有分级:软复位(逻辑重启,链路保持)、核复位(重配 FPGA)、电源循环(最后手段),复位范围和在途数据处理逐一定义。
热插拔与在线维护:带电插拔要求连接器引脚按长度分级(先地、后电源、最后信号,或用热插拔控制器控制电源斜坡)、FPGA 配置好之前 IO 处于高阻(避免驱动背板)、插入后有枚举和配置下发流程、拔出有优雅退出(停发、释放 credit、通知邻居更新路由)。背板设计要保证一块板的悬空总线不会影响其他板(点到点链路天然优于共享总线,这也是高速系统几乎全部转向串行点到点的原因)。
可维护性与现场诊断:每块板有电子身份(EEPROM/电子标签:型号、序列号、版本、出厂校准数据),上电即可被主控读取;统一的遥测模型(温度、电压、电流、误码、利用率、BIST 结果)汇聚到系统管理器;错误日志环形缓冲在板上非易失存储,崩溃后可取出(与 专家 45 的 trace 体系一致);维护操作(重配、复位、倒换、强制环回)经带外管理通道可远程执行。版本矩阵(背板类型、各板硬件版本、比特流、软件)要在启动时互相校验,不兼容组合拒绝启动并明确告警——多板系统里“三块板各自都是好的、组合起来不工作”绝大多数是版本/配置错配。
最终,系统级设计的成熟度可以用一个问题检验:任何一块板、任何一条链路、任何一个电源/时钟在任意时刻失效,系统是否都能检测、告警、并进入定义好的降级或安全状态,而不是无声地输出错误结果或整体锁死? 这个问题的答案,比任何单板性能指标都更决定多板产品能不能交付。
九、联合 bring-up 与联合调试的组织
多板系统 bring-up 失败,一半是技术,一半是组织:板子来自不同小组、固件/软件/逻辑多头并行,没有统一阶梯和共同的“事实来源”,回板后极易陷入跨团队扯皮。可复用的方法是定义统一的系统 bring-up 阶梯、每层有明确判据和负责人、全程用同一套遥测语言沟通。
阶梯设计(在单板 bring-up 基础上扩展):①电源与时钟(每板电源时序、PG、时钟质量独立验证);②单板配置与 BIST(每板能自证健康,见 专家 39);③管理通道(带外 I2C/以太网能枚举所有板、读到电子身份和版本);④单链路物理层(一对板近端环回 → 远端环回 → 板间互发 PRBS,逐链路标眼图/误码);⑤单链路协议层(帧对齐、credit、保序、错误注入测试);⑥全拓扑(按最终连接矩阵逐链路点亮,记录拓扑发现结果);⑦业务流(先固定测试图案端到端比对,再上真实负载和性能压力);⑧故障演练(拔板、断纤、杀主控、拉电、时钟倒换,验证隔离与恢复)。禁止跳级联调——在物理层没验完的链路上调业务协议,问题无法归因。
共同的事实来源包括:统一的时间/事件序号(跨板日志可按 PTP 或逻辑序号对齐,见 专家 37 的多引擎调试思想)、统一命名的遥测寄存器(每块板同样位置放链路状态/误码/水位/版本)、统一的日志格式与采集工具(主控一键收集全系统快照:各板版本、温度、链路状态、计数器、最近事件)。故障演练要制度化:投产前每个故障模式(第八节枚举的 FMEA 表)至少真实注入一次,验证检测、告警、恢复全过程,而不是停留在设计文档里。
版本与配置的系统级治理:系统启动时主控校验所有板的硬件版本/比特流/软件版本兼容矩阵,不兼容拒绝进入业务态;升级支持整机批量升级、分阶段(先备用平面后活动平面)、失败自动回滚;每块板的版本与序列号在系统日志里随每次故障快照保存。这套机制与 20 比特流烧录与四方版本一致 manifest/门禁 的版本治理一脉相承,但在多板系统里是“任何一次现场问题都能还原当时全系统版本组合”的前提。
十、典型坑与多板系统验收清单
汇总多板系统的高频失败模式和系统级验收点。
共享总线拖垮整槽:背板用多点总线,单板故障拉低全链路。正解:点到点串行 + 独立缓冲/热插拔控制,单板可电气隔离。
无流控或流控不可恢复:突发时静默丢帧、丢一个 credit 永久死锁。正解:credit 端到端 + 周期重同步 + FIFO 溢出计数与复位,协议层注入测试。
时钟方案两头不靠:分发了高速时钟却没做冗余和等长,或用异步晶振却假设相位关系。正解:系统时序总图明确同源边界,弹性缓冲监控频差,关键时钟主备倒换验证。
各板复位各自为政:链路一端已发数据另一端还在配置。正解:全系统 ready 汇合状态机,PLL lock 后统一训练,热插入有枚举重训流程。
版本组合失控:单板都“是最新的”,但协议/寄存器版本不匹配。正解:启动兼容矩阵校验、统一升级回滚、快照含全系统版本。
故障只设计了正常路径:断纤、单板过流、主控重启、时钟倒换未演练。正解:FMEA 表逐项真实注入,验证检测—隔离—降级—恢复全链。
跨板日志无法对齐:各板各用本地时钟,出问题无法排序事件。正解:PTP/逻辑序号统一时基,一键全系统诊断快照。
多板系统验收清单:①每板电源时序、PG、时钟质量、BIST 独立通过;②带外管理可枚举全系统、读身份/版本/遥测;③每条物理链路在最坏温压下误码率达标(环回 + 板间);④协议层对齐/credit/保序/重传经错误注入验证;⑤全拓扑发现与实际一致,拓扑变更可处理;⑥业务端到端固定图案比对 + 真实负载性能达标;⑦FMEA 每类故障真实注入演练通过(隔离、降级、告警、恢复);⑧热插拔全程不影响其余板;⑨时钟主备倒换、弹性缓冲频差长时间(24h+)稳定;⑩版本兼容矩阵、整机升级与回滚、全系统诊断快照可用。十项过线,多板系统才算作为“一个系统”而不是“一堆好板卡”验收通过。
十一、背板与机械:物理结构如何决定互联上限

多板系统的互联能力在画框图时容易被抽象成“板间一条高速链路”,但真正决定可实现速率和可靠性的,是背板/互联介质、连接器和机械结构——这些一旦在机箱设计中定型,后期几乎无法靠 FPGA 逻辑补救,必须在系统架构早期联合机械、硬件、逻辑三方定义。
介质选型与带宽预算:板间可选背板走线(短距、成本低,但受插损和连接器限制)、无源铜缆(中距,灵活)、ACC/AEC 有源电缆(中长距,带均衡和重定时,成本和功耗上升)、光纤(最长距、抗干扰,但要光模块和更高功耗)。每条链路要做完整通道预算:芯片封装、过孔、走线、连接器、对侧板路、介质的插损总和对照收发器在目标线率下的能力(含 FEC 开销),并留温度和批次裕量。把 SerDes 手册的“最大线率”当成系统可达速率,是最常见的预算错误。
连接器是机械与电气的交界:高速差分对要选经过通道验证的连接器,关注其差分阻抗、串扰、针脚分配(地针密度);连接器的插入损耗和串扰往往占通道预算大头。针脚映射要让差分对成组、同组相邻地针,并与 FPGA 收发器 bank 位置对应,减少板内绕线。机械寿命(插拔次数)、对位公差、背板厚度、键槽防呆、热插拔时引脚长短分级(先地后电源最后信号)都要在同一设计里同时满足。连接器一旦选定,背板层叠、板卡尺寸、槽位间距就被锁死。
拓扑与可扩展性:全网状在板数增长时链路数爆炸,实际系统常用星型(经交换板)、双平面冗余、环网或混合拓扑;拓扑决定 FPGA 收发器数量需求和槽位扩展方式。要预留:交换板槽位、级联口、时钟分发走线(见时钟一节)、管理总线(I2C/以太网带外通道独立于数据面)。机械上保证槽位键控防止误插错类型板卡,气流方向一致(避免某板是热瓶颈),前面板指示与维护口可达。把“未来加一种板卡”需要的电气和机械前提在第一代机箱就留好(空余收发器、地址空间、背板针脚),是系统可演进性的关键。
十二、系统功耗、散热与供电架构
板子数量一多,系统级功耗与供电从单板问题变成架构问题:十几到几十块 FPGA 板的总功耗可能达到千瓦级,背板供电的压降、功耗分配、散热和上电顺序决定机箱规格,也反过来限制单板密度。
功耗预算要自上而下分解:机箱总功耗预算(电源模块容量、机柜供电、散热能力)→ 每槽位配额 → 单板各电源轨(见 专家 41)。每板必须能被系统按配额约束(读板上功耗遥测、必要时限频),不能假设槽位无限供电。背板供电压降要按最差路径计算,常见折中是提高背板配电电压(如 12V/48V)在板上 DC-DC 降压,以降低大电流下的线缆和连接器损耗;48V 架构还带来更严格的热插拔和保护要求。每板独立电子保险丝/热插拔控制,单板短路不拉垮整机(见故障隔离一节)。
散热是系统级协同:机箱风道为串联还是并联(串联时前板加热后板,板卡热设计不能各算各的,要按“最差槽位的进风温度”定结温预算);高功耗 FPGA 板的散热器高度、器件布局要服从统一风道;风扇冗余和失效工况下的降额策略要在系统控制器里定义(风扇故障→告警→按槽位降频→有序关断)。温度遥测从每板汇聚到系统管理器,热点位置与流量调度甚至可以联动(把重负载调度到温度低的板)。FPGA 侧的配合是提供温度/功耗读数、可控频率档位和紧急关断输入。
上电顺序与电源稳定性:机箱级上电不能所有板同时大电流启动(浪涌叠加触发电源保护),要由系统控制器按槽位顺序或 staggered 延时上电,结合每板自身的时序控制器;背板电压稳定后再释放板卡配置。运行中某板热插入时的电流冲击要被热插拔控制器限制,不引起背板电压凹陷影响邻居。电源冗余(双电源模块)、风扇冗余与数据链路冗余、时钟冗余一起,构成系统可用性预算:每一类单点失效都要能指出检测和恢复路径。把功耗、散热、供电写进和逻辑功能同等重要的系统需求矩阵,是多板 FPGA 平台从“实验室机架”走向“可上架产品”的必经一步。
十三、多板系统的测试金字塔。多板平台的验证同样遵循“能在低层证伪就不要拖到系统级”的原则,但要为每一层准备相应的测试替身:模块级用仿真覆盖 FIFO、CDC、协议状态机(见 专家 38、专家 39);单板级用 BIST 和环回,对端板用 FPGA 仿真模型(BFM)替代,使单板调试不必等齐所有板型;双板级验证链路物理层和协议层,对端可以是另一块真板或协议分析仪;系统级才上真实拓扑、真实软件和长稳。每往上一层,问题定位成本大约上升一个数量级,因此低层测试的投资回报最高。系统级还应建设“流量与故障注入中心”:一个能向所有板卡注入同步流量、统一触发 trace、集中收集日志的设施(可由一块专用控制板或软件服务承担),让跨板时序问题可复现——否则多板系统最难的竞态问题只能靠运气撞。自动化程度也分层:低层全量进 CI,系统级按夜间/发布前节奏跑拓扑与故障矩阵。把测试金字塔和 专家 46 的硬件 CI 接起来,多板平台就能像软件系统一样被持续验证,而不是每次集成都是一次豪赌。
补充:系统配置与地址规划。多板系统要在第一版就定好统一的编址和配置模型:每块板的槽位地址(硬件 strapping 或 EEPROM)、管理总线地址空间、版本与能力寄存器布局全部集中规划,避免各小组自定义导致枚举混乱;管理协议要支持“枚举—识别能力—下发配置—进入业务”的标准状态机,并为未来板型预留能力位图。新板型插入旧机箱时,按能力集协商而非按板号硬编码,是多代系统兼容的关键,也让软件不必为每种板卡单独维护分支。
总结
多板系统的设计轴是介质(电背板保延迟、光纤保距离)、拓扑(按跨片信号与规模选)、时钟(硬分发或异步+PTP)和启动/调试秩序(逐段环回、统一触发);系统级同步、端到端反压和联合可观测性比单芯片 RTL 更决定成败。