在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA的硬件設計技巧和流程

旺材芯片 ? 來源:雪球 ? 作者:雪球 ? 2020-10-12 11:23 ? 次閱讀

數字集成電路的發展歷史,經歷了從電子管晶體管、小規模集成電路到大規模以及超大規模集成電路等不同的階段。發展到現在,主要有3類電子器件:存儲器、處理器和邏輯器件。

存儲器保存隨機信息(電子數據表或數據庫的內容);處理器執行軟件指令,以便完成各種任務(運行數據處理程序或視頻游戲);而邏輯器件可以提供特殊功能(器件之間的通信和系統必須執行的其他所有功能)。邏輯器件分成兩類:

1.固定的或定制的。

2.可編程的或可變的。

其中,固定的或定制的邏輯器件通常稱為專用芯片ASIC)。ASIC是為了滿足特定的用途而設計的芯片,例如MP3解碼芯片等。其優點是通過固化的邏輯功能和大規模的工業化生產,降低了芯片的成本,同時提高了產品的可靠性。隨著集成度的提高,ASIC的物理尺寸也在不斷的縮小。

FPGA的硬件設計技巧

1、管腳兼容性設計前面的內容提到過,FPGA在芯片選項的時候要盡量選擇兼容性好的封裝。那么,在硬件電路設計時,就要考慮如何兼容多種芯片的問題。2、根據電路布局來分配管腳功能FPGA的通用I/O功能定義可以根據需要來指定。在電路圖設計的流程中,如果能夠根據PCB的布局來對應的調整原理圖中FPGA的管腳定義,就可以讓后期的布線工作更順利。3、預留測試點目前FPGA提供的I/O數量越來越多,除了能夠滿足設計需要的I/O外,還有一些剩余I/O沒有定義。這些I/O可以作為預留的測試點來使用。 如果FPGA有預留的測試點,那么可以將要測試的信號從FPGA內部指定到這些預留的測試點上。這樣既能測試到這些信號的波形,又不會影響SDRAM的工作。 如果電路測試過程中發現需要飛線才能解決問題,那么這些預留的測試點還可以作為飛線的過渡點。-

FPGA設計者的5項基本功介紹

在小編看來,成為一名說得過去的FPGA設計者,需要練好5項基本功:仿真、綜合、時序分析、調試、驗證。 需要強調的一點是,以上基本功是針對FPGA設計者來說的,不是針對IC設計者的。對于IC設計,不太懂,所以不敢妄言。對于FPGA設計者來說,練好這5項基本功,與用好相應的EDA工具是同一過程,對應關系如下:1.、仿真:Modelsim, Quartus II(Simulator Tool) 2.、綜合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner) 3、 時序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner) 4、調試:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor) 5、驗證:Modelsim, Quartus II(Test Bench Template Writer) 掌握HDL語言雖然不是FPGA設計的全部,但是HDL語言對FPGA設計的影響貫穿于整個FPGA設計流程中,與FPGA設計的5項基本功是相輔相成的。 對于FPGA設計者來說,用好“HDL語言的可綜合子集”可以完成FPGA設計50%的工作——設計編碼。練好仿真、綜合、時序分析這3項基本功,對于學習“HDL語言的可綜合子集”有如下幫助: 1. 通過仿真,可以觀察HDL語言在FPGA中的邏輯行為。 2. 通過綜合,可以觀察HDL語言在FPGA中的物理實現形式。 3. 通過時序分析,可以分析HDL語言在FPGA中的物理實現特性。對于FPGA設計者來說,用好“HDL語言的驗證子集”,可以完成FPGA設計另外50%的工作——調試驗證。1. 搭建驗證環境,通過仿真的手段可以檢驗FPGA設計的正確性。 2. 全面的仿真驗證可以減少FPGA硬件調試的工作量。 3.把硬件調試與仿真驗證方法結合起來,用調試解決仿真未驗證的問題,用仿真保證已經解決的問題不在調試中再現,可以建立一個回歸驗證流程,有助于FPGA設計項目的維護。 FPGA設計者的這5項基本功不是孤立的,必須結合使用,才能完成一個完整的FPGA設計流程。反過來說,通過完成一個完整的設計流程,才能最有效地練習這5項基本功。對這5項基本功有了初步認識,就可以逐個深入學習一些,然后把學到的知識再次用于完整的設計流程。如此反復,就可以逐步提高設計水平。采用這樣的循序漸進、螺旋式上升的方法,只要通過培訓入了門,就可以自學自練,自我提高。 市面上出售的有關FPGA設計的書籍為了保證結構的完整性,對FPGA設計的每一個方面分開介紹,每一方面雖然深入,但是由于缺少其他相關方面的支持,讀者很難付諸實踐,只有通讀完全書才能對FPGA設計獲得一個整體的認識。這樣的書籍,作為工程培訓指導書不行,可以作為某一個方面進階的參考書。如何使用現有的書籍進行自學,這是后話。 對于新入職的員工來說,他們往往對FPGA的整體設計流程有了初步認識,5項基本功的某幾個方面可能很扎實。但是由于某個或某幾個方面能力的欠缺,限制了他們獨自完成整個設計流程的能力。入職培訓的目的就是幫助他們掌握整體設計流程,培養自我獲取信息的能力,通過幾個設計流程來回的訓練,形成自我促進、自我發展的良性循環。在這一過程中,隨著對工作涉及的知識的廣度和深度的認識逐步清晰,新員工的自信心也會逐步增強,對個人的發展方向也會逐步明確,才能積極主動地參與到工程項目中來。

FPGA的設計流程

FPGA的設計流程就是利用EDA開發軟件和編程工具對FPGA芯片進行開發的過程。典型FPGA的開發流程一般如圖4.1.1所示,包括功能定義/器件選型、設計輸入、功能仿真、綜合優化、綜合后仿真、實現、布線后仿真、板級仿真以及芯片編程與調試等主要步驟。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、 綜合后仿真綜合后仿真檢查綜合結果是否和原設計一致。在仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線后的實際情況還有一定的差距,并不十分準確。目前的綜合工具較為成熟,對于一般的設計可以省略這一步,但如果在布局布線后發現電路結構和設計意圖不符,則需要回溯到綜合后仿真來確認問題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。

圖4-1 FPGA典型設計流程 6、 實現與布局布線 布局布線可理解為利用實現工具把邏輯映射到目標器件結構的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,并產生相應文件(如配置文件與相關報告),實現是將綜合生成的邏輯網表配置到具體的FPGA芯片上,布局布線是其中最重要的過程。布局將邏輯網表中的硬件原語和底層單元合理地配置到芯片內部的固有硬件結構上,并且往往需要在速度最優和面積最優之間作出選擇。布線根據布局的拓撲結構,利用芯片內部的各種連線資源,合理正確地連接各個元件。目前,FPGA的結構非常復雜,特別是在有時序約束條件時,需要利用時序驅動的引擎進行布局布線。布線結束后,軟件工具會自動生成報告,提供有關設計中各部分資源的使用情況。由于只有FPGA芯片生產商對芯片結構最為了解,所以布局布線必須選擇芯片開發商提供的工具。7、 時序仿真時序仿真,也稱為后仿真,是指將布局布線的延時信息反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象。時序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實際工作情況。由于不同芯片的內部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。因此在布局布線后,通過對系統和各個模塊進行時序仿真,分析其時序關系,估計系統性能,以及檢查和消除競爭冒險是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。8、 板級仿真與驗證板級仿真主要應用于高速電路設計中,對高速系統的信號完整性、電磁干擾等特征進行分析,一般都以第三方工具進行仿真和驗證。 9、 芯片編程與調試 設計的最后一步就是芯片編程與調試。芯片編程是指產生使用的數據文件(位數據流文件,Bitstream Generation),然后將編程數據下載到FPGA芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程時序和編程算法等方面。邏輯分析儀(Logic Analyzer,LA)是FPGA設計的主要調試工具,但需要引出大量的測試管腳,且LA價格昂貴。目前,主流的FPGA芯片生產商都提供了內嵌的在線邏輯分析儀(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb)來解決上述矛盾,它們只需要占用芯片少量的邏輯資源,具有很高的實用價值。

FPGA設計心得

工作過的朋友肯定知道,公司里是很強調規范的,特別是對于大的設計(無論軟件還是硬件),不按照規范走幾乎是不可實現的。邏輯設計也是這樣:如果不按規范做的話,過一個月后調試時發現有錯,回頭再看自己寫的代碼,估計很多信號功能都忘了,更不要說檢錯了;如果一個項目做了一半一個人走了,接班的估計得從頭開始設計;如果需要在原來的版本基礎上增加新功能,很可能也得從頭來過,很難做到設計的可重用性。在邏輯方面,我覺得比較重要的規范有這些: 1.設計必須文檔化。要將設計思路,詳細實現等寫入文檔,然后經過嚴格評審通過后才能進行下一步的工作。這樣做乍看起來很花時間,但是從整個項目過程來看,絕對要比一上來就寫代碼要節約時間,且這種做法可以使項目處于可控、可實現的狀態。 2.代碼規范。如果在另一個設計中的時鐘是40ns,復位周期不變,我們只需對CLK_PERIOD進行重新例化就行了,從而使得代碼更加易于重用。 3.信號命名要規范化。 a.信號名一律小寫,參數用大寫。 b.對于低電平有效的信號結尾要用_n標記,如rst_n。 c.端口信號排列要統一,一個信號只占一行,最好按輸入輸出及從哪個模塊來到哪個模塊去的關系排列,這樣在后期仿真驗證找錯時后方便很多。 d.一個模塊盡量只用一個時鐘,這里的一個模塊是指一個module或者是一個entity。在多時鐘域的設計中涉及到跨時鐘域的設計中最好有專門一個模塊做時鐘域的隔離。這樣做可以讓綜合器綜合出更優的結果。 e.盡量在底層模塊上做邏輯,在高層盡量做例化,頂層模塊只能做例化,禁止出現任何膠連邏輯(gluelogic),哪怕僅僅是對某個信號取反。理由同上。 f.在FPGA的設計上禁止用純組合邏輯產生latch,帶D觸發器的latch的是允許的,比如配置寄存器就是這種類型。 g.一般來說,進入FPGA的信號必須先同步,以提高系統工作頻率(板級)。 h.所有模塊的輸出都要寄存器化,以提高工作頻率,這對設計做到時序收斂也是極有好處的。 i.除非是低功耗設計,不然不要用門控時鐘,這會增加設計的不穩定性,在要用到門控時鐘的地方,也要將門控信號用時鐘的下降沿打一拍再輸出與時鐘相與。 j.禁止用計數器分頻后的信號做其它模塊的時鐘,而要用改成時鐘使能的方式,否則這種時鐘滿天飛的方式對設計的可靠性極為不利,也大大增加了靜態時序分析的復雜性。如FPGA的輸入時鐘是25M的,現在系統內部要通過RS232與PC通信,要以rs232_1xclk的速率發送數據。
責任編輯人:CC

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1632

    文章

    21814

    瀏覽量

    606972

原文標題:設計 | 一文解讀FPGA設計者的5項基本功及設計流程

文章出處:【微信號:wc_ysj,微信公眾號:旺材芯片】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA與ASIC的優缺點比較

    適應各種應用場景。這意味著用戶可以根據需要,通過編程來更改FPGA的功能,而無需更改硬件設計。 設計周期短 :與ASIC相比,FPGA的設計、驗證和生產周期更短。這主要是因為FPGA
    的頭像 發表于 10-25 09:24 ?906次閱讀

    萊迪思Propel工具套件加速FPGA應用開發

    許多嵌入式系統的開發者都對使用基于FPGA的SoC系統感興趣,但是基于傳統HDL硬件描述語言的FPGA開發工具和復雜流程往往會令他們望而卻步。為了解決這一問題,萊迪思的Propel工具
    的頭像 發表于 08-30 17:23 ?1117次閱讀

    FPGA的內部架構和設計流程

    之前大多數軟件都是與它們各自的硬件一起發布,沒有辦法對其進行更改。但隨著技術的成熟,制造商找到了在現有硬件上更新軟件以增加附加功能的方法。
    的頭像 發表于 08-06 11:31 ?1336次閱讀
    <b class='flag-5'>FPGA</b>的內部架構和設計<b class='flag-5'>流程</b>

    FPGA的學習筆記---FPGA的開發流程

    與通常的單片機應用開發不同,FPGA有自己的開發流程。但具體上怎樣操作,作為初學者,沒有一點經驗。網站獎勵的清華FPGA需要的開發軟件,到目前還沒有安裝成功。暫且先看看相關學習,慢慢積累這方面的知識
    發表于 06-23 14:47

    AMD FPGA中MicroBlaze的固化流程詳解

    AMD FPGA在配置了適當的啟動模式后,上電即會按該模式去加載配置文件。以7系列FPGA為例,假設設置模式引腳M[2:0]=3’b001,上電后FPGA會以Master SPI方式嘗試從FLASH加載配置文件,其與工程是否含有
    發表于 04-25 12:49 ?656次閱讀
    AMD <b class='flag-5'>FPGA</b>中MicroBlaze的固化<b class='flag-5'>流程</b>詳解

    fpga硬件還是軟件

    FPGA(現場可編程門陣列)本質上是一種硬件設備,但它在功能實現上結合了硬件和軟件的特性。
    的頭像 發表于 03-27 14:14 ?1032次閱讀

    現場可編程門陣列設計流程

    現場可編程門陣列(FPGA)設計流程是一個綜合性的過程,它涵蓋了從需求分析到最終實現的各個環節。下面將詳細介紹FPGA設計流程的主要步驟。
    的頭像 發表于 03-16 16:38 ?2039次閱讀

    fpga仿真器是什么?它有哪些優勢?

    FPGA仿真器是一種用于模擬FPGA(現場可編程門陣列)硬件行為的軟件工具。它通過模擬FPGA內部的邏輯電路、時序和接口等,幫助工程師在FPGA
    的頭像 發表于 03-15 15:15 ?1991次閱讀

    fpga原型驗證平臺與硬件仿真器的區別

    FPGA原型驗證平臺與硬件仿真器在芯片設計和驗證過程中各自發揮著獨特的作用,它們之間存在明顯的區別。
    的頭像 發表于 03-15 15:07 ?1325次閱讀

    fpga原型驗證流程

    FPGA原型驗證流程是確保FPGA(現場可編程門陣列)設計正確性和功能性的關鍵步驟。它涵蓋了從設計實現到功能驗證的整個過程,是FPGA開發流程
    的頭像 發表于 03-15 15:05 ?1791次閱讀

    fpga語言是什么?fpga語言與c語言的區別

    FPGA語言,即現場可編程門陣列編程語言,是用于描述FPGA(Field Programmable Gate Array)內部硬件結構和行為的特定語言。它允許設計師以硬件描述的方式定義
    的頭像 發表于 03-15 14:50 ?1058次閱讀

    fpga開發是什么意思

    FPGA開發是指利用現場可編程邏輯門陣列(Field Programmable Gate Array,簡稱FPGA)進行硬件設計和實現的過程。FPGA是一種可編程的邏輯器件,它允許用戶
    的頭像 發表于 03-15 14:28 ?1382次閱讀

    fpga硬件還是軟件

    FPGA(現場可編程門陣列)屬于硬件設備,而不是軟件。它是一種可編程的硬件設備,由大量的邏輯單元、存儲單元和互連資源組成,能夠實現復雜的數字電路和系統設計。
    的頭像 發表于 03-14 17:08 ?2052次閱讀

    fpga設計流程

    首先,根據功能需求選擇合適的FPGA型號和開發板,并進行硬件資源評估、時序分析等,以確定芯片的工作頻率和性能參數。同時,深入研究所選芯片的特點、布局、電氣參數等,為后續設計做好知識儲備。
    的頭像 發表于 03-14 15:45 ?491次閱讀

    FPGA的PL端固化流程

    電子發燒友網站提供《FPGA的PL端固化流程.pdf》資料免費下載
    發表于 03-07 14:48 ?8次下載
    主站蜘蛛池模板: 三级免费黄色片 | 日韩一卡 二卡 三卡 四卡 免费视频 | 国产一级在线观看 | 免费看欧美一级片 | 女人色网| 夜夜操夜夜 | 国产黄色在线网站 | 久久国产精品免费网站 | xxxx日本老师hd | 欲香欲色天天综合和网 | 九色精品在线 | 99久久99这里只有免费费精品 | 成年人午夜影院 | 色综合久久久久综合99 | 小屁孩和大人啪啪 | 91正在 播放 | 久久99热精品免费观看k影院 | 69女poren60| 免费看污视频软件 | 亚洲午夜久久久久久91 | 免费aⅴ网站 | 美女视频很黄很a免费国产 美女视频很黄很暴黄是免费的 | 毛片网站在线 | 欧美另类69xxxxxhd | 天天射天天操天天 | 综合激情五月婷婷 | 日本欧美一区二区三区视频 | 中文字幕视频二区 | 国产性片在线观看 | 亚洲人成电影 | 欧美日韩亚洲国产一区二区综合 | 亚洲国产丝袜精品一区杨幂 | 一级片在线播放 | 天堂免费视频 | 亚洲香蕉国产高清在线播放 | 欧美成人午夜片一一在线观看 | 91亚洲国产成人久久精品网站 | 日本三级2018亚洲视频 | 四虎sihu新版影院亚洲精品 | 色噜噜狠狠成人网 | 男女做性无遮挡免费视频 |