FPGA(Field Programmable Gate Array)是現(xiàn)場可編程門陣列,它是在PAL(可編程陣列邏輯)、GAL(通用陣列邏輯)等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。
FPGA作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn),既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。它可以被認為是一個可以通過編程來改變內(nèi)部結(jié)構的芯片。具體來說,F(xiàn)PGA的功能實現(xiàn)需要設計者通過硬件描述語言,經(jīng)過EDA(電子設計自動化)工具編譯、綜合、布局布線成后轉(zhuǎn)換為可燒錄的文件,最終加載到FPGA器件中去,形成定制的硬件功能。
FPGA設計流程一般包括以下步驟:
設計輸入。設計者使用硬件描述語言(如Verilog或VHDL)或者設計工具(如Quartus下的AHDL)進行設計輸入。對于更復雜的系統(tǒng),設計師可以采用自上而下的設計方法,將整個系統(tǒng)劃分為多個子系統(tǒng)。
功能仿真。此階段主要對設計的邏輯功能進行驗證。仿真過程中不會考慮延遲信息,主要檢測設計的初步功能是否有誤。
綜合。綜合是將高級抽象層次的描述轉(zhuǎn)換成較低層次的描述,由設計工具編譯成由與門、或門、非門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,從而優(yōu)化所生成的邏輯連接,使層次設計平面化。
綜合后仿真。這一步主要是檢查綜合結(jié)果與原設計是否一致,對仿真時把綜合生成的標準延時文件反標注到綜合仿真模型中,可以估計門延時帶來的影響,但無法估計線延時和布局布線后的實際情況。
實現(xiàn)與布局布線。實現(xiàn)是將從生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,布局布線是其中關鍵步驟。布局過程是將邏輯網(wǎng)表中的硬件原語和底層單元合理地配置到芯片內(nèi)部固有的硬件結(jié)構上;布線則是根據(jù)布局的拓撲結(jié)構,利用芯片內(nèi)部的各種連線資源,合理正確地連接各個元件。
時序仿真與驗證。時序仿真也稱為后仿真,是指將布局布線的延時信息反標注到設計網(wǎng)表中來檢測有無時序違規(guī)。時序仿真包含的延遲信息最準確,能較好地反映芯片的實際工作情況。
板級仿真與驗證。板級仿真主要應用于高速電路設計中,對高速心態(tài)的信號完整性、電磁干擾等特性進行分析。
芯片編程與調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件(比特流),然后將編程數(shù)據(jù)下載到FPGA芯片中,此時設計者可通過在線邏輯分析儀(ILA)進行系統(tǒng)調(diào)試和驗證。
整個設計流程可能因為設計的復雜性和特定需求而有所不同,但以上步驟一般都會涵蓋在FPGA設計過程中。
采用EDA工具實現(xiàn)FPGA的功能設計一般包括以下步驟:
功能定義/器件選型:在FPGA設計項目之前,根據(jù)系統(tǒng)需求,如系統(tǒng)的功能和復雜度,對工作速度和器件本身的資源、成本、以及連線的可布性等方面進行權衡,選擇合適的設計方案和合適的器件類型。這一階段通常需要把系統(tǒng)分成若干個基本單元,然后再把每個基本單元劃分為下一個層次的基本單元,直到可以直接使用EDA元件庫為止。
設計輸入:將所設計的系統(tǒng)或電路以開發(fā)軟件要求的某種要求表示出來,并輸入給EDA工具的工程。
邏輯綜合:將設計輸入文件與器件選型及功能定義進行對比,實現(xiàn)邏輯綜合。
布圖布線:邏輯綜合后,可以執(zhí)行布圖布線的操作。這一步驟中,F(xiàn)PGA芯片內(nèi)的邏輯門將被映射成物理元素,包括可配置邏輯塊與輸入輸出塊及其它資源中的過程;布局是指從映射取出定義的邏輯和輸入輸出塊,并把它們分配到FPGA內(nèi)部的物理位置;布線是指利用自動布線軟件使用布線資源選擇路徑試著完成所有的邏輯連接。
時序約束與仿真:在布局布線期間對整個信號通道執(zhí)行時序分析,因此可以使用約束條件操作。
調(diào)試和驗證:通過仿真測試等方法對設計進行調(diào)試和驗證,確保設計的正確性和可靠性。
以上是采用EDA工具實現(xiàn)FPGA功能設計的一般步驟,需要根據(jù)具體的設計需求進行調(diào)整和完善。