FPGA 的基礎知識:什麼是 FPGA?為何需要 FPGA?

作者:Clive "Max" Maxfield

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

最佳的處理解決方案通常由 RISC、CISC、圖形處理器與 FPGA 的組合;FPGA 本身;或以處理器硬核為部分結構的 FPGA 提供。然而,許多設計人員對 FPGA 的功能、發展歷程和使用方式不太熟悉。本系列文章共有 5 篇。本文為第 1 篇,將探討 FPGA 的基礎知識,並介紹主流供應商的解決方案範例。第 2 篇第 3 篇第 4 篇第 5 篇將著重於來自 Lattice SemiconductorMicrochipAlteraXilinx 提供的 FPGA 裝置系列與設計工具。

設計人員一直在找尋系統架構的構建方法,以提供最佳的運算解決方案來因應所有的應用需求。在許多情況下,最佳解決方案通常需要使用現場可編程閘陣列 (FPGA),但很遺憾地,有許多設計人員並不熟悉這類元件的功能,也不知道如何將其融入到設計中。

本文將簡要描述一些能藉由 FPGA 獲益的設計場景,然後會介紹基本的 FPGA 工作原理,並介紹一些值得關注的 FPGA 解決方案及開發套件。

為何要使用 FPGA?

運算應用有很多種類型,而每種應用所適用的最佳方法可能也不盡相同,例如使用現成的微處理器 (MPU) 和微控制器 (MCU)、現成的圖形處理單元 (GPU)、FPGA,及客製化的系統單晶片 (SoC) 元件等。決定採用哪種方法時,需要先仔細瞭解應用需求及考量事項。

舉例來說,在研究 5G 基地台等先進技術時,設計人員需要考慮到,底層標準和協定目前都還在進化發展中。這意味著,設計人員需要能快速有效地回應任何超出控制範圍的規格變化。

同樣地,他們還需要在現場部署完系統後,能靈活地回應未來的標準與協定變化。與此同時,還需要能回應系統功能的意外錯誤或系統安全漏洞、修改現有功能或新增功能以延長系統使用壽命。

雖然 SoC 通常能提供最高的效能,但這種方法既昂貴又耗時。此外,在晶片結構內實作的任何演算法,基本上都已「凍結在矽中」。鑒於前述考量因素,這種固有的不靈活性便成了問題。若想在最佳效能和靈活性之間取得平衡,就需要採用替代方法。這個替代方法通常由 FPGA、FPGA 和微處理器/微控制器的組合,或以處理器硬核為部分結構的 FPGA 提供。

什麼是 FPGA?

這是個很難回答的問題,因為對許多人來說,FPGA 有許多的含義。而且 FPGA 有許多不同的類型,每一種都具有不同的能力與功能組合。

無論是何種 FPGA,確定其 FPGA 地位的決定因素,就是以可編程邏輯區塊陣列呈現的可編程結構 (圖 1a)。這些邏輯區塊均含有一組元素,如查找表 (LUT)、多工器和暫存器等,這些元素都能根據所需的行為進行配置 (編程) (圖 2)。

最簡單的 FPGA 僅包含可編程結構和可配置 GPIOS 的示意圖圖 1:最簡單的 FPGA 僅包含可編程結構和可配置 GPIOS (a),但不同的架構會使用一些元件來擴大此基礎結構,包括 SRAM 區塊、PLL 和時脈管理器 (b)、DSP 區塊和 SERDES 介面 (c) 以及處理器硬核和周邊裝置 (d)。(圖片來源:Max Maxfield)

可編程邏輯區塊示意圖圖 2:每個可編程邏輯區塊都含有一套元素,包括查找表 (LUT)、多工器和暫存器,都能進行配置 (編程) 以執行必要動作。(圖片來源:Max Maxfield)

許多 FPGA 都使用 4 輸入的 LUT,可配置為實作任何 4 輸入的邏輯功能。為了更佳支援一些應用所採用的寬資料路徑,有些 FPGA 提供 6 輸入、7 輸入,甚至 8 輸入的 LUT。LUT 的輸出會直接連接到其中一個邏輯區塊輸出,以及其中一個多工器輸入。多工器的另一個輸入會直接連接到邏輯區塊輸入 (e)。多工器可配置為選擇這些輸入之一。

多工器的輸出將饋送至暫存器的輸入。每個暫存器可配置為邊緣觸發的正反器或位準敏感的鎖存器 (儘管如此,不建議在 FPGA 內以鎖存器的形式來使用非同步邏輯)。每個暫存器的時脈 (或啟用) 可配置為高態動作或低態動作;同樣地,置位/復位輸入的有效位準也可進行配置。

您可以將這些邏輯區塊想象成漂浮在「可編程互連海洋」中的「可編程邏輯島體」。這些互連可配置為將任何邏輯區塊的任何輸出連接到其他邏輯區塊的任何輸入。同樣,FPGA 的主輸入可連接到任何邏輯區塊的輸入,而任何邏輯區塊的輸出可用來驅動元件的主輸出。

至於通用的主輸出/輸入 (GPIO),則會以組 (群) 的形式呈現,其中每個組都可配置為支援不同的介面標準,如 LVCMOS、LVDS、LVTTL、HSTL 或 SSTL。此外,還可配置輸入的阻抗值以及輸出的迴轉率。

FPGA 結構進一步擴展後可包括 SRAM 區塊 (稱為區塊 RAM (BRAM))、鎖相迴路 (PLL) 及時脈管理器等元件 (圖 1b)。此外,還可加入數位訊號處理 (DSP) 區塊 (DSP 切片)。這些區塊全都包含可配置乘法器和可配置加法器,因此能執行乘積累加 (MAC) 運算 (圖 1c)。

另一個常見的 FPGA 功能是高速 SERDES 區塊,此功能可支援 Gigabit 序列介面。請務必注意,並非所有 FPGA 都支援所有上述功能。不同的 FPGA 提供不同的功能集合,針對不同的市場與應用。

FPGA 的可編程結構,可用來實作任何所需的邏輯功能或功能集合,甚至包括處理器核心或多個核心。如果這些核心以可編程結構實作,則稱之為「軟核」。相較之下,有些常被稱為 SoC FPGA 的 FPGA,則包含一或多個直接在矽中實作的「硬核」處理器 (圖 1d)。這些處理器硬核可能包括浮點單元 (FPU) 和 L1/L2 快取。

同樣,CAN、I2C、SPI、UART 和 USB 等周邊裝置介面功能,可以實作為可編程結構中的軟核,但許多 FPGA 都將其作為硬核包含在矽中。處理器核心、介面功能與可編程結構之間的通訊,一般是透過 AMBA 和 AXI 等高速匯流排來實現。

最早的 FPGA,是由 Xilinx 於 1985 年推出上市,當時產品中只有 8 x 8 陣列的可編程邏輯區塊 (沒有 RAM 區塊、DSP 區塊等元件)。相比之下,現在的高端 FPGA 可容納幾十萬個邏輯區塊、上千個 DSP 區塊以及數百萬位元的 RAM。總體而言,FPGA 可能包含數十億個電晶體,相當於數千萬個等效的閘 (例如 2 輸入 NAND 閘)。

其他替代性配置技術

配置單元會決定邏輯區塊的功能以及互連佈線的方式,其可視覺化為 0/1 (斷開/接通) 開關。這些單元也用於配置 GPIO 介面標準、輸入阻抗值、輸出迴轉率等等。這些配置單元可使用以下三種技術之一實作,具體需視 FPGA 而定:

  • 反熔絲:這些配置單元屬於單次可編程 (OTP) 單元,也就是說,元件一旦經過編程就無法再變更。這些元件往往只能用於太空與高安全性應用。由於其銷量很小,因此價格高昂,是較昂貴的設計選項。
  • 快閃:與反熔絲型配置單元一樣,快閃型單元也是非揮發性。而與反熔絲單元不同的是,快閃單元能根據需要再次編程。快閃配置單元可承受輻射,因此適合用於太空應用 (但需要修改其上層金屬層和封裝)。
  • SRAM:在本例中,配置資料會儲存在外部記憶體,每次啟動 FPGA 時,即會從該記憶體載入配置資料 (若是動態配置場景,則是依照指示載入資料)。

使用反熔絲或快閃型配置單元的 FPGA,其優點是 FPGA 能「即刻接通」且不會消耗太多功耗。這些技術的一個缺點是,在建立晶片其餘部分所用的底層 CMOS 製程之上,還需要額外的處理步驟。

使用 SRAM 型配置單元的 FPGA,其優點是 FPGA 使用與晶片其餘部分相同的 CMOS 製程製造而成,並且具有更高的效能,原因是這些 FPGA 通常比反熔絲和快閃技術先進一兩代。主要的缺點是,SRAM 配置單元比反熔絲或快閃型配置單元更耗用功率 (在同一個技術節點上),並且容易受到輻射所引起的單粒子翻轉事件 (SEU) 的影響。

最後這一點,令 SRAM 型 FPGA 一直以來都被認為不適合用於航太與太空應用。但最近由於採用了特殊的緩和策略,除了快閃型 FPGA 外,SRAM 型 FPGA 也被用於好奇號火星探測車等系統。

使用 FPGA 可提供靈活性

FPGA 可用於許多不同的應用,特別適合實作智慧型介接功能、馬達控制、演算法加速和高效能運算 (HPC)、影像與影片處理、機械視覺、人工智慧 (AI)、機器學習 (ML)、深度學習 (DL)、雷達、波束成形、基地台以及通訊。

一個簡單的範例就是在使用不同介面標準或通訊協定的其他元件之間提供智慧型介面。請設想一下,某現有系統含有一個應用處理器,透過舊有介面連接到相機感測器和顯示元件 (圖 3a)。

FPGA 可用於提供智慧型介面示意圖圖 3:FPGA 可用於在使用不同介面標準或通訊協定的其他元件之間提供智慧型介面,因此能夠延長以舊有元件為基礎的現有設計的壽命。(圖片來源:Max Maxfield)

現在假設系統的開發者希望將相機感測器和顯示元件升級為更輕、更便宜且功耗更低的現代產品。唯一的問題是:這兩個新的周邊裝置可能採用現代介面標準,而原始應用處理器 (AP) 卻無法提供支援。或者,新的周邊裝置可能支援完全不同的通訊協定,如行動產業處理器介面 (MIPI)。在這種情況下,使用能支援多種 I/O 標準的 FPGA,並結合一些 MIPI IP 軟核時,將提供一條快速、低成本、無風險的升級路徑 (圖 3b)。

再舉一個應用範例。請設想一些計算密集型任務,例如執行實作雷達系統所需的訊號處理,或通訊基地台中的波束成形。採用范紐曼或哈佛架構的傳統處理器,非常適合處理特定任務,但不太適合處理需要重複執行相同序列作業的任務。這是因為執行單一執行緒的單一處理器核心,一次只能執行一個指令 (圖 4a)。

FPGA 中多個功能區塊可同時執行的示意圖圖 4:與微處理器一次只能 (按順序) 執行一個指令不同,FPGA 中的多個功能區塊可以同時 (並行) 執行;此外,FPGA 還可以大規模並行實作相關的演算法。(圖片來源:Max Maxfield)

相較之下,FPGA 可同時執行多個功能,因此能管線化處理一系列的作業,進而大大提升傳輸量。同樣地,FPGA 不是執行相同的作業,例如處理器需要對 1,000 對資料值額外計算 1,000 次,則 FPGA 能在可編程結構中實例化 1,000 個加法器,繼而在單個時脈週期大規模並行執行同樣的計算 (圖 4b)。

誰在生產 FPGA?

這個領域在不斷變化。有兩大製造商供應具有最大容量和最高效能的高階裝置,分別是 Intel (已收購 Altera) 和 Xilinx。

Intel 和 Xilinx 提供的品項涵蓋低階 FPGA 到高階 SoC FPGA。有另一家廠商幾乎全力專注於 FPGA,即 Lattice Semiconductor,其主要針對中低階應用而開發。最後還有一家重量級廠商,那就是 Microchip Technology,其收購了 Actel、Atmel 和 Microsemi,目前提供眾多中小型尺寸的 FPGA 系列,以及低階的 SoC FPGA 類型。

由於 FPGA 實在太多系列,每個都提供不同的資源、效能、容量與封裝形式,因此要挑選最適合手頭任務的最佳元件並不容易。例如,在市面上能看到 Intel 元件Lattice Semiconductor 元件Xilinx 元件等。

如何使用 FPGA 進行設計?

傳統的 FPGA 設計方式,是讓工程師使用 Verilog 或 VHDL 等硬體描述語言來捕捉設計思想。這些描述可能會先進行模擬,以驗證其是否按預期執行,然後會傳遞至合成工具,由其產生用來配置 (編程) FPGA 的配置檔。

每家 FPGA 廠商都有內部自行開發的工具鏈,或提供來自於專業廠商的客製版工具。無論是何種情況,這些工具都可從 FPGA 廠商的網站取得;此外,這些廠商還可能會提供成熟的免費或低價版工具套件。

為了讓軟體開發人員更容易使用 FPGA,一些 FPGA 廠商現在提供高階合成 (HLS) 工具。這些工具會解讀在 C、C++ 或 OpenCL 中以高度抽象級別捕捉的所需行為的演算法描述,並產生輸入以饋送到低層級的合成引擎。

對於想入門的設計人員,市面上有許多開發和評估板,每個板提供不同的能力與功能。其中三個範例為 DFRobotDFR0600 開發套件,其採用 Xilinx 的 Zynq-7000 SoC FPGA;Terasic IncDE10 Nano,其採用 Intel 的 Cyclone V SoC FPGA;以及 ICE40HX1K-STICK-EVN 評估板,其採用 Lattice Semiconductor 的低功率 iCE40 FPGA。

若設計人員打算使用 FPGA 型 PCIe 子卡來加速 X86 主機板上的應用執行速度,則不妨瞭解一下 Xilinx 的 Alveo PCIe 子卡等產品。

結論

最佳的設計解決方案通常由 FPGA、FPGA 和處理器的組合,或以處理器硬核為部分結構的 FPGA 提供。

FPGA 近年來發展迅速,能夠滿足許多靈活性、處理速度和功率方面的設計要求,因而可用於許多應用。

DigiKey logo

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

關於作者

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield 在 1980 年從英國雪菲爾哈倫大學取得控制工程學士學位,自此開始擔任大型主機電腦中央處理單元 (CPU) 的設計人員。多年來,Max 已設計眾多元件,從矽晶片到電路板,以及腦電波放大器到蒸汽龐克風格的預知引擎 (別問) 等應有盡有。他更是電子設計自動化 (EDA) 領域的先驅,經驗超過 30 年。

Max 是許多書籍的作者和/或共同作者,包括《Designus Maximus Unleashed》(在阿拉巴馬州列為禁書)、《Bebop to the Boolean Boogie》(電子學的另類指南)、《EDA: Where Electronics Begins》、《FPGAs: Instant Access, and How Computers Do Math》。請瀏覽其 Max's Cool Bean 部落格。

關於出版者

DigiKey 北美編輯群