開發(fā)流程
第一篇?FPGA基礎(chǔ)知識?? ? ? ? ?
本文的文檔編號:001500000029
需要看對應(yīng)的視頻,請點擊視頻編號:?001000000048
1、本章主要介紹利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程,典型的FPGA開發(fā)流程如下:功能定義/器件選型、設(shè)計輸入、功能仿真、綜合優(yōu)化、綜合后仿真、布局布線、時序仿真、板級仿真與驗證、芯片燒錄與調(diào)試等主要步驟。
2、這是ALTERA和IVADO文檔
? ??第二章 FPGA開發(fā)流程
FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。原理圖和HDL(Hardware description language,硬件描述語言)是兩種最常用的數(shù)字硬件電路描述方法。其中,運用HDL設(shè)計方法具有更好的移植性、通用性以及利于模塊劃分的特點,在工作學習中被廣泛使用。典型FPGA的開發(fā)流程一般如下圖所示,其包括功能定義/器件選型、設(shè)計輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實現(xiàn)、布線后仿真、板級仿真以及芯片編程與調(diào)試等主要步驟。

? 第1節(jié)?功能定義/器件選型
在FPGA設(shè)計項目開始之前需要進行方案論證、系統(tǒng)設(shè)計和FPGA芯片的選型等準備性工作,在確定并評估好方案后需要進行系統(tǒng)功能的定義和模塊的劃分。根據(jù)方案中任務(wù)要求,如方案中所確定的系統(tǒng)功能以及復(fù)雜度,對硬件的工作速度和器件自身的資源、成本、以及性能指標等各個方面進行綜合考慮,選擇出較合適的器件類型。在設(shè)計方法上,一般都采用自頂向下的設(shè)計方法,首先將整個系統(tǒng)劃分成若干個基本模塊,然后再將每個基本模塊劃分為下一層次的基本單元,這樣依次劃分后確定好各個模塊的功能以及各個模塊需要設(shè)計的輸入輸出信號,再通過EDA工具進行各個模塊的設(shè)計。最終要實現(xiàn)的目標是:針對每個輸入信號,利用EDA工具以及FPGA的資源設(shè)計出需要的輸出信號邏輯。
第2節(jié)?設(shè)計輸入(Design Entry)
設(shè)計輸入是指在EDA工具中,通過使用該開發(fā)軟件設(shè)計出所希望得到的系統(tǒng)或電路的一個過程。在日常工作學習中最常使用的方式是通過硬件描述語言(HDL)的方式來描繪設(shè)計出最終的數(shù)字電路。以此方式設(shè)計電路的過程需要在EDA軟件上通過文本描述,將實際的電路用硬件語言表述出來。設(shè)計好文本后,編譯器會將硬件語言進行綜合、布局布線,最后轉(zhuǎn)換成一個個的邏輯門、寄存器、數(shù)據(jù)選擇器等實際電路。設(shè)計師接觸比較多的HDL語言是行為HDL,其主流語言是Verilog HDL和VHDL,這兩種語言都是IEEE的標準,雖然兩者在語法結(jié)構(gòu)以及設(shè)計標準上存在差別,但是都有一個共同的特點:語言與芯片工藝無關(guān)。在任一款FPGA芯片上,使用任何一種語言都可以設(shè)計出想要的數(shù)字電路。
另一種設(shè)計方式是使用原理圖輸入的方法進行設(shè)計輸入。原理圖輸入方式是一種最直接的描述方式,通過從元件庫中調(diào)出來需要的器件,畫出原理圖。這一方式有點類似于硬件開發(fā)過程中設(shè)計原理圖的過程,其在可編程邏輯陣列發(fā)展的前期應(yīng)用的比較廣泛。使用這種方法具有設(shè)計直觀且易于仿真的優(yōu)勢,但是設(shè)計效率不高,且難以維護改動,對模塊的構(gòu)造和重用的支持度極不友好。當芯片升級后,所有的原理圖需要重新進行一定的改動,可移植性很差。
除了這IEEE標準語言外還有廠商自己的語言,在實際的設(shè)計中也可以用HDL為主,原理圖為輔的混合設(shè)計方式,以發(fā)揮兩者的各自特色與優(yōu)勢。
第3節(jié)?功能仿真(RTL-Simulation)
功能仿真也稱為綜合前仿真,用戶設(shè)計好數(shù)字邏輯后需要檢查自己的設(shè)計是否符合預(yù)期,在不需要綜合之前通過仿真軟件對電路進行邏輯驗證。在功能仿真器件電路可以不用考慮延遲等因素,僅對初步的功能進行檢驗。通過建立測試平臺即Testbench,利用波形編譯器(仿真軟件)和硬件描述語言建立好波形文件和激勵信號,在仿真軟件上會模擬實際電路的波形顯示出輸出波形信號,并生成報告文件。用戶通過觀察各個時間點信號的變化情況來驗證自己所設(shè)計邏輯的正確性。綜合前仿真在FPGA開發(fā)過程中不是一定要進行的步驟,但卻是極為關(guān)鍵的一步。在實際的工作學習中,充分利用好仿真工具,能夠提高設(shè)計的效率并及時發(fā)現(xiàn)設(shè)計缺陷,從而為后續(xù)的開發(fā)過程提供保障。常用的硬件描述語言的仿真工具有Model Tech公司的ModelSim、VCS、Ncsim以及NC-VHDL等軟件。
第4節(jié)?綜合優(yōu)化(Synthesis)
所謂綜合即針對給定的電路實現(xiàn)功能和實現(xiàn)該電路的約束條件,如速度、功耗、成本及電路類型等,通過計算機進行優(yōu)化處理獲得一個能滿足上述要求的電路設(shè)計方案。也就是說,被綜合的文件是HDL文件(或其他相應(yīng)文件),綜合的依據(jù)是邏輯設(shè)計的描述和各種約束條件,綜合的結(jié)果則是一個硬件電路的實現(xiàn)方案,該方案必須同時滿足預(yù)期的功能和約束條件。對于綜合來說,滿足要求的方案可能有多個,綜合器將產(chǎn)生一個最優(yōu)的或接近最優(yōu)的結(jié)果。因此,綜合的過程也就是設(shè)計目標的優(yōu)化過程,最后獲得的結(jié)構(gòu)與綜合器的工作性能有關(guān)。常用的綜合工具有Synplicity公司的Synplify/SynplifyPro軟件以及各個FPGA廠家自己推出的綜合開發(fā)工具。
第5節(jié)?綜合后仿真
綜合后仿真是用來檢查綜合結(jié)果是否和原設(shè)計一致。后仿真與前仿真的區(qū)別在于:前仿真是指綜合前的仿真,如在Modelsim對撰寫的代碼直接進行仿真,而后仿真是綜合后的仿真,也就是功能仿真。假設(shè)設(shè)計師在Modelsim中用HDL編寫了一個計數(shù)器代碼,其通過了行為級的仿真后被加載到quartus或者其他的綜合工具中進行綜合,完成綜合后會生成功能網(wǎng)表,將行為語言轉(zhuǎn)換成寄存器傳送級語言,此時設(shè)計師再將其加載到Modelsim中進行的仿真被叫做后仿真。后仿真成功后還需要在quartus中進行映射和布局布線,并進行時序分析生成時序網(wǎng)表,描述器件里門或者布線的延時。最后將延時網(wǎng)表和功能網(wǎng)表一起加載到Modelsim中仿真,這一仿真為門級仿真,而在實際的設(shè)計過程中,一般來說不做綜合后仿真也不會帶來太大的影響。
第6節(jié)?布局布線(Place & Routes)
布局布線可理解為利用實現(xiàn)工具把邏輯映射到目標器件結(jié)構(gòu)的資源中從而決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報告)。實現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,布局布線是其中最重要的過程。在完成綜合之后,就是相當于有了各種元件,但如何建立元件之間的連接,就像在PCB上把元件放在哪里,元件之間的連接以及相連關(guān)系又是怎么樣的,這個都是布局布線完成的工作,綜合的結(jié)果可能每次都一樣,但是布局布線的結(jié)構(gòu)基本每次都不會一樣。布局將邏輯網(wǎng)表中的硬件原語和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線根據(jù)布局的拓撲結(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個元件。目前,F(xiàn)PGA的結(jié)構(gòu)非常復(fù)雜,特別是在有時序約束條件時,需要利用時序驅(qū)動的引擎進行布局布線。布線結(jié)束后,軟件工具會自動生成報告,提供有關(guān)設(shè)計中各部分資源的使用情況。由于只有FPGA芯片生產(chǎn)商對芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開發(fā)商提供的工具。
第7節(jié)?時序仿真(Timing)
時序仿真,也稱為后仿真,是指將布局布線的延時信息反標注到設(shè)計網(wǎng)表中來檢測有無時序違規(guī)(即不滿足時序約束條件或器件固有的時序規(guī)則,如建立時間、保持時間等)現(xiàn)象。時序仿真使用布局布線后器件給出的模塊和連線的延時信息,在最壞的情況下對電路的行為作出實際的估價。時序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激勵也是相同的,唯一的差別是:時序仿真加載到仿真器的設(shè)計包括基于實際布局布線設(shè)計的最壞情況的布局布線延時,并且在仿真結(jié)果波形圖中時序仿真后的信號加載了時延,而功能仿真沒有。由于不同芯片的內(nèi)部延時不一樣,不同的布局布線方案也給延時帶來不同的影響。因此在布局布線后,通過對系統(tǒng)和各個模塊進行時序仿真,分析其時序關(guān)系,估計系統(tǒng)性能,以及檢查和消除競爭冒險是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
第8節(jié)?板級仿真與驗證
板級仿真主要應(yīng)用于高速電路設(shè)計中,對高速系統(tǒng)的信號完整性、電磁干擾等特征進行分析,一般都以第三方工具進行仿真和驗證,在實際的工作中一般接觸較少。
第9節(jié)?編程與調(diào)試
設(shè)計的最后一步就是芯片的編程與調(diào)試。編程是指將FPGA開發(fā)工具最后產(chǎn)生使用的數(shù)據(jù)文件(位數(shù)據(jù)流文件,BitstreamGeneration)加載到FPGA芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程時序和編程算法等,而這些條件一般廠家都會事先完成設(shè)計,設(shè)計師直接按照規(guī)范操作即可。數(shù)據(jù)文件下載到FPGA芯片中以后還需要進行調(diào)試驗證,邏輯分析儀(LogicAnalyzer,LA)便是FPGA設(shè)計的主要調(diào)試工具。使用LA需要引出大量的測試管腳,且LA價格昂貴,但是當工程較大、所需要調(diào)試觀察的信號過多時,仍舊需要LA來對芯片內(nèi)部的信號進行觀察驗證。目前,主流的FPGA芯片生產(chǎn)商都提供了內(nèi)嵌的在線邏輯分析儀(如Xilinx ISE中的ChipScope、Altera QuartusII中的SignalTapII以及SignalProb),它們只需要占用芯片少量的邏輯資源便可達到同樣的效果,在實際的工程調(diào)試中發(fā)揮了極大的作用。本書中將會詳細介紹SIGNALTAP工具的使用。