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的过程。

相关推荐
100个铜锣烧4 小时前
高级提示技术:Chain-of-Thought与ReAct——让大模型学会“思考”和“行动”
人工智能·大模型·提示词工程
JackHCC4 小时前
快手OneRetrieval:可编辑生成式电商召回
人工智能·机器学习
前端之虎陈随易4 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·vue.js·人工智能·typescript·node.js
QiLinkOS4 小时前
第三视觉理解徐玉生与他的商业活动(30)
大数据·c++·人工智能·算法·开源协议
武汉唯众智创5 小时前
当汉字成为心理CT:AI汉字联想投射分析的技术实现与心理评估价值
人工智能·ai心理健康·ai心理评估·本土化心理测评·校园心理健康解决方案·ai心理监测·多模态情绪模型
Longvox5 小时前
Agent为什么会死循环?
人工智能·ai编程
陈天伟教授5 小时前
FreeCAD 启动后小窗口闪现即退的解决思路
人工智能·机器人·工业设计
酒旅Agent开发实战6 小时前
AI 旅行规划助手如何接入真实酒旅数据:从自然语言到酒店预订的全流程 MCP 实战
人工智能·ai·旅游·skill·酒店api·机票api
workflower6 小时前
设备单元级(L1)实施路径
人工智能·线性代数·矩阵·机器人·开源
Dragon Wu6 小时前
ComfyUI Desktop 实例进入后一直loading的问题解决
人工智能·ai