Virtex-4 cameralink开发板PCI图像采集卡定制FPGA-HDMI编码-LVDS相机
Virtex‑4 CameraLink 开发板概览与使用指南
本篇文章聚焦于一款基于 Xilinx Virtex‑4 FPGA 的 CameraLink 开发板,详细介绍其硬件组成、支持的传输模式以及常见的应用场景。阅读后,您将了解如何在 ARM/DSP 系统上获取 CameraLink 相机的图像数据,并掌握板上 VGA 输出与 LVDS 接口的基本使用方法。
1. 开发板核心特性
| 项目 | 说明 |
|---|---|
| FPGA | Xilinx Virtex‑4(适用于高带宽图像处理) |
| CameraLink 接口芯片 | DS90CR288AMTD 双路,提供 Full 与 Base 两种模式 |
| 支持模式 | Full 模式(每像素 8‑bit,最高 85 MHz)Base 模式(每像素 8‑bit,最高 45 MHz) |
| 板载 RAM | IS61LV25616AL ×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)图像的临时缓存。
典型的数据流路径如下:
- CameraLink 采集 → DS90CR288AMTD LVDS 接收
- LVDS → FPGA(使用 Xilinx 的 LVDS 接口 IP)
- FPGA 逻辑:
- 采样时钟同步(使用 PLL 产生 85 MHz)
- 像素拼接与行同步(HS/VS)
- 写入 SRAM(使用 Block RAM 作为写入缓冲)
- ARM/DSP 读取:通过 外部总线(如 EMC 或 PCIe)读取 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 端则可直接通过 EDMA 或 LLC 接口实现高速搬运。
6. 实际案例:从相机到显示的完整流程
下面给出一个典型的实验步骤,帮助您快速验证板卡功能:
-
硬件连接
- 将 CameraLink 相机通过 FPC 排线 插入开发板的 CameraLink 接口。
- 将 VGA 接口的 VGA 线 连接到显示器。
- 使用 串口线 将 UART0 连接到 PC,准备调试日志。
-
FPGA 配置
- 使用 Xilinx ISE 编译提供的示例工程(包括 LVDS 接收、VGA 控制、SRAM 控制)。
- 通过 JTAG 下载 bitstream 到 Virtex‑4。
-
初始化 DS90CR288AMTD
- 在 ARM 端打开 I²C,读取芯片 ID,确认通信。
- 配置 Mode Register 为 Full 模式(0x01),并设置 Pixel Clock 为 85 MHz。
-
启动相机
- 通过相机的控制软件(或串口)发送 Start Capture 命令。
- 观察 FPGA 控制台输出的 HS/VS 同步计数,确保帧同步正常。
-
图像显示
- 当 FPGA 将图像写入 SRAM 后,VGA 控制器会自动读取并送入 ADV7123。
- 在显示器上应能看到实时的相机画面(默认 640×480)。
-
数据搬运到 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,并结合 PCIe 或 MIPI CSI‑2 接口实现更快的数据通路。

