Back to Blog

Virtex-4 cameralink开发板PCI图像采集卡定制FPGA-HDMI编码-LVDS相机

#fpga开发#cameralink#FPGA相机

Virtex‑4 CameraLink 开发板概览与使用指南

本篇文章聚焦于一款基于 Xilinx Virtex‑4 FPGA 的 CameraLink 开发板,详细介绍其硬件组成、支持的传输模式以及常见的应用场景。阅读后,您将了解如何在 ARM/DSP 系统上获取 CameraLink 相机的图像数据,并掌握板上 VGA 输出与 LVDS 接口的基本使用方法。

1. 开发板核心特性

项目说明
FPGAXilinx Virtex‑4(适用于高带宽图像处理)
CameraLink 接口芯片DS90CR288AMTD 双路,提供 Full 与 Base 两种模式
支持模式Full 模式(每像素 8‑bit,最高 85 MHz)Base 模式(每像素 8‑bit,最高 45 MHz)
板载 RAMIS61LV25616AL ×4 = 1 M × 16(共 2 MB)
板载 VGA 接口ADV7123(NTSC/PAL 兼容)
摄像头接口通过 FPC 排线 可直接连接市面上常见的 CameraLink 相机
外设接口两路 串口(UART0/1)GPIO 口(可自定义)

提示:该开发板的设计目标是让用户能够快速把 CameraLink 相机的原始图像数据搬运到 ARM 或 DSP 处理器进行后续算法处理。

2. CameraLink 接口芯片 DS90CR288AMTD 解析

DS90CR288AMTD 是 TI(德州仪器)推出的双通道 CameraLink 接收器,具备以下关键功能:

  • 双通道同步捕获:支持 Full 与 Base 两种传输模式,能够自动检测并切换。
  • LVDS 接口:通过差分信号降低噪声,适合长距离排线传输。
  • FIFO 缓冲:内部 256 KB FIFO 缓冲区,帮助平滑时钟抖动。
  • 可编程时序:通过 I²C/SMBus 配置寄存器,用户可根据相机的时序要求进行微调。

在实际使用时,建议先通过 I²C 读取芯片的 Device ID(0x48),确认通信正常;随后根据相机手册配置 Mode Register(Full/BASE)和 Pixel Format(8‑bit、10‑bit 等)。

3. FPGA 与板载 RAM 的协同工作

Virtex‑4 FPGA 通过 LVDS 接收器 将 CameraLink 数据流送入内部逻辑,随后写入板载 IS61LV25616AL SRAM。该 SRAM 采用 16‑bit宽度,四颗并联提供 2 MB 总容量,足以容纳 1080p@30fps(8‑bit)图像的临时缓存。

典型的数据流路径如下:

  1. CameraLink 采集 → DS90CR288AMTD LVDS 接收
  2. LVDS → FPGA(使用 Xilinx 的 LVDS 接口 IP
  3. FPGA 逻辑
    • 采样时钟同步(使用 PLL 产生 85 MHz)
    • 像素拼接与行同步(HS/VS)
    • 写入 SRAM(使用 Block RAM 作为写入缓冲)
  4. ARM/DSP 读取:通过 外部总线(如 EMCPCIe)读取 SRAM 内容进行后处理

实战经验:在 Full 模式下,建议在 FPGA 端使用 双端口 RAM(BRAM)做一次行缓存,以降低对外部 SRAM 的写入压力;在 Base 模式则可以直接写入 SRAM,带宽需求相对较低。

4. VGA 输出(ADV7123)使用方法

ADV7123 是一款常见的 8‑bit RGB VGA DAC,能够将 FPGA 处理后的图像直接输出到显示器。其主要连接方式如下:

  • 数据总线:D0‑D7 直接映射 FPGA 的像素数据(8‑bit)
  • 时钟:Pixel Clock(建议 25 MHz 对应 640×480@60Hz)
  • 同步信号:HS、VS 通过 FPGA 产生的同步信号线

在 Vivado(或 ISE)中,您可以使用 Xilinx VGA Controller IP 生成所需的 HS/VS/DE 信号,并将像素数据路由到 ADV7123。若需要更高分辨率(如 800×600),请相应调整 Pixel Clock 与时序参数。

5. 与 ARM/DSP 开发板的连接

开发板提供 两路串口(UART0/1)和 GPIO,便于与外部处理平台进行通信。常见的连接方式:

  • UART0 → ARM Cortex‑A 系列的 ttyS0(用于调试信息)
  • UART1 → DSP 的 SCI 接口(用于实时数据流)
  • GPIO → 用作 外部触发(如相机曝光同步)或 状态指示(LED)

在 ARM 端,建议使用 DMA(如 PL330)从 SRAM 读取图像数据,避免 CPU 轮询带来的性能瓶颈。DSP 端则可直接通过 EDMALLC 接口实现高速搬运。

6. 实际案例:从相机到显示的完整流程

下面给出一个典型的实验步骤,帮助您快速验证板卡功能:

  1. 硬件连接

    • 将 CameraLink 相机通过 FPC 排线 插入开发板的 CameraLink 接口。
    • 将 VGA 接口的 VGA 线 连接到显示器。
    • 使用 串口线 将 UART0 连接到 PC,准备调试日志。
  2. FPGA 配置

    • 使用 Xilinx ISE 编译提供的示例工程(包括 LVDS 接收、VGA 控制、SRAM 控制)。
    • 通过 JTAG 下载 bitstream 到 Virtex‑4。
  3. 初始化 DS90CR288AMTD

    • 在 ARM 端打开 I²C,读取芯片 ID,确认通信。
    • 配置 Mode Register 为 Full 模式(0x01),并设置 Pixel Clock 为 85 MHz。
  4. 启动相机

    • 通过相机的控制软件(或串口)发送 Start Capture 命令。
    • 观察 FPGA 控制台输出的 HS/VS 同步计数,确保帧同步正常。
  5. 图像显示

    • 当 FPGA 将图像写入 SRAM 后,VGA 控制器会自动读取并送入 ADV7123。
    • 在显示器上应能看到实时的相机画面(默认 640×480)。
  6. 数据搬运到 ARM

    • 在 ARM 上启动 DMA,周期性读取 SRAM 中的图像块。
    • 将读取的数据保存为 raw 文件或直接送入 OpenCV 进行后处理(如去噪、边缘检测)。

7. 常见问题与排查

症状可能原因排查建议
VGA 无信号Pixel Clock 配置错误使用示波器检查 HS/VS 与 Pixel Clock 是否符合 VGA 标准
图像出现噪点LVDS 接收器时钟抖动检查 DS90CR288AMTD 的 PLL 锁定状态,必要时加装 时钟缓冲
ARM 读取数据异常SRAM 地址映射错误确认 FPGA 中的 Memory Map 与 ARM 的 EMC 配置一致
串口无输出UART 引脚未正确映射在 ISE 中检查 UCF 文件的 IO 配置,确保 TX/RX 与实际引脚对应
相机不工作CameraLink 模式不匹配使用相机手册确认其工作模式(Full/Base),并在 DS90CR288AMTD 中对应设置

8. 小结

这块 Virtex‑4 CameraLink 开发板通过 DS90CR288AMTD 双通道接收器、2 MB SRAM 缓冲以及 ADV7123 VGA 输出,为图像采集、实时显示以及后端 ARM/DSP 处理提供了完整的硬件链路。通过合理配置 FPGA 时钟、LVDS 接口以及外设 IO,用户可以轻松实现高带宽相机数据的捕获与搬运,适用于机器视觉、工业检测以及嵌入式 AI 前端等场景。

后续展望:若需更高分辨率或更大带宽,建议升级至 Virtex‑5/7 系列 FPGA,并结合 PCIeMIPI CSI‑2 接口实现更快的数据通路。


开发板正面
开发板背面