FPGA是Field Programmable Gate Array的簡寫,中文全稱為現(xiàn)場可編程門陣列。FPGA的設(shè)計包括軟件設(shè)計和硬件設(shè)計兩大塊。軟件設(shè)計包含嵌入式C程序和HDL程序設(shè)計,嵌入式C程序是最近才開始流行的。硬件設(shè)計,顧名思義就是與硬件相關(guān)的,包括電路設(shè)計、配套硬件設(shè)計、輸入輸出接口設(shè)計等。
FPGA的開發(fā)離不開EDA開發(fā)軟件和編程工具,開發(fā)流程按照先后順序,依次為電路設(shè)計、輸入設(shè)計、功能仿真、綜合優(yōu)化、綜合后仿真、實現(xiàn)、布線后仿真、板級仿真和芯片編程、調(diào)試等。
一、方案驗證
在開始所有步驟之前,一定要進行方案驗證。工程師會根據(jù)項目要求,對整個系統(tǒng)進行綜合考量,包括各項指標(biāo)、復(fù)雜程度,F(xiàn)PGA芯片的工作速度、成本、供貨渠道等。方案驗證通過之后,就需要進行系統(tǒng)設(shè)計和FPGA芯片選擇等籌備工作。
二、電路設(shè)計
FPGA電路設(shè)計通常都是采用金字塔式的邏輯,自上而下進行的。首先需要把整個系統(tǒng)劃分成各個基本單元,然后再把各個單元進行細化、分層,直到可以直接使用EDA器件庫。
三、輸入設(shè)計
輸入設(shè)計就是將系統(tǒng)電路按照開發(fā)軟件的規(guī)范進行表達,使EDA工具能夠直接進行操作。輸入設(shè)計的主要方法主要包括原理圖輸入法和硬件描述語言(HDL)法。其中,原理圖輸入法是最直接的表達方式,在早期FPGA芯片的發(fā)展過程中,就被廣泛應(yīng)用。原理圖輸入法從元器件庫中,將所需的器件全部調(diào)出,然后進行原理圖的繪制。
原理圖輸入法的優(yōu)點是直觀易懂,并且仿真很便捷;缺點是維護起來比較麻煩,涉及到模塊的構(gòu)造和重用時,篇幅會大量增加,特別是需要進行系統(tǒng)升級時,基本上所有的原理圖都要進行適當(dāng)修改,整體效率偏低。
隨著各項指標(biāo)要求的演變,硬件描述語言(HDL)法逐漸成為現(xiàn)今開發(fā)中應(yīng)用最廣泛的方法。HDL法根據(jù)文本描述設(shè)計,又可以分為行為HDL和普通HDL。
行為HDL主要用在大型工程中,主流語言是VHDL和Verilog HDL,采用的是IEEE(美國電氣與電子工程師)標(biāo)準(zhǔn),其共同特點是利于自上而下的設(shè)計,語言與芯片工藝無關(guān),可移植性好,有很優(yōu)秀的仿真和邏輯表述功能,輸入效率高,便于模塊劃分和移植。
普通HDL主要用于小型設(shè)計,包括CUR和ABEL,支持狀態(tài)機、邏輯方程和真值表等方式。
四、功能仿真
功能仿真又稱為前仿真,僅對初步的功能進行驗證,沒有延遲信息,只是對所設(shè)計的電路進行邏輯功能驗證。在仿真前,需要將核心的輸入信號進行序列組合,也就是利用HDL和波形編輯器建立測試向量和波形文件。仿真結(jié)果以信號波形和報告文件的形式呈現(xiàn),方便觀察各個信號節(jié)點的變化情況。如果出現(xiàn)錯誤,就返回修改邏輯設(shè)計。
五、綜合優(yōu)化
綜合優(yōu)化,簡單來說就是將高級抽象描述轉(zhuǎn)化為具體詳細的描述,根據(jù)目標(biāo)要求對所生成的邏輯連接進行優(yōu)化,使設(shè)計層次更加平面化,以便實現(xiàn)FPGA布局布線。
從層次上來看,綜合優(yōu)化主要是將輸入設(shè)計編譯成邏輯連接網(wǎng)表,以便和觸發(fā)器、RAM、與或非門等基本邏輯單元進行連接。真實具體的門級電路還要利用FPGA制造商的布局布線功能,再根據(jù)綜合后的邏輯連接網(wǎng)表來繪制,也就是標(biāo)準(zhǔn)門級結(jié)構(gòu)網(wǎng)表。因此,綜合優(yōu)化并非最終的門級電路。
另外需要注意的是,為了確保標(biāo)準(zhǔn)門級結(jié)構(gòu)網(wǎng)表的轉(zhuǎn)換,在編寫HDL程序時,必須要針對特定綜合器的風(fēng)格進行匹配。
六、綜合后仿真
綜合后仿真,是檢查綜合結(jié)果與原設(shè)計是否一致的步驟,通過把綜合生成的標(biāo)準(zhǔn)延時文件,反標(biāo)注到綜合仿真模型中,來對門延時影響進行評估。該步驟并不能對線延時進行評估,因此和布線后的實際情況有差距。
現(xiàn)階段綜合工具已經(jīng)比較成熟,對于一般的設(shè)計而言,通常這一步驟可以省略。但是,如果布局布線之后,出現(xiàn)電路結(jié)構(gòu)與設(shè)計意圖不符的情況,還是需要通過綜合仿真來查找問題根源。
七、實現(xiàn)與布局布線
實現(xiàn),就是將綜合生成的邏輯網(wǎng)表在FPGA芯片上進行配置,完成布局布線。展開來說,布局是將邏輯網(wǎng)表中的硬件與底層單元,在FPGA芯片內(nèi)部的固有硬件結(jié)構(gòu)上進行合理的配置,以便達到最優(yōu)的面積和最優(yōu)的速度。布線則是在布局拓撲結(jié)構(gòu)的基礎(chǔ)之上,結(jié)合FPGA芯片內(nèi)部的各種接口,準(zhǔn)確連接各個元器件。由于布局布線需要用到FPGA芯片內(nèi)部的所有硬件和接口,因此必須選擇FPGA芯片原廠提供的工具。
由于FPGA的結(jié)構(gòu)十分復(fù)雜,尤其是在時序約束條件下,必須要用到時序驅(qū)動引擎來完成布局布線。完成布線之后,軟件工具可以自動生成報告,展示設(shè)計中各資源的使用情況。
八、后仿真
后仿真,也叫時序仿真,主要是將布局布線后的延時信息,反向標(biāo)注到設(shè)計網(wǎng)表中,以便檢查是否有時序違規(guī)存在,比如保持時間、建立時間等是否滿足器件的固有時序規(guī)則或時序約束條件。
后仿真可以精確、完整的展示延遲信息,因此能很好的反饋芯片時間工作時的情況。
后仿真的意義重大。因為不同F(xiàn)PGA芯片的內(nèi)部延時不同,布局布線方案也會給延時造成影響。因此,在完成布局布線之后,對整個系統(tǒng)以及各個模塊進行后仿真,可以驗證時序關(guān)系、評估系統(tǒng)性能,對檢查和消除設(shè)計風(fēng)險具有重大意義。
九、板級仿真及驗證
在高速電路設(shè)計中,還需要進行板級仿真。板級仿真主要是對高速系統(tǒng)的電磁干擾和信號完整等指標(biāo)進行檢查,通常采用第三方工具進行。
十、編程與調(diào)試
芯片的編程與調(diào)試是整個FPGA開發(fā)流程的最后一步。芯片編程需要先生成使用所需的數(shù)據(jù)文件,即位數(shù)據(jù)流文件,然后再將數(shù)據(jù)文件上傳到FPGA芯片內(nèi)。
芯片編程需要在一定的條件下進行,比如編程時序、編程算法和編程電壓等。在FPGA的設(shè)計過程中,邏輯分析儀是一種重要的調(diào)試工具。邏輯分析儀價格比較貴,且需要引出大量的測試管腳。不過,主要的FPGA芯片廠家都會提供內(nèi)嵌的邏輯分析儀,比如Xilinx賽靈思內(nèi)嵌的ChipScope和Altera阿爾特拉內(nèi)嵌的SignalTapII、SignalProb等。
通過廠家內(nèi)嵌邏輯分析儀,可以幫助客戶降低成本,同時減小FPGA芯片邏輯資源的占用,實用性非常強。