过去三十多年来,FPGA 技术已从最初带有少量寄存器的可编程逻辑阵列演变为如今我们所看到的高级集成式系统器件。大约在十多年前,各大厂商首次开始在他们的FPGA器件中采用8位、16位和32位的软核处理器,以提高处理与可编程逻辑之间的集成度与功能性。随后他们开始实现这些处理器的硬化版本(hardened version),为客户带来了更多系统优势。赛灵思的Zynq®-7000 All Programmable SoC就是此类器件中的佼佼者。
Zynq SoC在单个器件中集成ARM®双核Cortex™-A9 MPCore处理系统、FPGA架构和外设,这样软/硬件实现了前所未有的紧密连接,从而将系统级集成和功能提升到了全新的高度。但是这种更加紧密的集成也模糊了软硬件设计之间的界限,因为它将FPGA设计引入到了软件领域,同时又将应用软件开发引入到了FPGA领域。
我们TOPIC Embedded Systems公司开发的IP模块能显著缩减在Zynq SoC上进行系统开发所需的时间和成本。Dyplo系统的中间件能有效弥补软硬件设计之间的缺口,有助于实现一套完整的基于软件的开发流程。Dyplo 具有自动部分重配置功能。这是一种高级设计技术,可即时修改FPGA布局的硬件配置,让 FPGA 针对特定应用发挥出最佳性能。用户可利用图形化工具将功能拖到各个分区,然后判断它们是否在逻辑或处理器上达到最佳运行效果。
DYPLO:动态流程载入程序
Dyplo 是一种中间件IP模块。该模块通过标准 AXI 接口可连接各个FPGA流程与处理器执行的软件流程之间的可扩展数据流。
从开发角度可以最好地阐述Dyplo的原理。当启动一个设计项目时,首先必须确定设计要求,将客户需求定义为抽象条款)。在此阶段,修改设计要求相对来说不会造成太大影响。下一步您需要将设计要求转化为设计规范,此时要制定一个架构实现蓝图。在此架构制定过程中,您需要确定哪些功能应在硬件中实现哪些在软件中实现,并设定时间目标。在很多情况下会有多种架构可供选择,但由于预算和时间方面的制约,通常只能对一种架构方案进行研究(如果您运气好的话,可以是两个)。在这个阶段修改设计要求会带来较大的成本损失。
完成架构定义后,就要开始设计各种功能。在设计环节您通常会发现一些疏漏,即需要在软硬件之间互换实现内容。这种互换通常会增加开发工作量,因为您要开始解决DSP类型数据流程中的突破性控制功能等原本不属于这些相关领域的问题。随着客户对设计复杂性理解的深入,他们的洞察力也在增强,因此这种情况就变得相当普遍。因此,设计人员需要一种有效的机制以便在硬件与软件之间进行功能互换。
图1所示的是一种把流程映射到FPGA硬件和软件的常见任意调度情景。图(a)未采用通用分配方案。因此,需要在软件与硬件之间建立一种更加结构化和可预测的基础结构。Dyplo实现了这种基础结构,如图(b)图所示。
图1 – (a)图中有两个独立的流程,即硬件设计人员将HDL输入Zynq SOC的逻辑模块,软件设计人员将软件输入处理器。与此不同的是,Dyplo为硬件和软件功能创建了一个统一的代码输入点,如(b)图所示,这样便于在Linux环境下实现系统级协同设计与验证。
Dyplo为用户提供了用于连接硬件与软件流程的数据流接口。既可以采取软件流程之间的通信,也可以是硬件流程之间的通信,还可以是软硬件流程混合通信。您可以利用Dyplo在可重配置分区内定义硬件流程。要实现给定的硬件功能,需要在某个可重配置分区上激活它,然后对通往该分区的输入输出数据流进行初始化,并将这些数据流连接到软件流程或其他硬件流程。除了同步数据流外,还可以对帧边界、离散样本矩和软件任务对齐等事件进行流程同步。
软件流程的数量取决于设计所针对的操作系统以及流程通信的组织方式。硬件流程的数量则取决于FPGA上所保留的可重配置分区的数量。可重配置分区的数量、大小和位置可以由用户定义,也可以自动选择。
Dyplo通过具有可扩展性能的软硬件通信背板来处理流程通信与同步。例如,默认配置下允许四个HDMI视频流同时处于工作状态,同时利用处理器保持完全的数据交换功能。
Dyplo基础架构、映射到可重配置分区上的功能以及完整Linux分布的生成都通过兼容于标准Vivado® 设计套件项目流程的图形工具流程来实现。
您可以在设计过程中即时停止执行软件和硬件流程,在替换流程功能后继续执行。对于软件流程这并不重要,设计人员可以加强代码(仅受到设计人员针对项目所选操作系统的功能限制)。对于硬件流程,需通过执行部分重配置来取代部分FPGA的功能,同时不会影响其他可编程逻辑或外部物理接口的执行。同时自动正确加载和验证逻辑模块。
这样,Dyplo在软件环境中融入硬件流程的执行,同时为软件编程人员无缝提供FPGA的功能优势。Zynq SoC能带来硬件系统级集成度方面的诸多优势。所有功能都能用于全软件式可编程平台。然而从应用角度出发,需要一个中间件才能获得这种架构优势。这就是Dyplo作用所在。
利用部分重配置的价值
Dyplo可充分利用FPGA的部分重配置功能。 部分重配置对于设计人员来说绝不是微不足道的工作,原因在于加载和管理部分比特流文件的复杂性高,而且需要在更改PFGA元件的时候保持设计的连续性。此外,物理元件的布局布线问题需要相当高的FPGA设计经验。
Dyplo提供直接可用的集成式部分重配置支持。根据所需分区数量和可重配置分区的逻辑复杂性等配置参数来保留可重配置分区的默认区域。在提供可重配置模块等HDL功能描述后, Dyplo 可自动生成部分比特文件。
作为软件应用的一部分,可重配置模块通过发出简单的软件指令来获取功能。Dyplo负责完成执行硬件功能所需的所有步骤,例如终止当前正在执行的功能、编写新的功能、数据流连接、模块配置以及功能激活。
为硬件工程师带来的好处
集成Dyplo架构能为FPGA设计工程师带来哪些优势?它可以实现与处理器环境的集成,同时将底层软件的支持需求降到最低,从而使设计工作变得更轻松。这意味着您可以集中精力实现设计功能。FPGA的优势在高速接口设计、高数据带宽电路和加速算法处理这些应用中的作用尤为明显。设计接口与高带宽电路时需要手动参与,并要求对于FPGA器件的技术优势有深刻理解。对于加速算法处理应用来说,系统级综合工具(例如Vivado HLS)将扮演越来越重要的角色。然而,在使用高层次综合时,需要具备一定设计经验来确保实现效果。
有了Dyplo基础架构,很容易嵌入算法处理模块,这样为算法处理模块、I/O模块和处理器执行功能之间通信搭建了一个高速可配置的流程间通信网络。这些处理模块经过精心架构,非常适用于部分重配置。模块有明确的接口,例如符合AXI4接口标准的流数据接口,采用高速互联结构和简化的处理器总线,可直接连接处理系统。到其他FPGA逻辑或器件I/O的链路则通过专用的可扩展接口来实现。Dyplo的性能足以支持多个1080p输入和输出视频流,而且只需简单配置就可实现视频流连接。
FPGA为软件工程师带来的优势
设计团队利用Dyplo可以显著简化HDL编码工作,而在系统软件设计方面也能获得更多的优势。Dyplo使设计团队能够在硬件实现过程中分离软件功能,在软件中完成原型设计,再将它们转换到硬件中,并保持相同的接口行为。反过来,不同功能可在软件控制下共享相同的FPGA架构。这种方案所需的器件更小,能降低FPGA成本,效果可与软件线程相媲美。
从软件系统的角度来看,可将单个流程与连接之间的相关性看作是具有数据与事件同步机制的流程网络。图2 给出了软件和硬件流程与Dyplo基础架构之间的关联方式。
图2 – 球形、 方块和金字塔代表能够在FPGA硬件或软件中运行的功能或流程。各个流程都被密封在Dyplo盖布(图形四周的方框)中。箭头代表从输入端经不同流程流到输出端的数据流。Dyplo界面负责管理整个流程。
这种方法还能带来动态性能扩展,因为可根据系统执行环境实现相同功能的多个实例。这样做的结果是使GPU加速流程的执行更灵活,而且具备更高性能。这种技术还可以让FPGA更多地为软件工程师所用,原因在于接口协议比较简单而且可将复杂设计拆分为复杂程度可控的多个模块。更为重要的是,由于接口兼容,使得Dyplo与Vivado HLS能实现完美匹配,这种方式非常适用于基于软件的开发流程。
采用Dyplo后测试工作也更加简单。将流向和来自HDL模块的数据流存储在HDL测试平台用来生成模式的文件中。这意味着验证过程中开发团队可以集中对所需功能进行测试。
测试与调试环境
复杂的系统集成非常耗时,而且验证工作的难度更大。我们开发了Dyplo基础架构后,都知道设计的测试与集成工作占用了大部分开发时间,而且是开发流程中最枯燥的环节。在配置过程中,基本Dyplo 环境会生成验证所用的测试平台模板。例如,Dyplo环境为架构中的每个可重配置模块生成一个功能测试平台模板,实现文件或正规表达式的流输入与输出以及用以实现CPU接口的总线功能模型(见图3)。这样,设计人员就可以采用基于测试的设计方法。这种基础架构允许设计团队对设计方案采取单步调试以找出问题,并执行背板性能分析,以便实现结构中所有相关状态信息的可视化。该理念非常灵活,以至于停止Dyplo基础架构的HDL逻辑将会自动同步软件执行。此功能是确定与解决接口和动态问题的关键。
图3 – 采用功能测试模板实现数据流输入与输出,同时由总线功能模型实现CPU接口。
填补缺口
总部位于荷兰的TOPIC Embedded Systems 公司多年来一直开发嵌入式系统,所涉及的项目通常集成有各种类型的FPGA和处理器。日积月累,我们已经成为高级FPGA设计技术(包括部分重配置)方面的专家。Zynq SoC作为一种采用嵌入式FPGA技术的多核平台,可以显著提高嵌入式系统设计效率。但很多设计团队面前的挑战是如何根据软硬件工程设计人员的专业技术情况最充分发挥Zynq SoC丰富功能集的作用。
我们的Dyplo中间件可以填补这一缺口。可在FPGA架构上实现面向GPU设备的应用,所需的工作量相同,而且灵活性更高。充分利用重配置技术使得FPGA架构的重用从软件应用角度来说变得非常简单,而且有助于降低产品成本。在开发FPGA设计和软件设计过程中自动执行很多底层设计、集成与测试任务,可以有效简化设计流程。简而言之,由Dyplo中间件系统所实现的生产力、灵活性和性能优化效果能帮助设计团队将Zynq SoC的性能发挥到极致并且更快速地将创新系统设计推向市场。2013年12月1日将推出面向限定用户的试用版(beta版)。如果您希望参与试用项目,请与我们联系。商用版将于2014年3月1日推出。
评论
查看更多