簡介
本文參考設計基于 AMD ZYNQ7000 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 ZYNQ7000 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 ZYNQ7000 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 VivadoDesign Suite2022.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
+關注
關注
25文章
5470瀏覽量
134198 -
Xilinx
+關注
關注
71文章
2167瀏覽量
121481 -
服務器
+關注
關注
12文章
9180瀏覽量
85468 -
圖像采集系統
+關注
關注
0文章
28瀏覽量
12485 -
vdma
+關注
關注
0文章
6瀏覽量
2730
原文標題:開發者分享|基于 VDMA 的遠程圖像采集系統參考設計
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論