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

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

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

Arduino MKR GSM 1400和DTMF開源

使用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安裝到機柜中

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

使用Arduino MKR1000通過WiFi進行HID攻擊

評論