行业资讯 News
  • 您现在的位置: 首页 行业资讯 TODAY好文
  • FPGA开发要大众化了?-这个工具把FPGA从硬件工程师手中解放出来

    日期: 2016-05-24
    浏览次数: 756

     

    多年以来,多少厂商前赴后继,试图让FPGA开发更简单,但是他们都成了FPGA历史长河中的一抹红晕。

    今年以来,FPGA在产业的关注度迅速提升,一个原因是其与人工智能、VR等热门应用密切相关,另个原因是国际大厂如英特尔以及本土巨头如紫光集团等对FPGA的青眼有加, 收购融资热门不断, 大有与CPU, GPU分争天下的趋势。 然而, 传统上FPGA开发绝对不像X86处理器那样简单,需要专业的工具以及专业的知识甚至芯片设计基础,开发其应用主要途径是采用最底层的硬件实现,这也是阻碍其普及一个因素。

    一方面FPGA成为势不可挡的趋势, 一方面其用户局限在少数硬件工程师手中。如何解放FPGA,让更多的应用能够获益于FPGA的灵活、高性能功耗比的优势呢? 这个问题, 在过去的几年中, 从来不乏各种各样的尝试, 试图降低FPGA的开发门槛,而大多数最终都成为无足轻重的历史。最终能够改变这个历史的, 恐怕还得靠赛灵思这个龙头老大。 除了推出软件定义的设计环境如SDSoC,SDAccel, SDNet让软件工程师可以轻松开发FPGA应用之外,其通过支持和打造一个生态合作伙伴环境,正在解放FPGA现有局限。 最近, 其合作伙伴PLDA开发出一种新流程, 有望让FPGA实现真正的大众化。

    PLDA所开发出的一种称作 QuickPlay 的工作流程,号称可以高效解决实现复杂性问题,为 FPGA 开发提供多种使用模式。其价值核心是其软件开发人员将原本用于 CPU 的应用,部分或全部地实现在 FPGA硬件上。QuickPlay 能够全面发挥 FPGA 资源的作用,将这些功能强大而复杂的器件转化为软件定义平台,无需艰苦的硬件设计即能获得 FPGA 带来的优势。牛吧!

    做过设计的人都知道,硬件执行算法无论是时间还是功耗上都占有极大的优势,用DSP软件去做图像处理不仅耗时且功耗极高,而用FPGA来做,效率则高得惊人!

    QuickPlay是什么样的流程?
    任何旨在使用自定义硬件帮助软件开发人员来增强其应用的工具应该有如下特点:
    • 从纯软件代码中创建功能硬件;
    • 根据需要采用现有的硬件 IP 模块;
    • 调用并创建所有的支持硬件(接口、控制、时钟等);
    • 支持使用现成商用开发板以及自定义平台;
    • 确保生成的硬件能自动建构校正,这样无需进硬件调试;且
    • 支持仅使用标准软件调试工具即可调试功能模块。

    PLDA 设计 的QuickPlay 以满足所有各项要求,让纯软件开发人员以极小工作量就能指定、构建和集成 FPGA 到自己的软件架构中。

    以软件为中心的方法
    使用 QuickPlay 实现整个设计流程相当简单直观:
    1. 开发硬件引擎的 C/C++ 语言功能模型。
    2. 使用标准的 C/C++ 语言调试工具来验证功能模型。
    3. 指定目标 FPGA 平台和 I/O 接口(PCIe、以太网、DDR、QDR 等)。
    4. 编译并构建硬件引擎。

    QuickPlay 使用直观的数据流模型,能从数学角度保证可确定性执行,与执行引擎无关。该模型由称之为内核的并行功能组成,负责与流通道进行通信。因此它与软件开发人员在白板上勾勒应用草图关联紧密。为确保行为的确定性,这些内核必须彼此进行通信,以防发生竞态条件和死锁等数据冲突。实现这一要求的方法是使用具备下列特点的流通道:(1)基于 FIFO,(2)阻塞式读取和阻塞式写入,以及(3)点对点。

    这些就是 PLDA 据以构建 QuickPlay 的计算模型—— 卡恩进程网络(KPN)的特点。图 1的QuickPlay 设计实例描述了 KPN 模型。

    图1 — QuickPlay 中的设计实例

    任何内核的内容都可以是任意 C/C++ 语言代码、第三方 IP,甚至是 HDL 代码(对硬件设计人员而言)。QuickPlay 采用相当简单直观的设计流程。

    图 2 — QuickPlay 采用简单直观的设计流。

    QuickPlay 带给开发者的好处是什么?
    QuickPlay带来的好处很明显,开发者再不用关心内核功能发生了什么,也不用担心硬件工程师经常遭遇的的时序、时钟、通信堆栈、协议以及其他类似问题了,只要约束得到,也不用做硬件级的验证和调试。这是真正让软件开发者可以轻松开发FPGA的好工具。

    不劳烦硬件工程师,让软件工程师独立开发硬件一直是个诱人的梦想,每隔几年总有一些公司喊出类似的口号,但之后就销声匿迹了例如Handel-C语言,这种新一代硬件描述语言编译工具,号称可以利用Handle-C语言在大规模FPGA硬件上得以实现。设计者可以利用Handle-C语言,能在很短的时间里创建更庞大、更复杂和更高速的系统。但是现在,Handle-C语言已经淡出业界了。不过,借助 QuickPlay貌似真的可以实现这个梦想了。

    只有六个步骤就可以轻松开发一款FPGA应用。

    步骤 1 : 纯软件设计。这个阶段,您可以用C 语言添加并连接处理内核,创建自己的FPGA 设计,然后使用自己的主机软件来指定通信通道。QuickPlay 基于 Eclipse 的集成开发环境(IDE)通过简单的 API 提供 C/C++ 语言库,用于创建内核、流、流端口和存储器端口,以及从流端口和存储器端口读取/ 写入。

    步骤 2 :功能验证。这一步的重点是确保步骤 1编写的软件模型能正确工作。实现的方法是先在桌面上编译软件模型,然后使用测试程序发送数据到输入以执行软件模型,最后验证输出的正确性。并行执行 FPGA 设计的软件模型,为每个内核提供独立的线程,以模拟实际硬件实现的并行性。

    步骤 3 : 硬件生成。这一步用于从用户的软件模型生成 FPGA 硬件。它涉及三个简单的操作:


    1.  在 QuickPlay GUI 的下拉菜单中选择您想要实现到自己的设计中的 FPGA 硬件。QuickPlay 能够使用品种不断丰富的现成开发板来实现设计。这些开发板采用先进的赛灵思All Programmable FPGA、PCIe 3.0、10 Gb 以太网、DDR3 SDRAM、QDR2+SRAM 等。

    2. 选择需要映射到设计输入及输出端口的物理接口(以及协议)。这些通过菜单都能方便选择。具体选择取决于用户选定的 FPGA 板件上提供的接口,例如 PCIe、10 Gb 以太网 TCP/IP 和 10 Gb 以太网 UDP。选择通信协议即自动调用实现连接所需的硬件 IP 模块以及其上分层的任何软件协议栈,从而完成整个系统的创建。

    3. 启动构建流程这个过程包括运行 HLS 引擎(从 C 语言代码创建硬件),创建所需的系统硬件功能(我们原始实例中的控制层逻辑)和运行构建板件要求的硬件镜像所需的其他工具(例如赛灵思Vivado® 集成设计环境)。完成这个过程无需手动干预。

    步骤 4 : 系统执行。这个步骤与步骤 2 中的功能模型执行(功能验证)相似,除了现在虽然主机应用仍然运行在软件中,但 FPGA 设计运行在选定的 FPGA 板件上。这意味着您可以从 FPGA 板件输入输出真实数据,从而进一步验证其功能的完整性。

    步骤 5 : 系统调试。不必在硬件层面进行调试,即便缺陷是在在硬件中运行功能后发现的。由于 QuickPlay 保证软件模型和硬件实现之间的功能等效性,因此任何硬件版本中发生的缺陷也必然存在于软件版本中。这就是您无需在硬件中进行调试的原因;您只需要在软件域中调试就足够了。

    整个流程就是先在软件中建模,然后在硬件中构建并测试系统。如果存在缺陷,将失败的测试序列导回软件环境中,在软件环境中调试,修改源代码,然后重复这一过程。与传统流程相比这能显著提高生产力。

    步骤 6: 系统优化,这是可选的。

    过去,从纯粹的软件设计到硬件辅助或纯硬件设计一般需要数月时间。但是QuickPlay 把开发时间缩短为数天时间。这是一个非常大的进步!利用这个工具,软件工程师能够根据需要来使用定制硬件,自动生成工作效率更高的硬件应用。看来,FPGA的大众化应用真的为时不远了!

    Copyright ©2015 - 2019 武汉视科光电技术有限责任公司
    犀牛云提供企业云服务
    地址:中国·武汉·东湖新技术开发区高新大道999号
    电话:+86 15827511197
    传真:+86 02781775058
    邮箱:postmaster@viewscience.com.cn
    邮编:330520
  • 您的姓名:
  • *
  • 公司名称:
  • *
  • 地址:
  • *
  • 电话:
  • *
  • 传真:
  • *
  • E-mail:
  • *
  • 邮政编码:
  • *
  • 留言主题:
  • *
  • 详细说明:
  • *
  • 在线留言 FEEDBOOK
    关注我们 Our attention
  • 官方微信
  • 官方微博