工程師分析實(shí)例,帶你走近Xilinx FPGA設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一.概述
本文主要幫助大家熟悉利用ISE進(jìn)行Xilinx 公司FPGA 代碼開(kāi)發(fā)的基本流程。主要是幫助初學(xué)者了解和初步掌握 ISE 的使用,不需要 FPGA 的開(kāi)發(fā)基礎(chǔ),所以對(duì)每個(gè)步驟并不進(jìn)行深入的討論。
本文介紹的內(nèi)容從新建 project 一直到下載到硬件觀察現(xiàn)象為止,涵蓋整個(gè)開(kāi)發(fā)過(guò)程??紤]到我們的開(kāi)發(fā)一般以 Verilog HDL 或 VHDL 為主,在本文中未介紹原理圖輸入工具和 IP 核使用工具等。這同時(shí)是出于為了使文章脈絡(luò)更清晰,讓大家更快地學(xué)會(huì) ISE 的考慮。關(guān)于這些專(zhuān)用工具,可以參看 HELP 或者其他文檔。
為了更直觀的理解,我們需要一個(gè)實(shí)驗(yàn)平臺(tái),在本文中,采用的是 Digital Power Studio 工作組 FPGA SPARK1.1 綜合開(kāi)發(fā)平臺(tái)的 Xilinx 標(biāo)準(zhǔn)型開(kāi)發(fā)系統(tǒng)。如圖 1 所示(圖中為 Altera 子板,只需改成 Xilinx 的即可)。在該開(kāi)發(fā)系統(tǒng)中,所采用的芯片是SPARTANII系列的XC2S200 。
圖1 FPGA SPARK1.1 外觀圖
二.實(shí)現(xiàn)功能
在如上系統(tǒng)中右邊有一個(gè) 128×64 帶背光的點(diǎn)陣型液晶。我們的實(shí)驗(yàn)就是用Verilog HDL 編寫(xiě)一段代碼驅(qū)動(dòng)液晶顯示一個(gè)流氓兔。其效果如圖 2 所示:
圖2 點(diǎn)陣液晶上顯示流氓兔的效果圖
三.軟件準(zhǔn)備
本文介紹的是 Xilinx 公司的 ISE 開(kāi)發(fā)環(huán)境?,F(xiàn)在最新的版本是 ISE7.1,其界與 ISE5.x/ISE6.x 一致。為了更好地進(jìn)行仿真,還需要安裝 Modsim。但是 ISE本身可以進(jìn)行仿真,也可以不安裝 Modsim。流程介紹:
1.新建項(xiàng)目
在開(kāi)始—〉程序—〉Xilinx ISE 中找到 Project Navigator,點(diǎn)擊打開(kāi)。也可以通過(guò)雙擊桌面上 Project Navigator 的快捷方式打開(kāi)。ISE 開(kāi)發(fā)環(huán)境如圖 3 所示:
圖3 ISE 開(kāi)發(fā)環(huán)境
圖3 中選擇 File—〉New Project,進(jìn)入圖 4;
圖4 新建 project 界面
在 Project Name 欄輸入項(xiàng)目名稱(chēng),Project 中填入該項(xiàng)目的目錄,Project Device Options 中,Device Family 為所用芯片所在系列,Device 為所用芯片,Package為所用芯片的封裝形式(每個(gè)芯片可能有不同封裝的幾種,如 XC2S200 有 3 種封裝的),Speed Grade 為速度等級(jí),Design Flow 為所選用綜合方式(綜合工具
和代碼語(yǔ)言)。由于采用的是 FPGA SPARK1.1,采用如圖 5 的設(shè)置。
圖5 新建項(xiàng)目的信息輸入
其中 XST Verilog 表示采用 ISE 自帶的綜合器,代碼語(yǔ)言為 Verilog HDL,ISE支持其他綜合工具的調(diào)用,也支持標(biāo)準(zhǔn) edif 文件的輸入。XST 是 ISE 自帶的綜合工具,由于 Xilinx 對(duì)自身的硬件了解程度比任何第三方軟件開(kāi)發(fā)商都更深,故XST 的綜合性能有自身獨(dú)特的優(yōu)點(diǎn)。
點(diǎn)擊 ok,新建項(xiàng)目完成??梢栽谙鄳?yīng)目錄下看到生成的文件。效果如圖 6。如果要更改硬件的設(shè)置,可以雙擊圖 6 中模塊視窗內(nèi)藍(lán)色選中的所示對(duì)應(yīng)選單,即可進(jìn)入 project properties 界面重新進(jìn)行設(shè)置。
圖6 效果圖[!--empirenews.page--]2.編寫(xiě)和導(dǎo)入代碼文件
如圖 7 中所示,在 Project 菜單下,選擇 New Source 建立新的代碼文件。彈出的對(duì)話框如圖 8 所示。
圖7 Project 菜單
圖8 新建代碼文件對(duì)話框
在 File 中輸入文件名稱(chēng),Location 最好選用和 project 文件所在目錄同一個(gè)目錄。將 Add to project 選單選中,該文件將自動(dòng)被加入當(dāng)前 project 中。在左邊窗口中選擇建立的文件類(lèi)型,如圖 8 選為 Verilog Module。點(diǎn)擊下一步,如圖 9所示。
圖9 Verilog 代碼文件定義對(duì)話框
在圖 9 中,可以定義代碼文件的輸入輸出端口,可以不進(jìn)行定義,直接點(diǎn)擊下一步。如果進(jìn)行了定義的話,生成的代碼文本文件會(huì)自動(dòng)加上定義好的輸入輸出端口。點(diǎn)擊下一步,進(jìn)入下一對(duì)話框后點(diǎn)擊完成,即可。如圖 10 所示。在圖10 中,可見(jiàn)左面 Module View 中 project 中已經(jīng)多處了剛才建立的 lcd 模塊,右邊打開(kāi)的 lcd 文件界面中,可以進(jìn)行代碼的編寫(xiě)。
圖10 代碼文件生成后界面
前面介紹的是編寫(xiě)代碼,如果已經(jīng)用其它工具編寫(xiě)好了代碼,或者有現(xiàn)成的代碼,則不需要再重新編寫(xiě)了,下面介紹如何將已有的 verilog 文件導(dǎo)入到 project中。
在圖 7 中不要選擇 New Source,而選擇 Add Source。在彈出的窗口中找到已有代碼文件(可同時(shí)加多個(gè)文件),并點(diǎn)擊“打開(kāi)”即可。注意:Add Source 是將當(dāng)前選擇的代碼加入到當(dāng)前 project 中,而 Add Copy of Source 是將代碼文件復(fù)制到當(dāng)前 project 所在目錄中,并將復(fù)制后的文件加到 project 中。建議使用后者。添加后結(jié)果如圖 11 所示。(在本文例子中,加入的是 Digital Power 提供的液晶程序 lcd.v。)可以看到在Module View 窗口中將顯示出 verilog 代碼中所有Module,并顯示出其層次結(jié)構(gòu)以及其所在的文件。
圖11 Add Source 結(jié)果圖
3.調(diào)用 Modsim 進(jìn)行仿真
由于 modsim 的性能非常優(yōu)秀,以及它的普及程度廣,在本文中,介紹如何調(diào)用 modsim。首先,在 edit 菜單中選擇 Preferences 選項(xiàng),彈出如圖 12 所示對(duì)話框。在 Partner Tools 中的 Model Tech Simulator 輸入框中填入您所安裝的 Modsim 應(yīng)用程序文件的路徑。若您所裝的 Modsim 版本為專(zhuān)門(mén)為 Xilinx 編寫(xiě)的 Modsim Xilinx
edition版本,可以省略該步驟。經(jīng)過(guò)設(shè)置以后,回到如圖 13 所示界面。
圖12 Preferences 對(duì)話框
圖13 調(diào)用 Modsim[!--empirenews.page--]圖13 中Module View 窗口中選中代碼的最頂層模塊。而后如圖 13 藍(lán)色部位所示,在 Process View 窗口中的 Launch Modelsim Simlator,將自動(dòng)打開(kāi) Modsim,并且已將當(dāng)前 project 的相關(guān)信息加載到了 Modsim 中。如圖 14 所示。要注意的是,后仿真也是如此調(diào)用 Modsim。關(guān)于 Modsim 的使用請(qǐng)參考相關(guān)文檔。如果需要仿真的不是最頂層模塊,則在 Module View 窗口中選中相應(yīng)的代碼文件,用同樣的步驟調(diào)用仿真。
圖14 調(diào)用的 Modsim
4.約束文件
ISE 是一款基于約束的開(kāi)發(fā)工具。在進(jìn)行高速數(shù)字電路設(shè)計(jì)的時(shí)候,需要在綜合、映射、布線時(shí)附加約束條件,以便控制綜合、映射、布線過(guò)程,使設(shè)計(jì)滿運(yùn)行速度,使用資源和引腳位置等要求。約束包括時(shí)序約束、分組約束和區(qū)域約束。在本文中,將介紹最常用的Constraints Editor 約束編輯器,以及時(shí)序約束和引腳綁定(該兩者最為基本)。首先,像第二步編寫(xiě)代碼文件中一樣建立約束文件(.ucf 文件),在本文中,如圖 15 所示,可以看到 lcd_c.ucf 文件即為一個(gè)約束文件。新建時(shí),唯一的不同是在圖 8 中左面對(duì)話框中應(yīng)選擇 Implementation Constraints File。同樣地,如果已經(jīng)有現(xiàn)成的約束文件,也可以通過(guò)和代碼文件相同的方法導(dǎo)入。如圖 15 所示,在 Module View 窗口中選中代碼的最頂層模塊,而后在 ProcessView 窗口中雙擊 Create Timing Constraints或者 Create Area Constraints,將自動(dòng)打開(kāi) Constraints Editor 約束編輯器。
需要注意的是,雙擊 Assign Package Pins 將打開(kāi)引腳與區(qū)域約束編輯器PACE,由于 Constraints Editor 約束編輯器完全可以完成引腳綁定的功能,對(duì)于PACE 的使用,本文不再進(jìn)行詳細(xì)討論。Constraints Editor 如圖 16 所示。
圖15 在project navigator 中調(diào)用 Constraints Editor
圖16 Constraints Editor 界面
如圖 16 所示,共有四類(lèi)約束界面,Global 為附加全局約束,Ports 為附加端口約束,Advanced 為附加分組約束和時(shí)序約束,Misc 為附加專(zhuān)用約束。常用的是 Ports,其中可以進(jìn)行引腳綁定,如圖 17 所示。雙擊對(duì)應(yīng)信號(hào)的Location 框,可以進(jìn)行輸入。在引腳號(hào)前必須加上字母 p。在這次 LCD 實(shí)驗(yàn)中,可以直接導(dǎo)入 digital power 提供的 lcd_c.ucf 文件,也可以自己在 Constraints Editor 中如圖 17 中所示一樣進(jìn)行設(shè)置。
圖17 附加引腳約束
通過(guò)以上設(shè)置,就完成了約束,在這里附加提到一點(diǎn)就是,在 Constraints Editor 中,下方的對(duì)話框?qū)@示 ucf 文件的內(nèi)容。約束文件也可以通過(guò)文本輸入的方式完成,在圖 15 中雙擊 Edit Constraints(Text)即可。5.綜合與實(shí)現(xiàn)
在進(jìn)行完約束以后,就可以進(jìn)行綜合與約束了。綜合與實(shí)現(xiàn)的工作將由 ISE自動(dòng)完成,用戶(hù)通過(guò)約束文件和對(duì) properties 選項(xiàng)控制實(shí)現(xiàn)對(duì)整個(gè)過(guò)程的控制。整個(gè)過(guò)程將產(chǎn)生映射、布線等一系列時(shí)序報(bào)告以及 RTL schematic View,還可以利用 XPower 進(jìn)行功耗分析,便于用戶(hù)對(duì)綜合與實(shí)現(xiàn)的結(jié)果有個(gè)詳細(xì)的了解。
綜合與實(shí)現(xiàn)如圖 18 所示。
圖18 實(shí)現(xiàn)與綜合
在 process view 中,Synthesize 為綜合過(guò)程,Implement Design 為實(shí)現(xiàn)過(guò)程。在其上點(diǎn)擊右鍵選擇 properties 選項(xiàng),將進(jìn)入 properties 對(duì)話框,可以對(duì)過(guò)程要求進(jìn)行控制。一般直接點(diǎn)擊右鍵選擇 run all 即可。
6.下載
最后就只剩下下載工作了。在下載之前,必須先將硬件準(zhǔn)備好。首先,如圖 19 所示,連接好電源線。
圖19 連接電源線
其次,如圖 20 所示,連接好下載線。
圖20 連接下載線[!--empirenews.page--]在硬件準(zhǔn)備好后,如圖 21 所示,雙擊 Configure Device(iMPACT),打開(kāi) ISE中集成的芯片下載具 iMPACT。
圖21 打開(kāi) iMPACT
iMPACT 如圖 22 所示。
圖22 iMPACT
在圖 22 中,點(diǎn)擊下一步。
圖23 選擇配置 FPGA 的方式
如圖 23 所示,是選擇配置 FPGA 的方式,選擇第一項(xiàng)邊界掃描(JTAG)方式。點(diǎn)擊下一步。進(jìn)入下一界面后,點(diǎn)擊完成。若硬件連接正確,將進(jìn)入圖 24 所示界面,XC2S200 芯片將被自動(dòng)搜索到,顯示出來(lái)。若硬件連接有問(wèn)題,可以在正確改接硬件電路以后,在空白出點(diǎn)擊右鍵選擇 Initialize Chain 略過(guò)以上一些步驟直接開(kāi)始搜索芯片。若連接有問(wèn)題,將彈出對(duì)話框選擇連接端口,一般采用默認(rèn)的 LPT 端口(并口)即可。
雙擊圖中 XC2S200 的圖標(biāo),在彈出的窗口中選擇你所需要下載的 bit 文件,點(diǎn)擊 ok 即可。在 XC2S200 上點(diǎn)擊右鍵選擇 PROGRAMME,并在彈出的對(duì)話框中選擇programme 將開(kāi)始下載。
下載成功后如圖所示。
這時(shí)你就可以在液晶上看到如圖 2 所示的流氓兔效果了。