close
当前位置: 物联网在线 > 技术文库 >

在Arty Z7上入门Xilinx SDSoC开发工具

 在Arty Z7上入门Xilinx SDSoC开发工具

作者:阿Q 来源:开源硬件创客坊微信公众号

细心的小伙伴们可能早已留意到,在Digilent今年全新出品的Zynq评估板中,无论是第二代经典入门级的Zynq™ Board - ZYBO Z7,还是创客最爱的ARTY Z7,都全面支持Xilinx SDSoC开发环境。意味着如果你是一名系统或软件工程师,现在无需深度的硬件专业知识,就能广泛地利用Zynq® SoC,畅享超过100倍的软件性能加速。

本篇干货教程中,我们就将带你入门了解如何使用Xilinx SDSoC工具来创建嵌入式C/C++/OpenCL应用开发,并实现直接在ARTY Z7嵌入式视觉开发平台的器件上进行软件设计。

SDSoC软硬协同设计与其开发流程

由于集成了ARM处理器内核与可编程逻辑,对于众多应用开发而言,Zynq 非常的灵活。这意味着开发人员可以将设计按不同的元素来优化划分,例如将其中那些高层次决策的部分放入ARM内核(PS端),并将诸如图像处理流水线等需要加速的部分用可编程逻辑(PL端)来实现。

当然,传统的Zynq开发流程会将Vivado和SDK分离开来,这种方法很难在可编程逻辑(PL)和处理系统(PS)之间分配功能,因此无法获得最优的系统性能。

通过SDSoC,则可以解决上述问题。SDSoC是一个系统最优编译器,支持软件定义的整个系统开发,包括PS和PL。标准的SDSoC开发流程如下:
1. 使用高层次语言开发应用
2. 使用提供的性能监视器来分析设计从而确定性能瓶颈
3. 使用SDSoC将造成性能瓶颈的功能用可编程逻辑来实现加速
4. 重新验证性能,如果有必要也可以加速其它功能模块

正是因为高层次综合(HLS)和互联框架的结合才使得各种功能模块可以在PS和PL之间轻松的转换:

使用Vivado HLS加速某个功能模块

分析通信功能

建立AXI通信

生成软件存根

 在Arty Z7上入门Xilinx SDSoC开发工具

为了能够使可编程逻辑获得最佳的性能,我们需要给加速的功能模块定义一些优化参数,这样才能够确定HLS工具执行哪些优化操作。我们可以使用高层次语言(比如C/C++/OpenCL)来开发基于Zynq的设计。为了支持SDSoC的使用,我们需要一个面向SDSoC的基础平台来定义底层硬件和软件环境。

对于Arty Z7,点击: ,在“下载代码”按钮中可以找到Arty Z7对应的SDSoC基础平台,下载之后就可以在Arty Z7上开发相关的应用了。

创建一个新的SDSoC工程

在这一教程中,我们将探究如何使用SDSoC平台来加速矩阵乘法的性能。

使用SDSoC工具创建一个新的SDSoC工程,具体操作步骤如下:File -> New -> Xilinx SDx Project。这会打开一个新工程的对话框,包括支持的平台规范、操作系统选择和示例应用选择。详细图解如下。

创建一个新工程:

 在Arty Z7上入门Xilinx SDSoC开发工具

选择Arty7 Z7-20作为硬件平台。这里,在新工程对话框的第二页选择一个新的平台,点击添加自定义平台选项(add custom platform)。然后对应找到已下载好的Arty Z7-20平台,添加好后这个平台就能在构建列表中看到,在此基础上我们可以选择它应用到我们的工程中:

 在Arty Z7上入门Xilinx SDSoC开发工具

选择操作系统(OS)和目标CPU:

 在Arty Z7上入门Xilinx SDSoC开发工具

然后选择示例应用:

 在Arty Z7上入门Xilinx SDSoC开发工具

SDx项目设置页面

完成项目新建之后,将在SDSoC开发环境中看到SDx项目设置页面。我们使用这个项目设置选项卡可以在PS和PL之间转移功能。实现方式是:选择“Add HW Function”按钮,然后选择所需要移植到PL中的功能。

如果我们想将原本在PS中运行的功能转移到PL中来实现加速,那么我们应当遵循以下几条规则:

这个功能不能包含任何操作系统级的系统调用

这个功能必须完整

C结构体需要有界并固定大小

结构体的实现是明确的

在项目设置控制面板上,我们也可以控制加速模块和PL与PS之间数据移动网络传递数据的操作频率。

SDSoC Project Settings – 此界面显示的是SDSoC主要的控制功能:

 在Arty Z7上入门Xilinx SDSoC开发工具

Add HW Function界面 – 显示可以用于加速的函数:

 在Arty Z7上入门Xilinx SDSoC开发工具

预估性能选项与启动调试器


(责任编辑:ioter)

用户喜欢...

Xilinx Zynq开发--修改官方的根文件系统

#前段时间在做zynq702评估的时候,提出了一种省事的制作和修改根文件系统的方法: #用dd命令将官方uramdisk----->ramdisk #或者直接用官方的ramdisk ,解压后得到ramdisk.image #1.将ramdisk 挂载到/mnt下...


Xilinx中的xapp1052理解

xapp1052是xilinx官方给出的一个有关DMA数据传输的样例,用于PC端和FPGA端之间的DMA数据传输。首先需要说的是,xapp1052并不是一个完整的DMA数据传输的终端硬件设计,这在下面会有详细解释。 首...


Xilinx FPGA复位浅析

1. 普通逻辑的复位 对于xilinx 7系列的FPGA而言,flip-flop支持高有效的异步复/置位和同步复位/置位。对普通逻辑设计,同步复位和异步复位没有区别,当然由于器件内部信号均为高有效,因此推...


Xilinx Vivado Zynq Pldma APB控制线调试

在xilinx vivado zynq pldma PL部分ILA调试中,观测APB总线上的数据是正常的,但PLDMA没有成功,分析代码发现在HP_DMA模块中使用m_apb_pclk与m_apb_presetn为悬空状态。由于Avnet的例程建立在2014年,所以使...


Xilinx petalinux2015.4安装流程

一直以来在Xilinx Zynq上进行Linux开发使用的是Digilent提供的linux源码,而近来发现petalinux也成为免费软件了,官网描述如下 “The PetaLinux Tools License is no longer required. Users can install and use PetaLinux...


Mellanox网卡嵌入Xilinx FPGA将降低背板插槽数量与CPU周期占用

Mellanox公司的下一代Innova网络适配器不仅将整合强制性高速接口,同时亦将嵌入一块Xilinx FPGA芯片。 分流工作负载已经成为Mellanox适配器发展策略中的一项重要组成部分,而这显然也迎合了一...


xilinx vivado zynq pldma PL部分ILA调试

通过前面的PL DMA设计,在SDK中运行,很正常的没有运行起来(block design与source desing都是自己手敲,明显的错误已经改正,能够生成bit文件启动SDK调试)。 首先在PL部分调试,作为PL DMA的控制...


Xilinx Zynq ZC702学习总结

Xilinx zynq zc702开发: 一、zynq开发整个生态系统搭建: 1.基础资料获取: https://github.com/Xilinx/ (包括:交叉编译工具,linux kernel源码,u-boot源码, device-tree源码, qemu, gdb等等) (提供 了几乎所...


让工厂更智能——Xilinx工业解决方案将集中亮相2017工博会

赛灵思公司(Xilinx, Inc. (NASDAQ:XLNX))宣布参展2017年11月7日即将在上海举行的工博会“2017 IAS 工业自动化展”, 围绕“赛灵思让工厂更智能”为主题现场演示八大工业解决方案,覆盖赛灵思最...


Xilinx RFSoC凭借先进技术的最佳运用荣膺ARM TechCon创新奖

赛灵思新型RFSoC产品系列完美集成了RF射频信号链以及FPGA逻辑和多核多处理ARM子系统 赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))今天宣布,其Zynq® UltraScale+™ RFSoC产品线凭借对先进技术的最佳运用...