<p><span>几乎所有的电子设计师和嵌入式系统开发人员都听过现场可编程门阵列(</span><span lang="EN-US">FPGA</span><span>)。对于实际的</span><span lang="EN-US">FPGA</span><span>器件,设计人员和开发人员都知道它拥有可编程架构,能够对其进行配置来而执行想要的功能,但他们的了解可能仅限于此。同样,当涉及创建一个可以在</span><span lang="EN-US">FPGA</span><span>上实现的设计时,他们可能听过硬件描述语言(</span><span lang="EN-US">HDL</span><span>)和寄存器转换级电路(</span><span lang="EN-US">RTL</span><span>)之类的术语,但可能并未充分理解它们的含义。</span></p>
<p><span>与</span><span lang="EN-US">Verilog</span><span>或</span><span lang="EN-US">VHDL</span><span>相似,</span><span lang="EN-US">HDL</span><span>能让</span><span lang="EN-US">FPGA</span><span>设计人员描述设计意图,正如软件开发人员使用</span><span lang="EN-US">C</span><span>或者</span><span lang="EN-US">C++</span><span>等编程语言一样。理解</span><span lang="EN-US">HDL</span><span>的方式之一就是它可以用来描述同时发生的事物,这也是现实世界中硬件工作的方式。相比之下,软件编程语言通常用于描述顺序发生的事。</span></p>
<p><span>同时,</span><span lang="EN-US">RTL</span><span>是常用于逻辑综合引擎输入的抽象级电路。该工具将</span><span lang="EN-US">RTL</span><span>转换到逻辑元件和互连网络,然后在</span><span lang="EN-US">FPGA</span><span>的可编程逻辑内实现。逻辑综合引擎可以比作软件开发者的编译器,后者采用高级程序作为输入,并将其转换为由处理器执行的机器代码。</span></p>
<p><span lang="EN-US">FPGA</span><span>的可编程结构可用于构建硬件加速器,以低功耗执行数据处理任务。可编程结构经过配置后可创建一个或多个更适合处理决策任务的软核处理器,这些处理器还可以控制硬件加速器,包括向其提供数据并根据结果采取相应措施。</span></p>
<p><span lang="EN-US">RISC-V</span><span>就是这样一种处理器,它是一种开源指令集架构(</span><span lang="EN-US">ISA</span><span>),可以通过开源许可免费获得。</span><span lang="EN-US">RISC-V</span><span>开源硬件概念的创造者受到</span><span lang="EN-US">Linux</span><span>开源软件成功的启发。</span><span lang="EN-US">RISC-V</span><span>的一大优势是在各类设计实现中都有出色的软件兼容性,并且目前这些处理器的使用急剧增长。</span></p>
<p><span>然而,对于想要使用这种处理器的非</span><span lang="EN-US">FPGA</span><span>设计人员而言,问题在于他们缺乏有关</span><span lang="EN-US">FPGA</span><span>设计语言、工具和流程的专业知识。为了解决这个问题,低功耗可编程</span><span lang="EN-US">FPGA</span><span>的领先供应商莱迪思半导体开发了名为</span><span lang="EN-US">Lattice Propel™</span><span>的工具,这是一款基于图形用户界面(</span><span lang="EN-US">GUI</span><span>)的设计环境,任何用户(无论是否具有</span><span lang="EN-US">FPGA</span><span>专业知识)都能使用它以拖放的方式快速设计基于</span><span lang="EN-US">RISC-V</span><span>处理器的系统。</span></p>
<p><span lang="EN-US">Propel</span><span>输出的是</span><span lang="EN-US">RTL</span><span>文件,可以发送到综合引擎,生成可载入</span><span lang="EN-US">FPGA</span><span>的配置文件。之后软件开发人员可以在基于</span><span lang="EN-US">FPGA</span><span>的</span><span lang="EN-US">RISC-V</span><span>设计实现上运行他们的</span><span lang="EN-US">RISC-V</span><span>可执行文件,正如在其他任何</span><span lang="EN-US">RISC-V</span><span>处理器上运行一样。莱迪思为其</span><span lang="EN-US">FPGA</span><span>客户免费提供</span><span lang="EN-US">RISC-V IP</span><span>核。</span></p>
<p><strong><span>基于</span></strong><strong><span lang="EN-US">FPGA</span></strong><strong><span>的解决方案</span></strong></p>
<p><span>数据处理要求有合适的计算引擎。开发者拥有诸多不同选择,包括微处理器(</span><span lang="EN-US">MPU</span><span>)、微控制器(</span><span lang="EN-US">MCU</span><span>)、图形处理器(</span><span lang="EN-US">GPU</span><span>)、</span><span lang="EN-US">FPGA</span><span>和</span><span lang="EN-US">SoC</span><span>等器件。</span></p>
<p><span lang="EN-US">MPU</span><span>和</span><span lang="EN-US">MCU</span><span>在执行决策任务时效率很高,但是在实现原始数据处理算法时,无论是处理时间还是功耗都不太理想。</span><span lang="EN-US">SoC</span><span>能以最低的功耗实现最高性能,但缺点是开发起来价格昂贵、耗费资源且十分耗时,并且在此类芯片架构中实现的算法基本上都是固定无法更改的,而系统采用的协议和标准会不断变化,因此会带来很多问题。</span></p>
<p><span>某些数据处理任务(包括许多</span><span lang="EN-US">AI/ML</span><span>算法)非常适合并行处理。</span><span lang="EN-US">FPGA</span><span>的可编程架构(图</span><span lang="EN-US">1a</span><span>)经配置可实现硬件加速器(</span><span lang="EN-US">HA</span><span>)功能,以大规模并行方式执行任务(图</span><span lang="EN-US">1b</span><span>),从而显著提高性能,同时降低功耗。</span></p>
<p><span>许多情况下还需要数据协处理功能,使用中央处理器(</span><span lang="EN-US">CPU</span><span>)来强化硬件加速器,处理器可以执行高级决策和控制功能。不同于直接在芯片中实现的硬核</span><span lang="EN-US">CPU</span><span>,</span><span lang="EN-US">FPGA</span><span>的可编程架构能够实现软核</span><span lang="EN-US">CPU</span><span>以及相关的总线结构(地址、数据、控制)和任何所需的外设</span><span lang="EN-US">IP</span><span>功能(图</span><span lang="EN-US">1c</span><span>)。</span></p>
<p><img alt="图1. 结构化总线的方法广泛适用于各类应用,包括嵌入式视觉、安防和人工智能。" data-entity-type="file" data-entity-uuid="f955922f-f3c8-4913-899b-9306723616f9" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100062940-125861-1.jpg&…; /></p>
<p><em><span>图</span></em><em><span lang="EN-US">1. </span></em><em><span>结构化总线的方法广泛适用于各类应用,包括嵌入式视觉、安防和人工智能。</span></em></p>
<p><span>需要注意的是,根据</span><span lang="EN-US">FPGA</span><span>器件和用户的要求,额外的可编程逻辑功能和外围通信功能(例如</span><span lang="EN-US">USB</span><span>、</span><span lang="EN-US">MIPI</span><span>、</span><span lang="EN-US">I2C</span><span>、</span><span lang="EN-US">SPI</span><span>、</span><span lang="EN-US">CAN</span><span>和</span><span lang="EN-US">UART</span><span>)可以通过硬核和</span><span lang="EN-US">/</span><span>或软核实现。文章篇幅有限此处不作赘述。</span></p>
<p><span>使用软核</span><span lang="EN-US">CPU</span><span>有诸多优点,包括能够配置处理器的操作及许多可选功能,如动态内存访问(</span><span lang="EN-US">DMA</span><span>)控制器,从而对其精确调整,高效地满足目标应用的要求。此外,如有需要,可以配置可编程结构实现其他外设</span><span lang="EN-US">IP</span><span>功能。如在人工智能应用中,可以使用可编程逻辑资源来创建简单的人工神经网络,用于推理之类的任务。</span></p>
<p><strong><span lang="EN-US">RISC-V</span></strong></p>
<p><span>如前所述,</span><span lang="EN-US">RISC-V</span><span>是基于已有的精简指令集计算机(</span><span lang="EN-US">RISC</span><span>)原则的开源指令集架构,可通过开源许可获得。此外,许多公司目前提供支持</span><span lang="EN-US">RISC-V</span><span>的</span><span lang="EN-US">RISC-V</span><span>硬核或开源操作系统,并且几种主流的软件工具链均支持该指令集。</span></p>
<p><span lang="EN-US">RISC-V</span><span>的模块化设计包括基础指令集和其他的扩展指令集。在行业、技术界和教育机构的共同努力下,两者已得到长足的发展。基础指令集规定了指令(及其编码)、控制流、寄存器(及其大小)、存储器和寻址、逻辑(即整数)操作以及辅助功能。仅基础指令集就能实现具有全面软件支持(包括通用编译器)的通用计算机。</span></p>
<p><span>还可以通过可选拓展指令集实现额外功能,从而让设计人员灵活选择其应用所需的功能。</span><span lang="EN-US">RISC-V</span><span>定义了许多扩展指令集,包括</span><span lang="EN-US">A</span><span>(原子)、</span><span lang="EN-US">F</span><span>(单精度浮点)、</span><span lang="EN-US">D</span><span>(双精度浮点)、</span><span lang="EN-US">Q</span><span>(四精度浮点)和</span><span lang="EN-US">C</span><span>(压缩的</span><span lang="EN-US">16</span><span>位指令以减少代码尺寸,用于存储空间有限的系统)。上述指令集均可灵活选择。</span></p>
<p><img alt="图2. 莱迪思是首个支持RISC-V的基于闪存和SRAM的FPGA供应商。" data-entity-type="file" data-entity-uuid="e3e60276-372b-4210-81bd-5e1695fae2db" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100062940-125862-2.jpg&…; /></p>
<p><em><span>图</span></em><em><span lang="EN-US">2. </span></em><em><span>莱迪思是首个支持</span></em><em><span lang="EN-US">RISC-V</span></em><em><span>的基于闪存和</span></em><em><span lang="EN-US">SRAM</span></em><em><span>的</span></em><em><span lang="EN-US">FPGA</span></em><em><span>供应商。</span></em></p>
<p><span>与作为专用处理器的硬核实现相比,基于</span><span lang="EN-US">FPGA</span><span>的软核</span><span lang="EN-US">RISC-V</span><span>拥有的巨大优势在于</span><span lang="EN-US">FPGA</span><span>可重新配置的巨大潜力能够满足各种扩展需求。</span></p>
<p><span>莱迪思</span><span lang="EN-US">RISC-V</span><span>软核</span><span lang="EN-US">IP</span><span>套件拥有</span><span lang="EN-US">32</span><span>位</span><span lang="EN-US">RISC-V</span><span>处理器核以及可选的定时器和可编程中断控制器(</span><span lang="EN-US">PIC</span><span>)子模块。该</span><span lang="EN-US">CPU</span><span>核支持</span><span lang="EN-US">RV32I</span><span>指令集、外部中断和符合</span><span lang="EN-US">JTAG IEEE 1149.1</span><span>规范的调试。</span></p>
<p><span>定时器子模块是一个</span><span lang="EN-US">64</span><span>位实时计数器,它将实时寄存器与另一个寄存器进行比较以触发定时器中断。</span><span lang="EN-US">PIC</span><span>子模块最多将八个外部中断输入聚合为一个外部中断。处理器核通过使用行业标准的</span><span lang="EN-US">32</span><span>位</span><span lang="EN-US">AHB-L</span><span>总线接口访问子模块寄存器。</span></p>
<p><strong><em><span>莱迪思</span></em></strong><strong><em><span lang="EN-US">Propel</span></em></strong></p>
<p><span>许多嵌入式系统的设计人员都对使用</span><span lang="EN-US">FPGA</span><span>很感兴趣,但是一想到要使用传统的</span><span lang="EN-US">FPGA</span><span>设计工具和</span><span lang="EN-US">HDL</span><span>就望而却步。为了解决这一问题,莱迪思</span><span lang="EN-US">Propel</span><span>采用了基于图形用户界面(</span><span lang="EN-US">GUI</span><span>)的设计环境,任何用户(无论是否具有</span><span lang="EN-US">FPGA</span><span>专业知识)都能使用其拖放的设计方式快速构建和配置基于</span><span lang="EN-US">RISC-V</span><span>处理器的设计。</span></p>
<p><span lang="EN-US">Propel</span><span>输出的是使用</span><span lang="EN-US">Verilog HDL</span><span>语言的</span><span lang="EN-US">RTL</span><span>文件,可以将其发送到综合引擎,生成可载入</span><span lang="EN-US">FPGA</span><span>的配置文件。该配置文件可用于莱迪思</span><span lang="EN-US">CrossLink™-NX</span><span>(面向嵌入式视觉应用)、</span><span lang="EN-US">Certus™-NX</span><span>(通用</span><span lang="EN-US">FPGA</span><span>)以及</span><span lang="EN-US">MachXO3D™</span><span>和</span><span lang="EN-US">Mach™-NX FPGA</span><span>(安全系统控制)系列产品。</span><span lang="EN-US">FPGA</span><span>配置完成后,软件开发人员可以在基于</span><span lang="EN-US">FPGA</span><span>的</span><span lang="EN-US">RISC-V</span><span>设计实现上运行他们的</span><span lang="EN-US">RISC-V</span><span>可执行文件,正如在其他任何</span><span lang="EN-US">RISC-V</span><span>处理器上运行一样。</span></p>
<p><span lang="EN-US">Lattice Propel</span><span>由两个部分组成。首先是</span><span lang="EN-US">Propel Builder</span><span>,它提供图形化的拖放界面,让用户选择</span><span lang="EN-US">IP</span><span>模块并将其连接在一起。这些</span><span lang="EN-US">IP</span><span>模块包括</span><span lang="EN-US">RISC-V</span><span>处理器(带有可选的定时器和中断控制器)、</span><span lang="EN-US">AMBA</span><span>总线结构、接口、存储器、输入</span><span lang="EN-US">/</span><span>输出(</span><span lang="EN-US">I/O</span><span>)等。用户还可以方便地在线升级现有</span><span lang="EN-US">IP</span><span>模块和获得新的</span><span lang="EN-US">IP</span><span>模块。</span></p>
<p><img alt="图3.Propel界面直观、易于使用、功能强大。" data-entity-type="file" data-entity-uuid="cfaa3a68-fba8-45ff-9b40-826227f36368" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100062940-125863-3.jpg&…; /></p>
<p><em><span>图</span></em><em><span lang="EN-US">3.Propel</span></em><em><span>界面直观、易于使用、功能强大。</span></em></p>
<p><span>除了拖放</span><span lang="EN-US">IP</span><span>实例化,</span><span lang="EN-US">Propel Builder</span><span>还能自动进行引脚连接,通过向导配置和设置参数以及采用按构造逐步校正进行</span><span lang="EN-US">IP</span><span>集成。</span></p>
<p><span>其次是莱迪思</span><span lang="EN-US">Propel SDK</span><span>(软件开发套件),可提供无缝的软件开发环境。它拥有行业标准的集成开发环境(</span><span lang="EN-US">IDE</span><span>)和工具链。</span><span lang="EN-US">SDK</span><span>还为</span><span lang="EN-US">Propel Builder</span><span>定义的系统提供软件</span><span lang="EN-US">/</span><span>硬件调试功能以及软件库和板级支持包(</span><span lang="EN-US">BSP</span><span>)。</span></p>
<p><span>需要注意的重要一点是,</span><span lang="EN-US">Propel</span><span>可以很好地对接下游工具,并且它也是一个独立的程序,且其大小仅为</span><span lang="EN-US">0.5 GB</span><span>,可以快速轻松地下载和安装。同样令人感兴趣的是,</span><span lang="EN-US">Propel</span><span>的所有命令都可以用</span><span lang="EN-US">Tcl</span><span>编写,从而提高了设计效率并将其快速集成到用户自己的设计环境中。</span></p>
<p><img alt="图4. 无论是简单的“Hello World”应用还是复杂的嵌入式控制和数据处理系统,Propel都能让用户快速完成设计" data-entity-type="file" data-entity-uuid="ceca93bd-5166-4857-90ff-81a732b7ec72" src="http://new.eetrend.com/files/2021-03/wen_zhang_/100062940-125864-4.jpg&…; /></p>
<p><em><span>图</span></em><em><span lang="EN-US">4. </span></em><em><span>无论是简单的“</span></em><em><span lang="EN-US">Hello World</span></em><em><span>”应用还是复杂的嵌入式控制和数据处理系统,</span></em><em><span lang="EN-US">Propel</span></em><em><span>都能让用户快速完成设计</span></em></p>
<p><span>对于硬件设计,</span><span lang="EN-US">Propel</span><span>是那些需要</span><span lang="EN-US">FPGA</span><span>优势但缺乏</span><span lang="EN-US">FPGA</span><span>硬件设计经验的团队的理想选择。此外,如果团队成员确实具有</span><span lang="EN-US">FPGA</span><span>设计经验,那么他们还可以根据需要对设计做更为精确的控制。对于软件设计,</span><span lang="EN-US">Propel</span><span>提供行业标准的</span><span lang="EN-US">C/C ++</span><span>开发环境。软件开发人员似乎更多地使用现成的微控制器。</span></p>
<p><span>设计人员可以使用</span><span lang="EN-US">Propel</span><span>在</span><span lang="EN-US">CrossLink-NX</span><span>、</span><span lang="EN-US">Certus-NX</span><span>和</span><span lang="EN-US">Mach-NX FPGA</span><span>中快速轻松地生成基于</span><span lang="EN-US">RISC-V</span><span>软软核的处理器系统,从而提供复杂的视频处理、系统控制和系统安全功能,其延迟远远低于通过外部独立处理器实现的设计。</span></p>
<p><strong><em><span>总结</span></em></strong></p>
<p><span>除了拥有以低功耗执行高性能数据处理任务的逻辑功能和硬件加速器外,</span><span lang="EN-US">FPGA</span><span>内部的可编程架构还可用于实现一个或多个更适合决策任务的软核处理器,以及用于诸如硬件加速器之类的控制功能,包括向它们提供数据并根据结果采取措施。</span></p>
<p><span lang="EN-US">RISC-V</span><span>就是这样一种处理器,它是一种开源指令集架构(</span><span lang="EN-US">ISA</span><span>),可以通过开源许可免费获得。<span>莱迪思是首个支持</span></span><span lang="EN-US">RISC-V</span><span>以及为</span><span>其</span><span lang="EN-US">FPGA</span><span>客户免费提供</span><span lang="EN-US">RISC-V IP</span><span>核<span>的基于闪存和</span></span><span lang="EN-US">SRAM</span><span>的</span><span lang="EN-US">FPGA</span><span>供应商。</span></p>
<p><span>对于想要使用这种处理器的非</span><span lang="EN-US">FPGA</span><span>设计人员而言,问题在于他们缺乏有关</span><span lang="EN-US">FPGA</span><span>设计语言、工具和流程的专业知识。为了解决这个问题,莱迪思提供了</span><span lang="EN-US">Propel</span><span>来简化设计流程,让开发人员能够快速设计基于</span><span lang="EN-US">RISC-V</span><span>处理器的系统。</span></p>