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
+關注
關注
1629文章
21736瀏覽量
603419 -
FPGA開發板
+關注
關注
10文章
122瀏覽量
31506
發布評論請先 登錄
相關推薦
評論