當固件在微控制器或微處理器上的運行速度過慢時,現場可編程門陣列 (FPGA) 可解決實時嵌入式設計的硬件問題。同時,FPGA 還具有外設靈活性。然而,要使用 FPGA,設計工程師就需要學習全新的編程語言(通常為 Verilog 或 VHDL)以及全新的開發流程來生成 FPGA 比特流,而且可能需要投入大量資金用于購買 FPGA 開發板。
由于這些障礙,盡管 FPGA 是設計工具箱中非常有用的工具,但許多設計工程師都不愿意使用。為幫助他們克服這種心態,一些供應商正在致力于縮短 FPGA 學習曲線。例如,Arduino推出了 ArduinoABX00022 MKR Vidor 4000FPGA 開發板(參見“通過 Arduino MKR Vidor 4000 快速輕松地應用 FPGA”)。Arduino MKR Vidor 4000 提供了另一種 FPGA 編程方法,與廣受歡迎的Arduino 集成開發環境(IDE) 無縫集成,并且可以使用專用 Arduino 庫擴展獲得 FPGA 級性能。
現在又推出新產品以替代早前的產品,其中就包括 Arduino MKR Vidor 4000 板。Alorium Technology則開發了一種稍微不同的方法來將 FPGA 性能添加到 Arduino 嵌入式開發環境中。這種方法既支持預配置 IP 塊進行 I/O 加速,也支持定制設計的 IP 塊。
本文首先簡要介紹 FPGA 的傳統使用方法,然后深入介紹 Alorium 的 Arduino 兼容型XLR8R22M08V5U0DI和 SnōSNOR20M16V3FPGA 模塊。本文將說明 Alorium 如何以全新的理念在 Arduino 環境中使用 FPGA,既支持預配置 IP,又能構建定制 IP,以及設計人員如何開始應用 FPGA 模塊。
如何加速 Arduino
現在,全球成千上萬的設計人員、工程師、開發人員、DIY 愛好者和創客都在使用 Arduino 開發板系列的不同版本,為各種各樣的應用開發嵌入式系統。由于 Arduino 板和 Arduino IDE 的使用和編程方法都非常簡單,因此深受歡迎。
隨著 Arduino 用戶不斷將最初的 Arduino 架構推進到更加復雜的應用領域,性能問題開始出現。一部分性能問題是最初的 Arduino 微控制器的 8 位架構過于簡單。另一部分問題是當 Arduino 的嵌入式微控制器不具備等效硬件塊時,Arduino 軟件系統只能通過軟件實現大量實時外設。
這一性能問題的一種解決方法是使用功能更強大的微控制器,但軟件在實時環境中能做的事情是有限的。一些高速實時外設必須在硬件中實現。此外,雖然也可以使用配備更多硬件外設的微控制器,但適用的外設組合則取決于具體的項目。
對此,微控制器制造商常在一個微處理器系列中提供數十個甚至上百個版本,以此解決對于不同外設組合的需求。然而,這種方法對于 Arduino 等板級產品并不可行,因為必須使用具有足夠 I/O 引腳的板載連接器來滿足所有需求。盡管現在市面上有很多版本的 Arduino 板,但仍然不足以滿足所有嵌入式項目的需求。
FPGA 可滿足各種外設組合需求
通過向嵌入式設計人員提供可編程硬件,FPGA 能夠滿足因項目而異的外設組合需求。為嵌入式微控制器板添加 FPGA 功能的一種簡單方法是,將 FPGA 添加到現有設計中。這也是 Arduino 在設計 Arduino MKR Vidor 4000 板時采用的方法。該板結合了Microchip Technology的基于 32 位Arm?Cortex?-M0+ 的ATSAMD21G18A-AUTSAMD21 低功耗微控制器與Intel的10CL016YU484C6GCyclone 10 FPGA。
Arduino 專為 MKR Vidor 4000 板向 Arduino IDE 中添加了幾個硬件 IP 塊。這些外設可由兩個主庫提供:VidorPeripherals和VidorGraphics。當 Arduino 草圖(Arduino 用來表示程序或代碼單元的名稱)中包含相關外設庫時,Arduino MKR Vidor 4000 上的 Intel Cyclone 10 FPGA 會自動構建這些硬件 IP 塊。目前的外設 IP 塊清單包括:
SPI 端口
高頻 PWM 控制器
高速定時器
高速正交解碼器
Adafruit Industries的Neopixel可尋址 RGB 智能 LED 控制器
其中一些外設(例如 I2C 和 SPI)已經作為軟件 IP 塊用于早前的 Arduino 板。這些早期軟件實現與 Arduino MKR Vidor 4000 板的 FPGA 上實現的等效 IP 塊的區別在于,FPGA 版本的外設性能更好。例如,每個 I2C 和 SPI 實例化都是通過板上 FPGA 內部的獨立可編程硬件塊實現的。因此,實例化若干個這樣的串行端口時沒有性能損失。
通過以 FPGA 硬件實現外設塊,并借助 Arduino 草圖編寫人員已經熟悉的相同庫機制使其可用,Arduino MKR Vidor 4000 板簡化了 FPGA 的使用。無需學習 VHDL 或 Verilog 之類新的硬件描述語言 (HDL)。實際上,對于程序員而言,基于 FPGA 的外設與任何其他 C++ 對象并無二致。Arduino 計劃日后添加更多此類硬件 IP 塊外設。
然而,Arduino MKR Vidor 4000 板與通用的 FPGA 開發板仍有所不同,因為它不支持使用 HDL 代碼對板載 Cyclone 10 FPGA 直接編程。Arduino 正計劃使用 Intel 面向 FPGA 的Quartus HDL 開發工具,允許更多高級用戶通過 Arduino MKR Vidor 4000 板的 FPGA 來實現更多用途。
Alorium 邁出下一步
對于 Arduino 兼容型 XLR8R22M08V5U0DI 和 SNOR20M16V3 Snō FPGA 開發板,Alorium 已通過 OpenXLR8 方法和 Xcelerator Block (XB) 邁出了這一步(圖 1 和圖 2)。這兩款板基于 IntelMAX 10 FPGA 系列的不同版本構建,該系列集成有閃存配置存儲器。XLR8 結合了 Intel10M08SAU169C8GMAX 10 與 8 位 ATmega328 指令集兼容型微控制器。它的外形尺寸與最初的Arduino Uno開發板相同,因此與很多 Arduino Shield 和配件兼容。
圖 1:Alorium Technology 的 XLR8R22M08V5U0DI 開發板結合了 Intel MAX 10 FPGA 與 8 位 ATmega328 指令集兼容型微控制器,全部集成在一個 Arduino Uno 外形尺寸中。(圖片來源:Alorium Technology)
Alorium Snō FPGA 開發板的尺寸相對小得多,該模塊尺寸規格為 0.7 x 1.7 英寸,見圖 2。盡管 Snō FPGA 開發板的物理尺寸更小,但它集成了 Intel MAX 10 FPGA 的更高版本,配備的邏輯單元也多出一倍:10M16SAU169C8GMAX 10 FPGA 有 16K,而 XLR8 板上的 10M08 器件只有 8K。前者的 I/O 引腳也是后者的兩倍多(32 個,對比 XLR8 板的 14 個)。
圖 2:與 XLR8 開發板一樣,Alorium Technology 的 Snō FPGA 開發板也結合了 8 位 ATmega328 指令集兼容型微控制器與 Intel MAX 10 FPGA — 該開發板采用的是 10M16SAU169C8G FPGA。不過,Snō FPGA 開發板的尺寸規格小得多。(圖片來源:Alorium Technology)
Alorium 還提供了SNOMAKRR10分線板,可將 Snō FPGA 模塊轉換為稍大的 Arduino 外形尺寸板,配備 USB 端口和來自 FPGA 的附加 I/O 分線引腳。Snō FPGA 模塊的一些引腳連到與 Arduino 兼容的 SnōMAKR 分線板擴展排針,而其他引腳連到 USB 連接器對面、沿開發板邊緣分布的一排附加針座(圖 3)。
圖 3:Alorium 的 SNOMAKRR10 分線板可以將該公司的 Snō FPGA 開發板轉換為與 Arduino 兼容的外形尺寸,配備 USB 端口和板載穩壓器,因而使用 USB 電纜就能直接為開發板供電。(圖片來源:Alorium Technology)
XLR8 和 Snō FPGA 開發板都在一個芯片 — IntelMAX 10FPGA 中實現 8 位微控制器及其硬件外設。圖 4 圖解說明了實現方法。
圖 4:XLR8 和 Snō FPGA 開發板都在 MAX 10 FPGA 中以軟內核方式實現AtmelAVR 兼容型微控制器。(圖片來源:Alorium Technology)
AVR 兼容型微控制器內核(圖 4 左下部分)與最初 Arduino 開發板中使用的 AtmelATmega3288 位 AVR 微控制器相同。然而,Alorium 的 AVR 微控制器是以 FPGA 中的軟內核方式實現,而不是另載于獨立芯片之上。
圖 4 中,該微控制器內核上方共有五個 Alorium XB(XB1 至 XB5)。XB 是通過 FPGA 的片上資源實現的 IP 塊。AVR 微控制器可通過可尋址寄存器接口與這些片上 XB 進行通信。XLR8 和 Snō 開發板隨附了預安裝的 XB(也在 GitHub 中提供),它們相當于 Arduino 開發人員經常需要使用的外設,包括:
正交解碼
伺服電機控制
NeoPixel RGB LED 控制
12 位增強型 ADC
浮點數學
請注意,上面列出的最后一種 XB 其實并不是 I/O 外設塊,而是浮點數學加速器。XB 可以是任何類型的硬件加速器,而不只局限于 I/O。
選取任何塊
XLR8 和 Snō FPGA 開發板都可現場更新,方法是選擇不同的 XB(或多個同類 XB),使用 Alorium 的 OpenXLR8 開發流程在 FPGA 中實例化。開發人員也可以使用 Alorium 的 OpenXLR8 流程構建定制 Xcelerator Block(圖 5)。
圖 5:通過 Alorium 的 OpenXLR8 開發流程,設計人員可以使用 Intel 的 Quartus Prime 設計工具構建新的硬件塊,并將其添加到 Arduino IDE。(圖片來源:Alorium Technology)
目前,要構建定制的 XB,設計人員必須具備 Verilog 或 VHDL 硬件描述語言的應用知識,并且熟悉 Intel Quartus FPGA 工具套件 — 尤其是 Quartus Prime Lite Edition 17.1 版和 Mentor Graphics 的 ModelSim 仿真工具。HDL 對于 FPGA 開發必不可少,因為它允許設計人員以一種標準的、定義完善的方式來表達多個任務的并行執行。C 和 C++ 等高級語言 (HLL) 實質上是順序語言。
HLL 編譯器獲取 HLL 源代碼,將其轉換成一長串機器指令序列,通常一次只能執行一個指令。這也是 FPGA 比處理器快得多的原因所在 — FPGA 能夠同時執行數千個任務,只要 FPGA 足夠大。有一些 HLL 編譯器能夠將 C 或 C++ 編寫的代碼轉換為 HDL,然后由常規的 FPGA 工具處理,但目前 Alorium 的 OpenXLR8 設計流程并不包括這些 HLL 編譯器。
然而,一旦使用 HDL 和 FPGA 開發工具設計并調試了 XB,即可像任何其他 Arduino 庫塊一樣在 Arduino IDE 中使用。目前,Alorium 也在為 Arduino IDE 庫開發更多的 XB。
總結
在構建各自的 FPGA 開發板方面,Arduino 和 Alorium Technology 公司都認識到設計人員越來越多地需要這些經濟實惠的開發板提供更多的嵌入式性能。盡管兩家公司采取的策略雖有所不同,但最終目標卻別無二致:努力讓更多嵌入式開發人員更方便地使用 FPGA。在最基礎的層面上,Arduino 和 Alorium 的方法讓硬件設計就像選取塊并運行腳本一樣簡單。
目前,完整的設計流程尚不夠簡單。Arduino 尚未向 HDL 開發人員開放完整的 FPGA 開發流程。雖然 Alorium 的設計流程確實包括 HDL 設計,但要求開發人員必須具備 Verilog 或 VHSL FPGA 設計語言和工具的知識。
不過,這些產品已將大門開啟,至少在理論上可以利用 C 和 C++ 硬件編譯器等其他 FPGA 開發方式。屆時,將可以通過使用 Alorium Technology 和 Arduino 開發的簡單方法將這些功能添加到 Arduino IDE 中,充分發揮 FPGA 的性能。
-
FPGA
+關注
關注
1643文章
21956瀏覽量
614024 -
Arduino
+關注
關注
188文章
6491瀏覽量
190087
發布評論請先 登錄
Modbus轉Ethernet/IP網關模塊與匯川PLC通訊在網關配置軟件中的配置

采用LabVIEW FPGA模塊和可重新配置I/O設備開發測量與控制應用
使用FPGA和IP Core實現定制緩沖管理
如何在Arduino IDE上配置好NodeMCU的開發環境
工業環境中的Raspberry PI和Arduino
FPGA VI中不同的Xilinx內核生成器IP設計實現與子模板說明
Achronix宣布為其eFPGA IP解決方案推出定制單元塊
如何使用Arduino ESP8266開發板配置標準的Arduino開發環境

IP例化和幾個基于FPGA芯片實現的Demo工程
Arduino IDE配置STM32開發環境和程序燒錄

評論