FPGA 是一種以數字電路為主的集成芯片,于 1985 年由 Xilinx 創始人之一 Ross Freeman 發明,屬于可編程邏輯器件(Programmable Logic Device,PLD)的一種。這個時間比著名的摩爾定律出現的時間晚 20 年左右,但是 FPGA 一經發明,后續的發展速度之快,超出大多數人的想象。
圖 1 中給出了 FPGA 芯片的實物圖:
圖 1 FPGA芯片實物圖
FPGA 發展歷程
在 PLD 未發明之前,工程師使用包含若干個邏輯門的離散邏輯芯片進行電路系統的搭建,復雜的邏輯功能實現起來較為困難。
為了解決這一問題,20 世紀 70 年代,可編程邏輯陣列(Programmable Logic Array,PLA)問世,PLA 中包含了一些固定數量的與門、非門,分別組成了“與平面”和“或平面”,即“與連接矩陣”和“或連接矩陣”,以及僅可編程一次的連接矩陣(因為此處編程是基于熔絲工藝的),因此可以實現一些相對復雜的與、或多項表達式的邏輯功能,PLA 內部結構如圖 2 所示:
圖 2 PLA內部結構
與 PLA 同時問世的還有可編程只讀存儲器(Programmable Read-Only Memory,PROM),其內部結構如圖 3 所示。與 PLA 相同,PROM 內部包含“與連接矩陣”和“或連接矩陣”,但是與門的連接矩陣是硬件固定的,只有或門的連接矩陣可編程。
圖 3 PROM內部結構
若只有與門的連接矩陣可編程,而或門的連接矩陣是硬件固定的,那么這種芯片叫作可編程陣列邏輯器件(Programmable Array Logic,PAL),根據輸出電路工作模式的不同,PAL 可分為三態輸出、寄存器輸出、互補輸出,但 PAL 仍使用熔絲工藝,只可編程一次。PAL 的結構圖如圖 4 所示。
圖 4 PAL結構圖
在 PAL 的基礎上,又發展出了通用陣列邏輯器件(Generic Array Logic,GAL),相比于 PAL,GAL 有兩點改進:
-
采用了電可擦除的 CMOS 工藝,可多次編譯,增強了器件的可重配置性和靈活性;
-
采用了可編程的輸出邏輯宏單元(Output Logic Macro Cell,OLMC),通過編程 OLMC 可將 GAL 的輸出設置成不同狀態,僅用一個型號的GAL就可以實現所有PAL器件輸出電路的工作模式,增強了器件的通用性。
GAL 的結構圖如圖 5 所示:
圖 5 GAL結構圖
早期的 PLD 主要由上述四種類型的芯片組成,即 PROM、PLA、PAL 和 GAL。它們的共同特點是可以實現速度特性較好的邏輯功能,但由于其結構過于簡單,所以只能實現規模較小的數字電路。
隨著科技的發展、社會的進步,人們對芯片的集成度要求越來越高。早期的 PLD 產品不能滿足人們的需求,復雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)誕生。可以把 CPLD 看作 PLA 器件結構的延續,一個 CPLD 器件也可以看作若干個 PLA 和一個可編程連接矩陣的集合。CPLD 的內部結構圖如圖 6 所示。
圖 6 CPLD結構圖
FPGA 比 CPLD 早幾年問世,與 CPLD 并稱為高密度可編程邏輯器件,但它們有著本質的區別。FPGA 芯片的內部架構并沒有沿用類似 PLA 的結構,而是采用了邏輯單元陣列(Logic Cell Array,LCA)這樣一個概念,改變了以往 PLD 器件大量使用與門、非門的思想,主要使用查找表和寄存器。
除此之外,FPGA 和 CPLD 在資源類型、速度等方面也存在差異,如下表所示。
器件種類/特性 | FPGA | CPLD |
---|---|---|
內部結構 | 查找表(Look Up Table) | 乘積項(Product Term) |
程序存儲 | 內部為 SRAM 結構,外掛 EEPROM 或 Flash 存儲程序 | 內部為 EEPROM 或 Flash |
資源類型 | 觸發器資源豐富 | 組合邏輯資源豐富 |
集成度 | 高 | 低 |
使用場合 | 完成比較復雜的算法 | 完成控制邏輯 |
速度 | 快 | 慢 |
其他資源 | RAM、PLL、DSP等 | —— |
保密性 | 一般不能保密(可以使用加密核) | 可加密 |
FPGA 的類型從內部實現機理來講,可以分為基于 SRAM 技術、基于反熔絲技術、基于 EEPROM/Flash 技術。就電路結構來講,FPGA 可編程是指三個方面的可編程:可編程邏輯塊、可編程 I/O、可編程布線資源。可編程邏輯塊是 FPGA 可編程的核心,我們上面提到的三種技術也是針對可編程邏輯塊的技術。
FPGA 的結構圖如圖 8 所示。
圖 8 FPGA結構圖
FPGA 的技術優勢
許多讀者都知道 FPGA 功能強大,但它強大在哪兒?
以單片機舉例說明,我們都知道,單片機功能強大,幾乎無所不能,而 FPGA 與之相比只強不弱。因為只要單片機能實現的功能,FPGA 就一定能實現,當然這需要加一個大前提——在 FPGA 資源足夠多的情況下。但是 FPGA 能實現的功能,單片機卻不一定能夠輕松實現,這是不爭的事實,如果你不相信,那只能說明你還不了解 FPGA。
說到這里,讀者不禁要問,既然 FPGA 這么厲害,為什么單片機的使用范圍更廣?那是因為在商業中,價格往往是影響產品的重要因素之一。
單片機的價格要遠遠低于 FPGA,而且根據性能和資源的不同,FPGA 的價格也存在很大差異,單枚 FPGA 芯片的價格從幾十元到幾十萬元不等。與之相比,單片機的價格要便宜很多,同樣的功能我們如果可以用價格低廉的單片機實現,就不會選擇相對昂貴的 FPGA 了,除非單片機滿足不了功能需求。所以公司自己進行開發時,為了節約成本,可能會選擇更加便宜的單片機,而不會選擇相對昂貴的 FPGA,因為單片機、ARM 這種微處理器的需求量很大,所以價格上更有優勢。
但無論是單片機、ARM 還是 FPGA,它們都只是一種幫助我們實現功能的工具,具體如何選擇,需要根據具體問題具體分析。總之,沒有萬能的工具,只有符合生產需求的工具。我們不應對某種工具存在偏見,要綜合考慮。同樣,當你了解得更多的時候,你會發現這些工具都需要掌握。
FPGA 的應用場景遠沒有單片機和 ARM 這么多,主要針對單片機和 ARM 無法解決的問題。比如要求靈活高效、高吞吐量、低批量延時、快速并行運算、可重構、可重復編程、可實現定制性能和定制功耗的情況,這些工作只能由FPGA承擔。
而相對于出于專門目的而設計的集成電路(Application Specific Integrated Circuit,ASIC),FPGA 具有 3 點優勢:
1) 靈活性
通過對 FPGA 編程,FPGA 可以執行 ASIC 能夠執行的任何邏輯功能。FPGA 的獨特優勢在于其靈活性,即隨時可以改變芯片功能,在技術還未成熟的階段,這種特性能夠降低產品的成本與風險,在 5G 技術普及初期,這種特性尤為重要。
2) 上市時間縮短
對 FPGA 編程后即可直接使用,FPGA 方案無須經歷三個月至一年的芯片流片周期,為企業爭取了產品上市時間。
3) 有一定成本優勢
FPGA 與 ASIC 的主要區別在于 ASIC 方案有固定成本而 FPGA 方案幾乎沒有,在使用量小的時候,采用 FPGA 方案無須一次性支付幾百萬美元的流片成本,同時也不用承擔流片失敗的風險,此時 FPGA 方案的成本低于 ASIC 的,隨著使用量增加,FPGA 方案在成本上的優勢逐漸減少,超過某一使用量后,由于大量流片產生了規模經濟,因此 ASIC 方案在成本上更有優勢,如下圖所示:
圖 9 FPGA方案和ASIC方案的成本比較
因此,FPGA 通常在數字信號處理、視頻處理、圖像處理、5G 通信領域、醫療領域、工業控制、云服務、加速計算、人工智能、數據中心、自動駕駛、芯片驗證等領域發揮著不可替代的作用。只有掌握了通用的 FPGA 設計方法,才能在 FPGA 獨領風騷的領域中大展宏圖。
FPGA的應用方向
FPGA 介于軟件和硬件之間,用它做接口、做通信,它就偏向硬件;用它做算法、做控制,它就偏向軟件。隨著人工智能、機器視覺的崛起,FPGA 更加偏向軟件算法的異構,有和 GPU 一爭高下的潛力。
FPGA 與 GPU 性能對比圖如圖 10 所示:
圖 10 FPGA與GPU的性能對比圖
FPGA 軟件方向:以軟件開發為主,開發 FPGA 在數據分析、人工智能、機器視覺等領域的加速應用能力,主要采用 OpenCL 和 HLS 技術實現軟硬件協同開發。
FPGA 硬件方向:以邏輯設計為主,針對FPGA特定領域的應用設計、集成電路設計以及芯片驗證能力。
FPGA 最初的應用領域是通信領域,但是隨著信息產業和微電子技術的發展,FPGA 技術已經成為信息產業最熱門的技術之一,應用范圍擴大,遍及航空航天、汽車、醫療、廣播、測試測量、消費電子、工業控制等熱門領域,而且隨著工藝的發展和技術的進步,從各個角度開始滲透到生活當中。
有你想看的精彩 利用FPGA開發板進行ASIC原型開發的技巧 基于FPGA實現通用異步收發器基本功能的應用設計 使用FPGA實現高效并行實時上采樣
掃碼加微信邀請您加入FPGA學習交流群
歡迎加入至芯科技FPGA微信學習交流群,這里有一群優秀的FPGA工程師、學生、老師、這里FPGA技術交流學習氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
原文標題:FPGA是什么(超級詳細)
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603385
原文標題:FPGA是什么(超級詳細)
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論