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