硬件平台介绍: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输出。

FPGA图像采集平台硬件架构图 OV5640 摄像头模组 DVP 8位并行 PCLK+DATA Xilinx Artix-7 XC7A35T/100T 图像采集 + 缓存控制 格式转换 + 时序生成 写数据 DDR3 SDRAM 256MB - 1GB 帧缓存 读数据 HDMI 输出 1080p@60fps SiI9134/ADV7513 RGB + 同步信号 图例 摄像头数据流 DDR3读写 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输出实现。到时候见。

可可精品资料库