:作為一個菜鳥,想學習FPGA,希望高手給些建議......
語言:verilog或者VHDL
書籍:初學用夏宇聞的《verilog數字系統設計教程》就可以了,他寫的很像C,應該好入門。但是我不太推薦長期看,等有了一點基礎,馬上看張雅琦翻譯的《veilog HDL高級數字設計》和紅寶書《IC設計基礎》
數字電路:就一本書就夠了——康華光的《電子技術基礎(數字部分)》
知識積累:多上論壇和別人討論(因為沒有同學和同事可以討論)
開發工具:ISE或者quartus作為環境,因為可能會用到IP CORE。或者不用IP,用ultraedit寫代碼,再用modelsim仿真,debussy分析波形,synplify綜合,都可以。
動手實踐:買一塊spartan或者starstartx,用ise或者quartus自帶的cdc或者signaltap下載看波形就可以了。
至于要是設計asic。。。DC就算了。。。雖然很有用,但是沒有服務器的話,跑起來很痛苦。
P.S.寫語言時最好形成自己的風格,網上有很多coding style可以參考。推薦每個信號用單獨always塊和三層FSM的寫法,不要被夏宇聞教壞了~~~~
:
現在公司基本都用verilog
找夏宇文翻譯的關于verilog方面的書
CPLD跟FPGA沒有本質的區別,所以無所謂先開始學哪個
:
不用,其實兩者差別不是很大,編寫程序都是一樣的。語言大多是VHDL或者V-log語言。至于教材太多了,到網上去看,一般的書店賣的書都不是很專業。才開始可以學學使用xilinx公司的芯片。編譯器網上也有(主要是軟件破解的比較多)。
:
我建議你買一塊防真板,做一些簡單的開發,練習編程,要想從事電子方面的工作,不僅僅要懂HDL和C語言,還要懂一些硬件電路知識,EDA軟等等,硬件電路你可以看下模擬電子與數字電子.
:
毫無疑問, CPLD/FPGA.DSP和MCU是未來數字電路系統的三塊基石。本文將對CPLD/FPGA技術做初步的介紹.
首先簡單地介紹EDA技術的特點。EDA(Electronic Design Automation)就是利用計算機作為工作平臺進行電子自動化設計的一項技術。是電子技術.微電子技術和計算機技術進步的共同產物近十年迅速發展,涵蓋設計.電子仿真驗證.制造全過程的所有技術。如:系統設計與仿真.印刷電路板(PCB Print Cricuit Board)設計與校驗.集成電路版圖設計驗證和測試.數字邏輯電路設計.模擬電路設計.數模混合設計.嵌入式系統設計.軟硬件系統協同設計.系統芯片(SOC)設計.PLD.SOPC.ASSP.ASIC設計技術等。大致可以分為兩類:一種是基于PCB的電路;另一種是集成電路(IC,含PLD.ASIC)。實現PCB和IC電路的思想方法過程,就是構成EDA的全部內容。
因此現代電路設計方法已經由傳統設計方法轉變為全新的EDA設計方法:
一般是自頂向下的設計流程,并且這種設計是利用EDA軟件完成的,主要步驟:系統設計與仿真——電路級設計與仿真——版圖級設計.驗證等。
這與過去傳統意義的電子設計大不相同。尤其表現在:傳統設計是自底向上的設計,合格產品的設計總要反復多次試驗,次數主要取決于經驗而且必須制成成品才能進行儀器測量。因此現代EDA縮減了設計成本,縮短了設計周期,更接近于常規思維方式,標準產品方便測試,對設計者經驗要求低,保密性強集成度高。使大規模電子設計成為可能。它帶來了電子設計領域一場革命。限于篇幅,本文對EDA技術發展歷程不再多述。
CPLD/FPGA正是EDA技術前沿分支之一。CPLD(Complex Programmable Logic Device)是一種較為復雜的可編程邏輯器件;FPGA(Field Programmable Gate Arrary)是現場可編程邏輯門陣列。兩者基本功能相同,只是實現原理不同,在此可以忽略兩者的區別,統稱為可編程邏輯器件或CPLD/FPGA。
CPLD/FPGA是電子設計領域中最具活力和發展前途的一項技術,那么它能做什么呢?CPLD/FPGA可以完成任何數字器件功能,設計者可以通過傳統原理圖輸入法(GDF)或硬件描述語言(VHDL,AHDL)設計一個數字系統通過軟件仿真我們可以事先驗證設計正確性,在PCB完成后還可以利用CPLD在線修改能力隨時修改設計而不必改動硬件電路。
如何使用呢?很簡單,只要有數字電路基礎,會使用計算機,一個實踐者很快會發現在PC機.試驗箱和EDA軟件的環境下跟隨指導書就可以發揮自己的聰明才智進行主動學習。而數字電路理論知識則能迅速得到直觀認識和應用。大致設計流程為:通過傳統原理圖輸入法(GDF)或硬件描述語言(VHDL,AHDL)設計一個數字系統——生成相應的目標文件程序,通過下載電纜將代碼下載到目標芯片。
具體為:
1、電路設計與輸入
電路設計與輸入是指通過某些規范的描述方式,將工程師電路構思輸入給EDA工具。常用的設計方法有硬件描述語言(HDL)和原理圖設計輸入方法等。原理圖設計輸入法在早期應用得比較廣泛,它根據設計要求,選用器件、繪制原理圖、完成輸入過程。這種方法的有點是直觀、便于理解、元器件庫資源豐富。但是在大型設計中,這種方法的可維護性較差,不利于模塊構造與重用。更主要的缺點就是當所選用芯片升級換代后,所有的原理圖都要做相應的改動。目前進行大型工程設計時,最常用的設計方法是HDL設計輸入法,其中影響最為廣泛的HDL語言是VHDL和Verilog HDL。他們的共同特點是利用由頂向下設計,利于模塊的劃分與復用,可移植性好,通用性好,設計不因芯片的工藝與結構不同而變化,更利于向ASIC的移植。波形輸入和狀態機輸入方法是兩種常用的輔助設計輸入方法:使用波形輸入時,志耘愛繪制出激勵波形與輸出波形,EDA軟件就能自動地根據響應關系進行設計;使用狀態機輸入法時,設計者只需要畫出狀態轉移圖,EDA軟件就能生成相應的HDL代碼或原理圖,使用十分方便。但是需要指出的是,波形輸入和狀態機輸入方法只能在某些特殊情況下緩解設計者的工作量,并不適合所有的設計。
2、功能仿真
電路設計完成以后,要用專用的仿真工具對設計進行功能仿真,驗證電路功能是否符合設計要求。功能仿真有時也稱為前仿真。通過仿真能及時發現設計中的錯誤,加快設計進度,提高設計的可靠性。
3、綜合優化
綜合優化(Synthesize)是指將HDL語言、原理圖等設計輸入翻譯成由與、或、非門,RAM,觸發器等基本邏輯單元組成的邏輯連接(網表),并根據目標與要求(約束條件)優化所生成的邏輯連接,輸出edf和edn等標準格式的網表文件,供FPGA/CPLD廠家的布局布線器進行實現。
4、綜合后仿真
綜合完成后需要檢查綜合結果是否與設計一致,做綜合后仿真。在仿真時,把綜合生成的標準延時文件反標志到綜合仿真模型中去,可估計門延時帶來的影響。綜合后仿真雖然比功能仿真精確一些,但是只能估計門延時,不能估計線延時,仿真結果與布線后的實際情況還有一定的差距,并不十分準確。這種仿真的主要目的在于檢查綜合器的綜合結果是否與設計輸入一致。目前主流綜合工具日益成熟,對于一般性的設計,如果設計者確信自己標注明確,沒有綜合歧義發生,則可省略該步驟。但是如果在布局布線后仿真時發現有電路結構與設計意圖不符的現象,則常常需要回溯到綜合后仿真以確認是否時由于綜合歧義造成的問題。
5、實現與布局布線
綜合結果的本質是一些由與、或、非門,觸發器,RAM等基本邏輯單元組成的邏輯網表,它與芯片的實際的配置情況還有較大的差距。此時應該使用 FPGA/CPLD廠商提供的軟件工具,根據所選芯片的型號將綜合輸出的網表適配到具體FPGA/CPLD器件上,這個過程就叫做實現過程。因為只有器件的開發商最了解器件的內部結構,所以實現步驟必須選用器件開發商提供的工具。在實現過程中最主要的過程是布局布線(PAR)。所謂布局(Place),就是指將邏輯網表中的硬件原語或者底層單元合理地適配到FPGA內部的固有硬件結構上,布局的優劣對設計的最終結果(在速度和面積兩個方面)影響很大。所謂布線(Route),是指根據布局的拓撲結構,利用FPGA內部的各種連線資源,合理正確連接各個元件的過程。FPGA的結構相對復雜,為了獲得更好的實現結果,特別是保證能夠滿足設計的時序條件,一般采用時序驅動的引擎進行布局布線,所以對于不同的設計輸入,特別是不同的時序約束,獲得的布局布線結果一般有較大的差異。CPLD結構相對簡單得多,其資源有限而且布線資源一般為交叉連接矩陣,故CPLD的布局布線過程相對簡單明朗的多,一般稱為適配過程。一般情況下,用戶可以通過設置參數指定布局布線的優化準則,總的來說優化目標主要有兩個方面,面積和速度。一般根據設計的主要矛盾,選擇面積或者速度或者是兩者平衡等優化目標,但是當兩者沖突時,一般滿足時序約束要求更重要一些,此時選擇速度或時序優化目標更佳。
6、時序仿真與驗證
將布局布線的延時信息反標注到設計網表中,所進行的仿真就叫時序仿真或布局布線后仿真,也叫后仿真。該仿真的仿真延時文件包含的延時信息最全,不僅包含了門延時,還包含了實際布線延時,所以布局布線后仿真最準確,能夠較好的反映芯片的實際工作情況。一般來說,布線后仿真步驟必須進行,通過布局布線后仿真能檢查設計時序與FPGA實際運行情況是否一致,確保設計的可靠性和穩定性。
<3個不同階段的仿真小結>:
--功能仿真主要目的在于驗證語言設計的電路結構和功能是否和設計意圖相符。
--綜合后仿真主要目的在于驗證綜合后電路結構是否與設計意圖相符,是否存在歧義綜合結果。
--布局布線后仿真主要目的是驗證是否存在時序違規。
7、板級仿真與驗證
有些高速設計情況下還需要使用第三方的板級驗證工具進行仿真與驗證。這些工具通過對設計的IBIS、HSPICE等模型的仿真,能較好地分析高速設計的信號完整性、電磁干擾等電路特性。
8、調試與加載配置
設計開發的最后步驟就是在線調試或者將生成的配置文件寫入芯片中進行測試。示波器和邏輯分析儀是邏輯設計的主要調試工具。傳統的邏輯功能板級驗證手段是用邏輯分析儀分析信號,設計時要求FPGA和PCB設計人員保留一定數量FPGA管腳作為測試管腳,編寫FPGA代碼時將需要觀測的信號作為模塊的輸出信號,在綜合實現時在把這些輸出信號鎖定到測試管腳上,然后連接邏輯分析儀的探頭到這些測試管腳,設定觸發條件,進行觀測。
任何仿真或驗證步驟出現問題,就需要根據錯誤定位返回到相應的步驟更改或者重新設計
在明確了CPLD/FPGA的設計流程后,簡單介紹一下FPGA的優勢:自從FPGA問世以來,就以強大的靈活性著稱。FPGA最大的特點就是可以反復的編程.擦寫.使用或者在外圍電路不變的情況下用不同的硬件電路實現各異的功能,并且,隨著技術的進步。功耗也不斷下降,速度逐漸提高,成本不斷降低。此外CPLD/FPGA又很強的融合力,新的應用領域顯示,與DSP有一定的互補能力,它可以非常自然地實現大部分的數字信號處理的算法,可以根據任務要求分配資源。更大膽的講FPGA和DSP處理器的平臺將可能產生。由于CPLD/FPGA的種種優點,它非常適合原型產品的開發。
:
書籍, <基于FPGA入門> 非常詳細的書
|