硬件平台介绍:FPGA芯片选型与核心外设
做图像采集平台,选型是第一步,也是最关键的一步。我个人习惯是先定接口,再定芯片,最后看成本。今天咱们就聊聊这套平台的核心硬件:Xilinx Artix-7 FPGA、OV5640摄像头、DDR3存储和HDMI显示接口。
FPGA芯片选型:为什么是Artix-7?
说实话,市面上能选的FPGA不少。但做图像采集,我第一个想到的就是Artix-7。为什么?性价比高,功耗低,逻辑资源够用。
Artix-7系列属于Xilinx的7系列家族,采用28nm工艺。相比Spartan-6,它的逻辑密度提升了近一倍,但功耗反而更低。我在项目中遇到过用Spartan-6做720p图像采集,结果逻辑资源吃紧,最后不得不换芯片。换了Artix-7后,同样的设计,资源占用率从95%降到了60%左右。
核心参数速览:
- 逻辑单元:15K - 200K(我们常用XC7A35T或XC7A100T)
- DSP Slice:90 - 740(图像处理全靠它)
- Block RAM:1.8Mb - 13Mb(缓存图像行数据)
- 最大IO:250 - 500(接DDR3和HDMI够用)
你想想看,一个35T的芯片,价格才几十块钱,却能跑200MHz以上的时钟。做VGA级别的图像采集,绰绰有余。如果要做1080p,建议上100T,DSP资源更多,处理算法更从容。
摄像头模组:OV5640的实战经验
OV5640这颗传感器,我用了不下五个项目。500万像素,支持RAW、RGB、YUV输出,接口是DVP并行或者MIPI。咱们这个平台用的是DVP接口,8位并行数据,简单可靠。
嗯,这里要注意:OV5640的初始化是个坑。它内部有上千个寄存器,上电后默认配置是输出640x480的YUV格式。如果你想输出1280x720的RGB565,得通过SCCB总线(类似I2C)写寄存器。
我的配置经验:
- 上电后先等20ms,让晶振稳定
- 复位引脚拉低至少1ms
- SCCB时钟不要超过400kHz
- 配置寄存器时,每写一个地址等5us
我曾经因为复位时间不够,折腾了两天才找到原因。后来养成习惯,上电时序用逻辑分析仪抓一遍。
OV5640的输出像素时钟,根据分辨率不同,从24MHz到96MHz不等。720p模式下,PCLK大概在74MHz左右。这个频率对Artix-7来说,小菜一碟。
DDR3存储:图像帧缓存的核心
图像采集为什么需要DDR3?说白了,摄像头是连续输出的,但显示和处理器不一定能实时跟上。需要一个缓冲区,先把一帧存下来,再慢慢处理。
咱们用的是DDR3 SDRAM,容量256MB到1GB不等。Artix-7内部集成了MCB(内存控制器),可以直接接DDR3颗粒。接口速率最高到800MHz(DDR3-1600),数据位宽16位。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 容量 | 256MB - 1GB | 存几帧1080p绰绰有余 |
| 数据位宽 | 16位 | Artix-7 MCB支持 |
| 时钟频率 | 400MHz | DDR等效800MHz |
| 带宽 | 6.4GB/s | 足够1080p@60fps |
DDR3布线注意事项:
- 数据线、地址线、控制线必须等长,误差不超过50mil
- VREF电压要干净,建议用电阻分压加电容滤波
- 终端电阻不能省,否则信号反射严重
- 我曾经有一版PCB,DDR3布线没做等长,结果跑400MHz就报错,降频到300MHz才稳定
HDMI显示接口:把图像送出去
图像采集完了,总得让人看到吧?HDMI接口就是干这个的。咱们用的是HDMI 1.4标准,支持1080p@60fps。
Artix-7本身没有HDMI硬核,但可以用GTP高速收发器来实现。GTP的速率最高到6.6Gbps,做HDMI 1.4(3.4Gbps)完全没问题。如果不想用GTP,也可以用差分IO加外部电平转换芯片,成本更低。
我个人习惯用Silicon Image的SiI9134或者ADI的ADV7513,这些芯片可以直接把并行RGB数据转成HDMI信号。FPGA这边只需要输出像素时钟、行场同步和RGB数据就行,简单可靠。
HDMI调试小技巧:
- 先测时钟,像素时钟必须稳定,抖动要小
- 行场同步的时序要严格对照VESA标准
- 如果显示器没画面,先检查DE信号是否正常
- 我曾经因为行同步极性搞反了,画面一直偏左,查了半天才发现
整体架构:一张图看懂
下面这张图,是我画的一个简化版系统框图。数据流从左到右:摄像头采集 -> FPGA缓存 -> DDR3存储 -> FPGA读取 -> HDMI输出。
数据流其实很简单:OV5640输出图像数据,FPGA通过DVP接口接收,然后写入DDR3缓存。同时,FPGA从DDR3读出数据,转换成HDMI时序,送出去显示。整个过程,FPGA就像一个交通警察,指挥数据在摄像头、内存和显示器之间流转。
选型总结:我的建议
如果你刚开始做图像采集,我建议从Artix-7 XC7A35T起步,配一个OV5640摄像头模块,DDR3用256MB,HDMI用ADV7513。这套组合成本低,资料多,遇到问题也好找答案。
等把基础跑通了,再考虑升级到100T,或者换更高分辨率的摄像头。一口吃不成胖子,做硬件更是这样。
核心要点回顾:
- Artix-7:性价比之王,28nm工艺,逻辑资源够用
- OV5640:500万像素,DVP接口,初始化要细心
- DDR3:帧缓存必备,布线等长是关键
- HDMI:用外部转换芯片最省事,GTP方案更高级
好了,硬件平台就介绍到这里。下一节咱们会聊具体的FPGA逻辑设计,包括摄像头接口时序、DDR3控制器配置和HDMI输出实现。到时候见。