3、FPGA选型分析:主流FPGA厂商、GTH/GTY收发器资源评估、逻辑资源与DSP资源需求、开发板推荐
做SDI视频接口,选对FPGA,项目就成功了一半。这话一点不夸张。
我见过不少新手,一上来就盯着最贵的芯片选,结果资源浪费一大半,成本还压不下来。也见过有人为了省钱,选了资源刚好卡线的型号,结果后期加个功能就得换芯片,重新画板子,那叫一个痛苦。
今天咱们就聊聊,做SDI接口时,FPGA到底该怎么选。
3.1 主流FPGA厂商怎么挑?
目前市面上能做SDI接口的FPGA,主要就三家:Xilinx(现在叫AMD)、Intel(原Altera)和Lattice。
Xilinx(AMD),我个人用得最多。它的Kintex和Artix系列,在视频处理领域简直是标配。尤其是Kintex-7和Artix-7,性价比极高。我几年前做过一个4路3G-SDI的采集卡,用的就是Artix-7,稳得很。Xilinx的生态也成熟,Vivado用起来虽然有点吃内存,但功能确实强大。
Intel(Altera),它的Cyclone V和Arria系列也不错。Cyclone V价格便宜,适合做低成本方案。但说实话,Intel的Quartus Prime用起来不如Vivado顺手,尤其是IP核的集成,有时候会出些莫名其妙的bug。我有个同事就被坑过一次,一个简单的PLL配置,折腾了两天才搞定。
Lattice,这家主打低功耗和小封装。如果你做的是便携设备或者对功耗极其敏感的项目,可以看看Lattice的CrossLink系列。不过它的资源相对较少,做高分辨率或者多通道SDI会比较吃力。
我的建议:
- 追求稳定和生态:选Xilinx
- 追求低成本:选Intel Cyclone V
- 追求低功耗和小体积:选Lattice
3.2 GTH/GTY收发器资源评估
做SDI,最核心的就是高速串行收发器。说白了,就是FPGA里那些能跑几Gbps的硬核电路。
SDI的信号速率,大家应该都清楚:
- SD-SDI:270 Mbps
- HD-SDI:1.485 Gbps
- 3G-SDI:2.97 Gbps
- 6G-SDI:5.94 Gbps
- 12G-SDI:11.88 Gbps
你看,到了12G-SDI,速率已经接近12Gbps了。这时候,普通的GTP收发器(最高也就6.6Gbps)就扛不住了。必须上GTH或者GTY。
GTH,最高能跑到16Gbps左右,覆盖12G-SDI绰绰有余。Xilinx的Kintex-7、Kintex UltraScale系列都带GTH。
GTY,更猛,能跑到30Gbps以上。一般用在Virtex UltraScale+这种高端芯片上。做12G-SDI用GTY有点杀鸡用牛刀,但如果你要做多通道或者未来想升级到24G-SDI,那GTY就是必须的。
避坑指南:
我曾经在一个项目里,想用Artix-7的GTP做3G-SDI。理论上GTP能跑3.125Gbps,够用。但实际测试时发现,眼图质量很差,抖动也大。后来查资料才发现,GTP的PLL对3G-SDI的时钟恢复支持不太好。最后只能换成Kintex-7的GTH,问题才解决。
所以,我的经验是:做SDI,尽量选GTH以上的收发器。别为了省那点钱,给自己挖坑。
评估收发器数量时,记得留余量。比如你做4路3G-SDI,理论上4个收发器就够了。但我建议至少选6个的芯片。为什么?因为万一有一路需要做环出,或者后期要加一路辅助信号,你还有富余。
3.3 逻辑资源与DSP资源需求
很多人以为SDI就是收发器的事,逻辑资源随便用用就行。其实不然。
SDI的核心处理,包括:
- 加扰/解扰:这是SDI协议规定的,必须做。占用的LUT不多,几百个而已。
- NRZI编码/解码:同样必须做,资源消耗也不大。
- 行缓存:这个才是吃资源的大头。尤其是你要做视频处理,比如缩放、色彩空间转换,都需要缓存一整行甚至几行的数据。
- 音频嵌入/解嵌:需要一些FIFO和状态机,资源消耗中等。
我举个例子,一个典型的3G-SDI接收通道,大概需要:
| 资源类型 | 消耗量 | 说明 |
|---|---|---|
| LUT | ~3000 | 主要是控制逻辑和状态机 |
| FF | ~2500 | 寄存器,用于流水线处理 |
| BRAM | ~8块 | 行缓存和FIFO |
| DSP | ~4个 | 如果做色彩空间转换会用上 |
如果你只是做简单的SDI转HDMI,不涉及复杂的视频处理,那Artix-7 35T级别的芯片就够了。但如果你要做多通道、或者叠加OSD、或者做帧同步,那至少得上Artix-7 100T或者Kintex-7。
注意:
DSP资源容易被忽略。很多人觉得SDI不需要DSP,但如果你要做视频缩放、去隔行、或者色彩校正,DSP是少不了的。我建议,哪怕你现在用不到,也选带几十个DSP的芯片。万一后期要加功能,你还有得玩。
3.4 开发板推荐
选开发板,我的原则是:够用就行,别追求最贵的。
如果你刚开始学SDI,我推荐以下几款:
- Xilinx KC705:Kintex-7的经典板子,带GTH,做3G-SDI和12G-SDI都行。就是价格有点贵,二手也得三四千。
- Xilinx AC701:Artix-7的板子,便宜,但只有GTP,做3G-SDI勉强,12G-SDI就别想了。
- Digilent Nexys Video:Artix-7 200T,带HDMI输入输出,适合做SDI转HDMI的验证。价格两千左右,性价比不错。
- Lattice CrossLink-NX Evaluation Board:如果你对功耗敏感,可以看看这个。但资源有限,适合做简单的SDI中继或者格式转换。
我的个人经验:
我建议新手直接上KC705。虽然贵点,但它的GTH收发器性能稳定,文档也全。你可以在上面验证12G-SDI的收发,然后根据实际项目需求,再选更便宜的芯片做产品。这样走一遍,你对SDI的理解会深很多。
千万别为了省钱,买个低端板子,结果发现收发器跑不到目标速率,那才叫浪费时间。
嗯,选型这块就聊这么多。记住一句话:收发器是核心,资源要留余,开发板选经典。下一章,咱们聊聊SDI的时钟恢复和均衡器设计,那才是真正考验硬件功底的地方。