Arduino 世界的 FPGA:使用 Alorium 的 Snō 模組打造預先設定與客製化的 IP

作者:Steve Leibson

資料提供者:DigiKey 北美編輯群

在即時嵌入式設計中,韌體在微控制器或微處理器上執行的速度可能會很慢,而現場可編程閘陣列 (FPGA) 提供解決這類硬體問題的方案,同時還允許靈活使用周邊裝置。不過,使用 FPGA 不僅意味著要學習新的編程語言 (通常是 Verilog 或 VHDL),學習全新的開發流程來生成 FPGA 位元流,還可能要花相當多的費用來購買 FPGA 開發板。

由於存在這些障礙,即便 FPGA 是相當實用的設計工具,很多設計工程師依然不願使用 FPGA。為了打消這種心理,一些廠商正努力縮短 FPGA 的學習曲線。例如,Arduino 推出 Arduino ABX00022 MKR Vidor 4000 FPGA 開發板 (請參閱《使用 Arduino MKR Vidor 4000 快速輕鬆運用 FPGA》一文)。Arduino MKR Vidor 4000 新增了為 FPGA 編程的方法,可無縫整合廣受歡迎的 Arduino 整合開發環境 (IDE),同時又可使用特殊的 Arduino 函式庫擴充功能來獲得 FPGA 等級效能。

現在,市面上出現全新的替代產品,其中包括 Arduino MKR Vidor 4000 板。Alorium Technology 也另闢蹊徑,開發出另一種將 FPGA 效能加至 Arduino 嵌入式開發世界的方法。Alorium 的方法既能打造用於 I/O 加速的預先設定 IP 區塊,又能打造客製化設計的 IP 區塊。

本文將簡要探討傳統的 FPGA 使用方法,然後深入檢視 Alorium 公司可相容於 Arduino 的 XLR8R22M08V5U0DI 及 Snō SNOR20M16V3 FPGA 模組。本文將介紹 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-AUT SAMD21 低功率微控制器,以及 Intel10CL016YU484C6G Cyclone 10 FPGA。

Arduino 將數款專用於 MKR Vidor 4000 板的硬體 IP 區塊加到 Arduino IDE 當中。這些周邊裝置透過兩個主要函式庫提供:VidorPeripheralsVidorGraphics。當 Arduino 的草稿碼 (Arduino 用於程式或程式碼片段的名稱) 納入相關的周邊裝置函式庫時,Arduino MKR Vidor 4000 中的 Intel Cyclone 10 FPGA 便會自動建構這些硬體 IP 區塊。目前的周邊裝置 IP 區塊包含:

  • I2C 連接埠
  • SPI 連接埠
  • UART
  • 高頻率 PWM 控制器
  • 高速計時器
  • 高速正交解碼器
  • Adafruit IndustriesNeopixel 可定址 RGB 智慧型 LED 控制器

其中一些周邊裝置 (如 I2C 與 SPI) 已以軟體 IP 區塊的形式用於以前的 Arduino 板。這些早期的軟體實作與使用 Arduino MKR Vidor 4000 板的 FPGA 所實作的同等 IP 區塊相比,區別就在於這些 FPGA 版本的周邊裝置具有更優的效能。例如,每個 I2C 與 SPI 的例項化都是透過機板 FPGA 內的可編程獨立硬體區塊實現。因此,在例項化幾個這樣的序列埠時,不會發生效能損失。

Arduino MKR Vidor 4000 板以 FPGA 硬體的形式實作周邊裝置區塊,並採用 Arduino 草稿碼編寫人員廣為熟悉的相同函式庫機制來提供這些區塊,簡化了 FPGA 的使用。使用者不必學習新的硬體描述語言 (HDL),如 VHDL 或 Verilog。事實上,從編程人員的角度來看,以 FPGA 為架構的周邊裝置無異於任何其他的 C++ 對象。Arduino 計劃在未來加入更多這樣的硬體 IP 區塊周邊裝置。

Arduino MKR Vidor 4000 板不算是一般用途的 FPGA 開發板,因為這個產品不支援以 HDL 程式碼直接編寫板載 Cyclone 10 FPGA 的程式。Arduino 正計劃讓更多進階使用者使用 Intel 專用於該公司 FPGA 的 Quartus HDL 開發工具,藉由 Arduino MKR Vidor 4000 板的 FPGA 開發更多公用程式。

Alorium 跨出下一步

Alorium 已跨出這一步。該公司將其 OpenXLR8 方法及 Xcelerator Blocks (XB) 用在與 Arduino 相容的 XLR8R22M08V5U0DI 和 SNOR20M16V3 Snō FPGA 開發板上 (請分別見圖 1 和圖 2)。這兩款板採用 Intel MAX 10 FPGA 系列中不同版本的產品,並內建有快閃組態記憶體。XLR8 結合了 Intel 10M08SAU169C8G MAX 10 以及與 8 位元 ATmega328 指令集相容的微控制器。其外形尺寸與原始 Arduino Uno 開發板的外形尺寸完全相同,因此可與許多 Arduino 擴充板及配件相容。

Alorium Technology 的 XLR8R22M08V5U0DI 開發板圖片

圖 1:Alorium Technology 的 XLR8R22M08V5U0DI 開發板結合了 Intel MAX 10 FPGA 以及與 8 位元 ATmega328 指令集相容的微控制器,採用 Arduino Uno 外形尺寸。(圖片來源:Alorium Technology)

Alorium Snō FPGA 模組則是一款更為小巧的開發板,其尺寸為 0.7 x 1.7 in,請參考圖 2。雖然 Snō FPGA 開發板尺寸較小,但卻整合更大型號的 Intel MAX 10 FPGA 和兩倍的邏輯元件:10M16SAU169C8G MAX 10 FPGA 有 16000 個元件,而 XLR8 板中的 10M08 裝置僅有 8000 個;此外,其 I/O 引腳數量也達兩倍以上 (有 32 個,而 XLR8 板只有 14 個)。

Alorium Technology 的 Snō FPGA 開發板圖片

圖 2:與 XLR8 開發板一樣,Alorium Technology 的 Snō FPGA 開發板結合了與 8 位元 ATmega328 指令集相容的微控制器以及 Intel MAX 10 (此例中是 10M16SAU169C8G FPGA),但是 Snō FPGA 開發板的尺寸小了許多。(圖片來源:Alorium Technology)

Alorium 還提供 SNOMAKRR10 分接板,可接受 Snō FPGA 模組並將其轉換成一個外形尺寸比 Arduino 略大且具有 USB 埠以及額外 FPGA I/O 分接引腳的機板。有些 Snō FPGA 模組引腳會接到 Snō MAKR 分接板中與 Arduino 相容的擴充板排針座,而有些引腳則會接到其他沿著機板邊緣排列且在 USB 連接器對側的排針座 (圖 3)。

Alorium 的 SNOMAKRR10 分接板圖片

圖 3:Alorium 的 SNOMAKRR10 分接板可將該公司的 Snō FPGA 開發板轉換成外形尺寸與 Arduino 相容且具有 USB 埠與板載穩壓器的機板,能讓 USB 線纜直接供電給開發板。(圖片來源:Alorium Technology)

XLR8 與 Snō FPGA 開發板都是在一個晶片 (Intel MAX 10 FPGA) 中實作 8 位元的微控制器及其硬體周邊裝置。圖 4 展示了實作的方法。

與 Atmel AVR 相容的微控制器整合示意圖

圖 4:XLR8 與 Snō FPGA 開發板都將與 Atmel AVR 相容的微控制器實作為 MAX 10 FPGA 內的軟核心。(圖片來源:Alorium Technology)

這個與 AVR 相容的微控制器核心 (圖 4 左下角),和原始 Arduino 開發板使用的 Atmel ATmega328 8 位元 AVR 微控制器相同。只是 Alorium 版的 AVR 微控制器並非放置在獨立的晶片上,而是作為 FPGA 內的軟核心實作。

如圖 4 所示,五個 Alorium XB (XB1 到 XB5) 出現在微控制器核心的上方,而 XB 是使用 FPGA 的晶片上資源實作的 IP 區塊。AVR 微控制器會透過可定址的暫存器介面與晶片上的 XB 通訊。XLR8 與 Snō 開發板均在出貨時預先安裝 XB (亦可在 GitHub 上取得),可對應至 Arduino 開發人員經常需要用到的周邊裝置,包括:

請注意,上表的最後一個 XB 並非真正的 I/O 周邊裝置區塊,而是浮點數學加速器。XB 可以是任何類型的硬體加速器,並不限於 I/O。

任意選擇區塊

使用 Alorium 的 OpenXLR8 開發流程選擇要在 FPGA 中例項化的不同 XB (或同一 XB 的多個副本),可在現場更新 XLR8 與 Snō FPGA 開發板。開發人員也可以使用 Alorium 的 OpenXLR8 流程來建立客製化 Xcelerator 區塊 (圖 5)。

Alorium 的 OpenXLR8 開發流程圖片

圖 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 夠大,就能同時執行數以千計的任務。有些 HLL 編譯器能夠將使用 C 或 C++ 編寫的程式碼轉譯為 HDL,然後再交由傳統的 FPGA 工具處理;但這類 HLL 編譯器目前還不是 Alorium OpenXLR8 設計流程的一部份。

不過,一旦使用 HDL 與 FPGA 開發工具設計出 XB 並進行除錯,就可以像其他的 Arduino 函式庫區塊一樣,在 Arduino IDE 中使用這些 XB。Alorium 目前也正在為其 Arduino IDE 函式庫開發其他的 XB。

結論

Arduino 與 Alorium Technology 在分別打造各自的 FPGA 開發板時都意識到,設計人員想要從這些平價開發板獲得更多嵌入式效能的需求正逐漸上升。雖然這兩家公司採用了不同的做法,但目標卻是一樣的,那就是讓更多嵌入式開發人員能更容易地使用 FPGA。至少,Arduino 與 Alorium 的方法都儘可能讓硬體設計變得像挑選區塊並執行指令碼一樣簡單。

目前,完整的設計流程還沒達到最簡化的程度。Arduino 尚未向 HDL 開發人員開放所有的 FPGA 開發流程。而 Alorium 的設計流程雖能適應 HDL 設計,但需要具備 FPGA 設計語言 (Verilog 或 VHSL) 及工具的相關知識。

不過,這些產品已為開發人員打開大門,至少在理論上能夠利用其他的 FPGA 開發技術進步,包括 C 與 C++ 硬體編譯器。直到那時,將可以使用 Alorium Technology 與 Arduino 開發的簡單方法,將這些功能加到 Arduino IDE 當中,來發揮 FPGA 的部分效能。

 
DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Steve Leibson

Steve Leibson

Steve Leibson 曾任 HP 和 Cadnetix 的系統工程師、EDN 和 Microprocessor Report 的總編輯,以及 Xilinx 和 Cadence 等的科技部落客,也曾在兩集《The Next Wave with Leonard Nimoy》電視節目中擔任技術專家。33 年來,他協助設計工程師開發更優良、更快速且更可靠的系統。

關於出版者

DigiKey 北美編輯群