fpga基本開發設計流程,九個步驟搞定
fpga的設計流程就是利用eda開發軟體和程式設計工具對fpga晶元進行開發的過程。fpga的開發流程一般如圖1-10所示,包括電路功能設計、設計輸入、功能**、綜合優化、綜合後**、實現、佈線後**、板級**以及晶元程式設計與除錯等主要步驟。
圖1-10 fpga開發的一般流程
1.電路功能設計
在系統設計之前,首先要進行的是方案論證、系統設計和fpga晶元選擇等準備工作。系統工程師根據任務要求,如系統的指標和複雜度,對工作速度和晶元本身的各種資源、成本等方面進行權衡,選擇合理的設計方案和合適的器件型別。一般都採用自頂向下的設計方法,把系統分成若干個基本單元,然後再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用eda元件庫為止。
2.設計輸入
設計輸入是將所設計的系統或電路以開發軟體要求的某種形式表示出來,並輸入給eda工具的過程。常用的方法為硬體描述語言(hdl)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可程式設計晶元發展的早期應用比較廣泛,它將所需的器件從元件庫中調出來,畫成原理圖。這種方法雖然直觀且易於**,但效率很低,不易維護,不利於模組構造和重用。其更主要的缺點是可移植性差,當晶元公升級後,所有的原理圖都需要做一定的改動。目前,在實際開發中應用最廣的就是hdl語言輸入法,利用文字描述設計,可以分為普通hdl和行為hdl。普通hdl有abel、cur等,支援邏輯方程、真值表和狀態機等表達方式,主要用於簡單的小型設計。而在中大型工程中,主要使用行為hdl,其主流語言是verilog hdl和vhdl。這兩種語言都是美國電氣與電子工程師協會(ieee)的標準,其共同的突出特點是語言與晶元工藝無關,利於自頂向下設計,便於模組的劃分與移植,可移植性好,具有很強的邏輯描述和**功能,而且輸入效率很高。
3.功能**
功能**,也稱為前**,是在編譯之前對使用者所設計的電路進行邏輯功能驗證,此時的**沒有延遲資訊,僅對初步的功能進行檢測。**前,要先利用波形編輯器和hdl等建立波形檔案和測試向量(即將所關心的輸入訊號組合成序列),**結果將會生成報告檔案並輸出訊號波形,從中便可以觀察各個節點訊號的變化。如果發現錯誤,則返回修改邏輯設計。常用的工具有model tech公司modelsim、sysnopsys公司的vcs和cadence公司的nc-verilog及nc-vhdl等軟體。功能**雖然不是fpga開發過程中的必需步驟,但卻是系統設計中最關鍵的一步。
4.綜合
所謂綜合就是將較高階抽象層次的描述轉化成較低層次的描述。綜合優化根據目標與要求優化生成的邏輯連線,使層次設計平面化,以便用fpga布局佈線軟體進行實現。就目前的層次來看,綜合優化是指將設計輸入編譯成由與門、或門、非門、ram、觸發器等基本邏輯單元組成的邏輯連線網表,而並非真實的門級電路。真實具體的門級電路需要利用fpga製造商的布局佈線功能,根據綜合後生成的標準門級結構網表來產生。為了能轉換成標準的門級結構網表,hdl程式的編寫必須符合特定綜合器所要求的風格。由於門級結構、rtl級的hdl程式的綜合是很成熟的技術,所有的綜合器都可以支援這一級別的綜合。常用的綜合工具有synplicity公司的synplify/synplify pro軟體以及各個fpga廠家自己推出的綜合開發工具。
5.綜合後**
綜合後**檢查綜合結果是否與原設計一致。在**時,把綜合生成的標準延時檔案反標註到綜合**模型中,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此估計結果和佈線後的實際情況還有一定的差距,並不十分準確。目前的綜合工具較為成熟,一般的設計可以省略這一步,但如果在布局佈線後發現電路結構和設計意圖不符,則需要回溯到綜合後**來確認問題所在。在功能**中介紹的軟體工具一般都支援綜合後**。
6.實現與布局佈線
實現是將綜合生成的邏輯網表配置到具體的fpga晶元上,布局佈線是其中最重要的過程。布局是指將邏輯網表中的硬體原語和底層單元合理地配置到晶元內部的固有硬體結構上,這往往需要在速度最優和面積最優之間進行選擇。佈線是指根據布局的拓撲結構,利用晶元內部的各種連線資源,合理正確地連線各個元件。目前,fpga的結構非常複雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局佈線。佈線結束後,軟體工具會自動生成報告,提供有關設計中各部分資源的使用情況。由於只有fpga晶元生產商對晶元結構最為了解,所以布局佈線必須採用晶元開發商提供的工具。
7.時序**與驗證
時序**,也稱為後**,是指將布局佈線的延時資訊反標註到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象。時序**包含的延遲資訊最全,也最精確,能較好地反映晶元的實際工作情況。由於不同晶元的內部延時不一樣,不同的布局佈線方案也給延時帶來不同的影響。因此在布局佈線後,通過對系統和各個模組進行時序**,分析其時序關係,估計系統效能,以及檢查和消除競爭冒險是非常有必要的。在功能**中介紹的軟體工具一般都支援綜合後**。
8.板級**與驗證
板級**主要應用於高速電路設計中,對高速系統的訊號完整性、電磁干擾等特徵進行分析,一般都用第三方工具進行**和驗證。
9.晶元程式設計與除錯
FPGA開發流程
fpga的設計流程就是利用eda開發軟體和程式設計工具對fpga晶元進行開發的過程。fpga的開發流程一般如圖1 6所示,包括電路設計 設計輸入 功 能 綜合優化 綜合後 實現 佈線後 板級 以及晶元程式設計與除錯等主要步驟。圖1 6 fpga開發的一般流程 1 電路功能設計 在系統設計之前,首先要...
FPGA的設計藝術(2)FPGA開發流程
現場可程式設計門陣列 fpga 是一種半導體器件,包含邏輯塊,這些邏輯塊被程式設計為執行一組特定的功能。這些可程式設計邏輯塊在互連矩陣的幫助下相互連線。這些互連負責連線邏輯塊並促進訊號在晶元上的流動。該結構以二維陣列的形式排列,該二維陣列由將其與輸入和輸出訊號連線的邏輯塊,互連和i o塊組成。邏輯塊...
FPGA開發之FPGA開發流程簡介
我以前一直很疑惑晶元設計這一塊在實際中是怎麼做的呢?今天了解了一下,現在設計晶元一般採用fpga開發,大概流程如下 1 功能定義 器件選型 設計晶元之前當然你要知道你設計的晶元有什麼功能,然後就模組化,寫清楚誰誰誰幹什麼,這當然就是從上至下的方法,你試試從下到上給我看看。2 設計輸入 這一步就是說我...