之前我們討論過FPGA是什么,也知道了FPGA能做什么,那么FPGA開發流程是怎樣的?FPGA開發步驟有哪些呢?我們一起來看下。
FPGA開發流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。典型的FPGA開發流程一般包括功能定義 / 器件選型、設計輸入、功能仿真、綜合優化、綜合后仿真、實現、布 線后仿真、板級仿真以及芯片編程與調試等主要步驟,如下圖。
FPGA典型設開發流程圖
接下來,我們對FPGA開發的主要步驟進行一下展開,方便大家進一步理解。
1、功能定義/器件選型
在開發FPGA項目之前,必須有系統功能的定義和模塊的劃分,另外就是要根據任務要求,如系統的功能和復雜度,對工作速度和器件本身的資源、成本、以及連線的可布性等方面進行權衡,選擇合適的設計方案和合適的器件類型。 一般都采用自頂向下的設計方法,把系統分成若干個基本單元,然后再把每個基本單元 劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用 EDA 元件庫為止。
2、 設計輸入
設計輸入是將所設計的系統或電路以開發軟件要求的某種形式表示出來,并輸入給 EDA 工具的過程。常用的方法有硬件描述語言 (HDL) 和原理圖輸入方法等。原理圖輸入方式是一種直接的描述方式,在可編程芯片發展的早期應用比較廣泛,它將所需的器件從元件庫中調出來,畫出原理圖。這種方法雖然直觀并易于仿真,但效率很低,且不易維護,不利于模塊構造和重用。更主要的缺點是可移植性差,當芯片升級后,所有的原理圖都需要作一定的改動。目前,在實際開發中應用廣的就是 HDL 語言輸入法,利用文本描述設計,可以分為普通 HDL 和行為 HDL。普通HDL有ABEL、CUR 等,支持邏輯方程、真值表和狀態機等表達方式,主要用于簡單的小型設計。而在中大型工程中,主要使用行為 HDL,其主流語言是 Verilog HDL 和 VHDL。這兩種語言
都是美國電氣與電子工程師協會 (IEEE) 的標準,其共同的突出特點有 :語言與芯片工藝無關,利于自頂向下設計,便于模塊的劃分與移植,可移植性好,具有很強的邏輯描述和仿真功能,而且輸入效率很高。 除了這 IEEE標準語言外,還有廠商自己的語言。也可以用 HDL 為主,原理圖為輔的混合設計方式,以發揮兩者的各自特色。
3、 功能仿真
功能仿真也稱為前仿真是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的仿真沒有延遲信息, 僅對初步的功能進行檢測。仿真前,要先利用波形編輯器和 HDL 等建立波形文件和測試向量 ( 即將所關心的輸 入信號組合成序列 ),仿真結果將會生成報告文件和輸出信號波形,從中便可以觀察各個節點信號的變化。如果 發現錯誤,則返回設計修改邏輯設計。常用的工具有 Model Tech 公司的 ModelSim、Sysnopsys 公司的 VCS 和 Cadence 公司的 NC-Verilog 以及 NC-VHDL 等軟件。
4、 綜合優化
所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述。綜合優化根據目標與要求優化所生成的邏 輯連接,使層次設計平面化,供 FPGA 布局布線軟件進行實現。就目前的層次來看,綜合優化 (Synthesis) 是指 將設計輸入編譯成由與門、或門、非門、RAM、觸發器等基本邏輯單元組成的邏輯連接網表,而并非真實的門 級電路。真實具體的門級電路需要利用 FPGA 制造商的布局布線功能,根據綜合后生成的標準門級結構網表來 產生。為了能轉換成標準的門級結構網表,HDL 程序的編寫必須符合特定綜合器所要求的風格。由于門級結構、 RTL 級的 HDL 程序的綜合是很成熟的技術,所有的綜合器都可以支持到這一級別的綜合。常用的綜合工具有 Synplicity 公司的 Synplify/Synplify Pro 軟件以及各個 FPGA 廠家自己推出的綜合開發工具。
5、 綜合后仿真
綜合后仿真檢查綜合結果是否和原設計一致。在仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確。目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合后仿真來確認問題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
6、 實現與布局布線
布局布線可理解為利用實現工具把邏輯映射到目標器件結構的資源中,決定邏輯的佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,并產生相應文件 ( 如配置文件與相關報告 ),實現是將綜合生成的邏輯網表配置到具體的 FPGA 芯片上,布局布線是其中重要的過程。布局將邏輯網表中的硬件原語和底層單元合理地配置到芯片內部的固有硬件結構上,并且往往需要在速度優和面積優之間作出選擇。布線根據布局的拓撲結構,利用芯片內部的各種連線資源,合理正確地連接各個元件。目前,FPGA 的結構非常復雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局布線。布線結束后,軟件工具會自動生成報告,提供有關設計中各部分資源的使用情況。由于只有 FPGA 芯片生產商對芯片結構為了解,所以布局布線必須選擇芯片開發商提供的工具。
7、 時序仿真
時序仿真,也稱為后仿真,是指將布局布線的延時信息反標注到設計網表中來檢測有無時序違規 ( 即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等 ) 現象。時序仿真包含的延遲信息全,也精確,能較好地反映芯片的實際工作情況。由于不同芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
8、 板級仿真與驗證
板級仿真主要應用于高速電路設計中,對高速系統的信號完整性、電磁干擾等特征進行分析,一般都以第 三方工具進行仿真和驗證。
9、 芯片編程與調試
設計的后一步就是芯片編程與調試。芯片編程是指產生使用的數據文件 ( 位數據流文件,Bitstream Generation),然后將編程數據下載到 FPGA 芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程 時序和編程算法等方面。邏輯分析儀 (Logic Analyzer,LA) 是 FPGA 設計的主要調試工具,但需要引出大量的 測試管腳,且 LA 價格昂貴。目前,主流的 FPGA 芯片生產商都提供了內嵌的在線邏輯分析儀 ( 如 Xilinx ISE 中 的 ChipScope、Altera QuartusII 中的 SignalTapII 以及 SignalProb) 來解決上述矛盾,它們只需要占用芯片少量 的邏輯資源,具有很高的實用價值。
以上就是FPGA開發流程簡述,如果您對FPGA開發感興趣可以聯系我們的在線客服咨詢相關課程,也可以查看小編之前分享的FPGA怎么學的幾個建議。