5个步骤带你入门FPGA设计流程
導讀:最近幾年,FPGA越來越火。微軟甚至曾表示要數據中心里,使用FPGA“代替”CPU。FPGA英文全稱是Field Programmable Gate Array,即現場可編程門陣列。本文就為你科普一下FPGA的一般設計流程。
作者:汪文祥 邢金璋
來源:大數據DT(ID:hzdashuju)
FPGA是一種特殊的集成電路,這意味著它首先是一種集成電路。現在的集成電路絕大多數都是晶體管集成電路,大家日常接觸最多的是CMOS晶體管集成電路。
晶體管集成電路是什么?通俗來說,就是用金屬導線把許許多多由晶體管構成的邏輯門、存儲單元連接成一個電路,具備一定的邏輯功能。
不過,各位讀者設計數字邏輯電路時,是否進行過用導線連接晶體管的實驗?顯然沒有。大家一般是用一種硬件描述語言(比如VerilogHDL)寫寫代碼,然后運行綜合軟件(比如Vivado),電路就設計出來了。
這一流程并不是各類課程實驗中所獨有的,它其實與現在工業界常見的ASIC設計流程是一致的。FPGA的設計流程一般有5個步驟:
電路設計。
代碼編寫。
功能仿真。
綜合實現。
上板調試。
01 電路設計
首先,需要根據需求規格制定電路設計方案。例如,需求是設計一個MIPS CPU,我們要把這個需求一步步分解、細化,得到一個能夠滿足需求的電路設計方案。
我們要決定分成幾個流水級,這里放幾個觸發器,那里放幾個運算器,它們之間怎么連接,整個電路的狀態轉換行為是怎樣的,等等。
通常,我們將電路設計細化到寄存器傳輸級(Register Transfer Level,RTL)就可以了,無須精確到邏輯門級別或是晶體管級別。
02 代碼編寫
代碼編寫階段的工作是把第1步中完成的電路設計方案用硬件描述語言(Hardware Description Language,HDL)表述出來,成為一種EDA工具能夠看得懂的形式。
03 功能仿真
功能仿真階段的工作是對第2步中用HDL語言描述出來的設計進行功能仿真驗證。所謂功能仿真驗證,就是通過軟件仿真模擬的方式查看電路的邏輯功能行為是否符合最初的設計需求。
通常我們給電路輸入指定的激勵,觀察電路輸出是否符合預期,如果不符合則表明電路邏輯功能有錯誤。這種錯誤要么是因為第1步的電路設計就有錯誤,要么是第2步編寫的代碼不符合電路設計。
發現功能錯誤后需要返回前面相應的步驟進行修正,然后再按照流程一步步推進。如此不斷迭代,直到不再發現錯誤,就可以進入下一階段了。
需要指出的是,由于我們對電路是在RTL級建模,因此功能仿真階段不考慮電路的延遲。
04 綜合實現
綜合實現階段完成從HDL代碼到真實芯片電路的轉換過程。這個過程類似于編譯器把高級語言轉換成目標機器的二進制代碼的過程。
這個階段分為綜合和實現兩個子階段。
綜合階段將HDL描述的設計編譯為由基本邏輯單元連接而成的邏輯網表,不過此時的網表還不是最終的門級電路網表。
實現階段才會將綜合出的邏輯網表映射為FPGA中的具體電路,即將邏輯網表中的基本邏輯單元映射到FPGA芯片內部固有的硬件邏輯模塊上(稱為“布局”)。隨后,基于布局的拓撲,利用FPGA芯片內部的連線資源,將各個映射后的邏輯模塊連接起來(稱為“布線”)。
如果整個綜合實現過程沒有發生異常,EDA工具將生成一個比特流(Bitstream)文件。通俗來說,這個比特流文件描述的就是最終的電路,但這個文件只有FPGA芯片能讀得懂。
05 上板調試
俗話說:“是騾子是馬拉出來遛遛”。不管功能仿真得多正確,最終還是要看實際電路能否正常工作。
在上板調試階段,首先要將綜合實現階段生成的比特流文件下載到FPGA芯片中,隨后運行電路觀察其工作是否正常,如果發生問題就要調試、定位出錯的原因。
小結一下,上面介紹的FPGA一般設計流程給出了總的脈絡,以便讀者先建立一個正確的整體概念。FPGA設計流程中還包含很多細節,可參考《CPU設計實戰》一書。
關于作者:汪文祥,工學博士,龍芯中科技術股份有限公司首席工程師,中國科學院大學崗位教授。主要研究方向為處理器體系結構設計、處理器驗證及計算機系統性能分析優化等,參與了多項國家“核高基”、863 和 973 項目,在國內外各種期刊會議發表文章十余篇,申請專利數十項,授權專利十余項。
邢金璋,碩士畢業于中國科學院計算技術研究所,2015年加入龍芯中科技術股份有限公司,從事處理器核結構設計工作,是龍芯小、中系列處理器核演進版本的主要結構設計者之一。近年來,積極參與“龍芯杯”全國大學生計算機系統能力培養大賽的技術支持、培訓等工作。
本文摘編自《CPU設計實戰》,經出版方授權發布。
延伸閱讀《CPU設計實戰》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:深入剖析CPU設計與開發的關鍵環節;從零開始逐步構建一個功能完善的CPU;全面培養CPU設計的工程化思維與實戰能力。
直播預告????
4月29日晚20:00—21:00,本書作者,龍芯中科技術股份有限公司首席工程師汪文祥老師講解《CPU設計實戰》,帶你從零開始設計自己的CPU,并與北京航空航天大學教授高小鵬老師深度對話CPU的未來與發展,敬請關注~
干貨直達????
多圖詳解數據中臺建設框架(建議收藏)
中國人工智能最高獎,頒給了這些人
什么是架構?網絡架構中都有什么?終于有人講明白了
大數據平臺的3個核心功能
更多精彩????
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白?|?神操作
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?1024?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
????
總結
以上是生活随笔為你收集整理的5个步骤带你入门FPGA设计流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 39个史诗级奇葩代码注释,程序不会崩,但
- 下一篇: Python高能小技巧:不要在for与w