便宜的 DMA 硬件到底会出什么问题
问题很少出在 FPGA 本身,常见的原因是线材、桥接芯片、散热设计和板卡版本。
作者:Lethal Hardware Desk
这个圈子里的售后工单呈现出一种规律,而且和大家挑选时关心的东西毫无关系:几乎没有人的 FPGA 是坏的。有些人的线传不了数据,或者 USB 桥接芯片来路不明;有些人的板子一热就降速或掉线,或者板子实物根本不是固件所针对的那个版本。这些问题排查起来成本都很低,却都会被误认为是卡坏了。
哪些故障最常见?
| 故障类型 | 你看到的现象 | 一锤定音的检查 |
|---|---|---|
| 线材撑不住 USB 3 数据传输 | 设备能被识别,但读取速率只有预期的零头,或者链路协商成了 USB 2。 | 在设备管理器里或用 lsusb -t 查看协商速率。然后换一根确认可用的短数据线,再测一次。只能充电的 USB-C 线极其常见,外观上一模一样。 |
| 问题出在 USB 通路而不是线材 | 能用,但读到一半掉线。每次测出来的结果都不一样。 | 直接插到主板后置 USB 3 接口上。去掉所有集线器、扩展坞和延长线。把同一控制器上其他占带宽的设备都拔掉。 |
| 过热降速或掉线 | 前十分钟正常,之后性能下降或断开,冷却后恢复。 | 持续读取一段时间后用手摸一下,并判断故障是和时间有关,还是和你当时在做的事有关。插在狭窄插槽里、没有风道的 M.2 卡嫌疑最大。 |
| 板卡版本不匹配 | 刷写看起来成功了,卡却始终无法被正确识别;或者刷写工具根本看不到设备。 | 给丝印拍照:板卡型号、版本号、FPGA 标记、桥接芯片标记。再次刷写之前,先对照固件针对的是哪个版本。 |
| 插错接口 | 副机什么都识别不到,LED 却亮着。 | 大多数板卡有两个 USB-C 接口:一个接刷写桥接芯片,一个接数据桥接芯片。插到刷写口上,出现的恰恰就是大家以为卡坏了的那种症状。 |
| 桥接芯片来路可疑 | 驱动能装上,但表现古怪。在一台机器上能用,换一台就不行。描述符内容异常。 | 读取描述符和芯片标记,与板卡宣称使用的型号对照。这是六项里最难确认、也最少见的一项。 |
USB 桥接芯片是做什么的?
这类板卡大多用 FTDI FT601 做 USB 3 桥接,它是一颗带 32 位并行接口的 SuperSpeed USB 3.0 转 FIFO 桥接芯片,负责把 FPGA 的数据流转换成主机能通过 USB 读取的数据。这就是为什么数据口是 USB 3 接口,也是为什么线材质量如此重要。
FTDI 生态里的假冒芯片是有据可查的,但论坛上的说法往往比证据走得更远,所以要把有据可查的和只是传言的分开。证据确凿的案例是 FT232 串口桥接芯片。2014 年 10 月,一个通过 Windows Update 推送的 FTDI 驱动会识别非原装芯片,并把它们的 USB 产品 ID 改写为零,导致这些芯片在 Windows、Linux 和 macOS 上都无法被识别。这件事是真的,当时也被广泛报道,“假 FTDI”这个说法在硬件圈分量十足,原因就在这里。
在这个圈子里,关于低价板卡上的 FT601 被重新贴标、重新打标或者来路可疑的说法流传很广。我们见过标记和实际表现对不上的板子,但没有找到任何能与 FT232 案例相提并论、关于 FT601 假冒的权威公开分析。所以我们不把它当作定论:请把它看作社区推测,而不是有据可查的事实。无论哪种情况,实际建议都一样:从愿意告诉你板上用了什么芯片的卖家那里买,收到货后给芯片标记拍照。如果某块板卡的价格远低于其他所有宣称使用同款桥接芯片的板卡,就要提高警惕。
同一个商品名就是同一块板卡吗?
这一类产品里代价最高的错误,就是以为商品名能对应到一块确定的板卡,而事实往往并非如此。两块标着同一档次、用着同一颗 FPGA 的卡,仍然可能在 PCB 版本、USB 桥接芯片、Flash 芯片、LED 走线和接口位置上各不相同。固件是针对具体硬件编译的,所以版本不匹配并不是那种“基本能用”的小兼容问题,而是一块根本启动不了的卡。
- 1订购固件之前,先给丝印拍照,包括板卡名称、版本号,以及 FPGA 和桥接芯片上的标记。
- 2请固件卖家根据这张照片确认兼容性,而不是根据你买板卡时的商品名。
- 3把照片保存好,因为半年后出了问题,你不会记得自己的是哪个版本。
- 4如果卖家说不清自己发的是哪个版本,这本身就说明了这个卖家的重要情况。
一根短的、确认可用、支持数据传输的 USB 3 线几乎不花钱,解决的报修问题却比任何换件都多。买两根,其中一根不拆封,留作参照。这样出问题时,你手里有一根确定没问题的线,而不是四根都值得怀疑的线。有没有确认完好的参照件来测试,决定了你是十分钟解决问题,还是换掉一块本来好好的板卡。
买便宜板卡,你放弃了什么?
芯片本身的可靠性,基本上没有放弃,因为低价板卡上的 Artix-7 和贵的板卡上是同一种通用器件。你失去的是它周围的一切:一根能用的线、关于你收到的是哪个版本的准确说明,以及一个认得出自家板卡的卖家。你还失去了留有余量的散热设计,以及卡启动不了时可以求助的人。这些是最先缺失的东西,也恰恰决定了你的方案能不能正常工作。
对本文有疑问?在 Discord 提问
全部文章