【小识堂】细说Xilinx SDSoC和HLS工具 - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 58|回复: 0

【小识堂】细说Xilinx SDSoC和HLS工具

[复制链接]

57

主题

57

帖子

619

积分

广州创龙

Rank: 8Rank: 8

积分
619
发表于 2018-12-6 17:35:12 | 显示全部楼层 |阅读模式
欢迎临创龙小识堂~
        (。・∀・)ノ゙嗨,又到了我们每周一课的时间了。。。
        今天小编Jane跟大家聊一聊:Xilinx SDSoC和HLS工具
       不一样的干货,喜欢的记得转载或留言哦*^-^*
细说Xilinx SDSoC和HLS工具
Software Define 的概念

近年来“Software Define”软件定义这个词持续火热,全球知名技术研究和咨询公司Gartner早在对2014年最有战略意义的十大技术与趋势做出预测时,便提出了软件定义一切(Software Defined Anything)的概念,他们预测这类技术会在未来三年里拥有巨大潜力,并在同行业中产生重大影响。两年后的今天回顾这一概念和技术的发展,不难看出,Software Define的确成为了行业风向标,其应用可谓无处不在。

相信一直关注赛灵思技术动向的工程师们对SDx这个词并不陌生,概括来讲,Xilinx的SDx指的是一系列新工具,专为系统和软件工程师而设计,可以使那些只有很少或根本没有FPGA设计经验的研发人员直接使用高级编程语言在强大的可编程硬件上进行设计,并且与那些嵌入芯片内部的或是在片外连接的业界标准处理器例如ARM或x86一起协同工作。可以看到SDx系列目前有三个主要成员,包括SDSoC、SDAccel和SDNet。

20180623024250219.png

SDSoC开发环境允许嵌入式和应用软件开发人员更广泛的利用Zynq SoC和MPSoCs的性能,提供超过100倍的软件性能加速。

SDAccel开发环境针对的是OpenCL,C和C++的设计应用,与那些CPU和GPU在数据中心和医疗影像等领域的实现方案相比,利用FPGA进行加速可获得高达25倍的性能功耗比提升。

SDNet是“软”定义网络的解决方案。具体来说就是SDNet结合赛灵思的全面可编程器件,打造出了“软”定义网络这样的交叉技术,从而将可编程能力和智能化功能从控制层扩展至数据层,不仅支持SDN,而且还可以突破性地支持任何软件定义网络架构。

从以上简要的介绍可以看出SDx系列的三个工具所针对的器件与市场各有侧重,但总体上都是面向软件和系统工程师的全面可编程抽象化设计工具,是赛灵思业界领先技术实力的进一步体现。

另外,Vivado HLS可以在很短的时间内生成与手工编码质量相当的RTL代码,并且允许用户将同样在C测试平台生成的测试向量用在C仿真和RTL验证中,从而大幅加速验证过程。对那些使用C/C++描述规范的算法设计类客户来说,这是理想的解决方案,可以将其已有的各类浮点或定点算法无缝实现到FPGA硬件中,比较典型的应用就是各类视频运算、加解密等DSP算法等等。


SDSoC开发环境介绍

SDSoC是Xilinx旗下,用于设计开发Zynq SoC和MPSoC异构嵌入式系统的基于Eclipse的集成开发环境,可以完成从C/C++到指定目标平台上功能完整的硬件/软件系统的编译、实现、调试执行等全过程。

由SDSoC产生的系统是高性能的,同时也是复杂的硬件/软件协同工作系统。要了解在这样的系统中应用程序的执行过程是比较困难的,因为你需要同时关注在处理器上运行的软件部分和在硬件可编程逻辑上执行的加速部分,以及数据在二者之间的传递过程和顺序等。
具体开发流程:


20180623025316141.jpg


Vivao HLS SDAccel


经过了三四年的上市推广,Vivado HLS早已不再是一个全新的工具,我们已经有超过1000家成功的客户。HLS的灵活性和生产力优势是显而易见的,甚至赛灵思的IP开发部门在交付 Vivado 2015.1版本及以后的部分视频IP时也都是使用HLS从C/C++语言开始设计。

Vivado HLS可以在很短的时间内生成与手工编码质量相当的RTL代码,并且允许用户将同样在C测试平台生成的测试向量用在C仿真和RTL验证中,从而大幅加速验证过程。对那些使用C / C ++描述规范的算法设计类客户来说,这是理想的解决方案,可以将其已有的各类浮点或定点算法无缝实现到FPGA硬件中,比较典型的应用就是各类视频运算、加解密等DSP算法等等。

使用Vivado HLS可以实现真正意义上基于C语言的IP,通过HLS,我们可以把用户的C/C++以及System C算法以VHDL或Verilog的形式输出,然后通过Vivado IPI或SysGen等赛灵思的工具,整合到你的FPGA设计工程中去。也就是说,使用Vivado HLS可以更便捷高效地完成从高阶抽象语言C/C++到赛灵思FPGA可编程逻辑硬件的设计实现过程。

Vivado HLS不仅是简单的翻译工具或是综合工具,更为重要的是,我们可以将其产生的RTL以IP的形式导出到Vivado IPI中,或者直接调用HLS生成的RTL文件到另一个RTL项目,甚至是输出到DSP设计的SysGen工程中。

Zynq SoC器件架构
以下图片展示了赛灵思Zynq SoC器件的架构图。SDSoC所针对的器件就是包括Zynq SoC和下一代的MPSoC在内的多核异构可编程逻辑芯片。


2018062303035089.png


Zynq-7000系列是赛灵思推出的业界第一款将ARM A9双核处理器与28nm低功耗可编程逻辑紧密集成在一起的SoC产品。从图中可以可以看出左上角处理器所在的区域称作Processing System即PS,而其余可编程逻辑所在的区域则称作Programmable Logic即PL。

位于PS侧的ARM内部用硬件实现了AXI总线协议,提供GP、HP和ACP等性能各不相同的数个物理接口。而PL侧则需要使用可编程逻辑来搭建相应的AXI接口。在具体设计时,可以在Vivado IPI中使用赛灵思提供的IP如AXI-Stream等等来实现。此外,软硬件之间有数据交互的设计就牵扯到在软硬件之间如何进行数据搬移,这种情况下,我们还需要一个或数个DataMover,这也同样需要在PL侧使用可编程逻辑来搭建。



Zynq SoC 开发流程


之所以要花几页篇幅来介绍Vivado HLS的作用与Zynq的架构,就是为了更清楚地描述全面可编程Zynq SoC的开发流程。

对于以C/C++等高阶语言为起点来进行SoC开发的用户来说,由C/C++算法开始,首先需要对软硬件进行分区,选择哪些部分放入PL侧进行加速,哪些部分仍然在PS侧用软件实现。对那些指定到放入可编程逻辑上用于硬件加速的部分,还需要完成C代码到RTL IP的转换。接下来,就是完成软/硬件之间的连接,包括使用怎样的DataMover、PS与PL之间的接口如何配置等,接下来还要完成配套的软件驱动程序。所有这些往往牵扯到数个不同团队和专业人员的通力合作,需要通过数次迭代来探索最佳的实现方案和系统架构。这个流程图很清晰地描绘了SoC的开发流程,每一步都是耗时耗力的工作。


20180623030604208.png


不使用SDSoC的开发流程

具体到每一步的工作来看,传统的Zynq设计流程大致分为五个步骤:

20180623030621844.png

首先,系统架构师来决定将哪些部分用于软件实现,哪些部分放入硬件加速,即所谓的软硬件分区。划分为硬件实现的功能将需要使用RTL代码来开发,或是使用HLS将C/C++代码综合成Vivado中可实现的IP。

然后,要在Vivado IPI中搭建DataMover和接口。

然后是应用软件和驱动程序的开发。这无疑是一个十分耗时的过程,需要多个部门和团队之间的设计切换。

有时候,即便这样完成后的设计可以正常工作,却可能无法满足你在吞吐量、延迟或面积等方面的设计性能要求。此时就可能需要通过修改系统连接来重新搭建硬件架构来对系统性能进一步优化。但这么做,又将导致软件应用程序和驱动程序的变化。因此,你往往需要与多个软件和硬件团队紧密合作,通过多次迭代设计来试着满足最终需求。

在某些情况下,设计不能满足你的性能要求的原因在于软件性能不够,或是硬件的占用率太高。这时候,你就需要返回到最初的设计,重新修改软/硬件分区方案,然后前面所说的硬件实现,系统连接,软件驱动等所有步骤都要重新再来一边,这势必要求更多的团队一起配合,改变设计来探索另一种架构,而且可能面临更多次的设计迭代,进一步拉长设计周期。

毫无疑问,用在系统优化上的时间对time-to-market的影响巨大。此外,我们也注意到在Zynq SoC的设计中,用户最关注的部分往往是算法的最终实现和算法模块的优化,包括IP或是软件功能块。因此,SDSoC的设计理念也致力于解决这些用户最关注的问题。



应用了SDSoC的开发流程


如图所示,在应用了SDSoC的Zynq设计流程中,工具可以自动搭建软硬件之间的通讯部分,包括DataMover、软件驱动程序和硬件连接接口。工具还可以将整个开发过程抽象到C/C++的应用层面,以C/C++为起点来进行算法开发,当然,工具也可以调用以传统的IP方法开发的算法模块,包括已经由Vivado HLS转换完成的。


总结


对于SDSoC和SDAccel和SDNet和HLS工具而言,SDNet是最容易区分的,SDSoC是将C,C++转化成软件/硬件函数,进而决定这些函数是在PS端还是PL端口执行。我们可以通过SDSOC系统来决定数据量是在软件函数或者硬件函数中处理。为了达到高性能,每一个硬件函数都在一个独立的线程中处理。这里SDAccel和HLS可能在功能上有所相近,所以需要用心区分。

Vivado HLS可以在很短的时间内生成与手工编码质量相当的RTL代码,并且允许用户将同样在C测试平台生成的测试向量用在C仿真和RTL验证中,而SDAccel™ 开发环境针对的是OpenCL™,C和C ++的设计应用用于设计开发Zynq SoC和MPSoC异构嵌入式系统的,可以完成从C/C++到指定目标平台上功能完整的硬件/软件系统的编译、实现、调试执行等全过程。从这两段话中可以很容易分析出具体的区别,首先就是SDAccel环境支持的编程语言更丰富,其次就是两者所做的工作和功能并不冲突,而且各有优点。


本文来源于:CSDN博客


  小编Jane,今天就先为大家讲解到这里。后续更加精彩!敬请留意。



想更多地了解创龙,欢迎与我们联系:

    销售邮箱:sales@tronlong.com
    技术邮箱:support@tronlong.com
    创龙总机:020-8998-6280
    技术热线:020-3893-9734
    创龙官网:www.tronlong.com
    技术论坛:www.51ele.net

    线上商城:https://tronlong.taobao.com



我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有0人回答
20180623025454830.jpg
20180623025503703.jpg
20180623025858849.jpg
20180623025907302.jpg
20180623025917285.jpg
20180623025924669.jpg
最近访问 头像模式 列表模式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号-1  

GMT+8, 2018-12-19 14:30 , Processed in 0.162352 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表