Arduino MKR Vidor 4000的出现确实让我挺意外的,为何?因为它是一款FPGA开发板。众所周知,Arduino最深入人心的东西就是其简单的入门,快速的开发,这种特性很好的体现在它的硬件以及开发工具上,因此,Arduino一度成为刚接触嵌入式编程的学生或者工程师群体,甚至是电子业余爱好者的首选。
但是,MKR Vidor 4000的推出打破了这种简单,FPGA相比MCU入门更难,开发工具也庞大复杂,学习成本大,甚至说你没有一定的专业知识连入门都不易,那这种有违Arduino特色的板子意义何在?我理解为两点:1.目前人工智能火爆,而FPGA则是人工智能中可谓全能的角色,高端可用于推理加速乃至训练,入门级的则作为嵌入式边缘计算的辅助被很好的应用在低功耗领域,如物联网、移动电子设备等,所以FPGA作为一个“有潜力的风口”切入不错;2. 目前Arduino所有的产品核心器件较为单一,都是简单的通用MCU,甚至连个“全家桶”MCU都没有,这种单一适合初学者,但是无法满足更高需求的用户,因此推更加灵活和强大的FPGA作为产品线的补充,用于覆盖更多用户群体。当然,这只是我个人的推测,事实究竟是怎样?相信看完本文你也会有自己的理解。
MKR Vidor 4000
MKR Vidor 4000作为一款拇指型的开发板,小巧精致是它固有的特性,这是优点,同时也是缺点。优点在于没有复杂的硬件,上手理解应该会比较简单;而缺点则是因为太过简单,所以注定不可能搭载很多功能,而且更多的功能实现都需要靠外接其它功能外设支持,成本花销会很大。不过对于MKR Vidor 4000来说,这种缺点不明显,为何?因为它不像其它的Arduino开发板一样搭载纯粹的MCU,MKR Vidor 4000搭载英特尔FPGA与Microchip MCU相结合,其特有的属性让它变得非常灵活又难能可贵,比如它可以做以往Arduino系列板卡做不到的事情,处理高速的音频、视频信号。
从我见到MKR Vidor 4000的第一眼开始就知道这个板子非常适合作为原型开发,当你了解清楚这板子的功能后完全可以基于此做应用级的开发,板子搭载的众多丰富接口都有配套的外设模块,有钱就买买买,当然没钱的话玩玩单板其实也是可以的,毕竟FPGA的无限可编程性还是能给大家留下一个预期。Vidor 4000的外设接口分布如下图所示:
Vidor 4000板子的背面很简洁,主要是板卡的电源管理部分。而对应的另一侧则是miniPCIe接口,这在Arduino的开发板上还属于十分罕见,也是因为这个接口的原因,很多应用可以直接基于Vidor 4000做原型开发。板子PCB上也贴心的开了两个U型凹槽用于螺丝固定,真正方面那些需求融合进自己产品设计的用户。
在靠近MicroUSB接口处有两颗电源芯片,一颗为TI的bq24195L,集成了开关模式电池管理和系统电源路径管理,可以应用于各类移动电源、平板电脑和其他便携式设备的单节锂离子和锂聚合物电池,在这块板子上,当同时存在电池与USB供电的时候,通过内部开关会自动切换为USB供电;另一颗为英特尔的EZ6301QI,这是一款可扩展的多输出 PowerSoC,集成了 3 个独立电源:一个 1.5A DC-DC 降压转换器(包含集成式电感器)和两个300mA的线性稳压器,如下图所示,仅需少量的外围器件就可以组成Vidor 4000所需要的电源系统。
板子正面的5V MicroUSB供电接口,外接I2C模块接口以及锂电池供电接口。
另一侧则是几个比较“高端”的接口,miniPCEIe、MiPi CSI、MicroHDMI。
这种接口一般在Arduino的MCU开发板上基本不会存在,但在Vidor 4000上齐全了,这主要依托于板载的这颗Intel Cyclone 10 FPGA,因此板子上的miniPCIe接口所涉及到的引脚都是FPGA的可编程IO口,用户可以自己定义需要的接口信号,非常灵活,也易于嵌入式到现有的产品中去。
英特尔的Cyclone FPGA具体型号为10CL016YU256CBG,包含16K逻辑单元,504 KB嵌入式RAM和56个18x18 bit HW乘法器,用于高速DSP。每个pin脚都可以在150 MHz以上速度进行切换,并可配置为UART,(Q)SPI,高分辨率/高频率 PWM,正交编码器,I2C,I2S,Sigma Delta DAC等功能。
FPGA部分关联的功能以及外设接口,参照下表:
MCU部分关联的功能以及外设接口,参照下表:
上电使用
如果您本身熟悉FPGA开发,那么毫无疑问你对Verilog,VHDL和RTL都不陌生。虽然Vidor的工具链提供了对这些语言的支持,但这肯定不是它原本的目的,要不然用户为何要选择这个Arduino的FPGA开发板(市面上更多功能,更强性能的FPGA开发板多的是),而且,这样的话将Arduino的生态置于何处?
Vidor 4000的目的显然是让任何人都可以更轻松配置FPGA,玩转FPGA,所以传统的FPGA开发方式肯定不是Vidor 4000想传达给用户的,这点很重要,也就是说,你可以将Vidor看作是一个使用FPGA的平台,而不是一个学习FPGA的平台。真要学习FPGA的朋友,推荐使用爱板网评测过的另一款小脚丫FPGA比较合适。
官方为MKR Vidor 4000开发板提供了不少库以及IP,如MIPI相机输入、DVI输出、120MHz DAC、QR码跟踪器、PWM、四编码器、I2C,I2S,SPI和UART、FFT、FIR滤波器,所以,我们可以直接拿来使用。
必要的开发环境安装有:(Vidor 4000三件套)
Arduino IDE工具
MKR Vidor开发板支持包
库管理包
东西准备就绪,那就可以使用上面的“三件套”实现基本的功能演示,我们借助了树莓派上的摄像头,通过MiPi摄像头接口输入,MicroHDMI输出,输出连接到显示器上。
程序是一个二维码检测器。
源码如下
#include “VidorGraphics.h”
#include “VidorCamera.h”
VidorCamera vcam;
#define MAXDIM 10
static uint16_t x[QR_PT_DET_NUM], y[QR_PT_DET_NUM];
struct qrPtn {
uint16_t x[QR_PT_DET_NUM];
uint16_t y[QR_PT_DET_NUM];
};
static qrPtn qrBufferPtn[MAXDIM];
uint16_t count = 0, last;
void setup() {
Serial.begin(9600);
// wait for the serial monitor to open,
// if you are powering the board from a USB charger remove the next line
while (!Serial);
if (!FPGA.begin()) {
Serial.println(“Initialization failed!”);
while (1) {}
}
/**
begin() enable the I2C communication and initialize the display for the camera
*/
if (!vcam.begin()) {
Serial.println(“Camera begin failed”);
while (1) {}
}
/**
qrrec.begin(); enable the QR code recognition
*/
vcam.qrrec.begin();
delay(4000);
Serial.println(“Power ON”);
}
void loop() {
/**
qrrec.readQRCode(); get, if available, the coordinates of the QR code in the screen
*/
vcam.qrrec.readQRCode();
for (int i = 0; i 《 QR_PT_DET_NUM; i++) {
if (vcam.qrrec.qr.pt[i].valid) {
x[i] = (vcam.qrrec.qr.pt[i].xs + vcam.qrrec.qr.pt[i].xe) / 2;
y[i] = (vcam.qrrec.qr.pt[i].ys + vcam.qrrec.qr.pt[i].ye) / 2;
vcam.vgfx.Cross(x[i], y[i], 65535);
}
}
last = count % MAXDIM;
for (int i = 0; i 《 QR_PT_DET_NUM; i++) {
vcam.vgfx.Cross(qrBufferPtn[last].x[i], qrBufferPtn[last].y[i], 0, 0);
qrBufferPtn[last].x[i] = x[i];
qrBufferPtn[last].y[i] = y[i];
}
count++;
}编译下载,实际的运行结果如下,可以在显示器上看到经过摄像头采集,FPGA处理后输出的图像效果,显然图像处理方面应该没有任何调教过,优化,所以看起来会比较渣,但是二维码的检测定位的功能是没问题的。
除了此demo外还有不少关于摄像头输入和HDMI输出的demo,相较之下还比这个二维码检测的demo少了些许功能,而在图像输出上也没什么提升,所以不再演示了。从Vidor 4000提供的一些demo不难发现基本上都是关于一些IP的使用,明白我意思不,这个所谓的“使用”,不是教你如何去学习开发FPGA,而是教你如何像先前使用Arduino IDE开发MCU那样去玩FPGA,官方将复杂的功能实现都模块化成库或者IP,用户只需通过原本的Arduino IDE工具像简单的MCU开发一样去使用FPGA。
小结
相比传统的Arduino开发板,Vidor 4000的优势在于集成了灵活多变的FPGA,体现在板卡上的话就是具备了MiPi CSI(没有MIPI DSI接口是个遗憾)、MicroHDMI、miniPCIe等与传统的Arduino MCU开发板不同的“先进”接口,配合Arduino官方提供的库以及相关的IP,用户可以在原本简单的Arduino开发板是实现更加灵活、更多功能的扩展,实现更复杂的应用。在不少用户眼里,认为Arduino的简单是理所当然的,但是我要说的是我们现在所能得到Arduino的一切理所当然的简单是靠许许多多工程师倾注心血用复杂去构建,Arduino之所以能在全球范围内流行,并不是因为它本身简单,而是它将复杂简单化,就比如说文章中的MKR Vidor 4000,这或许是你这辈子最有底气去接触FPGA的一个产品了。
-
FPGA
+关注
关注
1655文章
22280浏览量
630047 -
FPGA开发板
+关注
关注
10文章
127浏览量
32325
发布评论请先 登录
在Arduino MKR WIFI 1010上使用LoRa库遇到问题
MKR Vidor 4000一款拇指型的FPGA开发板
使用Grove Sensor的Arduino MKR1010和阿里云IoT
带有Arduino MKR1010和MKR RGB Shield的Otto Biped
如何将Arduino MKR和Portenta安装到机柜中
如何使用Arduino MKR GSM 1400的蜂窝定位
使用Arduino MKR1000通过WiFi进行HID攻击

简评FPGA——Arduino MKR Vidor 4000
评论