KV260视觉AI套件--PYNQ-DPU

目录

[1. 简介](#1. 简介)

[2. DPU 原理介绍](#2. DPU 原理介绍)

[2.1 基本原理](#2.1 基本原理)

[2.2 增强型用法](#2.2 增强型用法)

[3. DPU 开发流程](#3. DPU 开发流程)

[3.1 添加 DPU IP](#3.1 添加 DPU IP)

[3.2 在 BD 中调用](#3.2 在 BD 中调用)

[3.3 配置 DPU 参数](#3.3 配置 DPU 参数)

[3.4 DPU 与 Zynq MPSoC互联](#3.4 DPU 与 Zynq MPSoC互联)

[3.5 分配地址](#3.5 分配地址)

[3.6 生成 Bitstream](#3.6 生成 Bitstream)

[3.7 生成 BOOT.BIN](#3.7 生成 BOOT.BIN)

[4. 总结](#4. 总结)


1. 简介

在《Vitis AI 环境搭建 & KV260 PYNQ 安装 & 要点总结_pynq vitis ai-CSDN博客》一文中,我们记录 PYNQ for KV260 配置要点,而 DPU 是使用 KV260 视觉 AI 套件的重要内容,DPU(深度学习处理单元)是KV260视觉AI套件的核心组件,它允许在Xilinx硬件平台上进行AI推理。

DPUCZDX8G

DPUCZDX8G 是专为 Zynq UltraScale+ MPSoC 设计的深度学习处理器单元 (DPU)。它是一个针对卷积神经网络优化的可配置计算引擎。引擎中使用的并行度是一个设计参数,可以根据目标设备和应用进行选择。从高层次来看,DPU 是一种微编码计算引擎,具有高效、优化的指令集,并且可以支持大多数卷积神经网络的推理。

KV260使用的 DPU 型号是:DPUCZDX8G,它支持的主要运算符:

  • Supports both Convolution and transposed convolution
  • Depthwise convolution and depthwise transposed convolution
  • Max pooling
  • Average pooling
  • ReLU, ReLU6, Leaky ReLU, Hard Sigmoid, and Hard Swish
  • Elementwise-sum and Elementwise-multiply
  • Dilation
  • Reorg
  • Correlation 1D and 2D
  • Argmax and Max along channel dimension
  • Fully connected layer
  • Softmax
  • Concat, Batch Normalization

2. DPU 原理介绍

2.1 基本原理

DPUCZDX8G 会在启动时从片外存储器中提取指令,用于控制计算引擎的操作。这些指令是由 Vitis AI 编译器生成的。

片上存储器用于缓冲器输入激活、中间特征映射和输出元数据,以达成高吞吐量和高效率的目标。这些数据会尽可能加以复用,以降低外部存储器带宽要求。对于计算引擎,会使用深度流水打拍式设计。处理元件 (PE) 会充分利用各种高精度构建块,例如,乘法器、加法器和累加器。

2.2 增强型用法

DSP 双倍数据速率 (DDR) 技巧可用于改善 DPU 可达成的性能。在此配置中,DPUCZDX8G 需采用 2 个输入时钟:1 个 1x 时钟用于通用逻辑,1 个 2x 时钟用于 DSP slice。

3. DPU 开发流程

本文介绍 DPUCZDX8G IP 在 Vivado 的开发流程。

3.1 添加 DPU IP

在 Vivado 中,进入 IP Catalog,右键单击并选择添加存储库,然后选择 DPUCZDX8G IP 的位置。

DPUCZDX8G IP 将出现在 IP 目录页面中:

3.2 在 BD 中调用

在Block Design 界面中搜索 DPUCZDX8G,并将 DPUCZDX8G IP 添加到块设计中。

添加后如下:

3.3 配置 DPU 参数

DPUCZDX8G 可配置为包含多个预定义的选项,包括 DPUCZDX8G 核的数量、卷积架构、DSP 级联、DSP 用量和 UltraRAM 用量。这些选项支持您设置 DSP slice(切片)、LUT、块 RAM 和 UltraRAM 用量。

3.4 DPU 与 Zynq MPSoC互联

DPUCZDX8G IP核心通过一个从属接口与外部通信。这些核心的数量由DPU_NUM参数决定,该参数可以在配置向导的"DPU核心数量"选项中设置。每个DPUCZDX8G核心配备了三个主要接口:一个用于指令提取,另外两个用于数据访问。

为了确保DPUCZDX8G可以有效地访问DDR存储,它可以通过AXI互连IP与处理器系统(PS)相连。但是,通过互连IP传输数据可能会增加延迟,这会影响DPUCZDX8G的性能。因此,如果PS有足够的AXI从端口,建议将DPUCZDX8G的每个主接口直接连接到PS,而不是通过AXI互连IP。

如果PS的AXI从端口数量不足,那么使用AXI互连进行连接是不可避免的。在这种情况下,两个用于数据访问的AXI主接口应该是高带宽的,而用于指令提取的AXI主接口则应该是低带宽的。通常情况下,所有用于指令提取的主接口都应该通过一个互连连接到PS的S_AXI_LPD端口。而用于数据访问的主接口则应尽可能直接连接到PS。对于DPUCZDX8G核心,建议将优先级较高的核心(例如DPU0)的主接口直接连接到PS中优先级较高的从端口(例如S_AXI_HP0_FPD)。

3.5 分配地址

DPUCZDX8G 所需的最小空间是 16 MB。DPUCZDX8G 从接口可分配至可供主机 CPU 访问的任意起始地址。

3.6 生成 Bitstream

在 Vivado 中的Generate Bitstream(生成比特流):

3.7 生成 BOOT.BIN

通过 Vivado 或 PetaLinux,可方便生成BOOT.BIN。

4. 总结

本文详细介绍了使用KV260视觉AI套件中的DPUCZDX8G深度学习处理单元(DPU)的环境搭建和开发流程。DPUCZDX8G是专为Zynq UltraScale+ MPSoC设计的,优化了卷积神经网络的计算引擎,支持广泛的运算符,使其成为执行AI推理任务的强大工具。文章从DPU的基本原理出发,解释了其工作机制,包括如何从片外存储器中提取指令以及如何在片上存储器中高效处理数据。

接着,描述了如何在Vivado中添加和配置DPUCZDX8G IP,包括调整DPU参数以满足特定应用需求,并详细说明了DPU与Zynq MPSoC互联的方法。此外,还提到了生成比特流和BOOT.BIN的过程。

相关推荐
愚公移码9 小时前
蓝凌EKP18产品:流程引擎技术篇之流程核心概念模型
java·人工智能·流程引擎·蓝凌
没有钱的钱仔9 小时前
pytorch_cuda安装
人工智能·pytorch·python
大模型最新论文速读9 小时前
06-11 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
xianghongtao01169 小时前
在你思考之前:System 0 与“认知殖民”——三种 AI 认知框架之争
人工智能·认知框架·认知殖民
私人珍藏库9 小时前
[Android] 视频下载鸟 v20.02 会员
android·人工智能·智能手机·app·工具·多功能
吨吨不打野9 小时前
梯度变化的数学解释
人工智能
SmartBrain9 小时前
编程助手工具自动化开发对比报告:OpenSpec、Claude Code、Cursor、PI
大数据·人工智能
weixin_550083159 小时前
全量的记忆压缩与意义保存
人工智能·深度学习·神经网络·transformer·agi
FPGA小徐10 小时前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
一个被程序员耽误的厨师10 小时前
04-实践篇-让AI生成可视化页面-ai-json-ui的落地实践
人工智能·ui·json