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

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

3天内不再提示

简评FPGA——Arduino MKR Vidor 4000

西西 来源:刘林华 作者:电子发烧友 2018-12-19 14:31 次阅读

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
    +关注

    关注

    1602

    文章

    21302

    浏览量

    593109
  • FPGA开发板
    +关注

    关注

    10

    文章

    119

    浏览量

    31324
收藏 人收藏

    评论

    相关推荐

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

    最新的努力,推出一款名为 Arduino MKR Vidor 4000 的新型低成本开发板,其代表了一种在嵌入式系统设计中使用 FPGA
    的头像 发表于 03-20 08:05 3489次阅读
    如何使用<b class='flag-5'>FPGA</b>开发板编程出更高级的应用

    Arduino MKR WIFI 1010上使用LoRa库遇到问题

    Arduino MKR WIFI 1010上使用LoRa不能初始化SX1276. 不知道是SPI在库里不能使用还是其他的问题,请大师指点!谢谢!
    发表于 04-21 14:18

    MKR Vidor 4000一款拇指型的FPGA开发板

    MKR Vidor 4000作为一款拇指型的开发板,小巧精致是它固有的特性,这是优点,同时也是缺点。优点在于没有复杂的硬件,上手理解应该会比较简单;而缺点则是因为太过简单,所以注定不可能搭载很多功能,而且更多的功能实现都需要靠外
    发表于 08-05 17:56 1102次阅读
    <b class='flag-5'>MKR</b> <b class='flag-5'>Vidor</b> <b class='flag-5'>4000</b>一款拇指型的<b class='flag-5'>FPGA</b>开发板

    Arduino MKR GSM 1400和DTMF开源

    电子发烧友网站提供《Arduino MKR GSM 1400和DTMF开源.zip》资料免费下载
    发表于 11-02 09:52 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b> GSM 1400和DTMF开源

    使用MKR IoT载体的Arduino灯控制器

    电子发烧友网站提供《使用MKR IoT载体的Arduino灯控制器.zip》资料免费下载
    发表于 11-17 14:34 0次下载
    使用<b class='flag-5'>MKR</b> IoT载体的<b class='flag-5'>Arduino</b>灯控制器

    将MQTT协议物联网与Arduino MKR1010 WiFi结合使用

    电子发烧友网站提供《将MQTT协议物联网与Arduino MKR1010 WiFi结合使用.zip》资料免费下载
    发表于 11-18 12:04 0次下载
    将MQTT协议物联网与<b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b>1010 WiFi结合使用

    带有Arduino MKR1010和MKR RGB Shield的Otto Biped

    电子发烧友网站提供《带有Arduino MKR1010和MKR RGB Shield的Otto Biped.zip》资料免费下载
    发表于 11-21 10:27 0次下载
    带有<b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b>1010和<b class='flag-5'>MKR</b> RGB Shield的Otto Biped

    使用 Arduino MKR Vidor 4000 快速轻松地应用 FPGA

    发表于 11-25 19:00 0次下载
    使用 <b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b> <b class='flag-5'>Vidor</b> <b class='flag-5'>4000</b> 快速轻松地应用 <b class='flag-5'>FPGA</b>

    Arduino MKR1000通用Remonster

    电子发烧友网站提供《Arduino MKR1000通用Remonster.zip》资料免费下载
    发表于 12-09 16:51 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b>1000通用Remonster

    在Raspberry Pi上使用Arduino MKR ENV Shield

    电子发烧友网站提供《在Raspberry Pi上使用Arduino MKR ENV Shield.zip》资料免费下载
    发表于 12-14 10:19 0次下载
    在Raspberry Pi上使用<b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b> ENV Shield

    基于Arduino Zero/MKR的示波器

    电子发烧友网站提供《基于Arduino Zero/MKR的示波器.zip》资料免费下载
    发表于 12-15 10:08 0次下载
    基于<b class='flag-5'>Arduino</b> Zero/<b class='flag-5'>MKR</b>的示波器

    带有MKR Vidor 4000的LED排序器

    电子发烧友网站提供《带有MKR Vidor 4000的LED排序器.zip》资料免费下载
    发表于 12-19 09:27 0次下载
    带有<b class='flag-5'>MKR</b> <b class='flag-5'>Vidor</b> <b class='flag-5'>4000</b>的LED排序器

    Arduino MKR1000的大负载

    电子发烧友网站提供《Arduino MKR1000的大负载.zip》资料免费下载
    发表于 01-04 09:50 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b>1000的大负载

    如何将Arduino MKR和Portenta安装到机柜中

    电子发烧友网站提供《如何将Arduino MKR和Portenta安装到机柜中.zip》资料免费下载
    发表于 02-03 11:39 0次下载
    如何将<b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b>和Portenta安装到机柜中

    如何使用Arduino MKR GSM 1400的蜂窝定位

    电子发烧友网站提供《如何使用Arduino MKR GSM 1400的蜂窝定位.zip》资料免费下载
    发表于 06-15 15:06 0次下载
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>MKR</b> GSM 1400的蜂窝定位