4、FPGA整體結構
FPGA架構主要包括可配置邏輯塊CLB(Configurable Logic Block)、輸入輸出塊IOB(Input Output Block)、內部連線(Interconnect)和其它內嵌單元四個部分。
CLB是FPGA的基本邏輯單元。實際數量和特性會依器件的不同而改變,但是每個CLB都包含一個由4或6個輸入、若干選擇電路(多路復用器等)和觸發器組成的可配置開關矩陣。開關矩陣具有高度的靈活性,經配置可以處理組合型邏輯、移位寄存器或 RAM。
FPGA可支持許多種I/O標準,因而可以為系統設計提供理想的接口橋接。FPGA 內的I/O按bank分組,每個bank能獨立支持不同的I/O標準。目前最先進的FPGA提供了十多個I/O bank,能夠提供靈活的I/O支持。
CLB 提供了邏輯性能,靈活的互連布線則負責在CLB和I/O之間傳遞信號。布線有幾種類型,從設計用于專門實現 CLB 互連(短線資源)、到器件內的高速水平和垂直長線(長線資源)、再到時鐘與其它全局信號的全局低skew布線(全局性專用布線資源)。一般,各廠家設計軟件會將互連布線任務隱藏起來,用戶根本看不到,從而大幅降低了設計復雜性。
內嵌硬核單元包括RAM、DSP、DCM(數字時鐘管理模塊)及其它特定接口硬核等,FPGA器件內部結構如下示意圖。

圖5 FPGA器件內部結構圖
一般來說,器件型號數字越大,表示器件能提供的邏輯資源規模越大。在FPGA器件選型時,用戶需要對照此表格,根據業務對邏輯資源(CLB)、內部BlockRAM、接口(高速Serdes對數)、數字信號處理(DSP硬核數)以及今后擴展等多方面的需求,綜合考慮項目最合適的邏輯器件。
5、FPGA開發流程
FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。FPGA的開發流程一般如下圖所示,包括功能定義/器件選型、設計輸入、功能仿真、邏輯綜合、布局布線與實現、編程調試等主要步驟。
1、功能定義/器件選型:在FPGA設計項目開始之前,必須有系統功能的定義和模塊的劃分,另外就是要根據任務要求,如系統的功能和復雜度,對工作速度和器件本身的資源、成本、以及連線的可布性等方面進行權衡,選擇合適的設計方案和合適的器件類型。
2、 設計輸入:設計輸入指使用硬件描述語言將所設計的系統或電路用代碼表述出來。最常用的硬件描述語言是Verilog HDL。
3、 功能仿真:功能仿真指在邏輯綜合之前對用戶所設計的電路進行邏輯功能驗證。仿真前,需要搭建好測試平臺并準備好測試激勵,仿真結果將會生成報告文件和輸出信號波形,從中便可以觀察各個節點信號的變化。如果發現錯誤,則返回設計修改邏輯設計。常用仿真工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS等軟件。
4、 邏輯綜合:所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述。綜合優化根據目標與要求優化所生成的邏輯連接,使層次設計平面化,供FPGA布局布線軟件進行實現。就目前的層次來看,綜合優化是指將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門級電路。
真實具體的門級電路需要利用FPGA制造商的布局布線功能,根據綜合后生成的標準門級結構網表來產生。為了能轉換成標準的門級結構網表,HDL程序的編寫必須符合特定綜合器所要求的風格。常用的綜合工具有Synplicity公司的Synplify/Synplify Pro軟件以及各個FPGA廠家自己推出的綜合開發工具。
5、布局布線與實現:布局布線可理解為利用實現工具把邏輯映射到目標器件結構的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,并產生相應文件(如配置文件與相關報告);實現是將綜合生成的邏輯網表配置到具體的FPGA芯片上。由于只有FPGA芯片生產商對芯片結構最為了解,所以布局布線必須選擇芯片開發商提供的工具。
6、編程調試:設計的最后一步就是編程調試。芯片編程是指產生使用的數據文件(位數據流文件,Bitstream Generaon),將編程數據加載到FPGA芯片中;之后便可進行上板測試。最后將FPGA文件(如.bit文件)從電腦下載到單板上的FPGA芯片中。
6、如何使用FPGA
FPGA開發完畢,最終得到驗證好的加載文件。輸出加載文件后,即可開始正常業務處理和驗證(以軟件加載方式為例,描述整個過程)
1、邏輯加載;
2、單板軟件加載邏輯后,需要復位邏輯;
3、復位完成后,軟件需等待等待一段時間至邏輯鎖相環工作穩定;
4、軟件啟動對邏輯的外部RAM、內部Block RAM、DDRC等的自檢操作;
5、軟件完成自檢以后,對邏輯所有可寫RAM空間及寄存器進行初始化操作;
6、初始化完畢,軟件參考邏輯芯片手冊配置表項及寄存器;
7、邏輯準備好,可以開始處理業務。
7、FPGA適用場景
FPGA適合非規則性多并發、密集計算及協議解析處理場景,例如人工智能、基因測序、視頻編碼、數據壓縮、圖片處理、網絡處理等各領域的加速。