點擊上方藍字關注我們
FPGA設計規范
1.設計必須文檔化。要將設計思路,詳細實現等寫入文檔,然后經過嚴格評審通過后才能進行下一步的工作。這樣做乍看起來很花時間,但是從整個項目過程來看,要比一上來就寫代碼要節約時間,且這種做法可以使項目處于可控、可實現的狀態。
2.代碼規范。
如果在另一個設計中的時鐘是40ns,復位周期不變,我們只需對CLK_PERIOD進行重新例化就行了,從而使得代碼更加易于重用。b.信號命名要規范化。
1) 信號名一律小寫,參數用大寫。
2) 對于低電平有效的信號結尾要用_n標記,如rst_n。
3) 端口信號排列要統一,一個信號只占一行,按輸入輸出及從哪個模塊來到哪個模塊去的關系排列,這樣在后期仿真驗證找錯時后 方便很多。
4) 一個模塊盡量只用一個時鐘,這里的一個模塊是指一個module或者是一個entity。在多時鐘域的設計中涉及到跨時鐘域的設計中有專門一個模塊做時鐘域的隔離。這樣做可以讓綜合器綜合出更優的結果。
5) 盡量在底層模塊上做邏輯,在高層盡量做例化,頂層模塊只能做例化,禁止出現任何膠連邏輯(glue logic),哪怕僅僅是對某個信號取反。理由同上。
6) 在FPGA的設計上禁止用純組合邏輯產生latch,帶D觸發器的latch的是允許的,比如配置寄存器就是這種類型。
7) 一般來說,進入FPGA的信號必須先同步,以提高系統工作頻率(板級)。
8) 所有模塊的輸出都要寄存器化,以提高工作頻率,這對設計做到時序收斂也是極有好處的。
9) 除非是低功耗設計,不然不要用門控時鐘--這會增加設計的不穩定性,在要用到門控時鐘的地方,也要將門控信號用時鐘的下降沿 打一拍再輸出與時鐘相與。
10)禁止用計數器分頻后的信號做其它模塊的時鐘,而要用改成時鐘使能的方式,否則這種時鐘滿天飛的方式對設計的可靠性極為不利,也大大增加了靜態時序分析的復雜性。如FPGA的輸入時鐘是25M的,現在系統內部要通過RS232與PC通信,要以rs232_1xclk的速率發送數據。
FPGA設計中的注意事項
1.基礎問題
FPGA的基礎就是數字電路和HDL語言,想學好FPGA的人,建議床頭都有一本數字電路的書,不管是哪個版本的,這個是基礎,多了解也有助于形成硬件設計的思想。在語言方面,建議初學者學習Verilog語言,VHDL語言語法規范嚴格,調試起來很慢,Verilog語言容易上手,而且,一般大型企業都是用Verilog語言。
2.EDA工具問題
熟悉幾個常用的就可以的,開發環境QuartusII ,或ISE 就可以了,這兩個基本是相通的,會了哪一個,另外的那個也就很Easy了。功能仿真建議使用Modelsim ,如果你是做芯片的,就可以學學別的仿真工具,做FPGA的,Modelsim就足夠了。綜合工具一般用Synplify,初學先不用太關心這個,用Quartus綜合就OK了。
3.硬件設計思想問題
對于初學者,特別是從軟件轉過來的,設計的程序既費資源又速度慢,而且很有可能綜合不了,這就要求我們熟悉一些固定模塊的寫法,可綜合的模塊很多書上都有,語言介紹上都有,不要想當然的用軟件的思想去寫硬件。詳細資料:edu118.com
4.學習習慣問題
FPGA學習要多練習,多仿真,signaltapII是很好的工具,可以看到每個信號的真實值,建議初學者一定要自己多動手,光看書是沒用的。關于英文文檔問題,如果要學會Quartus II的所有功能,只要看它的handbook就可以了,很詳細,對于IT行業的人,大部分知識都是英文文檔,一定要耐心看,會從中收獲很多的。
5.算法問題
做FPGA的工程師,一般都是專攻算法了,這些基礎知識都是順手捏來的,如果你沒有做好搞理論的準備,學FPGA始終只能停留在初級階段上。對于初學者,數字信號處理是基礎,應該好好理解,往更深的方向,不用什么都學,根據你以后從事的方向,比如說通信、圖像處理,雷達、聲納、導航定位等。
不管你是一名邏輯設計師、硬件工程師或系統工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協議的復雜系統中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信號完整性和其他的一些關鍵設計問題。不過,你不必獨自面對這些挑戰,因為在當前業內的FPGA公司里工作的應用工程師每天都會面對這些問題,而且他們已經提出了一些將令你的設計工作變得更輕松的設計指導原則和解決方案.
FPGA設計的主要應用
1、電路設計
連接邏輯,控制邏輯是FPGA早期發揮作用比較大的領域也是FPGA應用的基石。事實上在電路設計 中應用FPGA的難度還是比較大的這要求開發者要具備相應的硬件知識(電路知識)和軟件應用能力(開發工具)這方面的人才總是緊缺的,往往都從事新技術, 新產品的開發成功的產品將變成市場主流基礎產品供產品設計者應用在不遠的將來,通用和專用IP的設計將成為一個熱門行業!搞電路設計的前提是必須要具備一 定的硬件知識。在這個層面,干重于學,當然,快速入門是很重要的,越好的位子越不等人電路開發是黃金飯碗。
2、產品設計
把相對成熟的技術應用到某些特定領域如通訊,視頻,信息處理等等開發出滿足行業需要并能被行業客戶 接受的產品這方面主要是FPGA技術和技術的結合問題,另外還有就是與客戶的界面問題產品設計還包括工具類產品及民用產品,前者重點在性能, 后者對價格敏感產品設計以實現產品功能為主要目的,FPGA技術是一個實現手段在這個領域,FPGA因為具備接口,控制,功能IP,內嵌CPU等特點有條 件實現一個構造簡單,固化程度高,功能全面的系統產品設計將是FPGA技術應用廣大的市場,具有極大的爆發性的需求空間產品設計對技術人員的要求比較 高,路途也比較漫長不過現在整個行業正處在組建“首發團隊”的狀態,只要加入,前途光明產品設計是一種職業發展方向定位,不是簡單的愛好就能做到的!產品 設計領域會造就大量的企業和企業家,是一個發展熱點和機遇。
3、系統級
系統級的應用是FPGA與傳統的計算機技術結合,實現一種FPGA版的計算機系統,實現一個基本環境,在這個平臺上跑LINUX等系統,這個系統也就支持各種標準外設和功能接口(如圖象接口)了這對于快速構成FPGA大型系統來講是很有幫助的。這種“山寨”味很濃的系統早期優勢不一定很明顯,類似ARM系統的境況但若能慢慢發揮出FPGA的優勢,逐漸實現一些特色系統也是一種發展方向。若在系統級應用中,開發人員不具備系統的擴充開發能力,只是搞搞編程是沒什么意義的,當然設備驅動程序的開發是另一種情況,搞系統級應用看似起點高,但不具備深層開發能力,很可能會變成愛好者,就如很多人會做網頁但不能稱做會編程。類似以上是幾點個人觀點,希望能幫助想學FPGA但很茫然無措的人理一理思路。這是一個不錯的行業,有很好的個人成功機會。但也肯定是一個競爭很激烈的行業,關鍵看的就是速度和深度當然還有市場適應能力。
歡迎加入至芯科技FPGA微信學習交流群,這里有一群優秀的FPGA工程師、學生、老師、這里FPGA技術交流學習氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點個在看你最好看
原文標題:詳解FPGA的設計規范與應用
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1608文章
21367瀏覽量
594696
原文標題:詳解FPGA的設計規范與應用
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論