FPGA設(shè)計(jì)流程.ppt_第1頁
FPGA設(shè)計(jì)流程.ppt_第2頁
FPGA設(shè)計(jì)流程.ppt_第3頁
FPGA設(shè)計(jì)流程.ppt_第4頁
FPGA設(shè)計(jì)流程.ppt_第5頁
已閱讀5頁,還剩179頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第2章FPGA設(shè)計(jì)流程,2.1 Quartus設(shè)計(jì)流程概述 2.2 設(shè)計(jì)輸入 2.3 設(shè)計(jì)約束和分配 2.4 設(shè)計(jì)綜合 2.5 布局布線 2.6 基于模塊的設(shè)計(jì) 2.7 仿真 2.8 時(shí)序分析 2.9 時(shí)序逼近 2.10 用Quartus完成FPGA設(shè)計(jì)的實(shí)例,2.1 Quartus設(shè)計(jì)流程概述 Altera Quartus設(shè)計(jì)軟件提供完整的多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定的設(shè)計(jì)需要,為可編程芯片系統(tǒng)提供全面的設(shè)計(jì)工具。Quartus軟件含有FPGA和CPLD設(shè)計(jì)所有階段的解決方案。Quartus的主要設(shè)計(jì)流程如圖2.1所示。,圖2.1 Quartus的設(shè)計(jì)流程,Quartus為設(shè)計(jì)流程中每一

2、個(gè)階段提供的主要工具和功能如下。 1) 設(shè)計(jì)輸入(Design Entry) (1) 文本編輯器(Text Editor)是一個(gè)靈活的工具,用于以AHDL、VHDL和Verilog HDL 語言以及Tcl腳本語言輸入文本型設(shè)計(jì)。還可以使用Text Editor輸入、編輯和查看其他 ASCII文本文件,包括為Quartus軟件或由Quartus軟件建立的文本文件。 (2) 模塊編輯器(Block Editor)用于以原理圖和框圖的形式輸入和編輯圖形設(shè)計(jì)信息。,(3) 符號(hào)編輯器(Symbol Editor) 用于查看和編輯代表宏功能、宏功能模塊、基本單元或設(shè)計(jì)文件的預(yù)定義符號(hào)。 (4) 使用Me

3、gaWizard Plug-in Manager建立Altera 宏功能模塊、LPM 功能和IP 功能,用于Quartus軟件和EDA設(shè)計(jì)輸入與綜合工具中的設(shè)計(jì)。,2) 約束和分配輸入(Constraint and Assignment Entry) (1) 分配編輯器(Assignment Editor)界面用于在Quartus軟件中建立、編輯節(jié)點(diǎn)和實(shí)體級(jí)別的分配。分配用于在設(shè)計(jì)中為邏輯指定各種選項(xiàng)和設(shè)置,包括位置、I/O標(biāo)準(zhǔn)、時(shí)序、邏輯選項(xiàng)、參數(shù)、仿真和引腳分配等。 (2) 引腳規(guī)劃器(Pin Planner)。Assignments菜單下的引腳規(guī)劃器中,可視化工具為引腳和引腳組分配提供了

4、另一種途徑。它包括器件的封裝視圖,以不同的顏色和符號(hào)表示不同類型的引腳,并以其他符號(hào)表示I/O塊。引腳規(guī)劃器使用的符號(hào)與器件系列數(shù)據(jù)手冊(cè)中的符號(hào)非常相似,它還包括已分配和未分配引腳的列表。,(3) Settings對(duì)話框??梢允褂肧ettings對(duì)話框(Assignments菜單)為工程指定分配和選項(xiàng),可以設(shè)置一般工程范圍的選項(xiàng)以及綜合、適配、仿真和時(shí)序分析選項(xiàng)。 (4) 平面布局圖編輯器(Floorplan Editor)可以用來直觀地分配資源。 (5) 設(shè)計(jì)分區(qū)窗口用以建立和修改設(shè)計(jì)分區(qū)。,3) 綜合(Synthesis) (1) 可以使用分析和綜合(Analysis 并有相應(yīng)的提示,這表

5、明該操作實(shí)際上是調(diào)用update_timing_ netlist這條TCL指令的。所有TimeQuest的操作都可以用TCL指令來完成,每一次操作所調(diào)用的指令都會(huì)在控制臺(tái)窗格中出現(xiàn),如果熟悉TCL指令,可直接在控制臺(tái)窗格輸入TCL指令完成各種操作。,(5) 生成時(shí)序報(bào)告。用任務(wù)窗格中的命令,可以生成各種時(shí)序報(bào)告,同時(shí)還可以自定義報(bào)告,所有的命令也都可以用TCL指令完成。在TimeQuest查看窗格中可以迅速查看時(shí)序分析的結(jié)果。TimeQuest時(shí)序分析儀快速提供交互式報(bào)告,使用戶能夠迅速收集所選時(shí)序通道的詳細(xì)信息。查看松弛(Slack)報(bào)告后,用戶可以使用TimeQuest時(shí)序分析儀得到特定通

6、路上更詳細(xì)的信息。,(6) 保存SDC文件。所有的約束設(shè)置都不會(huì)自動(dòng)保存,因此在結(jié)束分析之前,使用任務(wù)窗格中的Write SDC Files把約束設(shè)置文件保存起來。 TimeQuest時(shí)序分析儀使用靈活、功能非常強(qiáng)大,這里只列出了使用的簡單流程及主要特性,具體使用時(shí)請(qǐng)參照Quartus Version 6.0 Handbook Volume 3: Verification Chapter 6的相關(guān)內(nèi)容。,2.9 時(shí) 序 逼 近 Quartus軟件提供集成的時(shí)序逼近流程,通過控制設(shè)計(jì)的綜合和布局布線來達(dá)到時(shí)序目標(biāo)。使用時(shí)序逼近流程可以對(duì)復(fù)雜的設(shè)計(jì)進(jìn)行更快的時(shí)序逼近,以減少優(yōu)化迭代次數(shù)并自動(dòng)平衡多

7、個(gè)設(shè)計(jì)約束。時(shí)序逼近流程可以執(zhí)行初始編譯和查看設(shè)計(jì)結(jié)果,進(jìn)一步高效優(yōu)化設(shè)計(jì)。在綜合之后以及在布局布線期間,可以使用時(shí)序逼近平面布局圖(Timing Closure Floorplan)分析設(shè)計(jì)并進(jìn)行分配,使用時(shí)序優(yōu)化顧問(Timing Optimization Advisor)查看Quartus對(duì)優(yōu)化設(shè)計(jì)時(shí)序的建議,還可以使用LogicLock區(qū)域分配和Design Space Explorer 進(jìn)一步優(yōu)化設(shè)計(jì)。圖2.12為Quartus的時(shí)序逼近流程。,圖2.12 時(shí)序逼近流程,使用時(shí)序逼近平面布局圖查看Fitter生成的邏輯布局、用戶分配、LogicLock區(qū)域分配以及設(shè)計(jì)的布線信息,可以

8、使用這些信息在設(shè)計(jì)中識(shí)別關(guān)鍵路徑,進(jìn)行時(shí)序分配、位置分配和LogicLock區(qū)域分配,達(dá)到時(shí)序逼近。 可以使用View 菜單中提供的選項(xiàng)自定義時(shí)序逼近平面布局圖來顯示信息的方式??梢园凑辗庋b引腳及其功能顯示器件,也可以按內(nèi)部MegaLAB結(jié)構(gòu)、LAB和單元顯示器件,還可以按芯片的區(qū)域、所選信號(hào)的名稱和位置顯示器件。,可以使用Field View命令(View菜單),在時(shí)序逼近平面布局圖的高級(jí)輪廓視圖中顯示器件資源的主要分類。在Field視圖中用彩色區(qū)域表示分配,這些彩色區(qū)域顯示用戶已分配的數(shù)量、已布置的Fitter以及器件中每個(gè)結(jié)構(gòu)未分配的邏輯。可以使用Field視圖中的信息進(jìn)行分配,達(dá)到設(shè)計(jì)

9、的時(shí)序逼近。 時(shí)序逼近平面布局圖可同時(shí)顯示用戶分配和Fitter分配。用戶分配是用戶在設(shè)計(jì)中所做的所有位置分配與LogicLock區(qū)域分配;Fitter分配是Quartus軟件在上次編譯之后布置的所有節(jié)點(diǎn)的位置??梢允褂肁ssignments命令(View菜單)顯示用戶分配和Fitter分配。,時(shí)序逼近平面布局圖顯示器件資源以及所有設(shè)計(jì)邏輯的相應(yīng)布線信息。使用Routing命令(View菜單),可以選擇器件資源,并查看以下布線信息類型: (1) 節(jié)點(diǎn)之間的路徑:顯示所選邏輯單元、I/O單元、嵌入式單元和相互連接引腳之間的路徑。 (2) 節(jié)點(diǎn)扇入和扇出:顯示所選嵌入式單元、邏輯單元、I/O單元和

10、引腳的節(jié)點(diǎn)的扇入和扇出布線信息。 (3) 布線延時(shí):顯示引至或源自特定邏輯單元、I/O單元、嵌入式單元、引腳、所選節(jié)點(diǎn)之間以及一個(gè)或多個(gè)關(guān)鍵路徑上的布線延時(shí)。 (4) 連接計(jì)數(shù):顯示或隱藏連接至所選對(duì)象、從所選對(duì)象或所選對(duì)象之間連接的數(shù)量。,(5) 物理時(shí)序估計(jì):顯示從一個(gè)物理資源至另一個(gè)物理資源的近似延時(shí)。選擇一個(gè)物理資源后,用可能目標(biāo)資源的陰影區(qū)表示延時(shí)(資源的陰影越深,延時(shí)越長),可以將鼠標(biāo)放置在另一個(gè)物理資源之上以數(shù)字形式顯示到達(dá)目標(biāo)資源的延時(shí)。 (6) 布線擁塞:用圖形顯示設(shè)計(jì)中的布線擁塞。陰影越深,布線資源利用率越高。也可以選擇布線資源,然后指定該資源的擁塞閾值(在器件中以紅色區(qū)域

11、顯示)。 (7) 關(guān)鍵路徑:顯示設(shè)計(jì)中的關(guān)鍵路徑,包括路徑邊緣和布線延時(shí)。默認(rèn)關(guān)鍵路徑視圖可以顯示寄存器至寄存器的路徑,還可以查看源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間最差路徑的所有組合節(jié)點(diǎn)??梢酝ㄟ^指定時(shí)鐘域、源節(jié)點(diǎn)名稱和目標(biāo)節(jié)點(diǎn)名稱以及要顯示的關(guān)鍵路徑數(shù)和信號(hào)延遲來指定濾除顯示關(guān)鍵路徑的標(biāo)準(zhǔn)。,用時(shí)序逼近平面布局圖還可以查看LogicLock區(qū)域的布線信息,包括連接和區(qū)域內(nèi)延時(shí)。LogicLock區(qū)域連接用于顯示分配給LogicLock區(qū)域的實(shí)體之間的連接,區(qū)域內(nèi)延時(shí)用于顯示LogicLock區(qū)域(包括其子區(qū)域) 中源和目標(biāo)路徑之間的最大延時(shí)。 為了便于達(dá)到時(shí)序逼近,時(shí)序逼近平面布局圖允許直接在布局圖中進(jìn)行

12、位置和時(shí)序分配??梢栽跁r(shí)序逼近平面布局圖的自定義區(qū)域和LogicLock區(qū)域中建立和分配節(jié)點(diǎn)或?qū)嶓w,編輯對(duì)引腳、邏輯單元、行、列、區(qū)域、MegaLAB 結(jié)構(gòu)和LAB的現(xiàn)有分配;還可以查找節(jié)點(diǎn)或節(jié)點(diǎn)組,并在Assignment Editor中進(jìn)行分配。,可以使用以下方法在時(shí)序逼近平面布局圖中進(jìn)行編輯分配: (1) 剪切、復(fù)制和粘貼節(jié)點(diǎn)和引腳的分配。 (2) 啟動(dòng)Assignment Editor 進(jìn)行分配。 (3) 使用Node Finder協(xié)助分配工作。 (4) 在LogicLock 區(qū)域中建立和分配邏輯。,(5) 用鼠標(biāo)從Project Navigator 的Hierarchy選項(xiàng)標(biāo)簽、Lo

13、gicLock 區(qū)域和時(shí)序逼近平面布局圖中拖出節(jié)點(diǎn)和實(shí)體,放到布局圖的其他區(qū)域中。 Timing Optimization Advisor可以在以最大頻率(fMAX)、建立時(shí)間(tSU)、時(shí)鐘至輸出延時(shí)(tCO)和傳播延時(shí)(tPD)等幾個(gè)方面針對(duì)設(shè)計(jì)的時(shí)序優(yōu)化提出建議。打開一個(gè)工程后,通過選擇Timing Optimization Advisor命令(Tools菜單)查看Timing Optimization Advisor。如果還沒有編譯工程,則Timing Optimization Advisor只為時(shí)序優(yōu)化提供一般建議。如果工程已經(jīng)編譯完畢,則Timing Optimization Ad

14、visor能夠根據(jù)工程信息和當(dāng)前設(shè)置,提供特定的時(shí)序建議。,Quartus軟件的網(wǎng)表優(yōu)化選項(xiàng)可用于在綜合以及布局布線期間進(jìn)一步優(yōu)化設(shè)計(jì)。網(wǎng)表優(yōu)化通過修改網(wǎng)表以提高性能,從而改進(jìn)fMAX結(jié)果。不管使用何種綜合工具,均可應(yīng)用這些選項(xiàng)。根據(jù)設(shè)計(jì)條件,不同的選項(xiàng)效果會(huì)有所不同。在Settings對(duì)話框的Synthesis Netlist Optimizations和Physical Synthesis Optimizations頁面中指定綜合和物理綜合的網(wǎng)表優(yōu)化選項(xiàng)。,使用LogicLock區(qū)域達(dá)到時(shí)序逼近的方法如下:在時(shí)序逼近平面布局圖中分析設(shè)計(jì),然后將關(guān)鍵邏輯約束在LogicLock區(qū)域中。Log

15、icLock區(qū)域通常為分層結(jié)構(gòu),使設(shè)計(jì)者對(duì)模塊或模塊組的布局和性能有更強(qiáng)的控制。可以在個(gè)別節(jié)點(diǎn)上使用LogicLock功能,比如將沿著關(guān)鍵路徑的節(jié)點(diǎn)分配給LogicLock區(qū)域。要在設(shè)計(jì)中使用LogicLock區(qū)域成功地改進(jìn)性能,需要詳細(xì)掌握設(shè)計(jì)的關(guān)鍵路徑。一旦在LogicLock區(qū)域內(nèi)達(dá)到了所要的性能,就可以對(duì)該區(qū)域的內(nèi)容進(jìn)行反標(biāo),以鎖定邏輯布局。應(yīng)用軟LogicLock區(qū)域可以使這種方法更靈活有效。 增量編譯也可以用來實(shí)現(xiàn)時(shí)序逼近,通過分配設(shè)計(jì)分區(qū),在編譯、處理其他設(shè)計(jì)分區(qū)時(shí),只修改設(shè)計(jì)中的關(guān)鍵單元布局來達(dá)到時(shí)序逼近。,2.10 用Quartus完成FPGA設(shè)計(jì)的實(shí)例 本節(jié)通過設(shè)計(jì)一個(gè)如圖

16、2.13(a)所示的燈光控制電路來熟悉Quartus軟件的使用,開關(guān)x1和x2都可以用來控制燈f,設(shè)開關(guān)閉合為邏輯1,圖2.13(b)為這個(gè)電路的真值表,這是一個(gè)簡單的異或電路,但這里我們用門電路來實(shí)現(xiàn)。,圖2.13 燈光控制電路 (a) 電路;(b) 真值表,2.10.1 建立一個(gè)新工程 Quartus軟件設(shè)計(jì)的一個(gè)電路或者電路模塊稱做工程。Quartus軟件同時(shí)只能處理一個(gè)工程,所有與該工程相關(guān)的內(nèi)容都保存在一個(gè)目錄下。要設(shè)計(jì)一個(gè)電路,第一步就是建立一個(gè)工程,我們使用introtutorial這個(gè)目錄保存工程文件。 運(yùn)行Quartus軟件,圖2.14是Quartus 6.0剛啟動(dòng)時(shí)的圖形界

17、面。Quartus的大多數(shù)功能都是通過菜單操作完成的,如單擊File菜單,選中Exit可退出Quartus。圖2.15是File菜單的例子。,圖2.14 Quartus 6.0的圖形界面,圖2.15 File菜單的例子,按照以下步驟使用新建工程向?qū)Ы⒁粋€(gè)新工程: (1) 選擇FileNew Project Wizard菜單,顯示如圖2.16所示的對(duì)話框,告訴使用者本向?qū)軌蛲瓿赡男┕ぷ?,如果以后不需要這個(gè)對(duì)話框出現(xiàn),則選中Dont show me this introduction again,按Next按鈕,出現(xiàn)如圖2.17所示的對(duì)話框。,圖2.16 新建工程向?qū)瓿傻娜蝿?wù),圖2.17 建

18、立一個(gè)新工程,(2) 設(shè)定工程的工作目錄為C:de2introtutorial,當(dāng)然也可以選其他目錄。工程必須有一個(gè)名字,一般情況下,這個(gè)工程的名字與設(shè)計(jì)的頂層實(shí)體同名,這里我們將工程命名為light。按Next按鈕,由于目錄C:de2introtutorial不存在,Quartus會(huì)出現(xiàn)如圖2.18的對(duì)話框,按是(Y)按鈕,顯示如圖2.19所示的對(duì)話框。,圖2.18 Quartus為工程新建一個(gè)目錄,圖2.19 加入設(shè)計(jì)文件,(3) 用向?qū)Э梢约尤胍延械脑O(shè)計(jì)文件,如果不需要加入已有的文件,則按Next按鈕,出現(xiàn)如圖2.20所示的對(duì)話框,我們這里假設(shè)沒有已經(jīng)設(shè)計(jì)好的文件。,圖2.20 選擇器件

19、,(4) 選擇Cyclone系列FPGA作為目標(biāo)器件系列,Available devices框中列出當(dāng)前版本Quartus支持的該系列的所有器件,具體的器件可以由Quartus自動(dòng)選擇,也可以由用戶選擇,DE2平臺(tái)上使用的FPGA是EP2C35F672C6,因此直接選擇該器件。按Next按鈕后出現(xiàn)如圖2.21所示的對(duì)話框。,圖2.21 選擇其他的EDA工具,(5) Quartus支持第三方提供的EDA工具,在這個(gè)對(duì)話框中可以選擇使用第三方的設(shè)計(jì)輸入/綜合工具、EDA仿真工具和時(shí)序分析工具,本例中全部使用Altera的EDA工具。 (6) 按Next按鈕出現(xiàn)如圖2.22所示的匯總對(duì)話框,按Fin

20、ish按鈕,返回Quartus主界面,工程light已經(jīng)成為當(dāng)前工程了,如圖2.23所示。,圖2.22 工程設(shè)置匯總對(duì)話框,圖2.23 新工程建立之后Quartus的主界面,2.10.2 設(shè)計(jì)輸入 Quartus軟件中可以用圖形編輯器和文本編輯器來完成設(shè)計(jì)輸入,我們先用圖形編輯器完成如圖2.13所示的電路。用FileNew菜單打開如圖2.24所示的對(duì)話框,選擇Block Diagram/ Schematic File,單擊OK按鈕,打開圖形編輯器。首先為新建立的文件命名,用FileSave as菜單打開如圖2.25所示的對(duì)話框,在保存類型中選擇Block Diagram/Schematic F

21、ile (*.bdf),在文件名中輸入light,這個(gè)文件名稱應(yīng)與圖2.17中的完全一致,選中Add file to current project,單擊保存(S)按鈕,將文件在目錄C:de2introtutorial中保存為light.bdf并把該文件加入到工程中作為頂層實(shí)體,完成之后顯示如圖2.26所示的圖形編輯窗口。 用圖形編輯器輸入圖2.13所示電路的過程可分為四步:導(dǎo)入邏輯門電路符號(hào)、導(dǎo)入輸入/輸出符號(hào)、用線連接節(jié)點(diǎn)、編譯電路。,圖2.24 選擇用圖形編輯器輸入設(shè)計(jì),圖2.25 為文件命名,圖2.26 圖形編輯窗口,1導(dǎo)入邏輯門電路符號(hào) 用鼠標(biāo)雙擊圖形編輯器窗口的空白處或者單擊圖形編

22、輯器窗口左側(cè)工具條中的圖標(biāo),彈出如圖2.27所示的對(duì)話框。展開Libraries框中的層次結(jié)構(gòu),先展開c:/altera/quartus60/libraries/,然后展開primitives庫,再展開logic庫,在logic庫中包含了基本的邏輯電路。選擇二輸入與門and2,單擊OK按鈕,二輸入與門的符號(hào)就會(huì)出現(xiàn)在圖形編輯器窗口,將鼠標(biāo)移動(dòng)到想要放置二輸入與門的位置并單擊鼠標(biāo)即可將二輸入與門放置到圖形編輯器中??梢灾貜?fù)上述步驟放置第二個(gè)與門,也可以將鼠標(biāo)移至已有的二輸入與門,按鼠標(biāo)右鍵并拖動(dòng)到目標(biāo)位置,放開鼠標(biāo)右鍵,在彈出的菜單中選擇Copy here,復(fù)制一個(gè)二輸入與門,或者按Ctrl鍵的

23、同時(shí),用鼠標(biāo)左鍵拖動(dòng)已有二輸入與門至目標(biāo)位置,這樣也可以復(fù)制一個(gè)二輸入與門。按以上步驟放置其他門電路,選中門電路,單擊圖標(biāo),可以將門電路旋轉(zhuǎn)90。在圖形編輯器中放置的門電路符號(hào)如圖2.28所示。,圖2.27 從符號(hào)庫中選擇符號(hào),圖2.28 在圖形編輯器中放置門電路符號(hào),2導(dǎo)入輸入/輸出符號(hào) 按照同樣的步驟,從primitives/pin庫中選擇input(輸入引腳)和output(輸出引腳)放置在電路中,如圖2.29所示。,圖2.29 放置輸入/輸出引腳,雙擊左上方的引腳,彈出如圖2.30所示的對(duì)話框,在Pin name(s)欄中輸入x1,將該引腳命名為x1,用同樣的方法命名x2和f。,圖2.

24、30 為引腳命名,3用線連接節(jié)點(diǎn) 點(diǎn)擊直角連線工具圖標(biāo),將鼠標(biāo)置于x1引腳的右邊沿,按下鼠標(biāo)左鍵保持不放,拖動(dòng)連線至與門上面引腳的端點(diǎn),放開鼠標(biāo),即可將輸入引腳x1和與門的引腳相連,依次按照?qǐng)D2.31所示連接各節(jié)點(diǎn)。注意當(dāng)兩條線相連時(shí),在連接點(diǎn)會(huì)出現(xiàn)一個(gè)圓點(diǎn)。如果連線有誤,可用鼠標(biāo)選中錯(cuò)誤的連線,按Del鍵刪除。 連完線以后,點(diǎn)擊選擇與聰明連線工具,可以選擇、拖動(dòng)、刪除連線和符號(hào)。完成之后的原理圖如圖2.31所示。最后保存light.bdf文件。,圖2.31 完成之后的原理圖,4編譯電路 編譯器調(diào)用一系列的工具對(duì)輸入的電路原理圖文件light.bdf進(jìn)行分析、綜合電路,并針對(duì)目標(biāo)器件生成一個(gè)實(shí)

25、現(xiàn)。 使用processingstart compilation菜單或者單擊工具按鈕運(yùn)行編譯器。編譯過程分多個(gè)步驟完成,編譯過程中各步驟的進(jìn)程在Quartus窗口左側(cè)的Status窗格中顯示,如果編譯過程中沒有錯(cuò)誤出現(xiàn),會(huì)彈出一個(gè)編譯成功的提示框,單擊確定按鈕后,Quartus顯示如圖2.32所示的界面。在Quartus窗口下部的Messages窗格中,將會(huì)顯示編譯過程中出現(xiàn)的提示信息。,圖2.32 成功編譯之后的顯示,編譯結(jié)束之后,Quartus還會(huì)自動(dòng)打開一個(gè)Compilation Report窗口,這個(gè)窗口可以拖動(dòng)、關(guān)閉、最大化或最小化,關(guān)閉后用ProcessingCompilation

26、 Report命令可以重新打開該窗口。報(bào)告表明實(shí)現(xiàn)這個(gè)電路只占用了1個(gè)邏輯單元和3個(gè)引腳。用窗口左側(cè)的層次結(jié)構(gòu)可以查看各部分的詳細(xì)報(bào)告。 如果在編譯過程中有錯(cuò)誤出現(xiàn),編譯會(huì)自動(dòng)終止,并在消息框中顯示錯(cuò)誤信息,每一個(gè)錯(cuò)誤有單獨(dú)的一個(gè)錯(cuò)誤信息提示。雙擊消息框中的錯(cuò)誤信息提示,Quartus會(huì)自動(dòng)定位錯(cuò)誤的位置,要獲得關(guān)于該錯(cuò)誤的幫助,可以選中該錯(cuò)誤信息,并按F1鍵。如果在編譯過程中有警告信息,也會(huì)在消息框中列出,使用相同的方法可以定位產(chǎn)生警告的電路的位置。,我們這里可以看一下編譯出錯(cuò)的情況。打開light.bdf,刪除上邊的與門和或門之間的連線,保存文件,重新編譯工程。Quartus彈出一個(gè)窗口,

27、提示編譯不成功,按OK按鈕關(guān)閉該窗口,在編譯報(bào)告窗口中選擇Analysis & synthesis欄中的Messages,顯示如圖2.33所示的窗口,第一個(gè)錯(cuò)誤信息指出或門的一個(gè)輸入沒有源信號(hào),雙擊這個(gè)信息,Quartus自動(dòng)打開light.bdf,并選中錯(cuò)誤位置,如圖2.34所示。修改錯(cuò)誤并重新編譯工程。,圖2.33 編譯錯(cuò)誤信息,圖2.34 確定錯(cuò)誤位置,2.10.3 分配引腳 在前面的編譯過程中,Quartus自動(dòng)為設(shè)計(jì)選擇輸入/輸出引腳,而在DE2平臺(tái)上,F(xiàn)PGA與外部器件的連線是確定的,要讓電路在DE2平臺(tái)上正常工作,我們必須為設(shè)計(jì)分配引腳。我們選擇SW1和SW0作為輸入x1和x2,

28、參照本書附錄B可知,它們分別對(duì)應(yīng)FPGA的引腳N26和N25。選擇綠色發(fā)光二極管LEDG0作為輸出,指示f的狀態(tài),對(duì)應(yīng)FPGA的引腳AE22。 用AssignmentsPins菜單打開如圖2.35所示的引腳規(guī)劃器,在引腳規(guī)劃器下部的All Pins窗格中列出了所有引腳,節(jié)點(diǎn)f、x1和x2對(duì)應(yīng)的Location一欄都是空的,說明沒有分配引腳,單擊節(jié)點(diǎn)f的location欄,在下拉框中選擇PIN_AE22,并用同樣的方法分別為x1和x2分配引腳PIN_N26和PIN_N25。,圖2.35 引腳規(guī)劃器窗口,引腳分配的結(jié)果可以導(dǎo)出到.qsf文件中,以用于其他工程的引腳分配,也可以導(dǎo)入其他工程已經(jīng)分配好

29、的引腳。DE2系統(tǒng)光盤中提供了一個(gè)名為DE2_pin_assignments.csv的文件,包含了DE2平臺(tái)上FPGA的引腳分配,用AssignmentsImport Assignments 菜單并選擇文件名,可導(dǎo)入DE2_pin_assignments.csv中的引腳配置。但在此例中,如果要用該文件中的引腳配置,則需要在light.bdf中將節(jié)點(diǎn)名稱f改為LEDG0,將x1和x2分別改為SW1和SW0并重新編譯。,2.10.4 電路仿真 在DE2平臺(tái)上實(shí)現(xiàn)該電路之前,我們先在Quartus軟件中對(duì)電路進(jìn)行功能仿真,以測試設(shè)計(jì)的正確性。在仿真之前,先要建立一個(gè)矢量波形文件,包含輸入信號(hào)的波形,

30、另外還要指定所要觀察的輸出信號(hào)。仿真時(shí)仿真工具將矢量波形作為輸入加到電路模型上并觀察其響應(yīng),按照以下步驟建立矢量波形文件: (1) 用FileNew菜單打開如圖2.36所示的對(duì)話框。,圖2.36 建立一個(gè)矢量波形文件,(2) 單擊Other Files,選擇Vector Waveform File,單擊OK按鈕,打開矢量波形編輯器窗口,如圖2.37所示。 (3) 保存矢量波形文件為light.vwf。用EditEnd Time菜單設(shè)定仿真終止時(shí)間為200ns。用ViewFit in Window菜單在窗口中顯示整個(gè)仿真的時(shí)間范圍。,圖2.37 矢量波形編輯器窗口,(4) 將要仿真的輸入/輸出等

31、電路節(jié)點(diǎn)加入到波形中來。用EditInsert Node or Bus菜單打開如圖2.38所示的窗口,可以在Name框中直接輸入節(jié)點(diǎn)的名字并按OK按鈕添加電路節(jié)點(diǎn)。更方便的方法是用Node Finder工具,單擊圖2.38中的“Node Finder”按鈕,打開如圖2.39所示的窗口,在Filter下拉框中選擇所要尋找節(jié)點(diǎn)的類型,這里我們選擇Pins: all,單擊List按鈕,在Nodes Found框中列出所有的引腳。,圖2.38 Insert Node or Bus對(duì)話框,圖2.39 Node Finder窗口,(5) 單擊信號(hào)x1,然后單擊按鈕,將x1添加到右邊的Selected No

32、des框中,用同樣的方法將信號(hào)x2和f添加進(jìn)來,單擊OK按鈕關(guān)閉Node Finder對(duì)話框,再按OK按鈕返回波形編輯器窗口,如圖2.40所示。,圖2.40 需要仿真的節(jié)點(diǎn),(6) 接下來要做的事情是確定輸入信號(hào)x1和x2,輸出f的邏輯值由仿真器自動(dòng)生成。在本例中,x1和x2只有四種可能的輸入組合??梢杂眠x擇工具和波形編輯工具繪制輸入x1和x2的波形。用波形編輯工具選中所要編輯的波形區(qū)間,用EditValue菜單下的各種工具修改波形,或者用窗口左側(cè)工具欄中對(duì)應(yīng)的工具改變波形。按圖2.41所示編輯x1和x2的波形,并保存矢量波形文件。,圖2.41 測試用的矢量波形,前文提到過,仿真分為功能仿真(

33、Functional Simulation)和時(shí)序仿真(Timing Simulation)。功能仿真認(rèn)為FPGA中的邏輯單元和連線是完美的,且信號(hào)傳輸中不存在傳輸延遲,這種仿真比較簡單。功能仿真用來考察電路功能的正確性,在輸入端加入各種可能的激勵(lì),觀察輸出端的響應(yīng)是否滿足設(shè)計(jì)要求,當(dāng)設(shè)計(jì)規(guī)模比較大時(shí),可能無法列出所有可能的輸入狀態(tài)。時(shí)序仿真則比較復(fù)雜,考慮了信號(hào)傳輸中的延遲。,功能仿真的步驟如下: (1) 用AssignmentsSettings菜單打開Settings窗口。 (2) 在窗口左側(cè)的設(shè)置分類列表中,選擇Simulator Settings,Quartus已經(jīng)把工程中唯一的.vw

34、f文件light.vwf作為仿真輸入文件。 (3) 在Simulation mode中選擇Functional,如圖2.42所示。,圖2.42 設(shè)置仿真模式,(4) 按OK按鈕,完成設(shè)置。 (5) 用ProcessingGenerate Functional Simulation Netlist菜單產(chǎn)生功能仿真所需要的網(wǎng)表。 (6) 用ProcessingStart Simulation菜單或工具按鈕啟動(dòng)功能仿真。 仿真結(jié)束后,Quartus提示仿真完成,并自動(dòng)切換到Simulation Report窗口,窗口的左側(cè)是仿真報(bào)告的分類列表,窗口右側(cè)是仿真波形圖,并在窗口中提示仿真模式為功能仿真,

35、如圖2.43所示。,圖2.43 功能仿真結(jié)果,時(shí)序仿真的步驟如下: (1) 用AssignmentsSettings菜單打開Settings窗口。 (2) 在窗口左側(cè)的設(shè)置分類列表中選擇Simulator Settings,Quartus已經(jīng)把工程中唯一的.vwf文件light.vwf作為仿真輸入文件。 (3) 在Simulation mode中選擇Timing。 (4) 按OK按鈕,完成設(shè)置。 (5) 用ProcessingStartStart Analysis & Synthesis菜單、ProcessingStartStart Fitter菜單和ProcessingStartStart

36、Timing Analyzer菜單生成時(shí)序仿真所需要的網(wǎng)表。 (6) 用ProcessingStart Simulation菜單或工具按鈕啟動(dòng)時(shí)序仿真。,仿真結(jié)束后,Quartus提示仿真完成,并自動(dòng)切換到Simulation Report窗口,窗口中提示仿真模式為時(shí)序仿真,如圖2.44所示。注意圖中從x2狀態(tài)變化到輸出f狀態(tài)發(fā)生相應(yīng)的變化之間有11ns左右的延時(shí),而從輸入x1狀態(tài)變化到輸出f狀態(tài)發(fā)生相應(yīng)的變化之間有約6ns的延時(shí),這些延時(shí)都是由FPGA內(nèi)部邏輯單元和連線的延時(shí)造成的,不同的布線,延時(shí)長短也不一樣。另外請(qǐng)注意,在約106ns處,f由1變?yōu)?,然后在約111ns處f又由0變?yōu)?,

37、這是因?yàn)閤1的傳輸延時(shí)為6ns,在106ns處x1的改變已經(jīng)生效而x2的改變還未生效,所以得到x1=1、x2=0時(shí)相應(yīng)的輸出,到111ns左右,x2的改變才生效,f輸出高電平。,圖2.44 時(shí)序仿真結(jié)果,2.10.5 編程與配置FPGA DE2平臺(tái)上內(nèi)嵌了USB Blaster下載組件,可以通過一條USB連接線與電腦相連,并且通過兩種模式配置FPGA:一種是JTAG模式,通過USB Blaster直接配置FPGA,但掉電后,F(xiàn)PGA中的配置內(nèi)容會(huì)丟失,再次上電需要用電腦對(duì)FPGA重新配置;另一種模式是在AS模式下,通過USB Blaster對(duì)DE2平臺(tái)上的串行配置器件EPCS16進(jìn)行編程,平臺(tái)上電后,EPCS16自動(dòng)配置FPGA。通過DE2平臺(tái)上的SW19選擇配置模式,SW19置于RUN位置,即選擇JTAG模式配置

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論