☰
带宽算不清,采集卡必丢帧:从像素时钟到 PCIe 通道的完整算法
2026/10/1 11:30:55 网站建设 项目流程

A2 带宽算不清,采集卡必丢帧:从像素时钟到 PCIe 通道的完整算法

做选型咨询这么多年,我最怕听到的一句话是:“相机标的 30 帧,我买张卡插上,不就能跑满了吗?”

这句话里藏着三个没算过的账:相机端到底能吐多快(取决于像素时钟,不取决于接口)、链路上真正跑的是多少(协议开销会吃掉一成到两成)、主机总线能不能吃得下(PCIe 通道数和代际一错,前面全白算)。这三笔账但凡漏算一笔,结果就是同一个——标称 30 帧,实跑 21 帧,偶尔还掉帧,而且查不出原因。

上一篇(A1)我们解决了"要不要上采集卡"的问题,这一篇解决下一个更硬的问题:上多大的卡、插在几条通道上、配多少缓存。全文给一套可以拿计算器照着敲的完整算法:五步带宽推导、四张速查表、DMA 与缓存的数学、实测三步法,最后用"4 路 500 万像素 30 帧到底选 x4 还是 x8"这个真实选型把公式跑一遍。

📚 本篇目录

  1. 三个真实翻车现场:带宽算错的代价
  2. 五步带宽推导:从像素时钟到 PCIe 通道
  3. 相机侧接口速率速查表
  4. PCIe 有效吞吐对照表(Gen1~Gen4 × x1/x4/x8)
  5. DMA、环形缓冲与内存:为什么"带宽够"还是会丢帧
  6. CPU 与中断:MSI-X、中断合并、NUMA 亲核
  7. 实测三步法:带宽自检 → 逐帧时间戳 → 丢帧定位
  8. 实战案例:4 路 500 万像素 30 帧,选 x4 Gen3 还是 x8
  9. 10 个坑位:都是用返工换来的
  10. FAQ:算完带宽后最高频的 6 个问题
  11. A2 速查清单(可截图保存)

一、三个真实翻车现场:带宽算错的代价

先讲三个我亲历或帮人排查过的现场。它们看起来是三个不同的故障,根因其实是同一件事——带宽的账只算了一半。

现场 1:4 路相机插一张卡,实跑只有 21 帧

某锂电项目,4 台 500 万像素相机要求 30 帧连续采集。工程师按"4 × 150 MB/s ≈ 600 MB/s"选型,挑了一张 PCIe Gen3 x4 的卡(理论 3.9 GB/s),觉得富余得很。上线后实测每台只有 21 帧左右,降帧率到 20 帧才稳定。

问题出在哪?他把卡插在了主板的第三条 x16 插槽上——那条槽物理长度是 x16,但电气走线只有 x1,而且是挂在南桥(PCH)下的。实际可用带宽不是 3.9 GB/s,而是985 MB/s × 0.8 ≈ 790 MB/s,再跟 NVMe 硬盘、网卡抢南桥的上行通道,最后留给采集的可能只剩 500 MB/s 出头。600 MB/s 的需求塞进 500 MB/s 的管子,掉帧是必然的。

现场 2:换了更快的卡,帧率一帧没涨

另一个项目,单台高分辨率相机跑不到标称帧率,客户第一反应是"卡不行",换了张更贵的、通道更多的卡,帧率纹丝不动。

因为瓶颈根本不在卡上——在相机端的像素时钟。那台相机在满分辨率下,传感器输出能力本身就被行消隐、帧消隐和像素时钟锁死在 18 帧;换什么卡都不可能跑出 30 帧。想提速只有三条路:降分辨率(ROI / 抽取)、开多 Tap 输出、换更高像素时钟的相机。采集卡只能保证"相机吐出来的数据不丢",它没法让相机吐得更快。

现场 3:白天一切正常,一到夜里就丢帧

最折磨人的是这类:连续跑 8 小时,前 6 小时一切正常,后面开始间歇性丢帧,重启又好了。

排查结论是两个叠加因素:一是杀毒软件的定时全盘扫描抢走了内存带宽和 CPU 时间,主机没能及时取走 DMA 写满的缓冲区,板载缓存扛了几十毫秒之后溢出;二是驱动没开中断合并,每帧一次中断,夜间系统任务一多,中断响应被延迟。带宽是够的,缓存和中断的账没算。

💡 选型提示

判断一个项目会不会掉帧,别只问"带宽够不够"。完整的三问是:**① 相机端吐得出来吗(像素时钟)?② 链路和总线运得走吗(带宽)?③ 主机端接得住吗(缓存 + 中断 + 内存)?**三问全过,才叫算清了。

二、五步带宽推导:从像素时钟到 PCIe 通道

下面这套推导我用了很多年,从相机数据手册一直算到主板插槽,五步走完就能定卡。建议拿计算器跟着敲一遍。

2.1 第一步:像素时钟 → 相机到底能吐多快

相机的"标称帧率"往往是在特定配置下测的(可能是开窗、可能是 8bit、可能是单 Tap)。真正的上限由**像素时钟(Pixel Clock)**和每时钟输出的像素数(Tap 数)决定。

像素率(Pixel/s) = 像素时钟(Hz) × 每时钟输出像素数(Tap) 帧周期 = (行有效像素 + 行消隐) × (帧行数 + 帧消隐) ÷ 像素率 相机最大帧率 = 1 ÷ 帧周期

举个具体例子:一台相机像素时钟 80 MHz、单 Tap,分辨率 2448 × 2048,行消隐按 10% 估、帧消隐按 2% 估:

像素率 = 80 MHz × 1 = 80 MPixel/s 每行总像素 = 2448 × 1.1 ≈ 2693 每帧总行数 = 2048 × 1.02 ≈ 2089 每帧总像素 = 2693 × 2089 ≈ 5.62 MPixel 最大帧率 = 80 MPixel/s ÷ 5.62 MPixel ≈ 14.2 fps

看明白了吗——这台相机在满分辨率、单 Tap 下物理上限就是 14 帧左右。如果项目要求 30 帧,选型阶段就得换相机或改配置(双 Tap 输出可以把像素率翻倍到 160 MPixel/s,帧率直接翻倍到 28 帧以上)。

⚠️ 避坑提醒

很多"采集卡跑不满帧率"的投诉,第一步就卡在这里:不是卡的锅,是相机端就吐不出来。**选型顺序永远是先算相机、再算链路、最后算卡。**反过来算,一定返工。

2.2 第二步:单帧数据量

单帧字节数 = 宽 × 高 × 每像素字节数 每像素字节数: Mono8 / Bayer8 = 1.0 字节 Mono10 / Mono12 = 2.0 字节(多数按 16bit 对齐存放) Mono10 Packed = 1.25 字节(紧凑打包,需驱动支持) RGB8 / BGR8 = 3.0 字节 RGB10 / RGB12 = 6.0 字节(按 16bit 对齐)

500 万像素 Mono8 的单帧数据量:2448 × 2048 × 1 = 5,013,504 字节 ≈ 4.78 MB。注意这里用 MiB 还是 MB 差别不大,工程上按≈ 4.8 MB记就行,误差不会影响选型结论。

2.3 第三步:相机输出带宽

相机输出带宽(MB/s) = 单帧字节数 × 实际帧率

接着上面的例子,跑 30 帧:4.78 MB × 30 = 143.4 MB/s。单台 500 万像素 @30fps 的相机,原始图像流就是143 MB/s——这个数字要刻在脑子里,它是后面所有估算的基准单位。千兆网口有效约 110 MB/s,所以单台 500 万 30 帧的相机千兆网根本吃不下一路,这是很多人第一次踩的坑。

2.4 第四步:加协议开销(1.1 ~ 1.25)

链路上传的不只是像素,还有包头、包间隔、校验、重传预留、突发间隙。不同接口的实际开销差别不小:

接口典型开销系数说明
GigE Vision(1G/10G)1.15 ~ 1.25以太网分包 + 包间隔 + 重传预留,包长越小开销越大
USB3 Vision1.10 ~ 1.20突发传输 + 主机控制器调度,多设备共享时取上限
Camera Link1.02 ~ 1.05几乎裸流,开销很小
CoaxPress1.05 ~ 1.108b/10b 编码已含在链路速率里,额外开销小
同缆多相机 / 交换机汇聚1.20 ~ 1.30汇聚侧突发最严重,务必再留余量

2.5 第五步:换算到总线与 PCIe 有效带宽

链路总需求 = Σ(各相机输出带宽 × 对应开销系数) 所需 PCIe 有效带宽 = 链路总需求 × 1.05 ~ 1.10(DMA 突发与内存写放大) 校验条件:PCIe 有效带宽 × 工程效率系数(0.70 ~ 0.85) ≥ 链路总需求

为什么 PCIe 还要再打个折?因为 PCIe 的理论速率是编码前的链路速率,扣掉编码开销(Gen1/Gen2 是 8b/10b,Gen3 及以后是 128b/130b)、事务层包开销、流控和读写切换,实际能持续搬数据的吞吐通常只有理论值的70%~85%。工程估算我一般直接取0.8,保守项目取 0.7。

三、相机侧接口速率速查表

算到链路这一步,需要这张表把"相机接口"翻译成"每秒能跑多少 MB"。表里给的是实际可用值(已扣除编码与协议开销),直接拿来跟相机输出带宽比大小即可。

接口 / 规格链路速率实际可用带宽能带几路 500万@30fps(143 MB/s)
千兆网(1GigE)1 Gbps≈ 110 MB/s不到 1 路(需降帧率或压缩)
2.5G 网口2.5 Gbps≈ 280 MB/s约 1.9 路
5G 网口5 Gbps≈ 560 MB/s约 3.9 路
万兆网(10GigE)10 Gbps≈ 1,100 MB/s约 7.7 路
USB3(5 Gbps)5 Gbps≈ 350 MB/s约 2.4 路(且多口共享控制器)
USB3(10 Gbps)10 Gbps≈ 800 MB/s约 5.6 路
Camera Link Base2.04 Gbps≈ 255 MB/s约 1.7 路
Camera Link Medium4.08 Gbps≈ 510 MB/s约 3.5 路
Camera Link Full / 80bit5.44 Gbps≈ 680 MB/s约 4.7 路
CoaxPress CXP-1(单 lane)1.25 Gbps≈ 125 MB/s约 0.87 路
CoaxPress CXP-3(单 lane)3.125 Gbps≈ 312 MB/s约 2.1 路
CoaxPress CXP-6(单 lane)6.25 Gbps≈ 625 MB/s约 4.3 路
CoaxPress CXP-12(单 lane)12.5 Gbps≈ 1,250 MB/s约 8.7 路
CXP-6 × 4 lane25 Gbps≈ 2,500 MB/s约 17 路(总线会先到瓶颈)

💡 选型提示

表里"能带几路"是纯带宽视角的理论值,实际还要受相机端像素时钟(第一节)、主机总线、缓存和 CPU 三重限制。永远取四个限制里最小的那个作为最终结果——这就是木桶效应,也是选型里最容易漏的一步。

四、PCIe 有效吞吐对照表(Gen1 ~ Gen4 × x1/x4/x8)

这张表是选卡时最常用的一张,建议直接截图保存。左列是理论值(已扣编码开销),右侧灰字是工程可用值(再乘 0.8,用于最终校验)。

代际 / 通道x1x4x8x4 工程可用(×0.8)
Gen1(2.5 GT/s)250 MB/s1,000 MB/s2,000 MB/s≈ 800 MB/s
Gen2(5 GT/s)500 MB/s2,000 MB/s4,000 MB/s≈ 1,600 MB/s
Gen3(8 GT/s)985 MB/s3,940 MB/s7,880 MB/s≈ 3,150 MB/s
Gen4(16 GT/s)1,969 MB/s7,877 MB/s15,754 MB/s≈ 6,300 MB/s

读这张表有三个必须注意的点:

  • 插槽的"物理长度"不等于"电气通道数"。主板上常见的第二条 x16 长槽,电气可能只有 x4 甚至 x1,规格书里会写成 “x16 slot (x4 link)”。插卡之前一定查主板手册的通道分配表。
  • 降速是静默发生的。转接卡、延长线、灰尘或金手指接触不良,都可能让链路从 Gen3 掉到 Gen1,带宽直接砍到四分之一,而且系统不会弹任何提示。用工具读当前链路速率(Link Speed / Link Width)是必做项,不能只看"设备管理器里认到了"。
  • 通道会被抢。独显、NVMe 硬盘、万兆网卡、第二张采集卡都在抢 CPU 直连的那十几条通道。插满之后,主板会自动拆分或把部分槽切到南桥下,这时候"插在哪个槽"比"买哪张卡"影响更大。

五、DMA、环形缓冲与内存:为什么"带宽够"还是会丢帧

带宽只是第一道关。真正决定"连续跑 24 小时会不会掉帧"的,是主机端的接管能力。

5.1 DMA 描述符与突发:数据是怎么进内存的

采集卡的 DMA 引擎不是一字节一字节地搬,而是按**描述符(Descriptor)组织的:驱动预先在内存里排好一串描述符,每个描述符指向一块物理连续的缓冲区和长度;DMA 引擎按描述符顺序,以突发(Burst)**方式把数据写进去,写完一个就跳到下一个,同时给主机发一个中断通知。

这里的关键是描述符环的大小和物理内存连续性。描述符太少,DMA 会在环末尾空转等待驱动补充;缓冲区不连续,DMA 要切分成更多次突发,效率下降。所以驱动层普遍使用页锁定内存(Pinned / Non-paged Memory)——把缓冲区锁在物理内存里,禁止操作系统换页出去,保证 DMA 随时可写。

5.2 环形缓冲队列:为什么绝不能单缓冲

单缓冲(只有一块内存放图)的死穴在于:主机正在处理第 N 帧时,第 N+1 帧没地方写。要么 DMA 停住(相机端开始堆积、触发被拒),要么覆盖第 N 帧(算法读到半新半旧的图像,出现"错帧")。两种结果都是事故。

正确做法是环形缓冲队列(Ring Buffer):预分配 N 块帧缓冲,DMA 写指针和算法读指针各自向前走,只要算法平均处理速度跟得上采集速度,中间的瞬时卡顿就被 N 块缓冲吸收掉了。

所需缓冲帧数 N ≥ 处理流水线深度 + 抖动吸收量 抖动吸收量 = (可容忍的主机最大卡顿时间 × 数据率) ÷ 单帧字节数

算个例子:单帧 4.78 MB,单路数据率 143 MB/s,要求能吸收 100 ms 的主机卡顿:

抖动吸收量 = 0.1 s × 143 MB/s ÷ 4.78 MB ≈ 3 帧 处理流水线深度(采集→预处理→推理→输出,通常 2~4 帧) N ≥ 3 + 3 = 6 帧 → 工程上取 8~16 帧/路 4 路 × 16 帧 × 4.78 MB ≈ 306 MB 常驻内存

这就是为什么高带宽采集卡的机器内存不能只配 8 GB:光是图像缓冲就吃掉几百 MB 到几个 GB,再叠加算法模型、系统缓存和日志,16 GB 起步、32 GB 才从容。

5.3 内存带宽:被忽略的第三道关

很多人算完 PCIe 就收工了,忘了数据写进内存之后还要被读出来处理。一次典型的图像流程对内存的读写量是:

  • DMA 写入:1 × 数据量
  • 算法读取:1 × 数据量
  • 预处理(去马赛克 / 格式转换 / 缩放):1 ~ 2 × 数据量
  • 中间结果与输出:0.5 ~ 1 × 数据量

合计约3 ~ 5 倍数据量的内存流量。4 路 500 万 30 帧是 574 MB/s 的图像流,乘以 4 就是约 2.3 GB/s 的内存带宽占用。双通道 DDR4-3200 的理论带宽约 51 GB/s,看起来富余,但 CPU、显卡、系统任务都在抢同一条内存总线,实际可用往往只剩一半。路数一多,最先报障的往往不是 PCIe,而是内存带宽和 CPU。

六、CPU 与中断:MSI-X、中断合并、NUMA 亲核

这一节是"同样的卡、同样的带宽,为什么有人跑得稳、有人天天掉帧"的答案。

  • MSI-X 中断:相比传统引脚中断,MSI-X 可以给每个队列分配独立中断向量,直接投递到指定 CPU 核,避免多设备共享中断线造成的延迟抖动。选卡时看驱动说明里是否支持,并确认系统里确实启用(设备管理器 / 系统中断分配里能看到)。
  • 中断合并(Interrupt Coalescing / Moderation):把"每帧一次中断"改成"每 N 帧或每 X 微秒一次中断",能大幅降低中断风暴带来的 CPU 抖动。代价是延迟增加几十到几百微秒——高帧率场景要合并,低延迟触发场景要谨慎开大,按需调参。
  • NUMA 亲核:双路服务器或高端工作站上,CPU 分两个节点、各自挂着本地内存。采集卡插在节点 A 的槽上,算法却跑在节点 B 的核上、用节点 B 的内存,数据就要跨节点互联传输,延迟和带宽都会打折。把算法进程绑到采集卡所属 NUMA 节点的核上(亲核/亲和性设置),是双路平台上收益最大的一步优化。
  • 实时优先级与隔离核:对节拍极紧的场景,可以给采集线程提实时优先级,甚至隔离出 1~2 个核专供采集与触发响应,把系统调度抖动的影响降到最低。

⚠️ 避坑提醒

千万别让杀毒软件实时扫描、系统自动更新、远程桌面、录屏软件在生产机上跑。它们不会让带宽变窄,但会制造几十到几百毫秒的主机停顿——正好是板载缓存扛不住的量级。这类"夜里丢帧"的锅,八成在这里。

七、实测三步法:带宽自检 → 逐帧时间戳 → 丢帧定位

公式算完只是纸上推演,上线前必须实测。我用的三步法:

7.1 第一步:带宽自检(验证前五步算得对不对)

  1. 用采集卡配套的采图工具(或 SDK 示例程序)以目标配置连续采集 10 分钟以上,不做任何图像处理,只做"收 + 丢"。
  2. 记录三项:实际帧率、实测带宽(工具一般会显示)、链路速率(确认是 Gen3 x4 还是掉到了 Gen1 x1)。
  3. 实测带宽与理论计算偏差超过 20%,先别怀疑公式,先查链路速率和相机端配置(是否开启了抽取、是否真的跑在目标位深)。

7.2 第二步:逐帧时间戳(看抖动,不看平均值)

给每一帧记录帧序号 + 硬件时间戳,跑满几千帧后做差分统计:平均周期、最大周期、周期标准差(抖动)。平均值达标但抖动很大,说明系统存在间歇性抢占,后面一定会偶发掉帧。

7.3 第三步:丢帧定位(分清是哪一种丢帧)

现象大概率根因验证方法
帧序号跳号(1→2→4→5)传输/缓存丢帧:主机来不及取,缓冲溢出看驱动统计里的 buffer overflow / dropped 计数是否增长
序号连续,但图像内容撕裂/半旧半新错帧:缓冲区被提前复用(缓冲帧数太少或读写指针失控)减小帧率观察是否消失;增大缓冲帧数
序号连续,但总帧数比触发次数少相机端丢触发:触发频率超过相机最大帧率(回到 2.1 节)对照相机手册的最大帧率,降触发频率验证
CPU 占用率长期 > 85%处理瓶颈:不是卡的问题,是算法跑不动停掉算法只采集,若帧率恢复即确认
只在特定时段/特定操作后掉帧系统抢占:杀毒扫描、备份、更新、远程桌面查系统日志与任务计划,生产机上全部关掉

八、实战案例:4 路 500 万像素 30 帧,选 x4 Gen3 还是 x8

把前面的公式完整跑一遍。场景:4 台 500 万像素(2448 × 2048)Mono8 相机,要求 30 fps 连续采集,走 CoaXPress 采集卡。

8.1 按五步推导

① 相机端(假设双 Tap / 像素时钟足够,30 fps 可达)——先确认成立 ② 单帧字节 = 2448 × 2048 × 1 = 5,013,504 B ≈ 4.78 MB ③ 单路带宽 = 4.78 MB × 30 = 143.4 MB/s 四路合计 = 143.4 × 4 = 573.6 MB/s ④ 开销系数(CXP 取 1.08)= 573.6 × 1.08 ≈ 619 MB/s ⑤ 加 DMA 突发系数 1.05 = 619 × 1.05 ≈ 650 MB/s ← 所需 PCIe 有效带宽

8.2 三档卡的校验

方案工程可用带宽占用率结论
Gen3 x1(误插到 x1 槽)985 × 0.8 ≈ 790 MB/s82%勉强,突发一来就掉帧 —— 正是"现场 1"的翻车配置
Gen3 x43,940 × 0.8 ≈ 3,150 MB/s21%✅ 推荐,留足余量给后续提速与多卡
Gen3 x87,880 × 0.8 ≈ 6,300 MB/s10%性能过剩,且 x8 槽位稀缺、主板未必有,不建议

**结论:Gen3 x4 完全够用,上 x8 是浪费。**而且要注意——这个项目真正的风险点不在"x4 还是 x8",而在"这个 x4 是真 x4 吗"。必须确认插槽电气通道数、链路没有降速到 Gen1/Gen2。

8.3 如果需求变了呢?两档升级推演

升级 A:位深改 Mono10(按 2 字节存)+ 帧率提到 60 fps 单帧 = 2448 × 2048 × 2 = 9.56 MB 单路 = 9.56 × 60 = 573.6 MB/s;四路 = 2,294 MB/s × 1.08 × 1.05 ≈ 2,601 MB/s → Gen3 x4(3,150 MB/s 可用)占用 83%,已属临界,建议 Gen3 x8 或拆两张 x4 卡 → Gen4 x4(6,300 MB/s 可用)占用 41%,更从容 升级 B:4 路升到 8 路同规格(500万 Mono8 @30fps) 总需求 ≈ 1,300 MB/s → Gen3 x4 仍可(占用 41%),但中断、内存、散热压力翻倍 → 更推荐两张 x4 卡分摊(见 A3 篇的"一张卡多路 vs 多张卡拆分")

💡 选型提示

选型心法:**不要按"刚好够"选,也不要按"越大越好"选,按"占用率 30%~50%"选。**低于 30% 说明买贵了,高于 60% 说明后续没有提速余量,高于 80% 就等着现场掉帧吧。

九、10 个坑位:都是用返工换来的

坑 1:插槽物理 x16、电气 x4(甚至 x1)

最常见的翻车点。查主板手册的通道分配表,不要看槽有多长。有条件就用工具读链路宽度确认。

坑 2:被独显抢走通道

插了独显之后,CPU 直连通道被拆分成 x8 + x8,采集卡只能拿到被拆分后的部分。做视觉推理的机器要提前规划:卡插 CPU 直连槽,显卡按需降级或改用计算卡。

坑 3:链路静默降速到 Gen1

延长线、转接卡、金手指氧化都会导致降速,而且没有任何提示。上线前必查 Link Speed / Link Width,并写进验收单。

坑 4:M.2 固态与采集卡抢通道

很多主板的第二条 M.2 与某个 PCIe 槽共享通道,插上固态后采集卡从 x4 变 x2。装机清单里要逐条核对共享关系。

坑 5:内存带宽瓶颈先于 PCIe 到来

3~5 倍数据量的内存读写放大,路数一多最先卡的是内存。内存容量和通道数都要留余量(双通道起步,四通道更好)。

坑 6:BIOS 设置没开

Above 4G Decoding、Resizable BAR、VT-d(若要用直通)等选项没开,可能导致卡识别不到或缓冲区分配失败。装机流程里固定加一步"BIOS 检查项"。

坑 7:只看相机端帧率,不看主机端收到多少帧

相机在自拍,主机在丢帧——两边统计对不上是常态。以主机端成功收到的完整帧数为准,这是唯一真实的产能指标。

坑 8:缓冲帧数按默认值,从不算

默认 3 帧在空载时没事,一有系统卡顿就溢出。按 5.2 的公式算,再乘 1.5 倍余量。

坑 9:算带宽时忘了"同时性"

多台相机用同一个触发器,会在同一毫秒一起爆发。平均带宽够不代表瞬时扛得住——突发场景要在平均值上再乘 1.2~1.5。

坑 10:把"实测 10 分钟"当成验收

10 分钟跑通不代表 8 小时稳定。验收至少要覆盖一次完整的换班/批处理周期,并开启系统日志监控。夜间丢帧的坑,白天永远测不出来。

十、FAQ:算完带宽后最高频的 6 个问题

Q1:带宽占用率算出来 90%,能上线吗?
不建议。90% 意味着任何一点系统抖动、任何一次突发都会掉帧。要么加通道(x4 → x8 或换 Gen4),要么拆成两张卡分摊,要么降低相机端的实际流量(降帧率、开 ROI、开抽取、改位深)。生产系统请按 30%~50% 占用率设计。

Q2:为什么我换了更快的卡,帧率一点没涨?
九成是卡在了相机端:像素时钟 + Tap 数 + 消隐决定了相机物理上限。回看 2.1 节把相机最大帧率先算出来,如果上限本身就低于需求,换卡无用,只能改分辨率、开多 Tap 或换相机。

Q3:Gen4 的卡插在 Gen3 的槽上能用吗?能用多少?
能用,PCIe 向下兼容,但会按 Gen3 的速率跑——带宽直接减半。反过来 Gen3 的卡插 Gen4 槽,也只有 Gen3 的速度。链路速率取两端较低者,这是硬规则。

Q4:多张采集卡,通道数怎么分才合理?
先看每卡的实际需求,再按"占用率 30%~50%"分配。原则是优先保证每张卡都插在 CPU 直连槽上,避免把卡挂到南桥(PCH)下与硬盘、网卡抢上行带宽。两张 x4 通常比一张 x8 更容易插好,也更利于中断分摊——这个话题 A3 篇会展开讲。

Q5:板载缓存越大越好吗?
不是。板载缓存是抗抖动的保险,不是提速手段。它的作用是吸收主机几十毫秒级的停顿,典型容量能扛几十到几百毫秒的流量就够了。缓存过大则成本上升、且掩盖了本该暴露的系统卡顿问题。先用缓存扛住抖动,再回头把系统卡顿的根因消掉(关杀毒、隔离核、提优先级)。

Q6:我算出来的数跟厂商手册对不上,谁错了?
先检查四个常见差异:① 单位(MB/s 与 MiB/s、Gbps 与 GB/s 混用);② 是否扣了编码开销(8b/10b 或 128b/130b);③ 位深是否按对齐后的字节数算(Mono10 常按 2 字节存);④ 是否含消隐(相机端帧率算消隐,链路带宽不含)。把这四个对齐,两边通常能对上。

十一、A2 速查清单(可截图保存)

✅ 带宽与总线选型 12 项

  • ☐ 已按像素时钟 × Tap 算出相机端最大帧率(不是查标称值)
  • ☐ 已算清单帧字节数(注意位深对齐:Mono10 通常按 2 字节)
  • ☐ 已按 单帧 × 帧率 算出每台相机的输出带宽
  • ☐ 已按接口类型乘上开销系数(GigE 1.15~1.25 / USB3 1.1~1.2 / CXP 1.05~1.1 / CL 1.02~1.05)
  • ☐ 多相机同时触发已额外乘 1.2~1.5 突发系数
  • ☐ 已用 PCIe 对照表校验,并乘了 0.7~0.85 工程效率系数
  • ☐ 占用率落在 30%~50% 区间(<30% 买贵了,>60% 没余量,>80% 必掉帧)
  • ☐ 已查主板手册确认插槽电气通道数(非物理长度)
  • ☐ 上线前已用工具确认 Link Speed / Link Width 未降速
  • ☐ 已按公式算出缓冲帧数(抖动吸收 + 流水线深度),并配足内存
  • ☐ 已完成实测三步法:带宽自检 / 逐帧时间戳 / 丢帧定位
  • ☐ 验收跑满一个完整生产周期(含夜间),系统日志无异常

写在最后

采集卡选型里有个反直觉的事实:**大部分"卡的故障",其实都是账没算清。**相机端的账(像素时钟)、链路的账(协议开销)、总线的账(通道与代际)、主机的账(缓存、中断、内存)——四本账记全了,卡的选择会自己浮出来。

下一篇(A3)我们往系统层面再进一步:多相机场景下一张卡多路还是多张卡拆分、触发体系怎么搭、行同步与编码器怎么接、上线后八大故障怎么排。那篇是落地篇,这篇是它的算术基础——先把这篇的公式保存到你的选型笔记里。

← 上一篇:A1 工业相机一定要上采集卡吗?一张图讲清它在视觉系统里的位置

下一篇:A3 多相机 + 采集卡:同步、触发与缓存的工程落地 →

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询