Arduino MKR Vidor 4000的出現(xiàn)確實(shí)讓我挺意外的,為何?因?yàn)樗且豢?a target="_blank">FPGA開(kāi)發(fā)板。眾所周知,Arduino最深入人心的東西就是其簡(jiǎn)單的入門,快速的開(kāi)發(fā),這種特性很好的體現(xiàn)在它的硬件以及開(kāi)發(fā)工具上,因此,Arduino一度成為剛接觸嵌入式編程的學(xué)生或者工程師群體,甚至是電子業(yè)余愛(ài)好者的首選。
但是,MKR Vidor 4000的推出打破了這種簡(jiǎn)單,F(xiàn)PGA相比MCU入門更難,開(kāi)發(fā)工具也龐大復(fù)雜,學(xué)習(xí)成本大,甚至說(shuō)你沒(méi)有一定的專業(yè)知識(shí)連入門都不易,那這種有違Arduino特色的板子意義何在?我理解為兩點(diǎn):1.目前人工智能火爆,而FPGA則是人工智能中可謂全能的角色,高端可用于推理加速乃至訓(xùn)練,入門級(jí)的則作為嵌入式邊緣計(jì)算的輔助被很好的應(yīng)用在低功耗領(lǐng)域,如物聯(lián)網(wǎng)、移動(dòng)電子設(shè)備等,所以FPGA作為一個(gè)“有潛力的風(fēng)口”切入不錯(cuò);2. 目前Arduino所有的產(chǎn)品核心器件較為單一,都是簡(jiǎn)單的通用MCU,甚至連個(gè)“全家桶”MCU都沒(méi)有,這種單一適合初學(xué)者,但是無(wú)法滿足更高需求的用戶,因此推更加靈活和強(qiáng)大的FPGA作為產(chǎn)品線的補(bǔ)充,用于覆蓋更多用戶群體。當(dāng)然,這只是我個(gè)人的推測(cè),事實(shí)究竟是怎樣?相信看完本文你也會(huì)有自己的理解。
MKR Vidor 4000
MKR Vidor 4000作為一款拇指型的開(kāi)發(fā)板,小巧精致是它固有的特性,這是優(yōu)點(diǎn),同時(shí)也是缺點(diǎn)。優(yōu)點(diǎn)在于沒(méi)有復(fù)雜的硬件,上手理解應(yīng)該會(huì)比較簡(jiǎn)單;而缺點(diǎn)則是因?yàn)樘^(guò)簡(jiǎn)單,所以注定不可能搭載很多功能,而且更多的功能實(shí)現(xiàn)都需要靠外接其它功能外設(shè)支持,成本花銷會(huì)很大。不過(guò)對(duì)于MKR Vidor 4000來(lái)說(shuō),這種缺點(diǎn)不明顯,為何?因?yàn)樗幌衿渌腁rduino開(kāi)發(fā)板一樣搭載純粹的MCU,MKR Vidor 4000搭載英特爾FPGA與Microchip MCU相結(jié)合,其特有的屬性讓它變得非常靈活又難能可貴,比如它可以做以往Arduino系列板卡做不到的事情,處理高速的音頻、視頻信號(hào)。
從我見(jiàn)到MKR Vidor 4000的第一眼開(kāi)始就知道這個(gè)板子非常適合作為原型開(kāi)發(fā),當(dāng)你了解清楚這板子的功能后完全可以基于此做應(yīng)用級(jí)的開(kāi)發(fā),板子搭載的眾多豐富接口都有配套的外設(shè)模塊,有錢就買買買,當(dāng)然沒(méi)錢的話玩玩單板其實(shí)也是可以的,畢竟FPGA的無(wú)限可編程性還是能給大家留下一個(gè)預(yù)期。Vidor 4000的外設(shè)接口分布如下圖所示:
Vidor 4000板子的背面很簡(jiǎn)潔,主要是板卡的電源管理部分。而對(duì)應(yīng)的另一側(cè)則是miniPCIe接口,這在Arduino的開(kāi)發(fā)板上還屬于十分罕見(jiàn),也是因?yàn)檫@個(gè)接口的原因,很多應(yīng)用可以直接基于Vidor 4000做原型開(kāi)發(fā)。板子PCB上也貼心的開(kāi)了兩個(gè)U型凹槽用于螺絲固定,真正方面那些需求融合進(jìn)自己產(chǎn)品設(shè)計(jì)的用戶。
在靠近MicroUSB接口處有兩顆電源芯片,一顆為TI的bq24195L,集成了開(kāi)關(guān)模式電池管理和系統(tǒng)電源路徑管理,可以應(yīng)用于各類移動(dòng)電源、平板電腦和其他便攜式設(shè)備的單節(jié)鋰離子和鋰聚合物電池,在這塊板子上,當(dāng)同時(shí)存在電池與USB供電的時(shí)候,通過(guò)內(nèi)部開(kāi)關(guān)會(huì)自動(dòng)切換為USB供電;另一顆為英特爾的EZ6301QI,這是一款可擴(kuò)展的多輸出 PowerSoC,集成了 3 個(gè)獨(dú)立電源:一個(gè) 1.5A DC-DC 降壓轉(zhuǎn)換器(包含集成式電感器)和兩個(gè)300mA的線性穩(wěn)壓器,如下圖所示,僅需少量的外圍器件就可以組成Vidor 4000所需要的電源系統(tǒng)。
板子正面的5V MicroUSB供電接口,外接I2C模塊接口以及鋰電池供電接口。
另一側(cè)則是幾個(gè)比較“高端”的接口,miniPCEIe、MiPi CSI、MicroHDMI。
這種接口一般在Arduino的MCU開(kāi)發(fā)板上基本不會(huì)存在,但在Vidor 4000上齊全了,這主要依托于板載的這顆Intel Cyclone 10 FPGA,因此板子上的miniPCIe接口所涉及到的引腳都是FPGA的可編程IO口,用戶可以自己定義需要的接口信號(hào),非常靈活,也易于嵌入式到現(xiàn)有的產(chǎn)品中去。
英特爾的Cyclone FPGA具體型號(hào)為10CL016YU256CBG,包含16K邏輯單元,504 KB嵌入式RAM和56個(gè)18x18 bit HW乘法器,用于高速DSP。每個(gè)pin腳都可以在150 MHz以上速度進(jìn)行切換,并可配置為UART,(Q)SPI,高分辨率/高頻率 PWM,正交編碼器,I2C,I2S,Sigma Delta DAC等功能。
FPGA部分關(guān)聯(lián)的功能以及外設(shè)接口,參照下表:
MCU部分關(guān)聯(lián)的功能以及外設(shè)接口,參照下表:
上電使用
如果您本身熟悉FPGA開(kāi)發(fā),那么毫無(wú)疑問(wèn)你對(duì)Verilog,VHDL和RTL都不陌生。雖然Vidor的工具鏈提供了對(duì)這些語(yǔ)言的支持,但這肯定不是它原本的目的,要不然用戶為何要選擇這個(gè)Arduino的FPGA開(kāi)發(fā)板(市面上更多功能,更強(qiáng)性能的FPGA開(kāi)發(fā)板多的是),而且,這樣的話將Arduino的生態(tài)置于何處?
Vidor 4000的目的顯然是讓任何人都可以更輕松配置FPGA,玩轉(zhuǎn)FPGA,所以傳統(tǒng)的FPGA開(kāi)發(fā)方式肯定不是Vidor 4000想傳達(dá)給用戶的,這點(diǎn)很重要,也就是說(shuō),你可以將Vidor看作是一個(gè)使用FPGA的平臺(tái),而不是一個(gè)學(xué)習(xí)FPGA的平臺(tái)。真要學(xué)習(xí)FPGA的朋友,推薦使用愛(ài)板網(wǎng)評(píng)測(cè)過(guò)的另一款小腳丫FPGA比較合適。
官方為MKR Vidor 4000開(kāi)發(fā)板提供了不少庫(kù)以及IP,如MIPI相機(jī)輸入、DVI輸出、120MHz DAC、QR碼跟蹤器、PWM、四編碼器、I2C,I2S,SPI和UART、FFT、FIR濾波器,所以,我們可以直接拿來(lái)使用。
必要的開(kāi)發(fā)環(huán)境安裝有:(Vidor 4000三件套)
Arduino IDE工具
MKR Vidor開(kāi)發(fā)板支持包
庫(kù)管理包
東西準(zhǔn)備就緒,那就可以使用上面的“三件套”實(shí)現(xiàn)基本的功能演示,我們借助了樹(shù)莓派上的攝像頭,通過(guò)MiPi攝像頭接口輸入,MicroHDMI輸出,輸出連接到顯示器上。
程序是一個(gè)二維碼檢測(cè)器。
源碼如下
#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++;
}編譯下載,實(shí)際的運(yùn)行結(jié)果如下,可以在顯示器上看到經(jīng)過(guò)攝像頭采集,F(xiàn)PGA處理后輸出的圖像效果,顯然圖像處理方面應(yīng)該沒(méi)有任何調(diào)教過(guò),優(yōu)化,所以看起來(lái)會(huì)比較渣,但是二維碼的檢測(cè)定位的功能是沒(méi)問(wèn)題的。
除了此demo外還有不少關(guān)于攝像頭輸入和HDMI輸出的demo,相較之下還比這個(gè)二維碼檢測(cè)的demo少了些許功能,而在圖像輸出上也沒(méi)什么提升,所以不再演示了。從Vidor 4000提供的一些demo不難發(fā)現(xiàn)基本上都是關(guān)于一些IP的使用,明白我意思不,這個(gè)所謂的“使用”,不是教你如何去學(xué)習(xí)開(kāi)發(fā)FPGA,而是教你如何像先前使用Arduino IDE開(kāi)發(fā)MCU那樣去玩FPGA,官方將復(fù)雜的功能實(shí)現(xiàn)都模塊化成庫(kù)或者IP,用戶只需通過(guò)原本的Arduino IDE工具像簡(jiǎn)單的MCU開(kāi)發(fā)一樣去使用FPGA。
小結(jié)
相比傳統(tǒng)的Arduino開(kāi)發(fā)板,Vidor 4000的優(yōu)勢(shì)在于集成了靈活多變的FPGA,體現(xiàn)在板卡上的話就是具備了MiPi CSI(沒(méi)有MIPI DSI接口是個(gè)遺憾)、MicroHDMI、miniPCIe等與傳統(tǒng)的Arduino MCU開(kāi)發(fā)板不同的“先進(jìn)”接口,配合Arduino官方提供的庫(kù)以及相關(guān)的IP,用戶可以在原本簡(jiǎn)單的Arduino開(kāi)發(fā)板是實(shí)現(xiàn)更加靈活、更多功能的擴(kuò)展,實(shí)現(xiàn)更復(fù)雜的應(yīng)用。在不少用戶眼里,認(rèn)為Arduino的簡(jiǎn)單是理所當(dāng)然的,但是我要說(shuō)的是我們現(xiàn)在所能得到Arduino的一切理所當(dāng)然的簡(jiǎn)單是靠許許多多工程師傾注心血用復(fù)雜去構(gòu)建,Arduino之所以能在全球范圍內(nèi)流行,并不是因?yàn)樗旧砗?jiǎn)單,而是它將復(fù)雜簡(jiǎn)單化,就比如說(shuō)文章中的MKR Vidor 4000,這或許是你這輩子最有底氣去接觸FPGA的一個(gè)產(chǎn)品了。
-
FPGA
+關(guān)注
關(guān)注
1636文章
21841瀏覽量
608497 -
FPGA開(kāi)發(fā)板
+關(guān)注
關(guān)注
10文章
124瀏覽量
31670
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何使用FPGA開(kāi)發(fā)板編程出更高級(jí)的應(yīng)用

在Arduino MKR WIFI 1010上使用LoRa庫(kù)遇到問(wèn)題
MKR Vidor 4000一款拇指型的FPGA開(kāi)發(fā)板

使用Grove Sensor的Arduino MKR1010和阿里云IoT

Arduino MKR GSM 1400和DTMF開(kāi)源

使用MKR IoT載體的Arduino燈控制器

帶有Arduino MKR1010和MKR RGB Shield的Otto Biped

Arduino MKR1000通用Remonster

基于Arduino Zero/MKR的示波器

帶有MKR Vidor 4000的LED排序器

Arduino MKR1000的大負(fù)載

如何將Arduino MKR和Portenta安裝到機(jī)柜中

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

使用Arduino MKR1000通過(guò)WiFi進(jìn)行HID攻擊

評(píng)論