FPGA 原型验证专题 34:Ethernet/USB/MIPI 等外设接口的原型接入——子卡生态、交换网络板与等时实时性
更新时间:2026-09-13。本文是原型外围姊妹系列第九篇、模块 C 第四篇。专家层 06 以太网 MAC/网络设计讲的是 MAC 与网络数据通路怎么设计;本篇讲怎么把这些外设从多 FPGA 原型物理地引出来、接到真实摄像头/屏/U盘/网络对端。它是 31 速率适配器 Speed Adapter 弹性FIFO/两种范式、33 PCIe/SerDes 上原型 硬核/降速子卡/LTSSM 在"非存储/非 PCIe 的那一面外设墙"上的应用。
这一篇在体系里的位置
一颗应用处理器/SoC 原型,除了 DDR 和 PCIe,通常还要让人"看得见摸得着":摄像头进图像、屏幕出画面、U 盘和键盘能枚举、网线能 ping 通、音频能录能放。软件/固件团队做 bring-up 和演示,依赖的正是这些外设一个个变真。与 PCIe 不同,这批接口速率跨度极大(I2C 的几百 kHz 到 MIPI/HDMI 的数 Gbps)、数量多、物理形态杂,因此业界发展出一套接口板 + 子卡 + 交换网络的模块化生态来管理它们,而不是每种接口都在主板上做死。
本文要回答的问题
- 商用原型的 daughter card(子卡)、interchange/interface board(接口板)、switch/interconnect network(交换网络板)各自是什么、怎么配合把多 FPGA 的 IO 引到标准连接器?
- 以太网、USB、MIPI CSI/DSI、HDMI/显示、SDIO、音频这几类接口上原型的典型做法与专用桥接/降速子卡?
- 等时(isochronous)接口——视频扫描、音频采样、摄像头——与非等时接口在速率适配上的本质差别是什么?为什么缓冲救不了等时流?
- FPGA 直引 MIPI/高速差分显示有什么限制,何时必须上桥接芯片?
- 大量外设争抢 FPGA IO 和高速收发器时,按什么顺序规划、取舍?
一、子卡生态:接口板、子卡与交换网络
多 FPGA 原型主板上,FPGA 引脚通常先汇到若干高密度阵列连接器(HSMC/FMC/VHDCI/厂商专用),并不直接是标准外设口。三层板卡在中间做组织:

- 接口板(interchange/interface board):插在主板高密度连接器上,把 FPGA 引脚扇出、做电平转换、提供供电,并定义信号到各个子卡槽位的映射。
- 交换网络板(switch/interconnect network):当外设信号来自不同 FPGA、或需要灵活改变"哪片 FPGA 的哪个控制器接哪个口"时,用一块可编程/可配置的交叉网络板把信号路由到对应子卡,避免重新综合或飞线。分区变化导致某控制器从 FPGA0 挪到 FPGA2 时,靠交换网络重新映射物理出口。
- 速率适配子卡(daughter card):每类接口一块,集成协议感知桥/PHY/标准连接器(RJ45+PHY、USB Type-A/Type-C、MIPI/HDMI 收发芯片等),靠原型侧是可承受慢速时序的接口,靠外设侧是全速率真实口。这正是 31 速率适配器 Speed Adapter 弹性FIFO/两种范式的产品化形态。
模块化的好处:主板和综合结果相对稳定,换外设只换子卡;分区变化用交换网络吸收;引脚规划(76 篇)只需对到高密度连接器和槽位,不必对到每个具体器件。
二、典型外设接口的接入方式
**以太网。**控制器 MAC 在 DUT,物理层有两种做法:①用 FPGA 内/板载以太网 PHY 或 SFP/高速收发器,经速率适配子卡接 RJ45/光口,MAC↔PHY 的 RGMII/SGMII 等在适配侧处理速率差;②用协议感知网络子卡(带网络处理器/端口旁路),在慢原型与线速网络之间缓冲帧、可做降速/端口仿真。软件 bring-up 常用②连真实交换机做 ping/TFTP/NFS(71 篇的网络 rootfs 依赖它)。注意 RGMII 有随路时钟和延时(RX/TX clock delay)要求,降频后要在适配侧重定时,不能直连真 PHY;更详细的物理/时序背景见 06 以太网、intermediate/14 RGMII。
**USB。**USB 是半双工主从、严格时序和枚举的串行总线,主机/设备控制器在 DUT,PHY(ULPI/UTMI/PIPE 或片内 USB 收发器)经 USB 子卡接真实口。常用 USB 速率适配/协议子卡,由卡承担真实 USB 时序、SOF、枚举应答,对 DUT 呈现放慢但协议正确的接口。USB 对复位/挂起/恢复时序敏感,bring-up 先降代(USB3 先按 USB2/1.1 行为跑通)再提。设备模式接 U 盘/键鼠、主机模式被主机枚举是两个方向,类似 PCIe 要先定角色。
**MIPI CSI/DSI 与显示。**这是等时+高速差分的难点(第三节展开):摄像头 CSI-2、面板 DSI、以及 HDMI/MIPI D-PHY/C-PHY 速率高、PHY 特殊。FPGA 普通 IO 往往不能直接产生/接收 D-PHY 电平,需专用 MIPI 桥片子卡(CSI 桥、DSI 桥、HDMI-MIPI 转换),或在 FPGA 支持的低压差分/收发器上做受限速率的替代。显示输出也常用"帧写入板载内存→由独立满速显示控制器读出"的方案彻底解耦(见等时部分)。
**SDIO/eMMC/SD 卡。**存储类外设可用真实 SD 卡槽经适配子卡,或用事务/文件后端模拟;启动加载场景(U-Boot 从卡读内核)需要真实卡行为时上真卡,注意 SD 3.0+ UHS 模式的电压切换和调谐时序在慢速原型上通常先用低速/默认模式跑通。
**低速总线(UART/SPI/I2C/CAN/I2S/GPIO)。**多数不锁高速率、对端(传感器、codec)能接受宽范围时钟,通常不需要重型协议桥:经电平转换直接引出即可(76 篇物理层),软件模型或真实小外设都能接。I2S/音频虽是低速但属等时,见下。
三、等时接口:缓冲救不了平均吞吐
理解外设接入,最重要的一个区分是非等时(异步/可重传) vs 等时(isochronous/实时连续)。31 速率适配器 Speed Adapter 弹性FIFO/两种范式讲过弹性 FIFO 的局限,这里从外设角度具体展开。
非等时接口(以太网帧、USB bulk/control、SDIO 块传输、UART/SPI 事务):数据以离散事务/帧到来,晚一点没关系,可缓冲、可反压、可重传。慢原型的处理方式是"攒一批、全速发一批",缓冲吸收速率差,功能完全正确,只是延迟变大。软件 ping 的 RTT 变大、文件传得慢,但不会错。
等时接口(显示 DSI/HDMI 扫描、摄像头 CSI 采集、音频 I2S、USB isochronous 传输):有一个实时消费者/生产者按固定节拍连续收发,没有重传概念:
- 显示面板每个消隐/有效行必须按时拿到像素,供给跟不上 → underrun → 花屏、撕裂、显示器重新同步;
- 摄像头按传感器像素时钟连续吐数据,接收跟不上 → 丢行丢帧、FIFO 溢出;
- 音频 codec 按 BCLK/LRCK 连续采样,断流 → 爆音/欠载。
对这类接口,缓冲只改变延迟、不改变平均速率匹配关系。因此等时外设能不能上原型,第一道判断不是"FIFO 做多深",而是:降频后的 DUT 平均产生/消费数据率,是否仍 ≥ 该接口在选定分辨率/帧率/采样率下的平均需求?
- 若够(例如原型虽慢但只驱动 720p30 而非 4K60),可以用一块帧缓冲/FIFO 解耦:DUT 慢节奏把整帧写进板载内存,子卡上一个独立、满速运行的显示/采集控制器按真实像素节拍读出/送入——DUT 和真实时序彻底解耦,这是视频类最常用的可靠方案。
- 若不够,唯一办法是降低负载(分辨率、帧率、色深、像素时钟、音频采样率、用低代 MIPI 速率),或提高该数据通路的原型频率/把它放同片减少跨片停顿。再深的 FIFO 也只能多撑若干帧,长跑必然 underrun。
- 等时接口的保真度边界要写明:验证的是帧内容正确性、配置序列、DMA、驱动;真实像素时钟、实时丢帧行为、端到端视频延迟不代表芯片(那里没有帧缓冲控制器这一额外环节)。
USB 的 isochronous 传输(摄像头/音频 USB 类设备)同时占"USB 时序严"和"等时"两条,是最容易在慢原型上掉设备/掉包的,通常要协议子卡+降带宽双管齐下。
四、MIPI/高速差分显示的直引限制
CSI-2/DSI 常用 D-PHY(源同步、低摆幅差分,有 LP 低速单端模式和 HS 高速差分模式,速率档位常见 1.5/2.5 Gbps/lane 及更高),C-PHY 则是三相编码。直接在通用 FPGA IO 上复现 D-PHY 有几个硬限制:
- 电平与共模不兼容普通 LVDS/CMOS,HS 摆幅约 200mV、LP 是 1.2V 单端,需要专门 PHY 或外部 D-PHY 桥芯片;
- LP/HS 模式切换、总线翻转(BTA)有精确时序,降频 DUT 无法直接满足;
- lane 偏斜、去偏移、ECC/CRC、打包(packet)需要完整接收/发送逻辑。
因此典型方案是MIPI 速率适配/桥接子卡:卡上有真正的 MIPI D-PHY 和协议桥,对真实摄像头/面板跑满 MIPI,对原型侧用放慢的并行/串行接口(或经板载帧存)。很多原型团队干脆把"摄像头输入"做成"文件/帧发生器注入板载帧存"、把"显示输出"做成"帧写到采集卡/内存由主机查看",在没有真实面板时先验证图像处理流水线,等后期再接真屏/真 Sensor。HDMI/DisplayPort 类同理,用收发器硬核或编码桥片子卡,慢 DUT 经帧缓冲喂数据。
这类选择的通用心法:等时高速媒体链路,优先"帧/样本级解耦 + 独立满速小控制器",而不是试图让慢 DUT 直接踩真实像素时钟。
五、自定义高速 IO 与外设接入规划
不是所有接口都有商用子卡。自研/专有高速 IO 的引出原则:
- 先用 76 篇的方法把信号落到差分对/收发器、过电平转换到标准连接器;
- 对端若是自家另一颗芯片/板,可双方约定一个"原型友好速率"(都降速、都放宽时序),这是少数"两端可以商量速率"的情形,此时可做无重型协议桥的直连;
- 必须连第三方全速率设备时,才做专用协议感知桥(复用 31 速率适配器 Speed Adapter 弹性FIFO/两种范式)。
整体规划顺序(受 FPGA IO/收发器资源约束):
- 列全外设清单,按 ①是否软件 bring-up/OS 必需(UART、存储、网络优先)②是否等时 ③速率/收发器需求 ④有无现成子卡 打分;
- 必需且有子卡的先上(UART、以太网、USB、存储);
- 高速/等时媒体(MIPI/HDMI)评估 DUT 降频后平均吞吐,决定降规格还是帧存解耦;
- 用交换网络板给"分区可能移动"的控制器留可重路由出口,避免分区一变就飞线;
- 高速收发器(SerDes)资源稀缺,PCIe、网络、MIPI 桥可能抢同一批 GTH/GTY,要在分区前统一预算(和 74 篇、76 篇联动);
- 每条外设链记录保真度边界(功能可验/实时性能不可验),子卡与桥固件版本进 manifest。
六、常见坑速查
- 把等时当非等时,靠加 FIFO 解决花屏 → 先查平均吞吐,再谈缓冲;
- RGMII/SGMII 时钟延时没在适配侧处理 → 网络偶发不通/高错包;
- MIPI 想用普通 IO 直连面板 → 电平/模式切换根本不成立,上桥片子卡;
- USB/PCIe 角色(host/device)和复位时序没定清 → 枚举方向全错;
- 摄像头/显示满规格硬上 → underrun,应降分辨率/帧率或帧存解耦;
- 外设控制器跨片后实时流被 TDM 停顿打洞 → 分区时把媒体数据通路放同片;
- 子卡固件/桥配置与比特流版本错配 → 偶发链路怪相,纳入版本管理。
七、外设接入的能力矩阵与"演示链"规划
外设数量多、完成度参差,必须像 70 篇管理软件能力那样,维护一张外设能力矩阵并随每个 build 更新,让软件、验证、市场演示三类用户各自知道"现在什么能用、用到什么程度":
| 接口 | 接入方式 | 当前状态 | 功能可验范围 | 明确不代表 |
|---|---|---|---|---|
| UART | 电平转换直引 | 绿 | 全双工、中断 | 高波特率电气余量 |
| 以太网 | 协议感知子卡 | 黄 | link/ping/TCP 功能 | 线速吞吐/真实 RTT |
| USB2 host | USB 子卡 | 黄 | 枚举/大容量存储/HID | 高带宽 isoc |
| MIPI CSI | 桥片子卡+帧注入 | 黄 | 帧内容/ISP 流水线/DMA | 真实 sensor 时序 |
| DSI/面板 | 帧存+独立显示控制器 | 绿 | 帧内容/配置/合成 | 实时撕裂/像素时钟 |
| 音频 I2S | codec 子卡降采样 | 红/未接 | — | — |
状态定义要统一(绿=日常冒烟稳定;黄=功能通但有限制/偶发;红=未通或不可用),限制项具体到参数("只到 720p30""USB isoc 不支持"),而不是一句模糊的"基本可用"。
**围绕"演示链"反推优先级。**项目中后期常需要对管理层/客户做真实演示(开机、出图、录一段像、联网)。演示是端到端的,任一外设是红的整条链就断。因此别等所有外设都绿,而应尽早选一条最短演示链(例如:UART 控制台→存储启动→一帧画面输出),把这条链上的每一环优先推到绿并做长期老化;演示链跑顺后再扩第二条(加网络、加摄像头录制)。这同时也是最好的系统级冒烟——它每天替你验证"软硬件协同和真实接口这一整面墙没有整体退化"。
**等时外设的老化测试特别重要。**功能上"出过一帧正确画面"不代表媒体链可靠。显示/摄像头/音频要做小时级连续运行并统计 underrun/丢帧/爆音次数,因为这些故障是概率性、与缓冲水位和调度抖动相关的(71 篇系统抖动、19 原型频率与时序收敛 TDM 降频/关键路径都会影响)。老化时要覆盖最坏情形:最高目标分辨率+最冷/最热板温+后台最重负载同时出现。
**子卡物料与复用的工程管理。**商用子卡通常是项目里数量少、交期长、易损坏的物料:①关键子卡备 1~2 块备件,坏一块不至于停掉整个软件团队;②子卡、线缆、接口板贴资产号并在 manifest 记录(配合 20 比特流烧录与四方版本一致 manifest/门禁);③多项目共享子卡时建立借用登记,防止"演示前一天发现卡被别的项目借走";④自研桥片子卡的固件要纳入版本库并能现场回退到上一版已知良好固件。
与系列及现有篇目的链接
- 速率适配母版:31 速率适配器 Speed Adapter 弹性FIFO/两种范式
- PCIe/SerDes(同抢收发器资源):33 PCIe/SerDes 上原型 硬核/降速子卡/LTSSM
- 物理引脚/连接器规划:76 多 FPGA IO 引出与引脚规划
- 网络/接口设计本身:06 以太网网络深水区、intermediate/14 RGMII 以太网、intermediate/09 UART/SPI/I2C
- 平台与 bring-up 背景:02 多 FPGA 原型系统 ASIC 分区/TDM、03 原型平台 bring-up 多片点亮/trace、40 多板系统
总结
一句话总结:以太网、USB、MIPI、显示、音频这一整面外设不是在主板上做死,而是经"接口板扇出电平与槽位+交换网络板在控制器跨 FPGA 移动时重路由+按接口类型更换的速率适配子卡(卡上有协议感知桥/真实 PHY/标准连接器)"这套三层生态从多片 FPGA 引到真实器件,主板与综合结果因此相对稳定;接入时最关键的判断是区分非等时与等时——以太网/USB bulk/SDIO 这类离散事务可缓冲、可反压、可重传,慢原型"攒一批全速发一批"只增加延迟不影响功能,而显示扫描、摄像头、音频这类实时连续流有固定节拍的生产者/消费者,FIFO 只能改延迟改不了平均速率,必须先确认降频后 DUT 的平均数据率仍满足选定规格,不够就降分辨率/帧率/采样率或提高该通路频率/同片化,实际工程里最可靠的媒体方案是帧/样本级解耦——DUT 慢节奏写板载帧存,子卡上独立满速显示/采集控制器按真实像素节拍读写,原型只验证帧内容、配置序列、DMA 和驱动,不验证真实像素时钟与实时丢帧;MIPI D-PHY/C-PHY 因电平和 LP/HS 切换时序无法用普通 FPGA IO 直引,要用带真 PHY 的桥接子卡或干脆用帧发生器/帧采集在无真实 sensor/面板时先验流水线,自定义高速 IO 只有在对端也能约定原型友好速率时才能双方降速直连、否则仍需协议桥;规划上按"软件 bring-up 必需+是否等时+收发器资源+有无现成子卡"排序,UART/存储/网络先行、媒体评估吞吐后降规格或帧存、为可能移动的控制器在交换网络上留可重路由口,并在分区前把 PCIe/网络/MIPI 桥对稀缺 SerDes 的争抢统一做预算,每条链都写明功能可验而实时性能与电气不可验的保真度边界、子卡固件随 build_id 锁定。