回答初級工程師問題,FPGA到底能做什麼?
文章推薦指數: 80 %
首先來說:
FPGA是一種器件。
其英文名 feild programable gate arry 。
很長,但不通俗。
通俗來說,是一種功能強大似乎無所不能的器件。
通常用於通信、網絡、圖像處理、工業控制等不同領域的器件。
就像ARM、DSP等嵌入式器件一樣,成為無數碼農碼工們情感傾瀉而出的代碼真正獲得生命的地方。
只不過,一樣的編程,卻是不一樣的思想。
嵌入式軟體人員看到的是C。
而FPGA工程師看到是硬體描述語言,verilog或VHDL。
軟體看到是函數、對象、重構。
FPGA工程師則是模塊、流水、復用。
從現象上看,都是代碼到下載程序再到硬體上運行。
不能只看現象而忽略本質。
FPGA
開發本質上是設計一顆IC,「**的身子,丫鬟的命」不是所有verilog/VHDL代碼,都能獲得青睞去流片成為真正的晶片,而更多的則成為運行在FPGA器件上,成為完成相同功能的替代品。
其實現的功能卻一點也不遜色於百萬身價流片的近親。
從而成為獨樹一幟的行業。
FPGA開發的流程,是通過verilog/VHDL等硬體描述語言通過EDA工具編譯、綜合、布局布線成為下載文件,最終加載到FPGA器件中去,完成所實現的功能。
那硬體描述語言描述的是什麼?
這裡描述的就是組合邏輯電路和時序邏輯電路。
組合邏輯電路就是大家所熟知的與門、或門、非門。
時序邏輯電路則是觸發器。
數字晶片上絕大部分邏輯都是這兩種邏輯實現的。
也就是基本上每個電子行業的人所學過的數字電路。
只不過在FPGA中,與或非的操作變成了查找表的操作。
於是所有的數字電路變成了查找表和寄存器,這就構成了FPGA的基礎。
查找表負責邏輯實現,寄存器存儲電路狀態。
二者配合,雙劍合璧,天衣無縫。
這是最初的FPGA的雛形。
現代FPGA內部出了查找表和寄存器之外,還有RAM塊,用於存儲大量的數據塊,這是因為RAM塊較寄存器來存儲大量數據更能節省晶片實現的面積。
FPGA內部的時序電路則需要時鐘的輸入,通常FPGA內部需要時鐘種類較多,因此需要在片內產生所需的的相關的時鐘,如不同頻率,不同相位的時鐘,因此時鐘管理單元DCM/PLL也是必不可少的內部部件。
除此之外,FPGA內部還包括接口I/O,I/O分為普通I/O和高速I/O,高速I/O支持例如高速的SERDES,用於實現XAUI,PCIE等高速接口,這些接口動輒幾Gbps到10Gbps以上。
此外種類多種多樣的硬核IP也是各FPGA廠商差異化競爭利器,例如POWERPC、ARM等硬核IP。
從而構成CPU+FPGA於一體的集可編程性和可重構的處理平台。
因此,相對來所,FPGA雖然發展有二三十年的歷史,其基本架構一直不變不大。
回到問題開始的地方,FPGA的英文翻譯過來是現場可編程門陣列。
這是相對ASIC來說的,ASIC的硬體也可看做是門陣列,但是其是非可編程的器件。
流片完成其功能就固化了,而FPGA的可編程性就在其能夠重新下載配置文件,來改變其內在的功能,這就是其可編程性的由來。
從前端開發流程來說,FPGA和ASIC開發並無二至。
由於ASIC開發一次性投入成本較高,FPGA無疑是一種經濟的替代方案,用於實現的高速的數據並行處理。
如業務能夠支撐大規模應用並且協議固化,則能夠分攤成本的ASIC實現就有成本的優勢。
FPGA技術的五大優勢
性能-利用硬體並行的優勢,FPGA打破了順序執行的模式,在每個時鐘周期內完成更多的處理任務,超越了數位訊號處理器(DSP)的運算能力。
著名的分析與基準測試公司BDTI,發布基準表明在某些應用方面,FPGA每美元的處理能力是DSP解決方案的多倍。
在硬體層面控制輸入和輸出(I/ O)為滿足應用需求提供了更快速的響應時間和專業化的功能。
上市時間—儘管上市的限制條件越來越多,FPGA技術仍提供了靈活性和快速原型的能力。
用戶可以測試一個想法或概念,並在硬體中完成驗證,而無需經過自定製ASIC設計漫長的製造過程。
3由此用戶就可在數小時內完成逐步的修改並進行FPGA設計疊代,省去了幾周的時間。
商用現成(COTS)硬體可提供連接至用戶可編程FPGA晶片的不同類型的I/O。
高層次的軟體工具的日益普及降低了學習曲線與抽象層,並經常提供有用的IP核(預置功能)來實現高級控制與信號處理。
成本— 自定製ASIC設計的非經常性工程(NRE)費用遠遠超過基於FPGA的硬體解決方案所產生的費用。
ASIC設計初期的巨大投資表明了原始設備製造商每年需要運輸數千種晶片,但更多的最終用戶需要的是自定義硬體功能,從而實現數十至數百種系統的開發。
可編程晶片的特性意味著用戶可以節省製造成本以及漫長的交貨組裝時間。
系統的需求時時都會發生改變,但改變FPGA設計所產生的成本相對ASCI的巨額費用來說是微不足道的。
穩定性—軟體工具提供了編程環境,FPGA電路是真正的編程「硬」執行過程。
基於處理器的系統往往包含了多個抽象層,可在多個進程之間計劃任務、共享資源。
驅動層控制著硬體資源,而作業系統管理內存和處理器的帶寬。
對於任何給定的處理器內核,一次只能執行一個指令,且基於處理器的系統時刻面臨著嚴格限時的任務相互取占的風險。
而FPGA不使用作業系統,擁有真正的並行執行和專注於每一項任務的確定性硬體,可減少穩定性方面出現問題的可能。
長期維護—正如上文所提到的, FPGA晶片是現場可升級的,無需重新設計ASIC所涉及的時間與費用投入。
舉例來說,數字通信協議包含了可隨時間改變的規範,而基於ASIC的接口可能會造成維護和向前兼容方面的困難。
可重新配置的FPGA晶片能夠適應未來需要作出的修改。
隨著產品或系統成熟起來,用戶無需花費時間重新設計硬體或修改電路板布局就能增強功能。
小結:較高級別的工具不斷改進,為各個專業水平的工程師和科學家帶來可重新編程的矽晶片,FPGA技術的採用也越來越為廣泛。
關於FPGA話題,歡迎大家交流~
硬體描述語言Verilog HDL基礎
硬體描述語言Verilog HDL類似於高級程序設計語言(如C語言等),它是一種以文本形式來描述數字系統硬體的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示更複雜的數字邏輯系統...
百度人工智慧加速單元XPU,獲得國際頂級會議認可
在之前的一篇推文XPU:百度的AI雲計算加速晶片中,我們介紹了百度在今年的Hot Chips峰會上面推出的人工智慧雲計算加速晶片XPU,從人工智慧應用核心算法的提煉,到晶片架構的設計,再到最後的...