本文將簡要說明可從使用 FPGA 中受益的設(shè)計場景。然后,在闡述基本工作原理之后,將會介紹一些有趣的 FPGA 解決方案和開發(fā)套件。
為何要使用 FPGA?
計算應用多種多樣,能滿足應用需求的最佳方法可能因應用而異,包括現(xiàn)成的微處理器 (MPU) 和微控制器 (MCU)、現(xiàn)成的圖形處理單元 (GPU)、FPGA 以及定制片上系統(tǒng) (SoC) 器件。為了確定使用哪一種方法,需要仔細審視應用需求和考慮事項。
例如,當研究 5G 基站等尖端技術(shù)時,設(shè)計人員需要考慮到基礎(chǔ)標準和協(xié)議仍在不斷發(fā)展中。這意味著設(shè)計人員需要能夠快速有效地應對任何超出控制范圍的規(guī)范變更。
同樣,他們需要能夠靈活地響應未來在系統(tǒng)部署到現(xiàn)場后發(fā)生的標準和協(xié)議變更。此外,他們還必須能夠響應系統(tǒng)功能中的意外錯誤或系統(tǒng)安全性方面的漏洞,修改現(xiàn)有功能或添加新功能,從而延長系統(tǒng)使用壽命。
盡管最高性能通常是由 SoC 提供,但這種方法既昂貴又耗時。另外,在芯片結(jié)構(gòu)中實現(xiàn)的任何算法本質(zhì)上都是“凍結(jié)在硅片中”。鑒于上述考慮,這種固有的不靈活性便成了問題。為了找到高性能和靈活性的最優(yōu)平衡點,需要一條替代路線。該路線常常由 FPGA、微處理器 / 微控制器與 FPGA 的組合或以硬處理器內(nèi)核作為部分結(jié)構(gòu)的 FPGA 提供。
什么是 FPGA?
這是一個很難回答的問題,因為對不同人來說,F(xiàn)PGA 是不同的東西。而且,F(xiàn)PGA 的類型有很多,每種類型都有不同的能力和功能組合。
可編程結(jié)構(gòu)是任何 FPGA 的核心(即“FPGA-dom”的界定方面),并以可編程邏輯塊陣列的形式呈現(xiàn)(圖 1a)。
每個邏輯塊都是多種元件的集合,包括查找表 (LUT)、多路復用器和寄存器,所有這些元件都可以進行配置(編程)以根據(jù)需要執(zhí)行操作(圖 2)。
圖 1:最簡單的 FPGA 僅包含可編程結(jié)構(gòu)和可配置 GPIO (a),
不同架構(gòu)是在此基本結(jié)構(gòu)上增加其他元件而形成:SRAM 塊、PLL 和時鐘管理器(b),DSP 塊和 SERDES 接口(c),以及硬處理器內(nèi)核和外設(shè)(d)。(圖片來源:Clive "Max" Maxfield)
圖 2:每個可編程邏輯塊都是多種元件的集合,包括查找表、多路復用器和寄存器,所有這些元件都可以進行配置(編程)以根據(jù)需要執(zhí)行操作。(圖片來源:Clive "Max" Maxfield)
許多 FPGA 使用 4 輸入 LUT,可配置為實現(xiàn)任何 4 輸入邏輯功能。為了更好地支持某些應用采用的寬數(shù)據(jù)路徑,
有些 FPGA 提供 6 輸入、7 輸入甚至 8 輸入 LUT。LUT 的輸出直接連接到邏輯塊輸出之一和多路復用器輸入之一。
多路復用器的另一個輸入直接連接到邏輯塊輸入(e)。多路復用器可以配置為選擇其中一個輸入。
多路復用器的輸出饋入寄存器輸入。每個寄存器都可以配置為邊沿觸發(fā)的觸發(fā)器或電平敏感鎖存器(盡管如此,但不建議在 FPGA 內(nèi)部使用鎖存器形式的異步邏輯)。
每個寄存器的時鐘(或使能信號)可以配置為高電平有效或低電平有效。同樣,置位 / 復位輸入的有效電平也是可配置的。
這些邏輯塊可以被視為漂浮在“可編程互連之海”中的“可編程邏輯之島”。這種互連可配置為將任何邏輯塊的任何輸出連接到其他邏輯塊的任何輸入。
同樣,F(xiàn)PGA 的主要輸入可以連接到任何邏輯塊的輸入,任何邏輯塊的輸出都可以用來驅(qū)動器件的主要輸出。
主要的通用輸入 / 輸出 (GPIO) 以組形式呈現(xiàn),每組可配置為支持不同的接口標準,例如 LVCMOS、LVDS、LVTTL、HSTL 或 SSTL。
另外,輸入的阻抗也是可配置的,輸出的壓擺率也一樣可配置。
FPGA 結(jié)構(gòu)進一步擴展可包括 SRAM 塊(稱為塊 RAM (BRAM))、鎖相環(huán) (PLL) 和時鐘管理器之類的東西(圖 1b)。
此外,還可以添加數(shù)字信號處理 (DSP) 塊(DSP 切片)。它們包含可配置的乘法器和可配置的加法器,能夠執(zhí)行乘法累加 (MAC) 運算(圖 1c)。
高速 SERDES 塊是 FPGA 的另一個常見特性,能支持千兆位串行接口。
必須注意的是,并非所有 FPGA 都支持上述全部特性。不同 FPGA 針對不同的市場和應用提供不同的特性集合。
FPGA 中的可編程結(jié)構(gòu)可用來實現(xiàn)所需的任何邏輯功能或功能集合,一直到處理器內(nèi)核甚至多個內(nèi)核。
如果這些內(nèi)核是以可編程結(jié)構(gòu)實現(xiàn)的,則稱其為“軟內(nèi)核”。相較之下,有些 FPGA(通常稱為 SoC FPGA)包含一個或多個“硬內(nèi)核”處理器
其直接在硅片中實現(xiàn)(圖 1d)。這些硬處理器內(nèi)核可能包括浮點單元 (FPU) 和 L1/L2 高速緩存。
同樣,外設(shè)接口功能(如 CAN、I2C、SPI、UART 和 USB)可以實現(xiàn)為可編程結(jié)構(gòu)中的軟內(nèi)核,但許多 FPGA 將其作為硬內(nèi)核在硅片中實現(xiàn)。
處理器內(nèi)核、接口功能和可編程結(jié)構(gòu)之間的通信通常利用 AMBA 和 AXI 之類的高速總線實現(xiàn)。
第一批 FPGA 是由 Xilinx 于 1985 年推出上市,僅包含一個 8 x 8 可編程邏輯塊陣列(沒有 RAM 塊、DSP 塊等)。
相比之下,當今的高端 FPGA 可以包含數(shù)十萬個邏輯塊、數(shù)千個 DSP 塊和以兆位 (Mb) 計的 RAM。
總體而言,它們可能包含數(shù)十億個晶體管,相當于數(shù)千萬個等效門(例如 2 輸入 NAND 門)。
備選配置技術(shù)
為了確定邏輯塊的功能和互連的布線,需要借助配置單元,后者可以用 0/1(斷開 / 接通)開關(guān)來形象地表示。
這些單元還用于配置 GPIO 接口標準、輸入阻抗、輸出壓擺率等。根據(jù)具體 FPGA,這些配置單元可以采用如下三種技術(shù)之一來實現(xiàn):
反熔絲:這些配置單元是一次性可編程 (OTP) 單元,意味著一旦對器件進行了編程,就無法撤回。
此類器件往往僅限于太空和高安全性應用。其銷量很小,因此價格很高,可謂昂貴的設(shè)計選擇。
閃存:像基于反熔絲的配置單元一樣,基于閃存的單元也是非易失性的。與反熔絲單元不同,閃存單元可以根據(jù)需要重新編程。
閃存配置單元可以承受輻射,因而這些器件適合于太空應用(不過要對上部金屬化層和封裝進行修改)。
SRAM:采用這種手段時,配置數(shù)據(jù)存儲在外部存儲器中,每次 FPGA 上電時都要從存儲器中加載數(shù)據(jù)(或在動態(tài)配置情況下,按照指令要求加載數(shù)據(jù))。
對于配置單元基于反熔絲或閃存的 FPGA,優(yōu)勢在于它們是“即時接通”,功耗很小。
這些技術(shù)的一個缺點是,除了用于創(chuàng)建芯片其余部分的基礎(chǔ) CMOS 工藝之外,他們還需要其他處理步驟。
對于配置單元基于 SRAM 技術(shù)的 FPGA,優(yōu)勢在于使用與芯片其余部分相同的 CMOS 工藝制造,并且具有更高的性能,
因為它通常比反熔絲和閃存技術(shù)領(lǐng)先一代或兩代。主要缺點是 SRAM 配置單元比(相同技術(shù)節(jié)點的)反熔絲和閃存單元更耗電,
并且容易因為輻射而發(fā)生單粒子翻轉(zhuǎn) (SEU)。
長期以來,后一個缺點導致基于 SRAM 的 FPGA 被認為不適合用于航空航天應用。
最近,業(yè)界采用了特殊緩解策略,使得基于 SRAM 的 FPGA 與基于閃存的 FPGA 一同出現(xiàn)在“好奇號”火星漫游車等系統(tǒng)上。
利用 FPGA 提供靈活性
FPGA 適用于多種多樣的應用,特別適合用于實現(xiàn)智能接口功能、電機控制、算法加速和高性能計算 (HPC)、圖像和視頻處理、機器視覺、人工智能 (AI)、機器學習 (ML)、深度學習 (DL)、雷達、波束賦形、基站以及通信。
一個簡單的例子是在其他使用不同接口標準或通信協(xié)議的器件之間提供智能接口。請考慮一個現(xiàn)有系統(tǒng),其中有一個應用處理器使用舊式接口連接到相機傳感器和顯示設(shè)備(圖 3a)。
現(xiàn)在,假設(shè)系統(tǒng)的創(chuàng)建者希望將相機傳感器和顯示設(shè)備升級為更輕、更便宜、功耗更低的現(xiàn)代產(chǎn)品。
唯一的問題是,兩個新外設(shè)或其中之一可能使用現(xiàn)代接口標準,而原應用處理器 (AP) 卻無法提供支持。
或者,它們可能支持完全不同的通信協(xié)議,例如移動行業(yè)處理器接口(MIPI)。在這種情況下,采用支持多種 I/O 標準的 FPGA,
再加之以某些軟 MIPI IP 內(nèi)核,將能提供一條快速、低成本、無風險的升級路徑(圖 3b)。
再舉一個應用例子,考慮一些計算密集型任務,例如執(zhí)行雷達系統(tǒng)所需的信號處理或通信基站中的波束賦形。
采用馮諾依曼或哈佛架構(gòu)的常規(guī)處理器非常適合某些任務,但不適合于需要重復執(zhí)行相同操作序列的任務。
這是因為運行單個線程的單個處理器內(nèi)核一次只能執(zhí)行一條指令(圖 4a)。
相比之下,F(xiàn)PGA 中可以同時執(zhí)行多個功能,支持以流水線方式完成一系列操作,進而實現(xiàn)更大的吞吐量。
同樣,F(xiàn)PGA 不像處理器那樣執(zhí)行相同的操作,例如對 1,000 對數(shù)據(jù)值再執(zhí)行 1,000 次運算,
而是在可編程結(jié)構(gòu)中實例化 1,000 個加法器,從而在單個時鐘周期中以大規(guī)模并行方式執(zhí)行相同的計算(圖 4b)。
哪些廠商制造 FPGA?
這是一幅不斷演變的畫卷。具備最高容量和性能的高端器件有兩家主要制造商,分別是 Intel(其收購了 Altera)和 Xilinx。
Intel 和 Xilinx 提供從低端 FPGA 到高端 SoCFPGA 的各種產(chǎn)品。另一家?guī)缀跬耆珜W⒂?FPGA 的供應商是 Lattice Semiconductor,其針對的是中低端應用。
最后但并非最不重要的一家是 Microchip Technology(通過收購 Actel、Atmel 和 Microsemi),現(xiàn)在可提供多個系列的中小型 FPGA 和低端 SoC FPGA 類產(chǎn)品。
由于產(chǎn)品系列眾多,每個系列提供不同的資源、性能、容量和封裝樣式,因此為眼前的任務選擇最佳器件可能很棘手。
下面是一些例子:Intel 器件;Lattice Semiconductor 器件;以及 Xilinx 器件。
如何使用 FPGA 進行設(shè)計?
傳統(tǒng)的 FPGA 設(shè)計方法是工程師使用 Verilog 或 VHDL 之類的硬件描述語言來捕獲設(shè)計意圖。
首先可以對這些描述進行仿真,以驗證其是否符合要求,然后將其傳送給綜合工具,生成用于配置(編程)FPGA 的配置文件。
每家 FPGA 供應商要么有自己內(nèi)部開發(fā)的工具鏈,要么提供專業(yè)供應商定制的工具版本。
無論哪種情況,都可以從 FPGA 供應商網(wǎng)站獲得這些工具。另外,成熟工具套件可能有免費或低成本的版本。
為使 FPGA 更易于為軟件開發(fā)人員所用,一些 FPGA 供應商現(xiàn)在提供高級綜合 (HLS) 工具。
這些工具會解析在 C、C++或 OpenCL 中以高級抽象所捕獲的期望行為的算法描述,并生成輸入以提供給較低級的綜合引擎。
對于希望入門的設(shè)計人員,有許多開發(fā)和評估板可用,每種板提供不同的功能和特性。
這里給出三個例子:DFRobot 的 DFR0600 開發(fā)套件,
其具有 Xilinx 的 Zynq-7000 SoC FPGA;Terasic Inc. 的 DE10 Nano,
其具有 Intel 的 Cyclone V SoC FPGA;ICE40HX1K-STICK-EVN 評估板,
其具有 Lattice Semiconductor 的低功耗 iCE40 FPGA。
若設(shè)計人員計劃使用基于 FPGA 的 PCIe 子卡來加速 X86 主板上運行的應用程序,可以關(guān)注 Alveo PCIe 子卡等產(chǎn)品,也是由 Xilinx 提供。
總結(jié)
最佳設(shè)計解決方案常常由 FPGA、處理器與 FPGA 的組合或以硬處理器內(nèi)核作為部分結(jié)構(gòu)的 FPGA 提供。
FPGA 多年來發(fā)展迅速,能夠滿足靈活性、處理速度、功耗等多方面的設(shè)計需求,適合于廣泛的應用。
溫馨提示:明德?lián)P2023推出了全新課程——邏輯設(shè)計基本功修煉課,降低學習FPGA門檻的同時,增加了學習的趣味性,并組織了考試贏積分活動
http://m.cqqtmy.cn/ffkc/415.html
(點擊→了解課程詳情?)
明德?lián)P除了培訓學習還有項目承接業(yè)務,擅長的項目主要包括的方向有以下幾個方面:
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(IMX472 IMX492)
3. PCIE采集系統(tǒng)
4. 圖像項目
5. 高速多通道ADDA系統(tǒng)
6. 基于FPGA板卡研發(fā)
7. 多通道高靈敏電荷放大器
8. 射頻前端
需要了解相關(guān)信息可以聯(lián)系:易老師13112063618(微信同號)