官术网_书友最值得收藏!

1.6.3 FPGA的設(shè)計流程

整個FPGA的設(shè)計流程可以與PCB繪制軟件設(shè)計PCB的流程類比。圖1-11是FPGA的設(shè)計流程圖。本節(jié)只是簡單地介紹各個設(shè)計流程,有關(guān)FPGA的詳細(xì)設(shè)計方法可以參考專門介紹FPGA設(shè)計的資料。

圖1-11 FPGA設(shè)計流程圖

1. 設(shè)計準(zhǔn)備

設(shè)計一個FPGA項目就好比設(shè)計一塊PCB一樣,只是設(shè)計的對象是一顆IC芯片的內(nèi)部功能結(jié)構(gòu)。一個FPGA設(shè)計就是一顆IC芯片設(shè)計,在動手進(jìn)行代碼輸入前必須明確這顆IC芯片的功能及對外接口。PCB的接口是一些接口插座及信號線,IC芯片的對外接口反映在芯片的引腳上。FPGA靈活性的最直接體現(xiàn),就在于每個引腳均可自由定義。也就是說,在沒有下載程序文件前,F(xiàn)PGA的所有引腳均沒有任何功能,各引腳是輸入還是輸出,引腳信號是復(fù)位信號還是LED燈輸出信號,完全由程序文件確定。這對于常規(guī)的專用芯片來說是無法想象的。

2. 設(shè)計輸入

明確了設(shè)計功能及對外接口后就可以開始設(shè)計輸入了。所謂設(shè)計輸入,就是指編寫代碼、繪制原理圖、設(shè)計狀態(tài)機(jī)等工作。當(dāng)然,對于復(fù)雜的設(shè)計,在動手編寫代碼前還要進(jìn)行頂層設(shè)計、模塊功能設(shè)計等一系列工作;對于簡單的設(shè)計來講就不用那么麻煩了,一個文件即可解決所有問題。設(shè)計輸入的方式有多種,如原理圖輸入方式、狀態(tài)機(jī)輸入方式、HDL輸入方式、IP核輸入方式(高效率的輸入方式,用別人的經(jīng)過測試的勞動成果,可確保設(shè)計的性能并提高設(shè)計效率),以及DSP輸入方式等。

3. 設(shè)計綜合

大多數(shù)介紹FPGA設(shè)計的圖書在講解設(shè)計流程時,均把設(shè)計綜合放在功能仿真之后,原因是功能仿真只是對設(shè)計輸入的語法進(jìn)行檢查及仿真,不涉及具體的電路綜合與實現(xiàn)。換句話說,即使你寫出的代碼最終無法綜合成具體電路,功能仿真也可能正確無誤。作者認(rèn)為,如果辛辛苦苦寫出的代碼最終無法綜合成電路,即根本是一個不可能實現(xiàn)的設(shè)計,在這種情況下不盡早檢查并修改設(shè)計,而是費盡心思追求功能仿真的正確性,豈不是在進(jìn)一步浪費你的寶貴時間?所以,在設(shè)計輸入完成后,先進(jìn)行設(shè)計綜合,看看設(shè)計能否綜合成電路,再去進(jìn)行仿真可能會更好些。所謂設(shè)計綜合,也就是將HDL、原理圖等設(shè)計輸入翻譯成由與門、或門、非門、觸發(fā)器等基本邏輯單元組成的邏輯連接,并形成網(wǎng)表格式文件,供布局布線器進(jìn)行實現(xiàn)。FPGA內(nèi)部本身是由一些基本的組合邏輯門、觸發(fā)器、存儲器等組成的,綜合的過程也就是將使用語言或繪圖描述的功能電路自動編譯成基本邏輯單元組合的過程。這好比使用Protel設(shè)計PCB,設(shè)計好電路原理圖后,要將原理圖轉(zhuǎn)換成網(wǎng)表文件,如果沒有為每個原理圖中的元件指定元件封裝,或元件庫中沒有指定的元件封裝,則在轉(zhuǎn)換成網(wǎng)表文件并進(jìn)行后期布局布線時就無法進(jìn)行下去。同樣,如果HDL輸入語句本身沒有與之對應(yīng)的硬件實現(xiàn),自然也就無法將設(shè)計綜合成正確的電路,這樣的設(shè)計即使在功能、語法上是正確的,在硬件上卻無法找到與之相對應(yīng)的邏輯單元來實現(xiàn)。

4. 功能仿真

功能仿真又稱為行為仿真(在Quartus II中稱為RTL Simulation),顧名思義,即功能性仿真,用于檢查設(shè)計輸入的語法是否正確,功能是否滿足要求。由于功能仿真僅僅關(guān)注語法的正確性,因而即使功能仿真正確后,也無法保證最后設(shè)計實現(xiàn)的正確性。在功能仿真正確后,要做的工作可能仍然十分繁雜,原因在于功能仿真過程沒有用到實現(xiàn)設(shè)計的時序信息,仿真延時基本忽略不計,處于理想狀態(tài)。對于高速或復(fù)雜設(shè)計,基本器件的延時正是制約設(shè)計的瓶頸。雖然如此,功能仿真在設(shè)計初期仍然十分有用,一般來講,一個連功能仿真都不能通過的設(shè)計是不可能通過布局布線后仿真的,也不可能實現(xiàn)設(shè)計者的設(shè)計意圖。功能仿真的另一好處是可以對設(shè)計中的每一個模塊進(jìn)行單獨仿真,這也是程序調(diào)試的基本方法,即先分別對底層模塊進(jìn)行仿真調(diào)試,再進(jìn)行頂層模塊的綜合調(diào)試。

5. 設(shè)計實現(xiàn)

設(shè)計實現(xiàn)是指根據(jù)選定的芯片型號、綜合后生成的網(wǎng)表文件,將設(shè)計配置到具體FPGA的過程。由于涉及具體的器件型號,所以實現(xiàn)工具只能選用器件廠商提供的軟件。Xilinx公司的ISE軟件中實現(xiàn)過程又可分為翻譯(Translate)、映射(Map)和布局布線(Place & Route)三個步驟。Quartus II中的實現(xiàn)工具主要有Fitter、Assigment Editor、Floorplan Editor、Chip Editor等。雖然看起來步驟較多,但在具體設(shè)計時,直接單擊Quartus II中的設(shè)計實現(xiàn)(Fitter)條目,即可自動完成所有實現(xiàn)步驟。設(shè)計實現(xiàn)的過程就好比Protel軟件根據(jù)原理圖生成的網(wǎng)表文件后進(jìn)行繪制PCB的過程。繪制PCB可以采用自動布局布線及手動布局布線兩種方式。對于FPGA設(shè)計來講,同樣也有自動布局布線和手動布局布線兩種方式,只是手動布局布線相對困難得多。對于常規(guī)或相對簡單的設(shè)計,僅依靠Quartus II的自動布局布線功能即可得到滿意的效果。

6. 時序仿真

一般來說,無論軟件工程師還是硬件工程師,都更愿意在設(shè)計過程中充分展示自己的創(chuàng)意,而不太愿意花過多時間去做測試或仿真工作。對于一個具體的設(shè)計來講,工程師們更愿意關(guān)注設(shè)計功能的實現(xiàn),只要功能正確,工作也就差不多完成了。由于目前設(shè)計工具的快速發(fā)展,尤其是仿真工具功能的日益強(qiáng)大,這種觀念恐怕需要進(jìn)行修正了。對于FPGA設(shè)計來說,布局布線后仿真(在Quartus II中稱為Gate Level Simulation)也稱為后仿真或時序仿真,具有十分精確的器件延時模型,只要約束條件設(shè)計正確合理,仿真通過了,程序下載到芯片后基本上不會出現(xiàn)什么問題。在介紹功能仿真時說過,功能仿真通過了,設(shè)計還離成功較遠(yuǎn),但只要時序仿真通過了,則設(shè)計離成功就很近了。

7. 程序下載

時序仿真正確后就可以將設(shè)計生成的芯片配置文件寫入芯片中進(jìn)行最后的硬件調(diào)試,如果硬件電路板沒有問題的話,那么在將芯片配置文件下載到芯片后即可看到自己的設(shè)計已經(jīng)在正確地工作了。

主站蜘蛛池模板: 虞城县| 阆中市| 盘山县| 英吉沙县| 四川省| 舒城县| 罗城| 读书| 德化县| 乌兰县| 平谷区| 梅河口市| 博爱县| 渭南市| 左权县| 冀州市| 静安区| 罗平县| 丽江市| 蒲江县| 宁阳县| 胶南市| 临颍县| 临沧市| 当涂县| 灵武市| 开平市| 罗源县| 崇义县| 洞口县| 兴国县| 长治县| 漳平市| 南澳县| 岢岚县| 乐山市| 抚顺县| 松原市| 鹿泉市| 牡丹江市| 宁河县|