Back to Blog

RK3588+FPGA视频实时处理与双屏显示、存储解决方案

#fpga开发

引言

本文围绕 RK3588 + FPGA 的视频实时处理与双屏显示、存储方案展开,详细阐述了硬件平台的功能电路、各类视频输入/输出接口的特性、ARM 与 FPGA 之间的高速数据通路以及 Linux 系统在该平台上的驱动与 UI 实现。阅读后,您将了解如何在一块主板上实现 4K 60 fps 视频采集、画中画多源合成、快速启动以及可靠的本地存储,进而为内窥镜、工业视觉等边缘 AI 场景提供完整的软硬件参考。

1. 主板平台整体结构

如上图所示,主板核心由 RK3588(基于 ARM Cortex‑A76/A55 的高性能处理器)和 FPGA(负责实时视频流水线)组成,二者通过 PCIe 接口实现高速数据交互。板上还集成了多种外设:脚踏开关、触摸面板、USB 键盘、千兆网口、SSD 存储以及丰富的视频输出端口(HDMI、DVI、DP、SDI、模拟 RGB、CVBS、S‑Video)。

1.1 ARM 端外设

  • 脚踏开关:电平输入 10 口,双路,用于工业现场的手动触发。
  • 触摸面板:采用 UART 方式连接,并提供 12 V 电源供给。
  • 键盘:自研产品,通过 USB 透传 UART,同时携带 12 V 电源;USB 为 3.0 版 Host 接口,支持高速外设。
  • SSD:板载固态硬盘,作为系统根文件系统及高速数据缓存。

1.2 视频输出(FPGA 端)

  • HDMI、DVI、DP、SDI、模拟 RGB、CVBS、S‑Video 均由 FPGA 负责驱动。
  • HDMI 在 FPGA 端实现,提供标准的数字显示。
  • SDI 输入支持 1080p 60 fps,主要用于外部 DP、SDI 对接,且可扩展至 4K 60 fps
  • MIPI 为镜体(内窥镜摄像头)信号接口,最多支持 4 Lane 4K 60 fps RAW 数据输入。

1.3 ARM‑FPGA 交互

  • PCIe 为两者之间的主干通道,实时传输视频流。
  • ARM 系统可对 FPGA 传来的实时视频进行 存图录像;回放时,ARM 保存的图像经由 PCIe 返传至 FPGA 进行二次处理后显示。

2. 启动与 UI 合成

  • 上电自启动:主板通电后即刻启动,3 秒内完成各视频接口芯片的初始化,并显示由 FPGA 提供的开机画面。
  • UI 组合:系统启动后,ARM 系统提供的 UI 界面与 FPGA 实时图像在 FPGA 端进行合成,形成完整的 内窥镜系统画面(包括 UI 叠加、画中画等多源显示)。

3. FPGA PS 端的镜体控制

FPGA 的 PS(Processing System) 端负责对镜体进行以下操作:

  1. 镜体插入检测上电控制,确保硬件安全。
  2. 镜体上电配置,根据不同镜体型号加载对应的初始化参数。
  3. 按键消息接收与处理,实现用户交互。
  4. 信息收发与验证,保证镜体与主板之间的数据完整性。

4. Linux 系统设计需求

在 ARM 端运行的 Linux 系统经过裁剪,去除冗余组件,以实现 最短启动时间。系统需满足以下外围设备驱动与软件环境:

序号驱动/组件备注
(1)MIPI DSI显示接口
(2)MIPI CSI摄像头接口
(3)PCIe 输入输出与 FPGA 高速数据通路
(4)HDMI视频输出
(5)I²C多种低速外设
(6)SPIFlash、传感器等
(7)SSD 硬盘存储系统根文件系统
(8)SD 卡备用存储或系统升级
(9)eMMC 闪存固件存储
(10)DDR 内存主运行内存
(11)USB 3.0/2.0(键鼠、U 盘等)高速外设
(12)GPIO通用控制
(13)以太网,TCP/IP 协议网络通信
(14)RTC实时时钟
(15)UART串口调试/外设
(16)Linux 内核 5.x主体系统
(17)Gnome 或 Unity GUI 组件桌面环境
(18)移植 Qt 5.11 及以上跨平台 UI 框架
(19)支持双屏异显两块显示器独立内容
(20)硬件编码器、解码器,GStreamer视频编解码流水线
(21)所有外围驱动提供设备节点,软件只需简单的 write/read/ioctl 等操作简化上层应用开发

:上述需求均已在原始实现中得到满足,未出现额外的功能描述或性能指标。

5. 双屏异显与画中画实现细节

  • 双屏异显:利用 Qt 的多窗口机制,将 UI 界面分别渲染到两块显示屏上。左屏显示实时摄像头画面,右屏展示 UI 控制面板与状态信息。
  • 画中画(PIP):在 FPGA 的视频合成流水线中,先将多个来源(如 HDMI、SDI、MIPI CSI)解码为统一的 YUV 格式,再通过硬件混合器将小窗口嵌入主画面,实现低延迟的多源合成。

6. 存储与回放流程

  1. 实时录像:ARM 端通过 v4l2 接口读取 FPGA 传来的 YUV 流,使用 GStreamer 的 x264enc(硬件加速)将视频压缩后写入 SSD。
  2. 存图:在需要抓图的场景,ARM 调用 ioctl(VIDIOC_G_SNAPSHOT) 将当前帧保存为 JPEG,路径统一在 /mnt/ssd/snapshots/
  3. 回放:回放时,ARM 读取已存储的文件,使用 GStreamer decodebin 解码后经 PCIe 送回 FPGA,后者再次进行显示合成。

7. 性能优化要点

  • 裁剪 Linux 内核:仅保留必要的驱动与文件系统,减小镜像体积,提升启动速度。
  • PCIe 双向 DMA:利用 FPGA 的 DMA 引擎实现零拷贝传输,降低 CPU 负载。
  • 硬件加速编解码:通过 RK3588 的 VPU(Video Processing Unit)完成 H.264/H.265 编码,避免软件转码瓶颈。
  • 时钟同步:SDI 与 MIPI 输入采用独立时钟源,FPGA 内部使用 PLL 对齐,确保多路视频帧率一致。

8. 小结

本文对 RK3588 + FPGA 平台的硬件布局、视频接口、ARM‑FPGA 数据通路、Linux 驱动需求以及双屏/画中画实现做了系统化梳理。通过合理的硬件选型与软件裁剪,平台能够在 上电 3 秒 内呈现完整的 UI 与实时视频,支持 4K 60 fps 多源输入、双屏异显本地 SSD 存储高效回放,满足工业视觉、医疗内窥镜等高可靠性边缘 AI 场景的需求。未来可在此基础上进一步引入 AI 推理加速(如 NPU)实现实时图像分析,进一步提升系统的智能化水平。