FPGA是Field Programmable Gate Array的簡寫,中文全稱為現場可編程門陣列。FPGA的設計包括軟件設計和硬件設計兩大塊。軟件設計包含嵌入式C程序和HDL程序設計,嵌入式C程序是最近才開始流行的。硬件設計,顧名思義就是與硬件相關的,包括電路設計、配套硬件設計、輸入輸出接口設計等。
FPGA的開發離不開EDA開發軟件和編程工具,開發流程按照先后順序,依次為電路設計、輸入設計、功能仿真、綜合優化、綜合后仿真、實現、布線后仿真、板級仿真和芯片編程、調試等。
一、方案驗證
在開始所有步驟之前,一定要進行方案驗證。工程師會根據項目要求,對整個系統進行綜合考量,包括各項指標、復雜程度,FPGA芯片的工作速度、成本、供貨渠道等。方案驗證通過之后,就需要進行系統設計和FPGA芯片選擇等籌備工作。
二、電路設計
FPGA電路設計通常都是采用金字塔式的邏輯,自上而下進行的。首先需要把整個系統劃分成各個基本單元,然后再把各個單元進行細化、分層,直到可以直接使用EDA器件庫。
三、輸入設計
輸入設計就是將系統電路按照開發軟件的規范進行表達,使EDA工具能夠直接進行操作。輸入設計的主要方法主要包括原理圖輸入法和硬件描述語言(HDL)法。其中,原理圖輸入法是最直接的表達方式,在早期FPGA芯片的發展過程中,就被廣泛應用。原理圖輸入法從元器件庫中,將所需的器件全部調出,然后進行原理圖的繪制。
原理圖輸入法的優點是直觀易懂,并且仿真很便捷;缺點是維護起來比較麻煩,涉及到模塊的構造和重用時,篇幅會大量增加,特別是需要進行系統升級時,基本上所有的原理圖都要進行適當修改,整體效率偏低。
隨著各項指標要求的演變,硬件描述語言(HDL)法逐漸成為現今開發中應用最廣泛的方法。HDL法根據文本描述設計,又可以分為行為HDL和普通HDL。
行為HDL主要用在大型工程中,主流語言是VHDL和Verilog HDL,采用的是IEEE(美國電氣與電子工程師)標準,其共同特點是利于自上而下的設計,語言與芯片工藝無關,可移植性好,有很優秀的仿真和邏輯表述功能,輸入效率高,便于模塊劃分和移植。
普通HDL主要用于小型設計,包括CUR和ABEL,支持狀態機、邏輯方程和真值表等方式。
四、功能仿真
功能仿真又稱為前仿真,僅對初步的功能進行驗證,沒有延遲信息,只是對所設計的電路進行邏輯功能驗證。在仿真前,需要將核心的輸入信號進行序列組合,也就是利用HDL和波形編輯器建立測試向量和波形文件。仿真結果以信號波形和報告文件的形式呈現,方便觀察各個信號節點的變化情況。如果出現錯誤,就返回修改邏輯設計。
五、綜合優化
綜合優化,簡單來說就是將高級抽象描述轉化為具體詳細的描述,根據目標要求對所生成的邏輯連接進行優化,使設計層次更加平面化,以便實現FPGA布局布線。
從層次上來看,綜合優化主要是將輸入設計編譯成邏輯連接網表,以便和觸發器、RAM、與或非門等基本邏輯單元進行連接。真實具體的門級電路還要利用FPGA制造商的布局布線功能,再根據綜合后的邏輯連接網表來繪制,也就是標準門級結構網表。因此,綜合優化并非最終的門級電路。
另外需要注意的是,為了確保標準門級結構網表的轉換,在編寫HDL程序時,必須要針對特定綜合器的風格進行匹配。
六、綜合后仿真
綜合后仿真,是檢查綜合結果與原設計是否一致的步驟,通過把綜合生成的標準延時文件,反標注到綜合仿真模型中,來對門延時影響進行評估。該步驟并不能對線延時進行評估,因此和布線后的實際情況有差距。
現階段綜合工具已經比較成熟,對于一般的設計而言,通常這一步驟可以省略。但是,如果布局布線之后,出現電路結構與設計意圖不符的情況,還是需要通過綜合仿真來查找問題根源。
七、實現與布局布線
實現,就是將綜合生成的邏輯網表在FPGA芯片上進行配置,完成布局布線。展開來說,布局是將邏輯網表中的硬件與底層單元,在FPGA芯片內部的固有硬件結構上進行合理的配置,以便達到最優的面積和最優的速度。布線則是在布局拓撲結構的基礎之上,結合FPGA芯片內部的各種接口,準確連接各個元器件。由于布局布線需要用到FPGA芯片內部的所有硬件和接口,因此必須選擇FPGA芯片原廠提供的工具。
由于FPGA的結構十分復雜,尤其是在時序約束條件下,必須要用到時序驅動引擎來完成布局布線。完成布線之后,軟件工具可以自動生成報告,展示設計中各資源的使用情況。
八、后仿真
后仿真,也叫時序仿真,主要是將布局布線后的延時信息,反向標注到設計網表中,以便檢查是否有時序違規存在,比如保持時間、建立時間等是否滿足器件的固有時序規則或時序約束條件。
后仿真可以精確、完整的展示延遲信息,因此能很好的反饋芯片時間工作時的情況。
后仿真的意義重大。因為不同FPGA芯片的內部延時不同,布局布線方案也會給延時造成影響。因此,在完成布局布線之后,對整個系統以及各個模塊進行后仿真,可以驗證時序關系、評估系統性能,對檢查和消除設計風險具有重大意義。
九、板級仿真及驗證
在高速電路設計中,還需要進行板級仿真。板級仿真主要是對高速系統的電磁干擾和信號完整等指標進行檢查,通常采用第三方工具進行。
十、編程與調試
芯片的編程與調試是整個FPGA開發流程的最后一步。芯片編程需要先生成使用所需的數據文件,即位數據流文件,然后再將數據文件上傳到FPGA芯片內。
芯片編程需要在一定的條件下進行,比如編程時序、編程算法和編程電壓等。在FPGA的設計過程中,邏輯分析儀是一種重要的調試工具。邏輯分析儀價格比較貴,且需要引出大量的測試管腳。不過,主要的FPGA芯片廠家都會提供內嵌的邏輯分析儀,比如Xilinx賽靈思內嵌的ChipScope和Altera阿爾特拉內嵌的SignalTapII、SignalProb等。
通過廠家內嵌邏輯分析儀,可以幫助客戶降低成本,同時減小FPGA芯片邏輯資源的占用,實用性非常強。