0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性

Xilinx赛灵思官微 来源:djl 作者:Daniele Bagni Nick N 2019-07-31 10:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

赛灵思 Zynq-7000 All Programmable SoC 系列代表了嵌入式设计的新局面,为嵌入式系统工程设计群体带来前所未有的高性能和灵活性。这些产品在单个器件上集成了特性丰富的双核 ARM Cortex-A9 MPCore 处理系统和赛灵思可编程逻辑。3,000 多个互联点将片上处理系统 (PS) 与片上可编程逻辑 (PL) 相连,使两个片上系统之间的性能达到了任何双芯片处理器 FPGA 都无法匹敌的高度。赛灵思在 2011 年发布这款 Zynq SoC 器件时,便立即得到了很多精通硬件设计语言和方法以及嵌入式软件开发的嵌入式系统工程师和架构师的追捧。如今,首款 Zynq SoC 已被用于无线基础设施、智能工厂和智能视频/视觉等多种嵌入式应用领域,并且快速成为高级驾驶员辅助系统约定俗成的标准平台。

为了让这款性能卓越的器件能够被具有很强软件背景但没有 HDL 经验的嵌入式工程师所用,赛灵思在今年年初推出了基于 Eclipse 的 SDSoC 集成开发环境,使软件工程师能够对 Zynq SoC 中的可编程逻辑和 ARM 处理系统进行编程。

我们仔细了解一下 Zynq SoC [1] 的特性以及软件工程师如何利用 SDSoC 环境来创建用任何其他“处理器+FPGA”系统均无法实现的系统设计。为进行研究,我们将使用包含一个 Zynq Z-7020-1 器件的赛灵思 ZC702 评估板 [2] 作为硬件平台。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


如图 1 所示,Zynq SoC 包含两大功能模块:PS(包含应用处理器单元、存储器接口、外设和互联)和 PL(传统的 FPGA 架构)。

PS 和 PL 通过与 ARM AMBA AXI4 接口兼容的互联链路紧密耦合在一起。四个高性能 (HP) AXI4 接口端口将 PL 连接到 PS 中的异步 FIFO 接口 (AFI) 模块,从而在 PL和 PS 存储器系统(DDR 和片上存储器)之间提供一条高吞吐量的数据路径。AXI4 加速器一致性端口 (ACP) 允许直接从 PL 主设备对 L1 和 L2 高速缓存进行低时延的一致性访问。通用 (GP) 端口包含可从 PS 和 PL 访问的低性能通用端口。

在传统的以硬件设计为核心的流程中,通过使用赛灵思的 Vivado Design Suite 在 Zynq SoC 上设计嵌入式系统大致需要四个步骤:

系统架构师确定硬件-软件分区方案。计算密集型算法最适合硬件。特性分析结果是鉴别性能瓶颈以及在数据移动成本与加速优势之间进行权衡研究的基础。

硬件工程师处理被分到硬件中的功能,并将它们转换或设计成 IP 核,例如,用 Vivado 取代 VHDL 或 Verilog ;用 Vivado 高层次综合 (HLS) 实现 C/C++ 高层次综合[3],或者用 Vivado System Generator for DSP 实现模型化设计 [4]。

然后,工程师使用 Vivado IP Integrator [5]创建整个嵌入式系统的模块化设计。整个系统的开发需要用到不同的数据移动工具(AXI-DMA、AXI Memory Master、AXI-FIFO 等),以及连接 PL IP 与 PS 的AXI 接口(GP、HP 和 ACP)。一旦 IP Integrator 中所有设计规则检查都通过,就可将项目导出至赛灵思软件开发套件 (SDK) [6]。

软件工程师使用赛灵思 SDK 开发针对 PS 中 ARM处理器的驱动程序和应用。

最近几年,赛灵思对 Vivado Design Suite 的简便易用性实现了显著提高,该套件能够让工程师缩短 IP 开发时间以及 IP 模块连接步骤(上述步骤 2 以及步骤 3 的部分内容)。就 IP 开发而言,采用这些最新设计技术(例如在 Vivado HLS 工具中实现 C/C++ 高层次综合;用 Vivado System Generator for DSP 实现模型化设计)可以显著缩短开发和验证时间,同时让设计团队能够使用高层次抽象探索更大的架构范围。对于使用 VHDL 或 Verilog 需要数周才能完成的设计,利用新型工具只需数天就能完成。

SDSoC 环境会自动安排所有必要的赛灵思工具,以生成针对 Zynq SoC 的完整软硬件系统,而且所需的用户介入程度很小。

赛灵思通过 Vivado IP Integrator 可进一步强化流程。Vivado Design Suite 的这个功能使设计人员只需要在图形用户界面 (GUI) 中连接 IP 模块,就可以设计复杂的硬件系统(嵌入式或非嵌入式),从而实现快速的硬件系统集成。

新的 Vivado Design Suite 功能可帮助设计与开发团队简化 Zynq SoC 的使用。但对于以硬件为中心的优化流程而言,要缩短探索不同数据移动工具和 PS-PL接口(步骤 3 的一部分)以及写入和调试驱动程序与应用(步骤 4)所需的开发时间,办法并不多。如果整个系统不能满足吞吐量、时延或占位面积等方面的设计要求,那么设计团队不得不修改步骤 3 中的系统连接,以重构硬件架构。这些修改会不可避免地导致步骤 4 中的软件应用发生变化。有些情况下,加速不足或者硬件利用率过高会迫使开发团队重新考虑最初的软硬件分区。多个硬件和软件团队将不得不再次反复设计系统,以探索可能满足最终要求的其他架构。

这些实例表明手动进行系统优化对上市时间的影响。系统优化对于紧密集成的系统(例如 Zynq SoC)很关键,因为瓶颈经常发生在 PS 与 PL 之间的系统连接上。

SDSoC 环境能大大简化 Zynq SoC 开发过程,可将步骤 2、3、4 实现高度自动化,以缩短总开发时间。该开发环境会生成必要的硬件和软件组件,用以同步硬件和软件并保存源程序语义,同时支持任务级并行处理和流水线化的通信与计算,从而实现高性能。SDSoC 环境会自动安排所有必要的赛灵思工具(Vivado、IP Integrator、HLS 和 SDK),以生成针对Zynq SoC 的完整软硬件系统,而且所需的用户介入程度很小。

假设我们已有一个针对 PS 的完全用 C/C++ 描述的应用,而且已经决定将哪些功能分配到 PL 以实现加速,那么 SDSoC 开发流程大致按照如下所示(图2):

SDSoC 环境使用快速估算流程(通过调用内含的Vivado HLS)构建应用项目。这样在数分钟内就能大致估算出性能和资源情况。

如果我们认为有必要,我们会用适当的指令优化 C/C++ 应用和硬件功能,并重新运行估算直到实现所需的性能和占位面积。

然后,SDSoC 环境构建整个系统。该过程会生成完整的 Vivado Design Suite 项目和比特流,以及一个针对 LinuxFreeRTOS 或裸机的可引导的运行时间软件映像。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性

用 SDSOC 环境进行硬件 VS 软件的性能估算

线性代数几乎在任何工程领域中都是基础而强大的工具,能够计算求解具有多维变量的方程组。例如,工程师可将线性控制理论系统描述为“状态”和“状态变换”矩阵。图像的数字信号处理是线性代数的另一个典型应用。尤其是,通过 Cholesky 分解进行矩阵求逆被认为是求解方程组或矩阵求逆的最有效的方法之一。现在让我们仔细看一看 32 位浮点实际数据 64 x 64 矩阵的 Cholesky 分解,并作为 Zynq SoC 上软硬件分区的应用实例。

Cholesky 分解将正定矩阵变换为具有严格正对角线的下三角和上三角矩阵的乘积。矩阵 B 在三角矩阵 L 中分解,即 B = L’ * L,其中 L’ 是 L 的转置矩阵,如下面的 4 x 4 矩阵 MATLAB 代码所示:

选择加速器很简单,只需在 SDSoC 环境的图形用户界面 (GUI) 中用鼠标点击特定功能即可。

让我们看看如何估算应用设计的性能和资源利用率,而且无需经过整个构建周期。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


图 3 给出了适合 SDSoC 环境的测试平台结构。主程序为所有空矩阵分配动态存储器并填入数据(从文件中读入或者随机生成)。然后,主程序调用参考软件函数和硬件备选函数。最后,主程序检查两个函数计算出的数值结果以测试有效正确性。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


注意,这里针对每个输入/输出数组使用了一个名为sds_alloc 的专用存储分配器,以让 SDSoC 环境自动在硬件加速器的每个 I/O 端口之间插入一个 Simple DMA IP;相比之下,malloc 则实例化一个 Scatter-Gather DMA,用以处理分布在物理地址空间中多个非连续页面上的数组。Simple DMA 从占位面积和性能开销上将要比 Scatter-Gather DMA 廉价,但需要 sds_alloc 获得物理上的连续存储空间。

选择加速器很简单,只需在 SDSoC 环境的图形用户界面 (GUI) 中用鼠标点击特定功能即可。如图 4 所示,例程 cholesky_alt_top 标记为 “H”,以表明它将被送到硬件加速器。我们还可以为加速器和数据移动内核选择时钟频率(如图 4 的 SDSoC 项目页面中所示为 100 MHz)。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


现在,我们可以启动“估算加速”过程。在经过几分钟的编译后,我们就可以在 Vivado 项目中生成所有内核和数据移动网络。SDSoC 环境还生成一个 SD 卡映像,其中包含 Linux 引导映像,里面有 FPGA 比特流以及纯软件版本的二进制应用程序。我们从这个 SD卡引导,并在 ZC702 目标平台上运行应用。

Linux 在开发板上启动之后,我们可执行纯软件应用,然后,SDSoC 环境生成图 5 中的性能估算报告。如果在硬件中而非软件中执行,我们可看到 cholesky_alt_top 函数的 FPGA 资源利用率 (26 DSP、80 BRAM、 15,285 LUT、17,094 FF) 和性能加速 (1.75)。

在主应用程序方面,我们还可以看到总体加速比较低 (1.23),原因在于其他软件开销,例如 malloc 和数据传输。我们的整个应用比较小,主要在于展示 SDSoC 流程和设计方法;我们需要在 PL 中加速更多例程,但这超出了本文的范畴。

使用 SDSoC 环境,只要几分钟就能生成该信息,且无需综合和布局布线这样的 FPGA 编译过程;这些过程根据硬件系统的复杂程度可能需要数小时才能完成。这样的估算通常足以用来分析硬件-软件分区的系统级性能,并让用户能够迅速进行设计迭代以创建出最佳系统。

了解性能估算结果

当 SDSoC 开发环境针对估算加速进程编译应用代码时,会生成一个中间目录 (图 5 中的_sds),用来放置所有中间项目(Vivado HLS、Vivado IP Integrator 等)。它会特别在源代码中插入对自由运行的 ARM 性能计数器函数 sds_clock_counter() 的调用,以测量程序函数中关键部分的执行时间。这也就是为什么目标板需要在估算加速进程中与SDSoC 环境的 GUI 连接。图 5 中报告的所有数字都在运行执行过程中用这些计数器测量得到。唯一的例外是硬件加速函数,该函数直到整个 FPGA 构建(包括布局布线)完成后才存在。不过,Vivado HLS 会在有效 Vivado HLS 的综合步骤过程中在估算资源利用率的同时计算硬件加速函数的估算周期数。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


假设备选硬件加速器函数以 FHW MHz 时钟频率运行,并需要 CKHW 个时钟周期完成整个计算(这是时延概念),并且假设在 ARM CPU 执行时,函数在 FARM MHz 时钟频率下占用 CKARM 个周期,那么,如果计算时间相同,硬件加速器就能实现与 ARM CPU 相同的性能,即 CKHW / FHW= CKARM / FARM。从这个公式中我们得到 CKARM = CKHW*FARM / FHW。这代表加速器能为处理器分担的最大时钟周期数量,以展示将函数迁移到硬件而获得的加速效果。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


图 6 中报告了 Vivado HLS 综合估算结果。注意,硬件加速器时延为 CKHW = 83,652 个周期,时钟频率 FHW = 100-MHz。在 ZC702板 中,FARM = 666 MHz,而且 CKARM = CKHW*FARM / FHW = 83,653*666/100 = 557,128,获得的硬件加速效果与图 5 中 SDSoC 环境报告的 565,554 个周期达到了很好的匹配。这就是为什么 SDSoC 环境能估算加速器所需的时钟周期数量而又不需要进行实际的布局布线。

用 SDSOC 环境构建硬件-软件系统

在确定硬件加速有效果之后,我们可以用 SDSoC 环境实现整个硬件和软件系统。我们需要做的是添加正确的指令(以 Pragma 命令的形式)来分别指定 FIFO 接口(由于 I/O 阵列的连续扫描);在运行时针对任何加速器调用而需传送的数据量;连接 PL 中的 IP 核与 PS 的 AXI 端口类型;以及数据移动工具的类型。下面的 C/C++ 代码表明了这些指令的使用。注意,实际情况下最后的指令不需要,原因是 SDSoC 环境会因 sds_alloc 的使用而实例化一个 Simple DMA;我们在这里提到它只是为了说清楚。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


我们可以在 SDSoC 环境的 GUI 中直接在 Release 配置中构建项目,或者,也可使用图 7 中的 Makefile 并从 SDSoC 工具命令语言 (Tcl) 解释器中启动。不管是Vivado Design Suite 中的什么工具,设计人员都可以采用 GUI 或 Tcl 脚本。为了提高加速效果,我们将硬件加速器的时钟频率增加至 FHW =142 MHz(通过-clkid 1 makefile 标志设置)。

FPGA 编译完成后不到半个小时,我们就得到对ZC702 板进行编程的比特流以及在 Linux OS 上执行的可执行连接文件 (ELF) 格式文件。然后,我们在ZC702 板上测量性能:纯软件时是 995,592 个周期,有硬件加速时是 402,529 个周期。因此,cholesky_alt_top 函数的有效性能提升 2.47。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


图 8 给出了整个嵌入式系统的方框图;SDSoC 环境将 Vivado IP Integrator 方框图以 HTML 文件报告的形式给出,以使其易于阅读(图 9)。该报告清楚显示,硬件加速器通过简单 AXI4-DMA 连接 ACP 端口,而通用端口用来通过 AXI4-Lite 接口设置加速器。

赛灵思系列为嵌入式系统工程设计群体带来高性能和灵活性


在嵌入式系统启动并运行时,我们需要花多长时间为 ZC702 板生成 SD 卡?我们需要一个工作日来编写适合 Vivado HLS 和 SDSoC 环境的 C++ 测试平台,然后,用一个小时进行实验以从 Linear Algebra HLS Library 中获得好的结果,再用一个小时的时间通过SDSoC 环境创建嵌入式系统(FPGA 编译过程)。这个过程共需要 10 个小时。我们估算手动完成所有这些工作(步骤 3 用 Vivado IP Integrator,步骤 4 用赛灵思SDK)至少需要两周的辛苦工作,这还不算高效使用这些工具所需的时间。

FPGA 编译完成后不到半个小时,我们就得到对 ZC702 板进行编程的比特流以及在 Linux OS 上执行的 ELF 格式文件。

SDSoC 开发环境使更多嵌入式系统和软件开发人员能够凭借熟悉的嵌入式 C/C++ 开发经验针对 Zynq SoC 开展工作。包括业界首款 C/C++ 全系统优化编译器的 SDSoC 环境提供系统级特性分析、可编程逻辑中的自动软件加速、自动系统连接生成和库,以加快开发速度。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3716

    浏览量

    133106
  • 加速器
    +关注

    关注

    2

    文章

    836

    浏览量

    39712
  • 赛灵思
    +关注

    关注

    33

    文章

    1797

    浏览量

    133148
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    德州仪器ADS644X系列ADC:高性能灵活性的完美结合

      在当今的电子设计领域,模数转换器(ADC)的性能灵活性对于系统的整体表现起着至关重要的作用。德州仪器(TI)的ADS6445、ADS6444、ADS6443和ADS6442(统称ADS644X
    的头像 发表于 11-27 18:07 1099次阅读
    德州仪器ADS644X<b class='flag-5'>系列</b>ADC:<b class='flag-5'>高性能</b>与<b class='flag-5'>灵活性</b>的完美结合

    深入解析ADS624X系列ADC:高性能灵活性的完美结合

    这几款产品,看看它们在性能、功能和应用方面有哪些独特之处。 文件下载: ads6242.pdf 产品概述 ADS624X系列高性能的14位、125/105/80/65 MSPS双通道A - D转换器
    的头像 发表于 11-27 14:09 291次阅读
    深入解析ADS624X<b class='flag-5'>系列</b>ADC:<b class='flag-5'>高性能</b>与<b class='flag-5'>灵活性</b>的完美结合

    嵌入式和FPGA的区别

    Zynq、Intel Cyclone V)越来越流行,这种异构计算平台能够兼顾软件灵活性和硬件高性能,代表了嵌入式与FPGA技术融合的未来方向。 无论是嵌入式还是FPGA,都是现代
    发表于 11-19 06:55

    力芯微GPIO拓展系列芯片赋能智能硬件与嵌入式系统

    在当今智能硬件与嵌入式系统飞速发展的时代,主控芯片的GPIO引脚资源常常面临捉襟见肘的困境。为了突破这一瓶颈,力芯微GPIO拓展系列芯片赋能智能硬件与嵌入式
    的头像 发表于 10-31 16:40 228次阅读
    力芯微GPIO拓展<b class='flag-5'>系列</b>芯片赋能智能硬件与<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    EtherCAT热插拔技术:提升工业自动化系统灵活性的关键

    在工业自动化领域,系统灵活性和维护性至关重要。本文将探讨EtherCAT从站热插拔技术,介绍其如何通过动态管理从站设备,提高系统灵活性和维护性。EtherCAT热插拔技术EtherC
    的头像 发表于 10-16 11:36 318次阅读
    EtherCAT热插拔技术:提升工业自动化<b class='flag-5'>系统</b><b class='flag-5'>灵活性</b>的关键

    高能效与灵活性能:Microchip分析8位单片机的持久影响力

    随着嵌入式系统的不断发展,8位单片机所独有的性能表现、能效和开发简便性,确保了其持久的重要性。无论是延长电池寿命,还是集成智能外设,8位单片机都将在现代嵌入式设计中持续发挥关键作用。
    发表于 09-04 09:10 656次阅读
    高能效与<b class='flag-5'>灵活性能</b>:Microchip分析8位单片机的持久影响力

    嵌入式工程师为什么要学QT?

    、车载系统和消费电子等领域尤为突出。其跨平台特性、丰富的库和工具、高性能以及强大的GUI支持,让Qt成为嵌入式开发最理想的选择。 嵌入式工程
    发表于 08-14 15:15

    盘点嵌入式就业所需要的技能有哪些?

    基础,能够进行高性能计算和数据处理。 - 了解自动驾驶技术的基本原理,如传感器融合、路径规划等。 - 具备良好的沟通能力和团队合作精神,能够与不同领域的工程师协作。 2.智能手机行业: - 熟悉嵌入式编程
    发表于 08-11 15:43

    嵌入式应用如何兼顾高性能与低功耗

    对于嵌入式系统工程师而言,选择合适的 DRAM 至关重要,需综合考虑带宽、时延与功耗限制。在近期发布的白皮书中,我们详细比较了主要的内存类型(包括 DDR4、DDR5、LPDDR4 和 LPDDR5),并针对视频处理和 AI 推理等高吞吐量应用提供了实用的选择建议。
    的头像 发表于 07-10 11:33 2090次阅读

    Linux嵌入式和单片机嵌入式的区别?

    灵活性强、系统集成度高、资源受限。 架构:没有明确的分层概念,但优秀的单片机工程师会有意地将程序分为用户层和驱动层。 运行芯片:通常称为MCU(Micro Control Unit)。 二、主要
    发表于 06-20 09:46

    运行在嵌入式系统上的emApps

    在当今快节奏的嵌入式系统世界中,灵活性和适应性是嵌入式系统实现的关键。SEGGER推出了其最新创新:Embedded apps(emApps
    的头像 发表于 06-18 09:53 620次阅读
    运行在<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>上的emApps

    瑞芯微RK3288解决方案:高性能、高扩展性的嵌入式系统设计理念与应用分析

    瑞芯微(Rockchip)RK3288是一款高性能嵌入式处理器,凭借其强大的四核Cortex-A17CPU、Mali-T764GPU以及丰富的接口支持,在各种嵌入式应用领域展现出卓越的性能
    的头像 发表于 05-08 15:39 853次阅读
    瑞芯微RK3288解决方案:<b class='flag-5'>高性能</b>、高扩展性的<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>设计理念与应用分析

    Linux系统用户权限详解

    Linux 是一种开源的、基于 Unix 的操作系统,它因其灵活性、稳定性和高性能而广泛应用于服务器、嵌入式系统、超级计算机、桌面计算等领域
    的头像 发表于 04-25 10:56 727次阅读
    Linux<b class='flag-5'>系统</b>用户权限详解

    IAR发布云端平台,助力现代嵌入式软件开发团队

    该平台为嵌入式软件开发人员提供前所未有的自由度与灵活性,助力开发团队在工具选择和日常工作流中实现更高效的协作与创新。
    的头像 发表于 03-12 11:56 606次阅读

    嵌入式软件工程师就业好不好?

    嵌入式软件工程师就业好不好?会不会越老越吃香?今天一起来看看。 首先看下市场需求。 随着物联网、人工智能、5G等前沿技术的快速发展,嵌入式系统的应用领域不断扩大,从智能家居、汽车电子到
    发表于 02-20 10:19