本文幫助你理解FPGA相關知識。
1、引言
之前大多數軟件都是與它們各自的硬件一起發布,沒有辦法對其進行更改。但隨著技術的成熟,制造商找到了在現有硬件上更新軟件以增加附加功能的方法。
現在,想象一下未來硬件更新也成為可能——不是很有趣嗎?
那么,這種可編程硬件,其子系統配置甚至在制造后也可以修改,屬于可重構系統的范疇。而支持可重構計算的最主要的集成電路是FPGA,即可編程門陣列的縮寫。
FPGA使您可以編程產品功能,適應新標準,并在產品安裝在現場后針對特定應用重新配置硬件——因此稱為“現場可編程”。而“門陣列”指的是其架構中存在的二維邏輯門陣列。
所有現代個人計算機,包括臺式機、筆記本、智能手機和平板電腦,都是通用計算機的例子。通用計算采用“馮·諾依曼”方法,即指令獲取和數據操作不能同時發生。因此,它們是順序機器,其性能也受到限制。
另一方面,我們有應用特定集成電路(ASIC),這些電路是為特定任務定制的,例如數字語音記錄器或高效的比特幣礦工。ASIC使用空間方法來實現只實現一個特定應用程序,并將電路中的元件針對該應用程序進行了高度優化,提供了最大的性能。但是由于ASIC的電路結構非常專門化,它只能用于執行被設計的特定任務,不能用于其他任務。
那么,為了獲得ASIC的高性能,是否需要犧牲通用處理器的靈活性呢?
實際上FPGA處于這兩種架構范式之間,具有一定的靈活性和可重構性!
雖然FPGA具有可重新編程和相對較低的NRE(非重復性工程)成本等優勢,但與ASIC相比,FPGA的能源效率較低(指在完成特定計算任務時所消耗的能量與計算任務完成的速度之比),且不適用于大規模生產。
因此,ASIC和FPGA具有不同的優勢和價值主張。通常,大多數設備制造商會使用FPGA進行原型設計,因為它們可以快速迭代和測試不同的設計,且具有一定的靈活性。而在確定了最終的設計之后,制造商通常會使用ASIC進行大規模生產,以獲得更高的性能和更低的成本。
過去,FPGA通常被用于較低速度和復雜設計,因為FPGA的電路結構相對復雜處理速度相對較低;且其可編程性和靈活性使FPGA更適用于那些需要實現較為復雜設計的場合。但是現在隨著FPGA技術的不斷發展和改進,FPGA已經能夠實現更高的處理速度和更優化的電路結構。目前,FPGA已經可以輕松地實現超過500MHz的處理性能基準。
2、FPGA的內部架構
1985年,一家名為Xilinx的半導體制造公司發明了第一個商業化的FPGA芯片XC2064。另一家在2015年被英特爾收購的公司Altera也推動了市場的發展,并與Xilinx一起推動了FPGA技術的發展。
FPGA起源于相對較簡單的技術,如可編程只讀存儲器(PROM)和可編程邏輯器件(PLD),如PAL、PLA或復雜PLD(CPLD)。
FPGA由三個主要部分組成:
可配置邏輯塊 - 實現邏輯功能。
可編程互聯 - 實現路由功能。
可編程輸入/輸出塊 - 與外部元件連接。
邏輯塊實現設計所需的邏輯功能,由各種組件組成,例如晶體管對、查找表(LUT)、觸發器和多路復用器。
您可以將邏輯塊視為單獨的模塊,就像樂高積木一樣,并且可以并行操作。但與樂高積木不同的是,邏輯塊是可配置的,即其內部狀態可以進行控制,并且可以通過編程互聯將它們連接在一起以構建有意義的東西。
可編程互聯的層次結構用于在可配置邏輯塊(CLB)之間分配資源;其中路由路徑包含可通過反熔絲或基于存儲器的技術連接的具有不同長度的電線段。
每個CLB都與交換矩陣相結合,以訪問通用路由結構。交換矩陣提供可編程的多路復用器,用于選擇給定路由通道中的信號,并因此連接垂直和水平線。
最后,輸入/輸出塊(IOB)用于將CLB和路由架構與外部元件接口。
在早期的FPGA芯片中,沒有處理器來運行任何軟件,實現應用程序意味著從頭設計電路。因此,我們可以將FPGA配置得像OR門一樣簡單,也可以像多核處理器一樣復雜。
但是自XC2064以來,FPGA的基本架構已經通過添加更多專門的可編程功能塊(如ALU、塊RAM、多路復用器、DSP-48和微處理器)而得到發展。
3、FPGA設計流程
設計流程描述了在物理板上實現和編程任何給定邏輯的流程。于該流程與軟件開發生命周期(SDLC)類比,我將其稱為 FPGA 開發生命周期(FDLC)。
FPGA架構設計流程包括設計輸入、邏輯綜合、設計實現、設備編程和設計驗證等步驟。然而,具體步驟因制造商而異。
4、設計輸入
邏輯的描述可以使用原理圖編輯器、有限狀態機(FSM)編輯器或硬件描述語言(HDL)來制作。這是通過從給定庫中選擇組件并將設計函數直接映射到所選的計算塊來完成的。
當設計具有大量功能時,圖形化管理變得困難,此時可以使用HDL以結構化或行為方式捕捉設計。除了已經成為最常用的HDL語言之一的VHDL和Verilog之外,還有一些類似于C語言的HDL語言可供選擇,如Handel-C、Impulse C和SystemC等。
使用HDL進行設計描述,可以更直觀地表達設計的結構和行為,并方便設計的復用和修改。同時,HDL還可以進行仿真驗證,確保設計的正確性和可靠性。因此,HDL在FPGA設計中具有廣泛的應用價值。
5、 邏輯綜合
這個過程將上述VHDL代碼翻譯成設備網表格式,以描述具有邏輯元素的完整電路。綜合過程涉及檢查代碼語法和分析設計體系結構的層次結構。接下來是將代碼與優化一起編譯,并將生成的網表保存為.ngc文件。
6、設計實現
設計實現過程包括以下步驟:
翻譯:合并所有輸入網表到邏輯設計文件中,生成 .ngd 文件。用戶約束文件為端口指定物理元素。
映射:將.ngd文件中定義的邏輯映射到FPGA器件的組件上,并生成 .ncd 文件。
布局布線:按照約束條件,將上述過程中的子塊放置到邏輯塊中,然后連接這些塊。
7、設備編程
將上述路由好的設計加載并轉換為FPGA支持的格式。將路由好的.ncd文件傳遞給BitGen程序,生成一個包含所有FPGA編程信息的比特流文件。
8、設計驗證
這個過程是與設計流程一起完成的,以確保邏輯行為符合預期。這個過程涉及以下仿真:
行為仿真(RTL仿真)
功能仿真
靜態時序仿真
通過為設計提供各種輸入測試模式,并觀察輸出,這些仿真可以模擬設計的行為,從而驗證其正確性和可靠性。設計驗證過程是確保設計質量的關鍵步驟,可以在設計實現之前或之后進行。
9、FPGA的未來
產業趨勢將FPGA推向在異構計算范例中越來越重要的作用。這里的異構計算是指使用多種類型的處理器來執行各自的專門處理能力的系統。而所有這些不同的處理器,包括FPGA,都可以通過OpenCL進行編程——這是一個行業標準的開發平臺。
FPGA提供了成本效益的并行計算能力,適用于快速原型制作。在測試神經網絡時,FPGA有時也能夠超越GPU。雖然GPU對于訓練來說可能很好,但當涉及實時應用時,FPGA更加適應。微軟已經在通過Microsoft Azure云服務加速AI時使用了英特爾Stratix FPGA。
來源: 本文轉載自Java學研大本營公眾號
-
FPGA
+關注
關注
1630文章
21767瀏覽量
604615 -
集成電路
+關注
關注
5390文章
11585瀏覽量
362486 -
計算機
+關注
關注
19文章
7522瀏覽量
88302
原文標題:入門FPGA及其架構
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論