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

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

3天内不再提示

Arduino环境中的FPGA:模块支持预配置和定制IP

丫丫119 来源:未知 作者:肖冰 2019-08-14 10:44 次阅读

当固件在微控制器微处理器上的运行速度过慢时,现场可编程门阵列 (FPGA) 可解决实时嵌入式设计的硬件问题。同时,FPGA 还具有外设灵活性。然而,要使用 FPGA,设计工程师就需要学习全新的编程语言(通常为 Verilog 或 VHDL)以及全新的开发流程来生成 FPGA 比特流,而且可能需要投入大量资金用于购买 FPGA 开发板。

由于这些障碍,尽管 FPGA 是设计工具箱中非常有用的工具,但许多设计工程师都不愿意使用。为帮助他们克服这种心态,一些供应商正在致力于缩短 FPGA 学习曲线。例如,Arduino推出了 ArduinoABX00022 MKR Vidor 4000FPGA 开发板(参见“通过 Arduino MKR Vidor 4000 快速轻松地应用 FPGA”)。Arduino MKR Vidor 4000 提供了另一种 FPGA 编程方法,与广受欢迎的Arduino 集成开发环境(IDE) 无缝集成,并且可以使用专用 Arduino 库扩展获得 FPGA 级性能。

现在又推出新产品以替代早前的产品,其中就包括 Arduino MKR Vidor 4000 板。Alorium Technology则开发了一种稍微不同的方法来将 FPGA 性能添加到 Arduino 嵌入式开发环境中。这种方法既支持预配置 IP 块进行 I/O 加速,也支持定制设计的 IP 块。

本文首先简要介绍 FPGA 的传统使用方法,然后深入介绍 Alorium 的 Arduino 兼容型XLR8R22M08V5U0DI和 SnōSNOR20M16V3FPGA 模块。本文将说明 Alorium 如何以全新的理念在 Arduino 环境中使用 FPGA,既支持预配置 IP,又能构建定制 IP,以及设计人员如何开始应用 FPGA 模块。

如何加速 Arduino

现在,全球成千上万的设计人员、工程师、开发人员、DIY 爱好者和创客都在使用 Arduino 开发板系列的不同版本,为各种各样的应用开发嵌入式系统。由于 Arduino 板和 Arduino IDE 的使用和编程方法都非常简单,因此深受欢迎。

随着 Arduino 用户不断将最初的 Arduino 架构推进到更加复杂的应用领域,性能问题开始出现。一部分性能问题是最初的 Arduino 微控制器的 8 位架构过于简单。另一部分问题是当 Arduino 的嵌入式微控制器不具备等效硬件块时,Arduino 软件系统只能通过软件实现大量实时外设。

这一性能问题的一种解决方法是使用功能更强大的微控制器,但软件在实时环境中能做的事情是有限的。一些高速实时外设必须在硬件中实现。此外,虽然也可以使用配备更多硬件外设的微控制器,但适用的外设组合则取决于具体的项目。

对此,微控制器制造商常在一个微处理器系列中提供数十个甚至上百个版本,以此解决对于不同外设组合的需求。然而,这种方法对于 Arduino 等板级产品并不可行,因为必须使用具有足够 I/O 引脚的板载连接器来满足所有需求。尽管现在市面上有很多版本的 Arduino 板,但仍然不足以满足所有嵌入式项目的需求。

FPGA 可满足各种外设组合需求

通过向嵌入式设计人员提供可编程硬件,FPGA 能够满足因项目而异的外设组合需求。为嵌入式微控制器板添加 FPGA 功能的一种简单方法是,将 FPGA 添加到现有设计中。这也是 Arduino 在设计 Arduino MKR Vidor 4000 板时采用的方法。该板结合了Microchip Technology的基于 32 位Arm®Cortex®-M0+ 的ATSAMD21G18A-AUTSAMD21 低功耗微控制器与Intel的10CL016YU484C6GCyclone 10 FPGA。

Arduino 专为 MKR Vidor 4000 板向 Arduino IDE 中添加了几个硬件 IP 块。这些外设可由两个主库提供:VidorPeripherals和VidorGraphics。当 Arduino 草图(Arduino 用来表示程序或代码单元的名称)中包含相关外设库时,Arduino MKR Vidor 4000 上的 Intel Cyclone 10 FPGA 会自动构建这些硬件 IP 块。目前的外设 IP 块清单包括:

I2C 端口

SPI 端口

UART

高频 PWM 控制器

高速定时器

高速正交解码器

Adafruit Industries的Neopixel可寻址 RGB 智能 LED 控制器

其中一些外设(例如 I2C 和 SPI)已经作为软件 IP 块用于早前的 Arduino 板。这些早期软件实现与 Arduino MKR Vidor 4000 板的 FPGA 上实现的等效 IP 块的区别在于,FPGA 版本的外设性能更好。例如,每个 I2C 和 SPI 实例化都是通过板上 FPGA 内部的独立可编程硬件块实现的。因此,实例化若干个这样的串行端口时没有性能损失。

通过以 FPGA 硬件实现外设块,并借助 Arduino 草图编写人员已经熟悉的相同库机制使其可用,Arduino MKR Vidor 4000 板简化了 FPGA 的使用。无需学习 VHDL 或 Verilog 之类新的硬件描述语言 (HDL)。实际上,对于程序员而言,基于 FPGA 的外设与任何其他 C++ 对象并无二致。Arduino 计划日后添加更多此类硬件 IP 块外设。

然而,Arduino MKR Vidor 4000 板与通用的 FPGA 开发板仍有所不同,因为它不支持使用 HDL 代码对板载 Cyclone 10 FPGA 直接编程。Arduino 正计划使用 Intel 面向 FPGA 的Quartus HDL 开发工具,允许更多高级用户通过 Arduino MKR Vidor 4000 板的 FPGA 来实现更多用途。

Alorium 迈出下一步

对于 Arduino 兼容型 XLR8R22M08V5U0DI 和 SNOR20M16V3 Snō FPGA 开发板,Alorium 已通过 OpenXLR8 方法和 Xcelerator Block (XB) 迈出了这一步(图 1 和图 2)。这两款板基于 IntelMAX 10 FPGA 系列的不同版本构建,该系列集成有闪存配置存储器。XLR8 结合了 Intel10M08SAU169C8GMAX 10 与 8 位 ATmega328 指令集兼容型微控制器。它的外形尺寸与最初的Arduino Uno开发板相同,因此与很多 Arduino Shield 和配件兼容。

图 1:Alorium Technology 的 XLR8R22M08V5U0DI 开发板结合了 Intel MAX 10 FPGA 与 8 位 ATmega328 指令集兼容型微控制器,全部集成在一个 Arduino Uno 外形尺寸中。(图片来源:Alorium Technology)

Alorium Snō FPGA 开发板的尺寸相对小得多,该模块尺寸规格为 0.7 x 1.7 英寸,见图 2。尽管 Snō FPGA 开发板的物理尺寸更小,但它集成了 Intel MAX 10 FPGA 的更高版本,配备的逻辑单元也多出一倍:10M16SAU169C8GMAX 10 FPGA 有 16K,而 XLR8 板上的 10M08 器件只有 8K。前者的 I/O 引脚也是后者的两倍多(32 个,对比 XLR8 板的 14 个)。

图 2:与 XLR8 开发板一样,Alorium Technology 的 Snō FPGA 开发板也结合了 8 位 ATmega328 指令集兼容型微控制器与 Intel MAX 10 FPGA — 该开发板采用的是 10M16SAU169C8G FPGA。不过,Snō FPGA 开发板的尺寸规格小得多。(图片来源:Alorium Technology)

Alorium 还提供了SNOMAKRR10分线板,可将 Snō FPGA 模块转换为稍大的 Arduino 外形尺寸板,配备 USB 端口和来自 FPGA 的附加 I/O 分线引脚。Snō FPGA 模块的一些引脚连到与 Arduino 兼容的 SnōMAKR 分线板扩展排针,而其他引脚连到 USB 连接器对面、沿开发板边缘分布的一排附加针座(图 3)。

图 3:Alorium 的 SNOMAKRR10 分线板可以将该公司的 Snō FPGA 开发板转换为与 Arduino 兼容的外形尺寸,配备 USB 端口和板载稳压器,因而使用 USB 电缆就能直接为开发板供电。(图片来源:Alorium Technology)

XLR8 和 Snō FPGA 开发板都在一个芯片 — IntelMAX 10FPGA 中实现 8 位微控制器及其硬件外设。图 4 图解说明了实现方法。

图 4:XLR8 和 Snō FPGA 开发板都在 MAX 10 FPGA 中以软内核方式实现AtmelAVR 兼容型微控制器。(图片来源:Alorium Technology)

AVR 兼容型微控制器内核(图 4 左下部分)与最初 Arduino 开发板中使用的 AtmelATmega3288 位 AVR 微控制器相同。然而,Alorium 的 AVR 微控制器是以 FPGA 中的软内核方式实现,而不是另载于独立芯片之上。

图 4 中,该微控制器内核上方共有五个 Alorium XB(XB1 至 XB5)。XB 是通过 FPGA 的片上资源实现的 IP 块。AVR 微控制器可通过可寻址寄存器接口与这些片上 XB 进行通信。XLR8 和 Snō 开发板随附了预安装的 XB(也在 GitHub 中提供),它们相当于 Arduino 开发人员经常需要使用的外设,包括:

正交解码

伺服电机控制

NeoPixel RGB LED 控制

12 位增强型 ADC

浮点数学

请注意,上面列出的最后一种 XB 其实并不是 I/O 外设块,而是浮点数学加速器。XB 可以是任何类型的硬件加速器,而不只局限于 I/O。

选取任何块

XLR8 和 Snō FPGA 开发板都可现场更新,方法是选择不同的 XB(或多个同类 XB),使用 Alorium 的 OpenXLR8 开发流程在 FPGA 中实例化。开发人员也可以使用 Alorium 的 OpenXLR8 流程构建定制 Xcelerator Block(图 5)。

图 5:通过 Alorium 的 OpenXLR8 开发流程,设计人员可以使用 Intel 的 Quartus Prime 设计工具构建新的硬件块,并将其添加到 Arduino IDE。(图片来源:Alorium Technology)

目前,要构建定制的 XB,设计人员必须具备 Verilog 或 VHDL 硬件描述语言的应用知识,并且熟悉 Intel Quartus FPGA 工具套件 — 尤其是 Quartus Prime Lite Edition 17.1 版和 Mentor Graphics 的 ModelSim 仿真工具。HDL 对于 FPGA 开发必不可少,因为它允许设计人员以一种标准的、定义完善的方式来表达多个任务的并行执行。C 和 C++ 等高级语言 (HLL) 实质上是顺序语言。

HLL 编译器获取 HLL 源代码,将其转换成一长串机器指令序列,通常一次只能执行一个指令。这也是 FPGA 比处理器快得多的原因所在 — FPGA 能够同时执行数千个任务,只要 FPGA 足够大。有一些 HLL 编译器能够将 C 或 C++ 编写的代码转换为 HDL,然后由常规的 FPGA 工具处理,但目前 Alorium 的 OpenXLR8 设计流程并不包括这些 HLL 编译器。

然而,一旦使用 HDL 和 FPGA 开发工具设计并调试了 XB,即可像任何其他 Arduino 库块一样在 Arduino IDE 中使用。目前,Alorium 也在为 Arduino IDE 库开发更多的 XB。

总结

在构建各自的 FPGA 开发板方面,Arduino 和 Alorium Technology 公司都认识到设计人员越来越多地需要这些经济实惠的开发板提供更多的嵌入式性能。尽管两家公司采取的策略虽有所不同,但最终目标却别无二致:努力让更多嵌入式开发人员更方便地使用 FPGA。在最基础的层面上,Arduino 和 Alorium 的方法让硬件设计就像选取块并运行脚本一样简单。

目前,完整的设计流程尚不够简单。Arduino 尚未向 HDL 开发人员开放完整的 FPGA 开发流程。虽然 Alorium 的设计流程确实包括 HDL 设计,但要求开发人员必须具备 Verilog 或 VHSL FPGA 设计语言和工具的知识。

不过,这些产品已将大门开启,至少在理论上可以利用 C 和 C++ 硬件编译器等其他 FPGA 开发方式。届时,将可以通过使用 Alorium Technology 和 Arduino 开发的简单方法将这些功能添加到 Arduino IDE 中,充分发挥 FPGA 的性能。

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

    关注

    1629

    文章

    21729

    浏览量

    603046
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    186968
收藏 人收藏

    评论

    相关推荐

    Modbus转Ethernet/IP网关模块与汇川PLC通讯在网关配置软件配置

    通过Modbus转Ethernet/IP网关模块XD-MDEP100,实现汇川PLC与多种品牌Modbus设备的无缝通信,提高系统效率和稳定性。配置软件GWModbusBuilder完成网关与PLC通讯设置,
    的头像 发表于 07-16 09:16 1423次阅读
    Modbus转Ethernet/<b class='flag-5'>IP</b>网关<b class='flag-5'>模块</b>与汇川PLC通讯在网关<b class='flag-5'>配置</b>软件<b class='flag-5'>中</b>的<b class='flag-5'>配置</b>

    采用LabVIEW FPGA模块和可重新配置I/O设备开发测量与控制应用

    FPGA技术的灵活性整合到测量和控制系统当中。您可以使用LabVIEW 这一专门为测量和自动化控制应用开发所设计的图形化开发环境,对嵌入在NI R 系列RIO 设备FPGA 进行
    发表于 07-23 08:15

    使用FPGAIP Core实现定制缓冲管理

    本帖最后由 eehome 于 2013-1-5 09:45 编辑 在通信网络系统,流量管理的核心是缓存管理、队列管理和调度程序。本文结合使用FPGAIP Core阐述缓存管理的结构
    发表于 11-09 18:43

    如何使用FPGAIP Core实现定制缓冲管理?

    如何使用FPGAIP Core实现定制缓冲管理?
    发表于 04-29 06:01

    如何在Arduino IDE上配置好NodeMCU的开发环境

    0. 环境与预备工作Arduino IDE + NodeMCU + PIR模块 + Firefox已经在Arduino IDE上配置好Nod
    发表于 11-01 09:17

    Arduino-IDE配置ESP32开发环境的正确方式

    Arduino-IDE配置ESP32-CAM开发环境踩过的那些坑Arduino-IDE配置ESP32开发
    发表于 01-25 07:40

    怎样去安装和配置Arduino IDE开发环境

    目录一、安装和配置Arduino IDE开发环境1.Arduino 简介2.软件安装及配置二、编译及烧录1、
    发表于 01-26 07:39

    FPGAIP核的生成

    FPGAIP核的生成,简单介绍Quartus II生成IP核的基本操作,简单实用挺不错的资料
    发表于 11-30 17:36 11次下载

    工业环境的Raspberry PI和Arduino

    Raspberry PI和Arduino板是快速电子成型和家庭DIY应用中非常有名的设备,不过他们在工业环境的功能性和灵活性在很大程度上还有待评估。Raspberry PI和Arduino
    发表于 06-23 11:32 4411次阅读

    FPGA VI不同的Xilinx内核生成器IP设计实现与子模板说明

    。 使用Xilinx内核生成器IP函数实现FPGA VI不同的Xilinx内核生成器IP。LabVIEW使用IP集成节点实现上述函数。函数
    发表于 11-18 05:54 1467次阅读

    Achronix宣布为其eFPGA IP解决方案推出定制单元块

    Achronix 今日宣布为其eFPGA IP解决方案推出Speedcore custom blocks定制单元块。Achronix Speedcore eFGPA嵌入式FPGA可加速
    发表于 01-22 16:42 951次阅读

    如何使用Arduino ESP8266开发板配置标准的Arduino开发环境

    在本教程我们将展示如何配置标准Arduino IDE使用Arduino ESP8266 IDE。Arduino IDE可 以直接加载ESP
    发表于 01-23 13:59 48次下载
    如何使用<b class='flag-5'>Arduino</b> ESP8266开发板<b class='flag-5'>配置</b>标准的<b class='flag-5'>Arduino</b>开发<b class='flag-5'>环境</b>

    IP例化和几个基于FPGA芯片实现的Demo工程

    本文接续上一篇《FPGA杂记基础篇》,继续为大家分享IP例化和几个基于FPGA芯片实现的Demo工程。IP例化IP即是一个封装好的
    的头像 发表于 12-24 12:58 1278次阅读

    Arduino IDE配置STM32开发环境和程序烧录

    Arduino IDE配置STM32开发环境和烧录前言:最近在制作3D打印机,自己画了一块STM32F446的3D打印机板子(RUMBA32),但是在Arduino编译Marlin固件
    发表于 12-24 19:30 9次下载
    <b class='flag-5'>Arduino</b> IDE<b class='flag-5'>配置</b>STM32开发<b class='flag-5'>环境</b>和程序烧录

    FPGA-串口通信模块(含IP核)

    ARTIX-xlinx 版本FPGA 串口通信模块(含IP核)
    发表于 06-20 11:07 13次下载