datasheet

DigiKey得捷电子

文章数:482 被阅读:169746

账号入驻

FPGA“水深”不敢用?别怕,这块Arduino开发板能帮你~

2019-07-17
    阅读数:


关键词:FPGA, Arduino, MKR Vidor 4000, 编程, 开发


许多设计人员迟早都会发现,微控制器或微处理器上运行的固件可能会变得太慢。现场可编程门阵列(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)。

1Arduino 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开发板却很小。其尺寸为83mm(3.25英寸)× 25mm(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块:VidorPeripheralsVidorGraphics当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图像存储在开发板的8MB 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)。

 

2Arduino 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这个池塘中的水不深也不浅,刚刚合适。



好东西,要分享

如果小伙伴觉得这个内容不错

请点下右下角「在看」或分享到朋友圈





如有任何问题, 欢迎联系得捷电子Digi-Key的客服团队。


中国(人民币)客服

- 400-920-1199

- service.sh@digikey.com

- QQ在线实时咨询 (QQ号:4009201199)


中国(美金)/ 香港客服

- 400-882-4440

- 852-3104-0500

- china.support@digikey.com




关注Digi-Key得捷电子官方微信,定时接收工程师信息和秘籍分享。





About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved