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