你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

SDSoC开发环境简介

发布者:jackzhang 时间:2016-04-20 15:27:25

Software Define 的概念

 

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

 

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

 

sdx.pngtabel.PNG

 

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

 

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

 

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

 

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

 

        其中,专门用作提高赛灵思异构Zynq SoC以及MPSoC的设计生产力而生的SDSoC开发环境就是这篇短文将要介绍的重点,在以下的篇幅中,我们会为大家分析SDSoC主要针对的市场和应用,SDSoC的各种创新,应用SDSoC的好处和优势等。

 


Vivao HLS

 

        我们今天的主要内容是介绍SDSoC,但在开始之前,需要提一下Vivado HLS这个在高级抽象语言与底层硬件描述语言之间架起了一座桥梁的高阶综合工具。

 

        相信大部分赛灵思的用户对Vivado HLS已经不再陌生,甚至有可能已经是HLS的用户。的确,经过了三四年的上市推广,Vivado HLS早已不再是一个全新的工具,我们已经有超过1000家成功的客户。HLS的灵活性和生产力优势是显而易见的,甚至赛灵思的IP开发部门在交付Vivado 2015.1版本及以后的部分视频IP时也都是使用HLSC/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不仅是简单的翻译工具或是综合工具,更为重要的是,我们可以将其产生的RTLIP的形式导出到Vivado IPI中,或者直接调用HLS生成的RTL文件到另一个RTL项目,甚至是输出到DSP设计的SysGen工程中。

 

 

Zynq SoC 器件架构

 

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

 

zynq.png

 

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

 

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

 

 

Zynq SoC 开发流程

 

 

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

 

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

 

flow_wo_sdsoc.png

 

 

不使用SDSoC的开发流程

 

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

 

flow_wo_sdsoc1.png

 

        首先,系统架构师来决定将哪些部分用于软件实现,哪些部分放入硬件加速,即所谓的软硬件分区。划分为硬件实现的功能将需要使用RTL代码来开发,或是使用HLSC/C++代码综合成Vivado中可实现的IP。然后,要在Vivado IPI中搭建DataMover和接口。后是应用软件和驱动程序的开发。

 

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

 

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

 

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

 

 

上一篇 下一篇

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了