FPGA

現場可編程門陣列

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

簡介


FPGA設計不是簡單的晶元研究,主要是利用 FPGA 的模式進行其他行業產品的設計。與ASIC 不同,FPGA在通信行業的應用比較廣泛。通過對全球FPGA產品市場以及相關供應商的分析,結合當前我國的實際情況以及國內領先的FPGA產品可以發現相關技術在未來的發展方向,對我國科技水平的全面提高具有非常重要的推動作用。
FPGA
FPGA
FPGA的開發相對於傳統PC、單片機的開發有很大不同。FPGA以并行運算為主,以硬體描述語言來實現;相比於PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區別,也造成了FPGA開發入門較難。FPGA開發需要從頂層設計、模塊分層、邏輯實現、軟硬體調試等多方面著手。
與傳統模式的晶元設計進行對比,FPGA 晶元並非單純局限於研究以及設計晶元,而是針對較多領域產品都能藉助特定晶元模型予以優化設計。從晶元器件的角度講,FPGA 本身構成 了半定製電路中的典型集成電路,其中含有數字管理模塊、內嵌式單元、輸出單元以及輸入單元等。在此基礎上,關於FPGA晶元有必要全面著眼於綜合性的晶元優化設計,通過改進當前的晶元設計來增設全新的晶元功能,據此實現了晶元整體構造的簡化與性能提升。

發展歷程


1985年,當全球首款FPGA產品——XC2064誕生時,註定要使用大量晶元的PC機剛剛走出矽谷的實驗室進入商業市場,網際網路只是科學家和政府機構通信的神秘鏈路,無線電話笨重得像磚頭,日後大紅大紫的Bill Gates正在為生計而奮鬥,創新的可編程產品似乎並沒有什麼用武之地。
最初,FPGA只是用於膠合邏輯(Glue Logic),從膠合邏輯到演演算法邏輯再到數字信號處理、高速串列收發器和嵌入式處理器,FPGA真正地從配角變成了主角。在以閃電般速度發展的半導體產業里,22年足夠改變一切。“在未來十年內每一個電子設備都將有一個可編程邏輯晶元”的理想正成為現實。
1985年,Xilinx公司推出的全球第一款FPGA產品XC2064怎麼看都像是一隻“醜小鴨”——採用2μm工藝,包含64個邏輯模塊和85000個晶體管,門數量不超過1000個。22年後的2007年,FPGA業界雙雄Xilinx和Altera公司紛紛推出了採用最新65nm工藝的FPGA產品,其門數量已經達到千萬級,晶體管個數更是超過10億個。一路走來,FPGA在不斷地緊跟並推動著半導體工藝的進步——2001年採用150nm工藝、2002年採用130nm工藝,2003年採用90nm工藝,2006年採用65nm工藝。
當1991年Xilinx公司推出其第三代FPGA產品——XC4000系列時,人們開始認真考慮可編程技術了。XC4003包含44萬個晶體管,採用0.7μm工藝,FPGA開始被製造商認為是可以用於製造工藝開發測試過程的良好工具。事實證明,FPGA可為製造工業提供優異的測試能力,FPGA開始用來代替原先存儲器所扮演的用來驗證每一代新工藝的角色。也許從那時起,向最新製程半導體工藝的轉變就已經不可阻擋了。最新工藝的採用為FPGA產業的發展提供了機遇。

工作原理


FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。現場可編程門陣列(FPGA)是可編程器件,與傳統邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構。FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內部靜態存儲單元載入編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯接方式,並最終決定了FPGA所能實現的功能,FPGA允許無限次的編程。

基本結構


FPGA 器件屬於專用集成電路中的一種半定製電路,是可編程的邏輯列陣,能夠有效的解決原有的器件門電路數較少的問題。 FPGA 的基本結構包括可編程輸入輸出單元,可配置邏輯塊,數字時鐘管理模塊,嵌入式塊 RAM,布線資源,內嵌專用硬核,底層內嵌功能單元。由於FPGA具有布線資源豐富,可重複編程和集成度高,投資較低的特點,在數字電路設計領域得到了廣泛的應用。FPGA的設計流程包括演演算法設計、代碼模擬以及設計、板機調試,設計者以及實際需求建立演演算法架構,利用EDA建立設計方案或HD編寫設計代碼,通過代碼模擬保證設計方案符合實際要求,最後進行板機調試,利用配置電路將相關文件下載至FPGA晶元中,驗證實際運行效果。

晶元設計


相比於其他種類的晶元設計,關於 FPGA晶元通常需要設置較高門檻並且擬定嚴格性較強的基本設計流程。具體在設計時,應當緊密結合 FPGA 的有關原理圖,據此實現了規模較大的專門晶元設計。通過運用Matlab以及C語言的特殊設計演演算法,應當可以實現全方位的順利轉化,從而確保其符合當前的主流晶元設計思路。在此前提下,如果選擇了上述設計思路那麼通常需要著眼於有序整合各類元器件以及相應的設計語言,據此保證了可用性與可讀性較強的晶元程序設計。運用 FPGA可以實現板機調試、代碼模擬與其他有關的設計操作,確保當前的代碼編寫方式以及設計方案都能符合特定的設計需求。除此以外,關於設計演演算法應當將合理性置於首要性的位置,據此實現了優化的項目設計效果,並且優化了晶元運行的實效性。因此作為設計人員來講,首先就是要構建特定的演演算法模塊,以此來完成與之有關的晶元代碼設計。這是由於預先設計代碼有助保證演演算法可靠性,對於整體上的晶元設計效果也能予以顯著優化。在全面完成板機調試以及模擬測試的前提下,應當可以在根源上縮短設計整個晶元消耗的周期,同時也致力於優化當前現存的硬體整體結構。例如在涉及到開發非標準的某些硬體介面時,通常都會用到上述的新產品設計模式。
FPGA設計的主要難點是熟悉硬體系統以及內部資源,保證設計的語言能夠實現元器件之間的有效配合,提高程序的可讀性以及利用率。這也對設計人員提出了比較高的要求,需要經過多個項目的經驗積累才可以達到相關的要求。
在演演算法設計時需要重點考慮合理性,保證項目最終完成的效果,依據項目的實際情況提出解決問題的方案,提高FPGA的運行效率。確定演演算法后應當合理構建模塊,方便後期進行代碼設計。在代碼設計時可以利用預先設計好的代碼,提高工作效率,增強可靠性。編寫測試平台,進行代碼的模擬測試和班級調試,完成整個設計過程。FPGA同ASIC不同,開發的周期比較短,可以結合設計要求改變硬體的結構,在通信協議不成熟的情況下可以幫助企業迅速推出新產品,滿足非標準介面開發的需求。

設計語言


可編程邏輯器件是通過EDA技術將電子應用 系統的既定功能和技術指標具體實現的硬體載體,FPGA作為實現這一途徑的主流器件之一,具有直接面向用戶,靈活性和通用性極大,使用方便,硬 件測試和實現快捷等特點。
硬體描述語言(HDL)是一種用來設計數字邏輯系統和描述數字電路的語言,常用的主要有VHDL、Verilog HDL、System Verilog 和 System C。
作為一種全方位的硬體描述語言,超高速集成電路硬體描述語言(VHDL)具有與具體硬體電路無關、與設計平台無關的特性,具有寬範圍描述能力、不依賴於特定的器件、可將複雜控制邏輯的設計用嚴謹簡潔的代碼進行描述等優點,得到眾多EDA公司的支持,在電子設計領域得到了廣泛應用。VHDL是一種用於電路設計的高級語言,與其他硬體描述語言相比,其具有語言簡潔、靈活性強、不依賴於器件設計等特點,使其成為EDA技術通用的硬體描述語言,使EDA技術更便於設計者掌握。
Verilog HDL是廣泛應用的硬體描述語言,可以用於硬體設計流 程的建模、綜合、模擬等多個階段。
Verilog HDL 優點:類似C語言,上手容易,靈活。大小寫敏感。在寫激勵和建模方面有優勢。缺點:很多錯誤在編譯的時候不能被發現。
VHDL 優點:語法嚴謹,層次結構清晰。缺點:熟悉時間長,不夠靈活。
Quartus_Ⅱ軟體是由Altera公司開發的完整多平台設計環境,能滿足各種FPGA,CPLD的設計需要,是片上可編程系統設計的綜合性環境。
Vivado設計套件,是FPGA廠商賽靈思公司2012年發布的集成設計環境。包括高度集成的設計環境和新一代從系統到IC級的工具,這些均建立在共享的可擴展數據模型和通用調試環境基礎上。Xilinx Vivado設計套件中提供了FIFO IP核,可方便應用於設計中。

主要應用


視頻分割系統

近年來,大型的總控系統得到了日益廣泛的應用,與之相關的視頻分割技術水平也在逐步提高,該技術是把用多屏拼接顯示的方式來顯示一路視頻信號,在一些需要使用大屏幕顯示的場景應用廣泛。
隨著技術水平的進步,視頻分割技術逐步成熟,滿足了人們對於清晰視頻圖像的基本需求、 FPGA 晶元硬體結構比較特殊,可以利用事先編輯的邏輯結構文件調整內部結構,利用約束的文件來調整不同邏輯單元的連接和位 置,妥善處理好數據線路徑,其自身具有的靈活性和適應性方便用戶的開發和應用。在處理視頻信號時,FPGA晶元可以充分利用自身的速度和結構優勢,實現兵乓技術和流水線技術。在對外連接的過程中,晶元採用數據并行連接的方式,使圖像信息的位寬拓寬,利用內部的邏輯功能提高圖像處理的速度。通過高速緩存結構以及時鐘管理實現對圖像處理以及其他設備的控制。在整體的設計結構中,FPGA晶元處於核心位置,複雜數據的插值處理以及提取和存儲,還起到總體控制的作用,保證系統的穩定運行。另外,視頻信息處理與其他數據處理不同,需要晶元具有特殊的邏輯單元以及RAM或者FIFO單元,保證提高足夠的數據傳輸速度。

延遲器和存儲

FPGA具有可編程的延遲數字單元,在通信系統和各類電子設備中有著比較廣泛的應 用,比如同步通信系統,時間數值化系統等,主要的設計方法包括數控延遲線法,存儲器法,計數器法等,其中存儲器法主要是利用 FPGA的RAM或者FIFO實現的。
利用 FPGA 對SD卡相關數據進行讀寫可 以依據具體演演算法的需求低FPGA晶元開展編程,更加實際情況的變化實現讀寫操作的不斷更新。這種模式之下只需要利用原有的晶元便可以實現對SD卡的有效控制,明顯降低了系統的成本。

通信行業

通常情況下,通信行業綜合考慮成本以及運營等各方面的因素,在終端設備數量比較多的位置,FPGA的用量比較大,基站最適合使用 FPGA,基站幾乎每一塊板子都需要使用FPGA晶元,而且型號比較高端,可以處理複雜的物理協議,實現邏輯控制。同時,由於基 站的邏輯鏈路層,物理層的協議部分需要定期更新,也比較適合採用FPGA技術。目前, FPGA主要在通信行業的建設初期和中期應用,後期逐步被ASIC替代。

其它應用

FPGA在安防,工業等領域也有著比較廣泛的應用,比如安防領域的視頻編碼解碼等協議在前端數據採集和邏輯控制的過程中可以利用FPGA處理。工業領域主要採用規模較小的FPGA,滿足靈活性的需求。另外,由於 FPGA具有比較高的可靠性,因此在軍工以及航天領域也有比較廣泛的應用。未來,隨著技術的不斷完善,相關工藝將會完成升級改造,在諸多新型行業比如大數據等,FPGA將會有更為廣泛的應用前景。伴隨5G網路的建設,初期會大量應用FPGA,人工智慧等新型的領域也會更多的用到FPGA。

優缺點


優點

FPGA的優點如下:
(1) FPGA由邏輯單元、RAM、乘法器等硬體資源組成,通過將這些硬體資源合理組織,可實現乘法器、寄存器、地址發生器等硬體電路。
(2) FPGA可通過使用框圖或者Verilog HDL來設計,從簡單的門電路到FIR或者FFT電路。
(3) FPGA可無限地重新編程,載入一個新的設計方案只需幾百毫秒,利用重配置可以減少硬體的開銷。
(4) FPGA的工作頻率由FPGA晶元以及設計決定,可以通過修改設計或者更換更快的晶元來達到某些苛刻的要求(當然,工作頻率也不是無限制的可以提高,而是受當前的IC工藝等因素制約)。

缺點

FPGA的缺點如下:
(1) FPGA的所有功能均依靠硬體實現,無法實現分支條件跳轉等操作。
(2) FPGA只能實現定點運算。
總結:FPGA依靠硬體來實現所有的功能,速度上可以和專用晶元相比,但設計的靈活度與通用處理器相比有很大的差距。