
ZYNQ开发
文章平均质量分 92
亦梦云烟
高性能计算工程师
展开
-
Vitis AI修炼秘籍4. DPU IP的系统集成
一. Vitis硬件平台简介Xilinx提供了一些基础的开发板平台内嵌在Vitis IDE中,用户可以直接从这些platform创建应用程序。但如果是自定义的板卡或者想要部署更多加速器IP、配置不同的性能,我们就需要创建完全自定义的硬件平台。本文介绍创建Vitis AI硬件平台的基本步骤。硬件平台创建简介创建一个Vitis嵌入式平台通常有三步:创建硬件接口、创建软件组件和打包平台。当然每一步也都需要进行相应的准备工作和测试。整个流程如下图所示:各阶段简要描述如下: 步骤原创 2021-04-29 23:30:17 · 4590 阅读 · 1 评论 -
Vitis AI修炼秘籍3.开发板测试与Linux系统构建
经过前面的实验,我们已经基本摸清楚了Vitis IDE & Vivado的使用方法。在开始构建DPU与深度学习软件栈之前,我们先对我们拿到的开发板做个体检(硬件全面测试),由于大部分深度学习软件框架都是运行在Linux, android或IOS等嵌入式系统上,因此测试完硬件后还需要搭建一个Linux系统以供后续开发使用。一. 硬件搭建根据开发板上的硬件资源创建板级支持包,进行测试。出ZYNQ处理器外,需要在Vivado中配置的硬件还有DDR,NANDFlash, Ethernet, Uart原创 2021-04-18 10:06:24 · 1151 阅读 · 0 评论 -
Vitis AI修炼秘籍2. 熟悉Vitis软件的使用之LED驱动
深度学习DPU IP最低配置下,至少需要38457 LUT,而ZYNQ 7010只有35500 LUT,本来笔者是有一块7Z010的开发板,奈何资源不够,无法使用Vitis的核心功能。由于笔者比较穷,买不起ZED Board这样的贵的开发板,因此,笔者花了180RMB在某鱼上淘了一块矿机上使用的ZYNQ控制板,板子上的芯片正好是ZYNQ 7020 (XC7Z020CLG400)。为了Bring up这块暂且称之为开发板的板子,取名为ANT开发板,本篇笔记以点亮图中所有的LED为目的,回顾下Vivad原创 2021-04-11 19:04:42 · 3161 阅读 · 0 评论 -
Vitis AI修炼秘籍1.Vitis统一软件平台简介
Xilinx在2012年推出了针对其FPGA产品的开发套件Vivado,彻底的完善了FPGA硬件开发堆栈的基础,Vivado相关的参考资料可以查看笔者的ZYNQ学习之路系列笔记。随着Xilinx每一代芯片架构的发展,Vivado也在不断的增加新功能,比如针对嵌入式开发的SDSoC,为数据中心部署开发的SDAccel,随后,机器学习的爆发式发展,Xilinx又推出了AI推断的DPU(来自收购的深鉴)以及相关工具链DNNDK。虽然针对FPGA硬件的开发难度已经降低了不少,但使用这些工具链需要对硬件的设计具备比较翻译 2021-04-11 18:56:01 · 2983 阅读 · 0 评论 -
ZYNQ学习之路20.DNNDK简介与环境配置
背景:深鉴科技的DNNDK,是一个基于xilinx FPGA的SDK端的深度学习开发工具包,能够快速的实现深度学习的硬件化。目的:了解深鉴科技DNNDK内容。一. 简介DNNDK™ (Deep Neural Network Development Kit)是深鉴科技面向AI异构计算平台 DPU (Deep learning Processor Unit,深度学习专用处理器)自主研发的原创深度学习SDK, 涵盖了神经网络Inference阶段模型压缩、编译优化和高效运行时支持等各种功能需求,为 D原创 2021-04-01 23:49:31 · 3207 阅读 · 0 评论 -
ZYNQ学习之路19.在SDx中使用xfOpenCV图像加速处理
简介Xilinx的reVISION栈包含了一系列开发平台、算法和应用的开发资源,它支持流行的神经网络包括AlexNet, GoogleLeNet, VGG, SSD和FCN等,并且该视觉库提供了用于创建和实现CNN神经网络层的库,机器学习的元素被实现为一系列硬件加速的函数库,在应用开发层,Xilinx提供了标准的框架和库包括Caffe和OpenCV, reVISION栈同时也提供了第三方平台的开发平台,包括很多的传感器。xfOpenCV是使用Xilinx SoC和FPGA优化硬件加速的OpenCV函原创 2021-04-01 23:04:07 · 2221 阅读 · 0 评论 -
ZYNQ学习之路18.创建基于Linux系统的SDSoC平台
在第三节中,我们成功创建了ZYNQ裸机下的SDSoC平台文件,但在实际使用中,要求使用Linux操作系统。本节介绍如何创建基于Linux系统的硬件平台。一、创建Linux启动文件使用PetaLinux创建Linux启动文件,在PetaLinux学习02-创建PetaLinux工程.note中有详细的介绍。本节只做操作流程介绍。1.1 使用PetaLinux创建Linux启动文件首先确保使用vivado创建的工程功能完整正常,导出HDF文件,在PetaLinux环境中操作:$ petal原创 2021-03-31 23:33:07 · 522 阅读 · 0 评论 -
ZYNQ学习之路17.自定义SDSoC硬件平台
前言在前面的学习中,我们已经学会了使用Vivado及SDK开发环境,熟悉了硬件开发与Linux软件驱动之间的联系及开发流程。本系列教程我们学习SDSoc的开发,在SDSoc IDE中,Xilinx为我们集成了比较流行的开发板硬件平台,如果我们使用的是其中的一个,可以直接使用。但笔者使用的是米尔科技的7z010开发板,在开发之前首先要定义我们自己的硬件平台,作为之后创建应用的模板工程。一个SDSoc Platform工程应该包含如下文件:硬件支撑文件(DSA):A device support a原创 2021-03-29 23:46:02 · 1981 阅读 · 1 评论 -
ZYNQ学习之路16.SDSoC开发环境介绍
本节教程介绍如何使用SDSoC软件创建硬件平台,并且使用它来加速程序函数。开发环境:操作系统: windows10 64bitSDSOC:2018.2串口: USB-TTL, CP210x开发板:米尔科技Zturn board(XC7Z010-CLG400)一、SDSOC IDE开发环境简介本节介绍如何使用SDx IDE已一个已知的模板创建一个新的工程,标记某个函数使其使用硬件来时现,编译硬件设计并且在开发板上执行。1.1 创建新的工程step1. 从桌面的快捷图标启动S原创 2021-03-28 17:20:46 · 1757 阅读 · 0 评论 -
ZYNQ学习之路15.基于SDSoC的开发环境应用介绍
本节开始学习Xilinx另一个很牛逼的软件工具SDSoC,它到底有多强,在学习使用之前读者还是有必要了解一些该软件的功能以及使用它开发的优势。此文为转载其他新闻/博客内容!如有雷同必定是笔者搬运之~近年来“Software Define ” 软件定义这个词持续火热,全球知名技术研究和咨询公司Gartner早在对2014年最有战略意义的十大技术与趋势做出预测时,便提出了软件定义一切(Software Defined Anything)的概念,他们预测这类技术会在未来三年里拥有巨大潜力,并在同行业中产.转载 2021-03-24 23:39:13 · 1066 阅读 · 3 评论 -
ZYNQ学习之路14.时序仿真
在编写ZYNA的FPGA逻辑代码过程中,往往需要对时序进行分析。时序信号的分析一般通常有软件仿真和在线仿真两种,本文介绍这两种方法的具体使用方法。一.Vivado软件时序仿真建立时序仿真的步骤:1. 建立工程后,添加源文件,本文以一个非常简单的模块——生成1Hz方波,进行说明。module clock_1Hz( clock, //input system clock,30MHz clk //output 10Hz clock, 10Hz ); .原创 2021-03-13 17:10:37 · 2788 阅读 · 0 评论 -
ZYNQ学习之路13.创建PetaLinux工程
在前面的学习中,我们知道如何根据PetaLinux BSP设计去创建一个工程,现在,我们结合Vivado设计我们自己PetaLinux系统。开发环境:Ubuntu16 64bit, PetaLinux 2018.2, Vivado 2018.2硬件环境:米尔科技Zturn board(XC7Z010)一、配置硬件环境1.1 创建硬件工程Zynq-7000运行嵌入式Linux系统要求至少包含以下硬件外设:一个Triple Timer Counter(TTC) 至少32MB内存 串口原创 2021-03-08 23:22:17 · 2610 阅读 · 2 评论 -
ZYNQ学习之路12.PetaLinux开发环境搭建
简介PetaLinux是一个嵌入式Linux系统开发工具,用于设计Xilinx基于FPGA的SOC片上系统。本节为第一节,旨在介绍如何使用PetaLinux工具。软件环境: windows 10 64bit,VMware 12, ubuntu 16, Vivado2018.2硬件环境: 米尔科技Zturn board安装vmware后在其中安装ubuntu。一、安装PetaLinux开发环境安装PetaLinux要求:在非root权限下安装 PetaLinux依赖很多标准开发工原创 2021-03-08 23:00:05 · 2016 阅读 · 0 评论 -
Eclipse开发ZYNQ驱动程序
在虚拟机中的ubuntu中开发linux系统驱动程序,往往直接使用gedit编辑,makefile编译,而这种方法比较麻烦;Eclipse是开源软件框架,编辑器比较好用,配置好编译器后可以更加方便快捷的开发程序,本文介绍如何使用Eclipse开发Linux的驱动程序。本文的前提:安装按arm-xilinx-linux-gnueabi-编译器工具链。1. 建立C/C++项目工程,配置编译器为arm-xilinx-linux-gnueabi-gcc右键单击空白的工程文件名,Properties-&g原创 2021-01-31 00:08:01 · 739 阅读 · 5 评论 -
ZYNQ学习之路11.AXI DMA
一.AXI DMA简介AXI DMA IP核提供了AXI4内存之间或AXI4-Stream IP之间的内存直接访问,可选为分散收集工作模式,初始化,状态和管理寄存器等通过AXI4-Lite 从机几口访问,结构如图1所示,AXI DMA主要包括Memory Map和Stream两部分接口,前者连接PS段,后者连接带有流接口的PL IP核。图1 AXI DMA结构框图AXI DMA...原创 2020-03-08 14:01:11 · 6101 阅读 · 1 评论 -
ZYNQ学习之路9.USB总线学习(二)
Linux中USB驱动程序依然遵循标准的设备驱动模型——总线、设备、驱动。和I2C总线设备驱动一样,所有的USB驱动程序都必须创建的主要结构体是struct usb_driver,它们向USB核心代码描述了USB驱动程序,但这只是外壳,只实现了设备与总线的挂接,具体的USB设备是什么,如何实现,还需要编写相应的文件操作接口。本文详细介绍USB的驱动框架。一. USB设备基础知识1.1 US...原创 2020-02-05 21:19:08 · 4619 阅读 · 0 评论 -
ZYNQ学习之路8.USB总线学习(一)
通用串行总线(Universal Serial Bus)是连接计算机系统与外部设备的一种串行总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通信产品。USB总线是最复杂的总线之一,但其广泛使用。本文首先直接使用USB相关的驱动的应用,后面再具体开始编程做自己的USB驱动程序。一.USB概要1.1 USB的发展历程USB1.0最早是在1996年出现,速度只...原创 2020-02-05 20:59:12 · 8647 阅读 · 0 评论 -
ZYNQ学习之路7.CAN总线学习
CAN总线是控制器局域网(Controller Area Network)的简称,是国际上应用最广泛的现场总线之一,CAN总线协议已成为汽车控制系统和嵌入式工业局域网的标准总线。CAN总线有很多优秀的特点,比如:传输速度最高达1Mbps,通信距离最远到10Km,无损位仲裁机制,多主结构,理论上挂载到总线上的设备没有数量限制。因此掌握CAN总线协议是很重要的,本文简要介绍CAN总线协议,以Lin...原创 2020-01-30 13:51:16 · 11693 阅读 · 1 评论 -
ZYNQ学习之路6.I2C驱动设计
目录一. I2C总线简介1.1 I2C工作原理1.2 I2C工作时序二. I2C驱动架构三. Linux用户态I2C驱动设计3.1 i2c_dev3.2 ioctl控制3.3 与从器件的通信数据帧3.4 温度传感器例程四. Linux内核态i2c设备驱动五. 总结I2C是使用非常广泛系统总线之一,常用来连接板上多处理、传感器、外设配置接口等。本文以I...原创 2019-12-26 23:15:14 · 3374 阅读 · 0 评论 -
ZYNQ学习之路5.扩展PL端串口
在ZYNQ7000中,硬核只集成了两个串口外设,除去终端使用的串口,只剩一下一个串口可用,而在大多数应用中一个串口往往不能满足要求。使用FPGA模拟串口可以解决串口外设不足的问题,Xilinx提供了两种串口IP:AXI UART Lite和AXI UART 16550,使用这两个IP可以非常方便的使用扩展串口,并且Xilinx提供了Linux中的相应的串口驱动程序,符合tty标准设备。本文介绍这两...原创 2019-12-14 23:00:10 · 19759 阅读 · 1 评论 -
ZYNQ学习之路4.ZYNQ通过GP口读取PL内部RAM数据
实验环境:window 7 64 bit, vivado 2017.1, ZTURN board.参考手册:Xilinx Distributed Memory Generator 在ZYNQ开发中,经常需要PS与PL进行数据交互。当数据量比较大时往往需要先缓存一部分然后批量传输到Linux系统,否则中断响应时间无法满足要求,使用双端口RAM或许是一种不错的方法。本文详细描述P...原创 2019-12-08 15:51:28 · 6732 阅读 · 0 评论 -
ZYNQ学习之路3. 定制AXI IP核
想要发挥ZYNQ芯片的特长,让整个系统协同工作起来,就需要将PS与PL两部分结合在一起,在Cortex-A9核和FPGA逻辑资源之间建立通信的通道,这条通道就是AXI总线。ZedBoard推出的官方例子中已经介绍了如何将Xilinx做好的AXI总线IP(如AXI_Timer、AXI_GPIO等)添加到工程中,而下面就让我们一起来自己编写一个简单的AXI总线设备——读取板上的4个Sw...原创 2018-05-25 12:47:08 · 12926 阅读 · 11 评论 -
ZYNQ学习之路2. GPIO的使用
在ZYNQ7000中,GPIO的使用可以分为三种,即MIO、EMIO以及GPIO IP方式。其中MIO和EMIO方式是使用PS部分的GPIO硬件模块来实现GPIO功能,由于MIO是直接连接在硬核A9之上,它们可以输出三态(处理MIO7, MIO8外),并且支持IO复用,MIO共54个,引脚固定,大部分MIO用来作为外设(如ethernet, usb, qspi等)的引脚,因此MIO...原创 2018-05-24 19:21:06 · 4038 阅读 · 0 评论 -
ZYNQ学习之路1. Linux最小系统构建
开发环境:window10, vivado 2017.1, ubuntu 16.04, Eclipse+cdt硬件环境:米尔科技zturn board,zynq7z010本笔记详细介绍了开发ZYNQ7000系列的基础软件系统构建,介绍了Vivado的使用以及IP核的配置,最后搭建能让ZYNQ运行arm linux系统的软件环境,在今后的开发过程中将在此基础上进行。在完整搭建好本系统之后建议保存为模...原创 2018-05-24 10:13:31 · 14954 阅读 · 5 评论