开发者分享|基于 VDMA 的远程图像采集系统参考设计

科技   2024-05-14 18:42   中国香港  


本文作者:AMD 工程师 Jackie Gao


简介


本文参考设计基于 AMD ZYNQ 7000 Device, 使用 VDMA 做原始图像采集系统,在 Petalinux 下做服务器,通过 Socket 发送图像至 Windows 或者 Linux 上位机。


作为验证,可以连接 CMOS,或者使用 AXI TPG 生成仿真的图像数据。


教程中所有涉及的设计及代码均在 Windows 和 Linux 平台下作了验证。


系统设计


1. 系统设计框图参考如下:


a. 通过 Video In to AXI4-Stream 将 CMOS 输出的 VSYNC,HSYNC 以及数据信号转换成视频流。注意 CMOS 的输入时钟 PCLK 与 AXI4-Stream 工作在不同的频率。

b. 紧跟其后面实例化了一个 AXI VDMA,用于接收输出的视频流。AXI VDMA 通过其 M_AXI_S2MM 端口连接至 AMD ZYNQ™ 7000 Device 的 HP0 端口,以访问 PS 侧的 DDR 控制器,用作 VDMA 的 Frame Buffer。


由于图像在传输过程中可以会出现当前的 Frame Buffer 被 VDMA 再次写入的情况,所以我们将 Frame Buffer 数量调至16,以减小 图像被污染的概率。如果想完全解决这个问题,需要配置 VDMA 的 GenLock 使用,我们会在之后的设计的讲解。



c. 系统还实例化了一个 AXI IIC 控制器,用于初始化 CMOS 的寄存器,使其能够正确的工作在期望的频率。也可选用 PS 侧的 IIC 控制器。


2. BD 中需要分配各个 IP 地址如下,可以用 AMD Vivado Design Suite 的自动地址分配工具完成。


软件架构


系统框图


开发板上运行 Petalinux,用作视频的服务器。在 Windows/Ubuntu 上位机位移植 Embeddedsw,并通过 Socket 配置 CMOS 和接收图像。最后把图像通过 QT 显示。


环境需求


硬件环境

  • AMD ZYNQ™ 7000 Device

  • OV5640 或者 AXI TPG仿真

  • Windows10/11 或者 Ubuntu20.04 主机


软件环境

  • AMD Vivado Design Suite 2022.2

  • Petalinux 2022.2

  • CMake > 2.15

  • OpenCV3.3.1

  • QT5.15.2

  • Windows + Visual Studio 或者 Linux + GCC


代码结构


硬件

  • HW 文件夹里面里面包含 AMD Vivado Design Suite 工程,直接用 AMD Vivado Design Suite 2022.2 打开。

  • 打开后综合实现,并生成 Bitfile。


固件

  • 此参考设计用 Petalinux 制作系统启动镜像,完整的 Petalinux 工程位于 FW 目录下。

  • 执行 petalinux-build 可以编译。

  • 执行 petalinux-package –boot –u-boot –force –fpga XXX.bit 生成 BOOT.BIN文件


软件

  • axi vdma 和 axi iic 的驱动软件移植自 embeddedsw,主要的改动包括修改 xil_io.c 和 xil_mem.c 文件,用 Socket 的驱动替换默认的 Xil_In32 和 Xil_Out32 的实现,以及内存读写的功能。

  • 软件支持 Windows 和 Linux 的主机,采用 Cmake 环境。如果在 Windows 下,可以选择 Visual Studio 作为编译工具。编译过程如下:

    1.cd sw

    2.mkdir build

    3.cmake .. && make


测试结果


  • 在 Petalinux 下生成的 BOOT.BIN 文件放成 SD 卡,启动开发板。

  • 运行 QT 应用程序,可以看到图像可以被正确的采集。



请点击阅读原文,查看并下载相关附件。


AMD 自适应 SOC 及 FPGA 中文技术支持社区

欢迎您访问本社区论坛:

[https://support.xilinx.com/s/?language=zh_CN]

我们希望能帮助您快速找到所需内容。本网站是AMD 自适应 SoC 及 FPGA 支持资源登录页面,其中包括我们的知识库、社区论坛以及指向更多内容的链接。搜索并探索您所选主题的内容,然后登录以查看更多支持选项。



XILINX开发者社区
Xilinx开发者社区源于社区,服务社区,是面向广大开发者与产学研合作的平台,以技术为驱动,创建共享知识社区。(注: Xilinx is now a part of AMD)
 最新文章