許多設(shè)計(jì)人員遲早都會(huì)發(fā)現(xiàn),微控制器或微處理器上運(yùn)行的固件可能會(huì)變得太慢。現(xiàn)場(chǎng)可編程門陣列 (FPGA) 為此提供了一種可編程方法,以硬件速度來解決高速、實(shí)時(shí)、嵌入式設(shè)計(jì)問題。然而,為了最大限度地利用 FPGA,傳統(tǒng)上涉及到一個(gè)技術(shù)學(xué)習(xí)曲線,但由于成本和期限壓力,許多工程師無法負(fù)擔(dān)這樣的學(xué)習(xí)曲線。
FPGA 的學(xué)習(xí)曲線常常涉及學(xué)習(xí)新的編程語言(Verilog 或 VHDL),下載大型開發(fā)工具包,學(xué)習(xí)全新工具開發(fā)流程以生成 FPGA 比特流,而且可能要花大量資金(可能數(shù)百或數(shù)千美元)用于購買 FPGA 開發(fā)板。由于這些障礙,盡管 FPGA 是嵌入式設(shè)計(jì)工具箱中極其有用的工具,但許多設(shè)計(jì)工程師都避免使用它們。
一些供應(yīng)商試圖通過提供入門 FPGA 板來減少使用 FPGA 的障礙,但學(xué)習(xí)新硬件描述語言和開發(fā)工具的必要性仍然是很高的門檻,阻礙了 FPGA 的更廣泛采用。為了破除這些障礙,Arduino 作出了最新的努力,推出一款名為 Arduino MKR Vidor 4000 的新型低成本開發(fā)板,其代表了一種在嵌入式系統(tǒng)設(shè)計(jì)中使用 FPGA 的獨(dú)特方法。
Arduino MKR Vidor 4000 提供了多種 FPGA 編程方法,這些方法可無縫集成到廣受歡迎的 Arduino IDE 中。借助這種方式,通過特殊的 Arduino 庫擴(kuò)展獲得 FPGA 級(jí)性能,便能使嵌入式系統(tǒng)開發(fā)人員直接從 Arduino 草圖中快速獲益。同時(shí),隨著更高級(jí)的設(shè)計(jì)人員對(duì)該技術(shù)的信心增強(qiáng),他們可以采取更復(fù)雜的 FPGA 使用模型。
本文將首先討論有關(guān) FPGA 的需求,再介紹 MKR Vidor 4000 開發(fā)板的功能。然后,本文將深入闡述如何應(yīng)用 Arduino 的新型簡化方法來使用 FPGA。
第一代 Arduino 開發(fā)板
2005 年推出的第一款 Arduino 開發(fā)板是基于一個(gè)簡單的 8 位微控制器:Atmel(現(xiàn)為 Microchip Technology)AVR。此開發(fā)板的很多后續(xù)產(chǎn)品同樣基于該微控制器系列的不同器件。由于成本低且 Arduino IDE 簡單易用,Arduino 開發(fā)板系列已成為物聯(lián)網(wǎng) (IoT) 產(chǎn)品開發(fā)的流行平臺(tái),常用于 STEM/STEAM 項(xiàng)目。事實(shí)上,最初的 Arduino 板就是第一個(gè)獲得廣泛成功的開源硬件項(xiàng)目。
現(xiàn)在,全世界有成千上萬的設(shè)計(jì)師、工程師、開發(fā)人員和創(chuàng)客在使用各種版本的 Arduino 開發(fā)板系列,其已成為讓學(xué)生們第一次接觸嵌入式編程的首選。人們的創(chuàng)意無限,從音樂、游戲、玩具、智能家居、農(nóng)業(yè)到自主駕駛車輛,其應(yīng)用范圍非常廣泛。
隨著 Arduino 用戶不斷將最初的 Arduino 架構(gòu)推進(jìn)到越來越復(fù)雜的應(yīng)用領(lǐng)域,性能問題開始出現(xiàn)。一部分問題是最初的 Arduino 微控制器的 8 位架構(gòu)過于簡單。另一部分問題是許多實(shí)時(shí)外設(shè)的軟件實(shí)現(xiàn),尤其是時(shí)間關(guān)鍵型外設(shè),例如高速定時(shí)器、高頻 PWM(脈沖寬度調(diào)制)輸出和正交編碼器。這個(gè)問題的一種解決辦法是使用速度更快、功能更強(qiáng)大的微控制器,但最終軟件在實(shí)時(shí)環(huán)境中能做的事情是有限的。一些高速實(shí)時(shí)功能必須在硬件中實(shí)現(xiàn)。
Arduino 和 FPGA 結(jié)合
挑戰(zhàn)在于讓使用 Arduino 的嵌入式開發(fā)人員能使用 FPGA 資源,但又不破壞 Arduino 的簡易性。Arduino 從硬件角度解決了這一挑戰(zhàn):將 FPGA 添加到 Arduino 架構(gòu)中,使得 FPGA 可通過 Arduino 庫擴(kuò)展 Arduino 的微控制器外設(shè)資源。現(xiàn)有 Arduino 用戶很熟悉這些庫;當(dāng)使用 Arduino 的原生外設(shè)時(shí),以及向 Arduino 擴(kuò)展排針添加外設(shè)板時(shí),經(jīng)常會(huì)使用這些庫。
由此產(chǎn)生的 Arduino 開發(fā)板稱為 MKR Vidor 4000,其結(jié)合了基于 32 位 Arm? Cortex?-M0+ 處理器內(nèi)核的 Microchip Technology SAMD21 低功耗微控制器的處理能力與 Intel(前身為 Altera)Cyclone 10 10CL016 FPGA(圖 1)。
圖 1:Arduino MKR Vidor 4000 開發(fā)板基于 Microchip SAMD21 微控制器和 Intel Cyclone 10 FPGA。(圖片來源:Arduino)
該 FPGA 包含 15,408 個(gè)可編程邏輯單元、516,096 比特的嵌入式 RAM 和 56 個(gè) 18 x 18 位硬件乘法器,可用于實(shí)現(xiàn)高速 DSP。每個(gè) FPGA 的 I/O 引腳切換速度快于 150 兆赫茲 (MHz),這比板載 SAMD21 微控制器的 I/O 速度要快得多。簡而言之,板載 FPGA 為 Arduino MKR Vidor 4000 板提供了可觀的處理和 I/O 能力。
Arduino MKR Vidor 4000 屬于 Maker Arduino 板系列,其新式 MKR 外形尺寸與之前的 Arduino 板不相符。MKR 系列還包括:
Arduino MKR WAN 1300 連接板,帶有用于物聯(lián)網(wǎng)應(yīng)用的板載 LoRa 射頻模塊
Arduino MKR GSM 1400 連接板,帶有板載蜂窩 RF 模塊,適合于需要全球 GSM 連接的物聯(lián)網(wǎng)應(yīng)用
與之前的 Arduino 開發(fā)板一樣,Arduino 的 MKR 系列不僅是針對(duì)初學(xué)者而開發(fā),專業(yè)人員同樣可以使用它來快速開發(fā)系統(tǒng)原型。Arduino 組織發(fā)現(xiàn)越來越多的正規(guī)工程項(xiàng)目使用 Arduino 開發(fā)板進(jìn)行原型開發(fā)甚至生產(chǎn),因而開發(fā)了該系列板。
Arduino MKR Vidor 4000 包括許多外設(shè),其中有幾個(gè)是較早期、較簡單的 Arduino 所不曾涉及的。有一個(gè) 28 針 MKR 排針接口,其與最初的 Arduino 擴(kuò)展板排針在概念上相似,但在物理上不同。該排針接口中的 I/O 引腳可由 SAMD21 微控制器或 Intel Cyclone 10 FPGA 控制。除了標(biāo)準(zhǔn)化 MKR 排針接口外,Arduino MKR Vidor 4000 板上的外設(shè)端口列表還包括:
與 Raspberry Pi 相機(jī)模塊兼容的 MIPI 攝像機(jī)連接器
采用 U-BLOX NINA-W102 射頻收發(fā)器模塊實(shí)現(xiàn)的 Wi-Fi 和 BLE(低功耗藍(lán)牙)RF 接口
MiniPCIe 連接器,具有多達(dá) 25 個(gè)用戶可編程引腳
請(qǐng)注意,Arduino MKR Vidor 4000 開發(fā)板沒有真正的 PCIe 接口端口。它只是改造了與 MiniPCIe 端口相關(guān)的連接器,在 MiniPCIe 邊緣連接器上分接出 Cyclone 10 FPGA 的許多 I/O 引腳。這是一種經(jīng)濟(jì)實(shí)惠的大容量連接器,現(xiàn)已廣泛應(yīng)用于數(shù)以百萬計(jì)的 PC 主板中,這足以證明其可靠性。MiniPCIe 連接器可用來輕松地將 Arduino MKR Vidor 4000 板插入更大的系統(tǒng)或 I/O 擴(kuò)展板中。
盡管有如此多的 I/O 連接器,Arduino MKR Vidor 4000 開發(fā)板卻很小。其尺寸為 83 mm(3.25 英寸)× 25 mm(0.98 英寸),這樣便適合安裝在嵌入式計(jì)算應(yīng)用越來越常見的狹小空間中。該板的電流消耗額定值為 100 毫安 (mA),因此應(yīng)當(dāng)也適合許多嵌入式系統(tǒng)項(xiàng)目的功率包絡(luò),其中包括電池供電系統(tǒng)。
該板有一個(gè)用于直接連接 3.7 伏鋰聚合物 (LiPo) 電池的連接器,如圖 1 所示。但是,電流消耗將取決于 FPGA 中實(shí)現(xiàn)的功能以及實(shí)例化硬件的運(yùn)行速度,這會(huì)使電池容量的計(jì)算變得復(fù)雜,最終將需要進(jìn)行一些實(shí)驗(yàn)才能確定電池的正確大小。
MKR Vidor 4000 板的視頻輸出是由 Intel Cyclone 10 FPGA 生成的真正 HDMI 視頻輸出。Arduino MKR Vidor 4000 板的 Arduino IDE 中包含了 Adafruit GFX 圖形核心庫,這允許 SAMD21 微控制器使用 Arduino 草圖在軟件控制下生成圖形。
此外,Arduino 還通過兩個(gè)專門為 MKR Vidor 4000 板創(chuàng)建的主庫向 Arduino IDE 添加了幾個(gè)硬件 IP 塊:VidorPeripherals 和 VidorGraphics。當(dāng) Arduino 草圖中包含相關(guān)外設(shè)庫時(shí),Arduino MKR Vidor 4000 上的 Intel Cyclone 10 FPGA 會(huì)自動(dòng)構(gòu)建這些硬件 IP 塊。目前的外設(shè) IP 塊清單包括:
I2C 端口
SPI 端口
高頻 PWM 控制器
高速定時(shí)器
高速正交解碼器
Adafruit Neopixel 可尋址 RGB 智能 LED 控制器
同樣,Arduino MKR Vidor 4000 板的軟件庫包含用于該板 MIPI 攝像頭輸入的視頻捕獲代碼。此庫中的例程可以從連接的攝像頭中捕獲 640 x 480 像素視頻圖像。攝像頭的 24 位 RGB 圖像存儲(chǔ)在開發(fā)板的 8 MB SDRAM 中,該 SDRAM 直接連接到 Cyclone 10 FPGA。此外,可以使用 Arduino MKR Vidor 4000 板的其中一個(gè) I2C 接口訪問所連攝像頭的控制和狀態(tài)寄存器。
其中一些外設(shè)(例如 I2C 和 SPI)已經(jīng)作為軟件 IP 塊用于早前的 Arduino 板。這些早期軟件實(shí)現(xiàn)與 Arduino MKR Vidor 4000 板的 FPGA 上實(shí)現(xiàn)的等效 IP 塊的區(qū)別在于,F(xiàn)PGA 版本的外設(shè)性能更好。
例如,每個(gè) I2C 和 SPI 實(shí)例化都是通過板上 FPGA 內(nèi)部的獨(dú)立可編程硬件塊實(shí)現(xiàn)的。因此,實(shí)例化若干個(gè)這樣的串行端口時(shí)沒有性能損失。
FPGA 速度示例:快速正交編碼
正交編碼器常用作 3D 打印機(jī)所用步進(jìn)電機(jī)的定位反饋機(jī)制。基于軟件的編碼器可能會(huì)出現(xiàn)問題,因?yàn)槠渌俣扔邢蓿划?dāng)處理器忙于執(zhí)行其他代碼時(shí),這些編碼器可能會(huì)錯(cuò)失計(jì)數(shù)。Arduino MKR Vidor 4000 板的正交編碼器是在 Cyclone 10 FPGA 硬件中實(shí)現(xiàn)實(shí)例化,其時(shí)鐘頻率為 100 MHz,并采用 32 位硬件計(jì)數(shù)器實(shí)現(xiàn),因此在任何實(shí)際物理系統(tǒng)中都不會(huì)錯(cuò)失計(jì)數(shù)。
每個(gè)實(shí)例化的正交編碼器都利用單獨(dú)的 FPGA 塊實(shí)現(xiàn),因此實(shí)例化多個(gè)編碼器時(shí)不會(huì)有性能損失。若要實(shí)現(xiàn)更多編碼器,只需要使用 FPGA 的更多內(nèi)部可編程邏輯。這是 FPGA 硬件并行性的關(guān)鍵優(yōu)勢(shì)。
輕松使用 FPGA — Arduino 方式
通過以 FPGA 硬件實(shí)現(xiàn)外設(shè)塊,并借助無數(shù) Arduino 草圖編寫人員已經(jīng)熟悉的相同庫機(jī)制使其可用,Arduino MKR Vidor 4000 板簡化了 FPGA 的使用。無需學(xué)習(xí) VHDL 或 Verilog 之類新的硬件描述語言 (HDL)。對(duì)于開發(fā)人員來說,基于 FPGA 的外設(shè)與程序員眼中的任何其他 C++ 對(duì)象并無二致。Arduino 計(jì)劃日后添加更多此類硬件 IP 塊外設(shè)。
Arduino 已經(jīng)完成了這個(gè)魔法,通過使用的軟件堆棧遠(yuǎn)遠(yuǎn)低于最初 Arduino IDE 的軟件堆棧,讓 FPGA 硬件看起來就像硬件化的外設(shè)塊。MKR Vidor 4000 板的軟件堆棧使用遠(yuǎn)程過程調(diào)用在 Arduino C++ 版本編寫的高級(jí)草圖與開發(fā)板的 FPGA 硬件之間建立鏈接;這些過程調(diào)用發(fā)送到 FPGA 上實(shí)例化的郵箱,而 FPGA 通過 JTAG 連接到 SAMD21 微控制器(圖 2)。
圖 2:Arduino MKR Vidor 4000 開發(fā)板的軟件堆棧使用遠(yuǎn)程過程調(diào)用,其通過 JTAG API 傳輸?shù)?Intel Cyclone 10 FPGA,而 FPGA 可編程硬件上實(shí)例化了一個(gè) Arduino 驅(qū)動(dòng)器。(圖片來源:Steve Leibson)
使用此軟件堆棧訪問基于 FPGA 的外設(shè)非常簡單,只需正確調(diào)用適當(dāng)?shù)?Vidor 外設(shè)庫即可。Arduino 草圖編寫人員不必知道 Vidor 的 FPGA 魔法工作原理。它切實(shí)有效。
要借助 FPGA 提升系統(tǒng)性能,一種有效的方法當(dāng)然是訪問利用可編程硬件實(shí)現(xiàn)的預(yù)定義外設(shè) IP 塊,不過這樣獲得的性能提升僅僅是 FPGA 全部能力的一小部分。盡管如此,Arduino 仍然鼓勵(lì) MKR Vidor 4000 用戶開發(fā)更多外設(shè)塊,以便通過龐大的 Arduino 開源社區(qū)擴(kuò)大選擇范圍。
然而,Arduino MKR Vidor 4000 板還不是通用的 FPGA 開發(fā)板,因?yàn)樗恢С质褂?HDL 代碼對(duì)板載 Cyclone 10 FPGA 直接編程。不過,Arduino 還計(jì)劃發(fā)布一個(gè) Intel Quartus 項(xiàng)目,演示直接在 MKR Vidor 4000 板上實(shí)現(xiàn) FPGA HDL 代碼,從而讓更多高級(jí)用戶可以通過 Arduino MKR Vidor 4000 板的 FPGA 來實(shí)現(xiàn)更多用途。Quartus 是一款全面的 HDL 開發(fā)工具,Intel 將其提供給設(shè)計(jì)人員開發(fā)采用該公司 FPGA 的 FPGA 設(shè)計(jì)。
當(dāng) Arduino 為 Arduino MKR Vidor 4000 板發(fā)布此 Quartus 項(xiàng)目時(shí),想要學(xué)習(xí) HDL 編程的設(shè)計(jì)師、工程師、創(chuàng)客和學(xué)生們將能把該板用作更高級(jí) FPGA 項(xiàng)目的低成本開發(fā)與生產(chǎn)平臺(tái)。借助這種直接 FPGA 編程功能,設(shè)計(jì)人員將能在 Arduino MKR Vidor 4000 板的 FPGA 中實(shí)例化幾乎任何類型的硬件塊。例如,板載 FPGA 資源足以在 FPGA 結(jié)構(gòu)中容納 Arm Cortex-M1 處理器內(nèi)核。這樣做將會(huì)把 Arduino MKR Vidor 4000 板變換成雙處理器嵌入式系統(tǒng)。
總結(jié)
雖然 FPGA 與微控制器或微處理器一起能為許多處理功能提供更高的性能,但這需要很長的學(xué)習(xí)曲線。Arduino MKR Vidor 4000 板和配套的 Arduino IDE 大大降低了學(xué)習(xí)如何使用 FPGA 開發(fā)更高級(jí)應(yīng)用的門檻。想要了解 FPGA“水有多深”的設(shè)計(jì)人員可能會(huì)發(fā)現(xiàn),Arduino MKR Vidor 4000 這個(gè)池塘中的水不深也不淺,剛剛合適。
-
微控制器
+關(guān)注
關(guān)注
48文章
7869瀏覽量
153439 -
FPGA
+關(guān)注
關(guān)注
1643文章
21925瀏覽量
612480 -
微處理器
+關(guān)注
關(guān)注
11文章
2359瀏覽量
83662
發(fā)布評(píng)論請(qǐng)先 登錄
Why FPGA開發(fā)板喜歡FMC?

發(fā)布|CAE1200+FPGA開發(fā)板

ADS54J64EVM開發(fā)板可以配套使用哪些Xilinx FPGA開發(fā)板呢?
正點(diǎn)原子fpga開發(fā)板不同型號(hào)
正點(diǎn)原子和野火開發(fā)板哪個(gè)好
正點(diǎn)原子的stm32開發(fā)板能用stlink嗎
ARM開發(fā)板與FPGA的結(jié)合應(yīng)用
【AG32開發(fā)板體驗(yàn)連載】AG32VF407中開發(fā)流程學(xué)習(xí)
linux開發(fā)板與樹莓派的區(qū)別
linux開發(fā)板和單片機(jī)開發(fā)的區(qū)別
AGM官方AG32 MCU開發(fā)板

FPGA核心板 Xilinx Artix-7系列XC7A100T開發(fā)平臺(tái),米爾FPGA工業(yè)開發(fā)板
FPGA核心板上市!紫光同創(chuàng)Logos-2和Xilinx Artix-7系列

評(píng)論