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

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

3天内不再提示

如何使用FPGA开发板编程出更高级的应用

电子设计 来源:郭婷 作者:电子设计 2019-03-20 08:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

许多设计人员迟早都会发现,微控制器微处理器上运行的固件可能会变得太慢。现场可编程门阵列 (FPGA) 为此提供了一种可编程方法,以硬件速度来解决高速、实时、嵌入式设计问题。然而,为了最大限度地利用 FPGA,传统上涉及到一个技术学习曲线,但由于成本和期限压力,许多工程师无法负担这样的学习曲线。

FPGA 的学习曲线常常涉及学习新的编程语言(Verilog 或 VHDL),下载大型开发工具包,学习全新工具开发流程以生成 FPGA 比特流,而且可能要花大量资金(可能数百或数千美元)用于购买 FPGA 开发板。由于这些障碍,尽管 FPGA 是嵌入式设计工具箱中极其有用的工具,但许多设计工程师都避免使用它们。

一些供应商试图通过提供入门 FPGA 板来减少使用 FPGA 的障碍,但学习新硬件描述语言和开发工具的必要性仍然是很高的门槛,阻碍了 FPGA 的更广泛采用。为了破除这些障碍,Arduino 作出了最新的努力,推出一款名为 Arduino MKR Vidor 4000 的新型低成本开发板,其代表了一种在嵌入式系统设计中使用 FPGA 的独特方法。

Arduino MKR Vidor 4000 提供了多种 FPGA 编程方法,这些方法可无缝集成到广受欢迎的 Arduino IDE 中。借助这种方式,通过特殊的 Arduino 库扩展获得 FPGA 级性能,便能使嵌入式系统开发人员直接从 Arduino 草图中快速获益。同时,随着更高级的设计人员对该技术的信心增强,他们可以采取更复杂的 FPGA 使用模型。

本文将首先讨论有关 FPGA 的需求,再介绍 MKR Vidor 4000 开发板的功能。然后,本文将深入阐述如何应用 Arduino 的新型简化方法来使用 FPGA。

第一代 Arduino 开发板

2005 年推出的第一款 Arduino 开发板是基于一个简单的 8 位微控制器:Atmel(现为 Microchip Technology)AVR。此开发板的很多后续产品同样基于该微控制器系列的不同器件。由于成本低且 Arduino IDE 简单易用,Arduino 开发板系列已成为物联网 (IoT) 产品开发的流行平台,常用于 STEM/STEAM 项目。事实上,最初的 Arduino 板就是第一个获得广泛成功的开源硬件项目。

现在,全世界有成千上万的设计师、工程师、开发人员和创客在使用各种版本的 Arduino 开发板系列,其已成为让学生们第一次接触嵌入式编程的首选。人们的创意无限,从音乐、游戏、玩具、智能家居、农业到自主驾驶车辆,其应用范围非常广泛。

随着 Arduino 用户不断将最初的 Arduino 架构推进到越来越复杂的应用领域,性能问题开始出现。一部分问题是最初的 Arduino 微控制器的 8 位架构过于简单。另一部分问题是许多实时外设的软件实现,尤其是时间关键型外设,例如高速定时器、高频 PWM(脉冲宽度调制)输出和正交编码器。这个问题的一种解决办法是使用速度更快、功能更强大的微控制器,但最终软件在实时环境中能做的事情是有限的。一些高速实时功能必须在硬件中实现。

Arduino 和 FPGA 结合

挑战在于让使用 Arduino 的嵌入式开发人员能使用 FPGA 资源,但又不破坏 Arduino 的简易性。Arduino 从硬件角度解决了这一挑战:将 FPGA 添加到 Arduino 架构中,使得 FPGA 可通过 Arduino 库扩展 Arduino 的微控制器外设资源。现有 Arduino 用户很熟悉这些库;当使用 Arduino 的原生外设时,以及向 Arduino 扩展排针添加外设板时,经常会使用这些库。

由此产生的 Arduino 开发板称为 MKR Vidor 4000,其结合了基于 32 位 Arm® Cortex®-M0+ 处理器内核的 Microchip Technology SAMD21 低功耗微控制器的处理能力与 Intel(前身为 Altera)Cyclone 10 10CL016 FPGA(图 1)。

如何使用FPGA开发板编程出更高级的应用

图 1:Arduino MKR Vidor 4000 开发板基于 Microchip SAMD21 微控制器和 Intel Cyclone 10 FPGA。(图片来源:Arduino)

该 FPGA 包含 15,408 个可编程逻辑单元、516,096 比特的嵌入式 RAM 和 56 个 18 x 18 位硬件乘法器,可用于实现高速 DSP。每个 FPGA 的 I/O 引脚切换速度快于 150 兆赫兹 (MHz),这比板载 SAMD21 微控制器的 I/O 速度要快得多。简而言之,板载 FPGA 为 Arduino MKR Vidor 4000 板提供了可观的处理和 I/O 能力。

Arduino MKR Vidor 4000 属于 Maker Arduino 板系列,其新式 MKR 外形尺寸与之前的 Arduino 板不相符。MKR 系列还包括:

Arduino MKR WAN 1300 连接板,带有用于物联网应用的板载 LoRa 射频模块

Arduino MKR GSM 1400 连接板,带有板载蜂窝 RF 模块,适合于需要全球 GSM 连接的物联网应用

与之前的 Arduino 开发板一样,Arduino 的 MKR 系列不仅是针对初学者而开发,专业人员同样可以使用它来快速开发系统原型。Arduino 组织发现越来越多的正规工程项目使用 Arduino 开发板进行原型开发甚至生产,因而开发了该系列板。

Arduino MKR Vidor 4000 包括许多外设,其中有几个是较早期、较简单的 Arduino 所不曾涉及的。有一个 28 针 MKR 排针接口,其与最初的 Arduino 扩展板排针在概念上相似,但在物理上不同。该排针接口中的 I/O 引脚可由 SAMD21 微控制器或 Intel Cyclone 10 FPGA 控制。除了标准化 MKR 排针接口外,Arduino MKR Vidor 4000 板上的外设端口列表还包括:

微型 USB 连接器

微型 HDMI 视频输出连接器

与 Raspberry Pi 相机模块兼容的 MIPI 摄像机连接器

采用 U-BLOX NINA-W102 射频收发器模块实现的 Wi-Fi 和 BLE(低功耗蓝牙)RF 接口

MiniPCIe 连接器,具有多达 25 个用户可编程引脚

请注意,Arduino MKR Vidor 4000 开发板没有真正的 PCIe 接口端口。它只是改造了与 MiniPCIe 端口相关的连接器,在 MiniPCIe 边缘连接器上分接出 Cyclone 10 FPGA 的许多 I/O 引脚。这是一种经济实惠的大容量连接器,现已广泛应用于数以百万计的 PC 主板中,这足以证明其可靠性。MiniPCIe 连接器可用来轻松地将 Arduino MKR Vidor 4000 板插入更大的系统或 I/O 扩展板中。

尽管有如此多的 I/O 连接器,Arduino MKR Vidor 4000 开发板却很小。其尺寸为 83 mm(3.25 英寸)× 25 mm(0.98 英寸),这样便适合安装在嵌入式计算应用越来越常见的狭小空间中。该板的电流消耗额定值为 100 毫安 (mA),因此应当也适合许多嵌入式系统项目的功率包络,其中包括电池供电系统。

该板有一个用于直接连接 3.7 伏锂聚合物 (LiPo) 电池的连接器,如图 1 所示。但是,电流消耗将取决于 FPGA 中实现的功能以及实例化硬件的运行速度,这会使电池容量的计算变得复杂,最终将需要进行一些实验才能确定电池的正确大小。

MKR Vidor 4000 板的视频输出是由 Intel Cyclone 10 FPGA 生成的真正 HDMI 视频输出。Arduino MKR Vidor 4000 板的 Arduino IDE 中包含了 Adafruit GFX 图形核心库,这允许 SAMD21 微控制器使用 Arduino 草图在软件控制下生成图形。

此外,Arduino 还通过两个专门为 MKR Vidor 4000 板创建的主库向 Arduino IDE 添加了几个硬件 IP 块:VidorPeripherals 和 VidorGraphics。当 Arduino 草图中包含相关外设库时,Arduino MKR Vidor 4000 上的 Intel Cyclone 10 FPGA 会自动构建这些硬件 IP 块。目前的外设 IP 块清单包括:

I2C 端口

SPI 端口

UART

高频 PWM 控制器

高速定时器

高速正交解码器

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

同样,Arduino MKR Vidor 4000 板的软件库包含用于该板 MIPI 摄像头输入的视频捕获代码。此库中的例程可以从连接的摄像头中捕获 640 x 480 像素视频图像。摄像头的 24 位 RGB 图像存储在开发板的 8 MB SDRAM 中,该 SDRAM 直接连接到 Cyclone 10 FPGA。此外,可以使用 Arduino MKR Vidor 4000 板的其中一个 I2C 接口访问所连摄像头的控制和状态寄存器

其中一些外设(例如 I2C 和 SPI)已经作为软件 IP 块用于早前的 Arduino 板。这些早期软件实现与 Arduino MKR Vidor 4000 板的 FPGA 上实现的等效 IP 块的区别在于,FPGA 版本的外设性能更好。

例如,每个 I2C 和 SPI 实例化都是通过板上 FPGA 内部的独立可编程硬件块实现的。因此,实例化若干个这样的串行端口时没有性能损失。

FPGA 速度示例:快速正交编码

正交编码器常用作 3D 打印机所用步进电机的定位反馈机制。基于软件的编码器可能会出现问题,因为其速度有限;当处理器忙于执行其他代码时,这些编码器可能会错失计数。Arduino MKR Vidor 4000 板的正交编码器是在 Cyclone 10 FPGA 硬件中实现实例化,其时钟频率为 100 MHz,并采用 32 位硬件计数器实现,因此在任何实际物理系统中都不会错失计数。

每个实例化的正交编码器都利用单独的 FPGA 块实现,因此实例化多个编码器时不会有性能损失。若要实现更多编码器,只需要使用 FPGA 的更多内部可编程逻辑。这是 FPGA 硬件并行性的关键优势。

轻松使用 FPGA — Arduino 方式

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

Arduino 已经完成了这个魔法,通过使用的软件堆栈远远低于最初 Arduino IDE 的软件堆栈,让 FPGA 硬件看起来就像硬件化的外设块。MKR Vidor 4000 板的软件堆栈使用远程过程调用在 Arduino C++ 版本编写的高级草图与开发板的 FPGA 硬件之间建立链接;这些过程调用发送到 FPGA 上实例化的邮箱,而 FPGA 通过 JTAG 连接到 SAMD21 微控制器(图 2)。

如何使用FPGA开发板编程出更高级的应用

图 2:Arduino MKR Vidor 4000 开发板的软件堆栈使用远程过程调用,其通过 JTAG API 传输到 Intel Cyclone 10 FPGA,而 FPGA 可编程硬件上实例化了一个 Arduino 驱动器。(图片来源:Steve Leibson)

使用此软件堆栈访问基于 FPGA 的外设非常简单,只需正确调用适当的 Vidor 外设库即可。Arduino 草图编写人员不必知道 Vidor 的 FPGA 魔法工作原理。它切实有效。

要借助 FPGA 提升系统性能,一种有效的方法当然是访问利用可编程硬件实现的预定义外设 IP 块,不过这样获得的性能提升仅仅是 FPGA 全部能力的一小部分。尽管如此,Arduino 仍然鼓励 MKR Vidor 4000 用户开发更多外设块,以便通过庞大的 Arduino 开源社区扩大选择范围。

然而,Arduino MKR Vidor 4000 板还不是通用的 FPGA 开发板,因为它不支持使用 HDL 代码对板载 Cyclone 10 FPGA 直接编程。不过,Arduino 还计划发布一个 Intel Quartus 项目,演示直接在 MKR Vidor 4000 板上实现 FPGA HDL 代码,从而让更多高级用户可以通过 Arduino MKR Vidor 4000 板的 FPGA 来实现更多用途。Quartus 是一款全面的 HDL 开发工具,Intel 将其提供给设计人员开发采用该公司 FPGA 的 FPGA 设计。

当 Arduino 为 Arduino MKR Vidor 4000 板发布此 Quartus 项目时,想要学习 HDL 编程的设计师、工程师、创客和学生们将能把该板用作更高级 FPGA 项目的低成本开发与生产平台。借助这种直接 FPGA 编程功能,设计人员将能在 Arduino MKR Vidor 4000 板的 FPGA 中实例化几乎任何类型的硬件块。例如,板载 FPGA 资源足以在 FPGA 结构中容纳 Arm Cortex-M1 处理器内核。这样做将会把 Arduino MKR Vidor 4000 板变换成双处理器嵌入式系统。

总结

虽然 FPGA 与微控制器或微处理器一起能为许多处理功能提供更高的性能,但这需要很长的学习曲线。Arduino MKR Vidor 4000 板和配套的 Arduino IDE 大大降低了学习如何使用 FPGA 开发更高级应用的门槛。想要了解 FPGA“水有多深”的设计人员可能会发现,Arduino MKR Vidor 4000 这个池塘中的水不深也不浅,刚刚合适。

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

    关注

    49

    文章

    8872

    浏览量

    165723
  • FPGA
    +关注

    关注

    1664

    文章

    22503

    浏览量

    639284
  • 微处理器
    +关注

    关注

    11

    文章

    2440

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Azukar-FPGA开源FPGA教育开发板介绍

    初学 FPGA 数字设计总遇坎?商用开发板绑定专有工具链,学习成果无法跨项目复用;元件封装稀有难焊接,新手手动装配频频失败;设计文件不公开,想复刻改造却无据可依;开发板架构固定,适配不了实验室多样的实训需求?
    的头像 发表于 03-11 11:22 614次阅读
    Azukar-<b class='flag-5'>FPGA</b>开源<b class='flag-5'>FPGA</b>教育<b class='flag-5'>开发板</b>介绍

    全方位解析:什么是异构开发板?为什么选GM-3568JHF?

    异构开发板集成两种或多种处理器,如ARM与FPGA。ARM负责通用控制,FPGA加速特定工作,二者协同保证系统灵活性与高性能。与普通开发板相比,异构
    的头像 发表于 12-19 15:04 7501次阅读
    全方位解析:什么是异构<b class='flag-5'>开发板</b>?为什么选GM-3568JHF?

    基于FPGA开发板DE10-Standard和T-Core的串口通信设计

    本文适用于DE10-Standard、T-Core、DE1-SOC以及DE10-Nano等有GPIO引脚外扩的FPGA开发板
    的头像 发表于 10-28 11:15 4910次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>DE10-Standard和T-Core的串口通信设计

    基于FPGA开发板TSP的串口通信设计

    本文详细介绍基于Terasic FPGA开发板TSP(又名C5P和OSK)和其板载CP2102N USB-UART桥接芯片的串口通信系统设计与实现。系统采用Verilog HDL编写UART收发控制器,通过CP2102N实现FPGA
    的头像 发表于 10-15 11:05 4819次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>TSP的串口通信设计

    基于FPGA开发板DE23-Lite的串口通信设计

    DE23-Lite开发板提供了一个UART通信接口(物理接口是下图的Type C接口),用户能够通过主机与Agilex 3 FPGA进行串口通信。
    的头像 发表于 10-15 10:57 4769次阅读
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>DE23-Lite的串口通信设计

    2025 ALINX入门竞赛类FPGA开发板选型指南

    FPGA 开发板的核心芯片主要分为两大类:纯 FPGA 芯片和 SoC(System on Chip)芯片。
    的头像 发表于 09-17 16:56 2272次阅读
    2025 ALINX入门竞赛类<b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>选型指南

    Pico2-ICE FPGA开发板的应用示例

    FPGA 和 MCU 结合的开发板不多,而 Pico2‑ICE 则把小巧、灵活和易上手完美结合。搭载 RP2350 双核 RISC-V MCU + Lattice iCE40UP5K FPGA,配合官方 SDK,你可以一步步跑通
    的头像 发表于 09-06 10:02 1318次阅读
    Pico2-ICE <b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>的应用示例

    【PZ7020-StarLite 入门级开发板】——FPGA 开发的理想起点,入门与工业场景的双重优选

    对于初入 FPGA 与嵌入式系统开发领域的工程师而言,一款兼具专业性与易用性的入门级开发板是快速建立技术认知、提升实践能力的关键工具。璞致电子科技(上海)有限公司深耕 SDR 及 ARM/FP
    的头像 发表于 08-08 14:53 1496次阅读
    【PZ7020-StarLite 入门级<b class='flag-5'>开发板</b>】——<b class='flag-5'>FPGA</b> <b class='flag-5'>开发</b>的理想起点,入门与工业场景的双重优选

    是否需要买一个fpga开发板

    纠结要不要买个 FPGA 开发板?真心建议搞一块,尤其是想在数字电路、嵌入式领域扎根的同学,这玩意儿可不是可有可无的摆设。入门级的选择不少,全新的像 Cyclone IV、Artix 7 系列,几百块就能拿下,要是去二手平台淘淘,两三百块就能收到挺不错的,学生党完全能承受
    的头像 发表于 07-31 10:32 892次阅读
    是否需要买一个<b class='flag-5'>fpga</b><b class='flag-5'>开发板</b>?

    Vivado无法选中开发板的常见原因及解决方法

    在使用 AMD Vivado Design Suite 对开发板(Evaluation Board)进行 FPGA 开发时,我们通常希望在创建工程时直接选择开发板,这样 Vivado
    的头像 发表于 07-15 10:19 1953次阅读
    Vivado无法选中<b class='flag-5'>开发板</b>的常见原因及解决方法

    ALINX AMD RFSoC射频开发板选型指南

    ALINX 作为 FPGA 开发板领域领先供应商,RFSoC 系列开发板精准定位于雷达通信、5G 基站、卫星通信、测试测量等对性能要求严苛的高端射频应用。
    的头像 发表于 07-11 10:03 1871次阅读
    ALINX AMD RFSoC射频<b class='flag-5'>开发板</b>选型指南

    有ARM,NPU,FPGA三种核心的开发板 — 米尔安路飞龙派开发板

    最近我发现一个有趣的开发板。这个开发板集合了ARM核心,NPU核心甚至还有FPGA核心。它就是米尔新出的YM90X开发板。它基于安路科技所打造的芯片上海安路信息科技于2021年在上交所
    的头像 发表于 06-13 08:03 2001次阅读
    有ARM,NPU,<b class='flag-5'>FPGA</b>三种核心的<b class='flag-5'>开发板</b> — 米尔安路飞龙派<b class='flag-5'>开发板</b>

    【新品】远距离图传数传模块开发板、蓝牙模块开发板、无线模块开发板

    新品上市图传数传模块开发板蓝牙模块开发板国产无线模块开发板部分型号参与送样文末了解详情↓↓↓EWT611-900NW20S远距离图传数传模块开发板EWT611-900NW20S是一款入
    的头像 发表于 06-12 19:33 1421次阅读
    【新品】远距离图传数传模块<b class='flag-5'>开发板</b>、蓝牙模块<b class='flag-5'>开发板</b>、无线模块<b class='flag-5'>开发板</b>

    【干货分享】:开源小巧的FPGA开发板——Icepi Zero

    “IcepiZero是一款经济实惠的FPGA开发板,和树莓派Zero一样的外形尺寸。它搭载LatticeECP525F,可在保持小巧便携尺寸的同时实现强大的设计。它还具有一个HDMI端口,可轻松输出
    的头像 发表于 06-10 08:05 1714次阅读
    【干货分享】:开源小巧的<b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>——Icepi Zero

    【开源分享】:开源小巧的FPGA开发板——Icepi Zero

    活动推荐:拥抱开源!一起来做FPGA开发板啦!https://bbs.elecfans.com/jishu_2491185_1_1.html 项目计划以紫光同创PG2L25H-6IMBG325为
    发表于 06-09 14:01