《Xilinx FPGA設(shè)計(jì)基礎(chǔ)》課件第2章_第1頁(yè)
《Xilinx FPGA設(shè)計(jì)基礎(chǔ)》課件第2章_第2頁(yè)
《Xilinx FPGA設(shè)計(jì)基礎(chǔ)》課件第2章_第3頁(yè)
《Xilinx FPGA設(shè)計(jì)基礎(chǔ)》課件第2章_第4頁(yè)
《Xilinx FPGA設(shè)計(jì)基礎(chǔ)》課件第2章_第5頁(yè)
已閱讀5頁(yè),還剩174頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章開發(fā)軟件與開發(fā)流程2.1開發(fā)軟件簡(jiǎn)介

2.2一個(gè)簡(jiǎn)單的開發(fā)項(xiàng)目

2.3開發(fā)軟件使用進(jìn)階

FPGA的設(shè)計(jì)開發(fā)流程一般包括設(shè)計(jì)輸入、綜合、功能仿真、實(shí)現(xiàn)(布局布線),時(shí)序仿真、生成配置文件和配置FPGA等步驟,其流程圖如圖2.1所示。本章首先用一個(gè)開發(fā)實(shí)例介紹一般的開發(fā)流程,然后介紹開發(fā)流程中各部分在整個(gè)開發(fā)流程中完成的功能和所起的作用。圖2.1XilinxFPGA一般開發(fā)流程

2.1開發(fā)軟件簡(jiǎn)介

2.1.1ISE開發(fā)軟件簡(jiǎn)介

Xilinx公司有很多集成的開發(fā)軟件,主要包括以下幾部分:

ISE(IntegratedSoftwareEnvironment)軟件是一個(gè)集成的開發(fā)環(huán)境,在這一環(huán)境中可以完成系統(tǒng)級(jí)CPLD和FPGA開發(fā)的全套流程,集成的功能包括設(shè)計(jì)輸入、邏輯綜合、仿真驗(yàn)證、布局布線以及FPGA配置等。

Xilinx公司還有一些輔助開發(fā)工具,如PlanAhead等,在不涉及PowerPC硬核和Microblaze軟核的系統(tǒng)設(shè)計(jì)中,我們通常使用ISE就可以完成一般項(xiàng)目的開發(fā)。2.1.2ISE9.1i的安裝

ISE軟件可以運(yùn)行在Windows2000、WindowsXP、WindowsVista和Linux(32位)操作系統(tǒng)上,在WindowsXP上的安裝步驟如下:

(1)將ISE9.1DVD光盤放入計(jì)算機(jī)光驅(qū)中,安裝光盤將自動(dòng)啟動(dòng)安裝界面(如圖2.2所示)。如果安裝光盤沒(méi)有自動(dòng)啟動(dòng)安裝程序,用戶可以進(jìn)入安裝光盤目錄,用鼠標(biāo)左鍵雙擊光驅(qū)根目錄下的Setup.exe圖標(biāo)(見圖2.3)啟動(dòng)安裝過(guò)程。圖2.2ISE安裝啟動(dòng)界面圖2.3ISE安裝圖標(biāo)

(2)安裝軟件經(jīng)過(guò)初始化操作之后進(jìn)入安裝界面,如圖2.4所示,首先輸入購(gòu)買ISE軟件時(shí)Xilinx公司提供的序列號(hào),按照安裝向?qū)У奶崾?,同意軟件協(xié)議并點(diǎn)擊一系列確認(rèn)按鈕之后,進(jìn)入安裝目錄選擇界面。圖2.4輸入序列號(hào)

(3)在圖2.5上面的框中填入安裝目錄,默認(rèn)情況下為C盤根目錄。圖2.5選擇安裝目錄

(4)單擊下一步選擇安裝的組件后,進(jìn)入確認(rèn)安裝界面,如圖2.6所示。圖2.6確認(rèn)安裝界面

(5)單擊圖2.6中的Install按鈕,開始ISE的安裝過(guò)程。安裝的過(guò)程中,安裝界面顯示了ISE的一些新特性,安裝完成后,雙擊桌面的ISE9.1圖標(biāo)就可以打開ISE開發(fā)環(huán)境界面,如圖2.7所示。圖2.7ISE開發(fā)環(huán)境界面2.1.3ModelSim仿真軟件簡(jiǎn)介

ModelSim是Mentor公司開發(fā)的一款功能強(qiáng)大的仿真軟件,在通用的仿真軟件中,仿真速度最快。ModelSim在設(shè)計(jì)、編譯、仿真、測(cè)試和調(diào)試開發(fā)中,有一整套的工具可以使用,操作起來(lái)非常靈活。但它側(cè)重于仿真,不能針對(duì)具體的器件編譯,在鏈接到具體器件的仿真庫(kù)文件后,可以對(duì)對(duì)應(yīng)的器件進(jìn)行布線后仿真。因此我們?cè)谑褂肕odelSim時(shí),常將ModelSim作為ISE的第三方嵌入工具使用。

ModelSim軟件的主界面如圖2.8所示。圖2.8ModelSim仿真界面 2.2一個(gè)簡(jiǎn)單的開發(fā)項(xiàng)目

基于FPGA的項(xiàng)目開發(fā)是一個(gè)比較復(fù)雜的過(guò)程,為了滿足時(shí)序收斂,需要進(jìn)行許多循環(huán)操作的步驟。這里我們簡(jiǎn)化這些步驟,以一個(gè)最簡(jiǎn)單的開發(fā)實(shí)驗(yàn)為例,逐步了解FPGA開發(fā)過(guò)程中需要熟悉的軟件操作。之前沒(méi)有接觸過(guò)VHDL語(yǔ)言和FPGA開發(fā)的讀者可以不必關(guān)心實(shí)驗(yàn)過(guò)程中涉及到的一些名詞和代碼,而只需在實(shí)驗(yàn)的過(guò)程中了解開發(fā)環(huán)境的相關(guān)操作。

最簡(jiǎn)單的開發(fā)實(shí)驗(yàn)

實(shí)驗(yàn)介紹:

本實(shí)驗(yàn)將完成圖2.9所示的電路圖。實(shí)驗(yàn)的過(guò)程中將完成MY_AND2和MY_OR2模塊的VHDL描述程序,并用這兩個(gè)模塊完成頂層模塊AND_OR的結(jié)構(gòu)化描述。圖2.9AND_OR電路圖實(shí)驗(yàn)?zāi)繕?biāo):

通過(guò)這個(gè)實(shí)驗(yàn)將學(xué)會(huì)以下幾點(diǎn):

編寫簡(jiǎn)單門電路的RTL級(jí)描述程序;

創(chuàng)建簡(jiǎn)單電路的結(jié)構(gòu)級(jí)VHDL描述程序;

用VHDL語(yǔ)言建立電路的層級(jí)描述;

熟悉ISE集成環(huán)境;

使用ISE集成環(huán)境的HDL編輯器;

熟悉ISE第三方集成的仿真工具M(jìn)odelSimSE的使用;

熟悉一般項(xiàng)目開發(fā)的步驟。實(shí)驗(yàn)過(guò)程:

(1)創(chuàng)建一個(gè)新的工程,工程命名為“l(fā)ab1”。

雙擊桌面的XilinxISE圖標(biāo)或者單擊“開始→XilinxISE9.1i→ProjectNavigator”打開ISE開發(fā)環(huán)境。

在ISE開發(fā)環(huán)境中單擊“File→NewProject”,如圖2.10所示,彈出一個(gè)建立新工程的對(duì)話框,如圖2.11所示。在ProjectLocation框中填寫工程文件保存路徑;在ProjectName框中,填寫新建工程的名字“l(fā)ab1”;在Top-LevelSourceType框中選擇HDL。然后單擊Next按鈕。圖2.10選擇新建工程圖2.11新建工程在彈出的器件屬性選項(xiàng)卡(見圖2.12)中設(shè)置參數(shù)。圖2.12器件屬性選項(xiàng)卡其中,F(xiàn)amily表示FPGA器件屬于Xilinx的哪一個(gè)產(chǎn)品系列;Device表示FPGA器件的器件類型;Package表示FPGA的封裝類型;Speed表示FPGA的速度等級(jí);SynthesisTool為工程所選的綜合工具;Simulator為工程仿真所用的仿真工具;PreferredLanguage為工程源文件的語(yǔ)言類型。

單擊Next和Finish按鈕后,新的工程就創(chuàng)建好了。

(2)編寫“MY_AND2”和“MY_OR2”的RTL級(jí)描述和“AND_OR”的結(jié)構(gòu)級(jí)描述。

在ISE環(huán)境中選擇菜單欄中的“Project→NewSource”,如圖2.13所示。圖2.13選擇創(chuàng)建新的源文件在彈出的對(duì)話框中,選擇“VHDLModule”,在Filename框中輸入新建源文件的文件名“MY_AND2”,如圖2.14所示。單擊Next按鈕進(jìn)入模塊定義對(duì)話框,如圖2.15所示。圖2.14源文件選擇窗口圖2.15模塊輸入/輸出定義按照?qǐng)D2.15的方法填寫模塊的定義。

單擊Next按鈕確認(rèn)模塊屬性,然后單擊Finish按鈕,源文件生成向?qū)?huì)自動(dòng)生成源文件的框架,并將這個(gè)新文件加入到項(xiàng)目中。生成的文件框架已經(jīng)將必需的庫(kù)文件和模塊的輸入/輸出定義好了,這時(shí)只需要關(guān)心模塊應(yīng)完成的功能,并將功能語(yǔ)句加入到“architectureBEHAVIORALofxxis”和“endBEHAVIORAL”之間就可以完成這個(gè)模塊。

按照如下方法加入功能描述語(yǔ)句,然后單擊菜單欄的“File→Save”或直接單擊Save功能按鈕。采用與生成“MY_AND2”類似的方法創(chuàng)建上層模塊“AND_OR”。在生成“AND_OR”模塊的過(guò)程中,輸入信號(hào)類型選擇為“Bus”,“MSB”填寫為“3”,“LSB”填寫為“0”,如圖2.16所示。圖2.16AND_OR模塊定義

(3)語(yǔ)法檢查。

源文件輸入完成后,需要進(jìn)行語(yǔ)法檢查,以驗(yàn)證源文件語(yǔ)法的正確性。

在ISE的“Sources”窗口中選擇“AND_OR_STRUCT”。

在“Processes”窗口中展開“Synthesize-XST”,雙擊“CheckSyntax”,如圖2.17所示。圖2.17語(yǔ)法檢查圖2.18查看原理圖圖2.19AND_OR對(duì)應(yīng)的電路圖

(5)行為級(jí)仿真。

文件設(shè)計(jì)完成后,一般需要對(duì)工程文件的功能進(jìn)行仿真驗(yàn)證,確認(rèn)文件在給定輸入的情況下是否能夠得到預(yù)計(jì)的輸出。仿真之前,需要建立仿真平臺(tái)文件(Testbench),用于完成給定輸入的測(cè)試。

在ISE環(huán)境中選擇菜單欄中的“Project→NewSource”。

在彈出的對(duì)話框中,選擇“VHDLTestBench”,在Filename欄中輸入新建源文件的文件名“tb_AND_OR”,如圖2.20所示。

再單擊Next按鈕進(jìn)入選擇測(cè)試文件對(duì)話框,在對(duì)話框中選擇“AND_OR”,如圖2.21所示,再單擊Next和Finish按鈕即可。圖2.20創(chuàng)建測(cè)試平臺(tái)文件圖2.21選擇測(cè)試平臺(tái)的關(guān)聯(lián)文件在ISE的“Sources”框內(nèi)上方的“Sourcesfor”中選擇“BehavioralSimulation”,如圖2.22所示,“Sources”框內(nèi)顯示的文件將會(huì)有所變化,選中“tb_AND_OR_vhd-behavior”。圖2.22查看仿真平臺(tái)文件在“Processes”框中展開“ModelSimSimulator”,雙擊“SimulateBehavioralModel”,系統(tǒng)會(huì)彈出ModelSim的仿真界面,如圖2.23所示,并且自動(dòng)進(jìn)行仿真。從ModelSim的波形窗口(見圖2.24)可以看到,系統(tǒng)的仿真輸入和仿真輸出,驗(yàn)證系統(tǒng)是否在原理上能夠滿足既定的要求。注意,功能仿真時(shí),仿真波形只能顯示出用戶指定的信號(hào)代入延時(shí),仿真器不會(huì)考慮器件延時(shí)和線路延時(shí)。圖2.23選擇功能仿真圖2.24AND_OR的仿真波形

(6)生成網(wǎng)表文件。

經(jīng)過(guò)行為級(jí)仿真后的工程文件在原理上已經(jīng)可以完成系統(tǒng)功能了。然而,要在最終的XilinxFPGA上實(shí)現(xiàn)所需要的功能,應(yīng)通過(guò)FPGA的四個(gè)管腳輸入系統(tǒng)輸入信號(hào),在FPGA的某另一個(gè)管腳得到系統(tǒng)的輸出信號(hào)。因此,我們需要將工程文件轉(zhuǎn)化為配置FPGA的網(wǎng)表文件。網(wǎng)表文件描述了工程文件是如何用FPGA的底層邏輯和互聯(lián)關(guān)系實(shí)現(xiàn)的。

在ISE的“Sources”框內(nèi)上方的“Sourcesfor”中選擇“Synthesis/Implementation”,選中“AND_OR”模塊,如圖2.25所示。圖2.25選擇查看用于綜合的源文件在“Processes”框中雙擊“ImplementDesign”,或者在“ImplementDesign”處單擊右鍵選擇“Run”,如圖2.26所示,則集成環(huán)境會(huì)對(duì)工程文件依次進(jìn)行“Translate”、“Map”和“Place&Route”,并最終生成網(wǎng)表文件。本書在后續(xù)內(nèi)容中有關(guān)于Translate、Map、Place&Route的詳細(xì)介紹。圖2.26實(shí)現(xiàn)工程設(shè)計(jì)

(7)布局布線后仿真。

在生成網(wǎng)表文件后,F(xiàn)PGA的底層實(shí)現(xiàn)電路的形式已經(jīng)和圖2.9所示的電路完全不一樣了。通常情況下,系統(tǒng)仍然可以完成給定的功能,但信號(hào)在通過(guò)物理邏輯器件和器件之間的連線時(shí)會(huì)有一定的時(shí)延,因此,布局布線后仿真也通常叫做時(shí)序仿真。時(shí)序仿真的目的是要驗(yàn)證,在信號(hào)有時(shí)延的情況下,系統(tǒng)是否也能夠完成給定的功能。

在ISE的“Sources”框內(nèi)上方的“Sourcesfor”中選擇“Post-RouteSimulation”,選中“tb_AND_OR_vhd”模塊,如圖2.27所示。圖2.27選擇查看布線后仿真文件在“Processes”框中展開“ModelSimSimulator”,雙擊“SimulatePost-Place&RouteModel”,或者在“SimulatePost-Place&RouteModel”處單擊右鍵選擇“Run”,系統(tǒng)會(huì)彈出ModelSim的仿真界面,如圖2.28所示,并且自動(dòng)進(jìn)行仿真。這時(shí)從仿真波形窗口(見圖2.29)中可以看出系統(tǒng)的輸出相對(duì)于行為級(jí)仿真有一定的時(shí)延,但仍然可以滿足功能的需求。圖2.28選擇進(jìn)行布線后仿真圖2.29時(shí)序仿真波形圖

(8)生成編程文件并配置器件。

生成網(wǎng)表文件后,我們需要將網(wǎng)表文件轉(zhuǎn)換為XilinxFPGA編程文件即比特流文件,并將編程文件下載到FPGA器件中,配置FPGA器件。在上述的步驟中,為了簡(jiǎn)化說(shuō)明,我們省略了用戶約束文件(UCF,UserConstraintFile)的編寫。在對(duì)器件進(jìn)行配置前,必須編寫用戶約束文件,用管腳鎖定約束將系統(tǒng)的輸入/輸出信號(hào)和器件的輸入/輸出管腳綁定。具體配置器件的方法,我們會(huì)在后續(xù)內(nèi)容中詳細(xì)講解,這里只將其提出,作為項(xiàng)目開發(fā)中的必要步驟簡(jiǎn)單說(shuō)明。

在本節(jié)的實(shí)驗(yàn)中,我們完成了一個(gè)最小項(xiàng)目的開發(fā),并以這個(gè)實(shí)驗(yàn)為例,熟悉了ISE和ModelSim的使用方法和一般項(xiàng)目開發(fā)的流程,并且初次接觸到VHDL程序的編寫。在下一節(jié)的內(nèi)容中,我們將針對(duì)這個(gè)實(shí)驗(yàn),詳細(xì)介紹每一個(gè)步驟涉及的軟件的使用方法。

2.3開發(fā)軟件使用進(jìn)階

2.3.1ISE9.1i集成開發(fā)環(huán)境界面

ISE9.1i集成環(huán)境的圖形用戶界面如圖2.30所示。圖2.30ISE界面

1.Sources窗口

在初始情況下,Sources窗口包含了三個(gè)選項(xiàng)卡“Sources”、“Snapshots”和“Libraries”。其中,“Sources”選項(xiàng)卡包含了用樹形結(jié)構(gòu)組織的項(xiàng)目源文件,其中包括新建的文件和之前創(chuàng)建并加入到項(xiàng)目中的源文件;“Snapshots”選項(xiàng)卡包含了用戶在項(xiàng)目開發(fā)過(guò)程中存儲(chǔ)的項(xiàng)目快照;在項(xiàng)目開發(fā)的過(guò)程中,工程師用到的所有庫(kù)文件、用戶創(chuàng)建或加入的文件以及開發(fā)過(guò)程中生成的文件在ISE環(huán)境中都以庫(kù)的形式做了保存,在“Libraries”選項(xiàng)卡中,顯示了這些文件。選擇“Sources”選項(xiàng)卡時(shí),在Sources窗口的頂部會(huì)顯示一個(gè)“Sourcesfor”下拉窗口,在這個(gè)窗口中可以選擇想要的資源類型,當(dāng)選擇某一類型的資源時(shí),Sources窗口的中部會(huì)顯示這一類型對(duì)應(yīng)的源文件,如圖2.31所示。圖2.31ISESources窗口

2.Processes窗口

在Sources窗口的“Sources”選項(xiàng)卡中選中任一源文件后,在Processes窗口會(huì)顯示對(duì)應(yīng)于這個(gè)源文件可以進(jìn)行的操作,Processes窗口中的操作會(huì)根據(jù)源文件的不同做相應(yīng)的變化,如圖2.32所示。圖2.32ISEProcesses窗口圖2.33修改處理的屬性

3.工作區(qū)

工作區(qū)用于顯示工程文件、處理報(bào)告、文件模板以及一些日志記錄文檔,設(shè)計(jì)者可以在工作區(qū)中修改工程文件。這是工程設(shè)計(jì)輸入的一種重要方式。

4.Transcript窗口

Transcript窗口中包含了很多選項(xiàng)卡,如“Console”、“Errors”、“Warnings”、“TclShell”和“FindinFiles”等。

在“Console”選項(xiàng)卡中,我們可以看到正在執(zhí)行的處理過(guò)程給出的執(zhí)行結(jié)果信息,如果在執(zhí)行的過(guò)程中遇到了警告或者錯(cuò)誤,則這些警告和錯(cuò)誤信息也同時(shí)會(huì)在“Warnings”和“Error”選項(xiàng)卡中單獨(dú)列出,方便工程師查詢。

在ISE中也可以采用腳本語(yǔ)言的方式執(zhí)行處理過(guò)程,腳本語(yǔ)言可以在“TclShell”中輸入。2.3.2設(shè)計(jì)輸入

1.文本輸入方式

ISE內(nèi)嵌了文本編輯器,文本編輯器可以用于創(chuàng)建、查看和編輯文本文件,如ASCII、VHDL、Verilog、UCF(UserConstraintFile)和Tcl腳本文件等。這里我們以VHDL/Verilog程序的輸入為例介紹文本輸入方法,其他類型的文本輸入方法與此類似。

1)創(chuàng)建一個(gè)新的文本文件

按照實(shí)驗(yàn)一的方式創(chuàng)建好一個(gè)工程后,選擇Project→NewSource菜單,在彈出的新文件向?qū)Т翱谧髠?cè)選擇VHDLModule/VerilogModule,并在右側(cè)的Filename框中填入新建文件的文件名,如圖2.34所示,單擊Next按鈕。新文件生成向?qū)?huì)以圖形用戶界面的方式指導(dǎo)用戶填寫VHDLModule/VerilogModule的輸入/輸出端口信號(hào)。這一步驟中輸入/輸出信號(hào)的填寫可以幫助工程師快速建立新的文件,但這不是必需的步驟,用戶也可以在最終生成的源文件中直接修改端口信號(hào)。單擊Finish按鈕后,在ISE的工作區(qū)將會(huì)彈出一個(gè)文本編輯窗口,在窗口的下方顯示文件名。在新建的文件中,ISE已經(jīng)幫助工程師按照VHDL/Verilog代碼的標(biāo)準(zhǔn)格式將庫(kù)文件、實(shí)體聲明和結(jié)構(gòu)聲明等內(nèi)容自動(dòng)填寫好,我們只需要關(guān)注模塊將要實(shí)現(xiàn)的功能,并將相應(yīng)的功能代碼填入對(duì)應(yīng)位置即可。圖2.34新源文件創(chuàng)建窗口

2)編輯文本文件

在工作區(qū)的文本編輯器中我們可以對(duì)文本進(jìn)行編輯,當(dāng)我們編輯文本文件時(shí),對(duì)應(yīng)文本文件的選項(xiàng)卡在文件名稱后將出現(xiàn)一個(gè)“*”號(hào),表示對(duì)文本文件進(jìn)行編輯后未存盤,存盤后“*”號(hào)消失。

在編輯過(guò)程中,我們可以使用ISE提供的模板進(jìn)行語(yǔ)法結(jié)構(gòu)的輸入,ISE集成環(huán)境提供了豐富的模板幫助工程師快速建立源程序,模板的使用方法如下:

將光標(biāo)放置在要插入模板的文本位置,選擇菜單欄中的Edit→LanguageTemplates…或直接用鼠標(biāo)左鍵單擊工具欄中的圖標(biāo),在工作區(qū)中會(huì)彈出一個(gè)Template窗口,如圖2.35所示。在窗口左側(cè)選擇插入模板的類型,單擊右鍵,選擇Useinfile,則在文本文件中會(huì)自動(dòng)插入所選模板的文本。圖2.35語(yǔ)言模板窗口

3)修改文本編輯器選項(xiàng)

在ISE菜單欄中選擇View,在下拉菜單中可以選擇文本編輯器的顯示選項(xiàng);或者選擇Edit→Preferences,在彈出的Preferences菜單中選擇ISETextEditer也可以調(diào)整文本編輯器的一些屬性。

2.圖形輸入方式

ISE支持類似于原理圖的圖形輸入方式,幫助工程師直觀地構(gòu)建系統(tǒng)的整個(gè)架構(gòu)和底層模塊。ISE支持自頂向下和自底向上兩種圖形輸入方式。采用自頂向下的輸入方式,用戶可以先用圖形構(gòu)建系統(tǒng)的整體結(jié)構(gòu)和每一級(jí)下層模塊結(jié)構(gòu),然后單獨(dú)編輯每一個(gè)模塊的功能實(shí)現(xiàn);用戶也可以先編輯實(shí)現(xiàn)每個(gè)底層模塊,然后用搭積木的方式自底向上一步一步完成整個(gè)系統(tǒng)。在實(shí)際的工程應(yīng)用中,多采用混合的方式,用自頂向下的方式將系統(tǒng)劃分為相對(duì)獨(dú)立的模塊,然后對(duì)各個(gè)獨(dú)立模塊用自底向上的方式搭建。

1)自底向上的方式

以2.2節(jié)實(shí)驗(yàn)中的源文件輸入為例,在第二步編寫“MY_AND2”和“MY_OR2”的RTL級(jí)描述和“AND_OR”的結(jié)構(gòu)級(jí)描述中,我們也可以采用圖形輸入的方式。

(1)創(chuàng)建原理圖文件。選擇Project→NewSource,在彈出的新文件向?qū)ё髠?cè)選擇Schematic,在右側(cè)填入文件名稱,單擊Next按鈕和Finish按鈕,創(chuàng)建一個(gè)新的原理圖文件。此時(shí)彈出的原理圖編輯界面如圖2.36所示。圖2.36原理圖編輯界面

(2)單元符號(hào)輸入。原理圖編輯器為工程師設(shè)計(jì)不同的邏輯功能提供了豐富的基本單元符號(hào)庫(kù),這些符號(hào)可以在原理圖編輯中直接調(diào)用;設(shè)計(jì)者也可以將自己生成的模塊轉(zhuǎn)化為單元符號(hào),在原理圖中直接使用。對(duì)應(yīng)于兩種不同的方法,單元符號(hào)輸入的步驟也不同。

調(diào)用庫(kù)符號(hào)。

在原理圖編輯器左側(cè)的Symbols選項(xiàng)卡中列出了目前庫(kù)中的全部Symbol,可以用這些符號(hào)建立原理圖。符號(hào)輸入的方法為:

在Categories欄中選擇Logic,在SymbolNameFilter欄中輸入and,然后在Symbols欄中選擇and2,如圖2.37所示。圖2.37調(diào)用庫(kù)符號(hào)圖2.38加入全部符號(hào)的原理圖調(diào)用庫(kù)符號(hào)時(shí),一般我們要給符號(hào)命名,以方便后續(xù)開發(fā)中識(shí)別這個(gè)符號(hào),符號(hào)命名的方法如下:

①選擇菜單欄中的Add→InstanceName或在工具欄中單擊添加符號(hào)名按鈕。

②在Processes窗口中,選擇Options選項(xiàng)卡,在Name框中填入希望命名的名字。

③鼠標(biāo)移至原理圖編輯窗口中,用鼠標(biāo)左鍵單擊要被命名的符號(hào)。

符號(hào)命名還有另外一種快捷的方式。用鼠標(biāo)左鍵雙擊希望被命名的符號(hào),將會(huì)彈出一個(gè)ObjectProperties窗口,如圖2.39所示,在InstName對(duì)應(yīng)的Value格中填入名字即可。如果希望在原理圖中看到名字,可以點(diǎn)擊Visible框。圖2.39ObjectProperties窗口

調(diào)用用戶符號(hào)。

我們也可以用自己創(chuàng)建的源文件,生成用戶符號(hào),然后在原理圖中編輯。其步驟為:

在Sources窗口的Sources顯示卡中選擇我們創(chuàng)建的源文件MY_AND2,在Processes窗口的Processes顯示卡中展開DesignUtilities,雙擊CreatSchematicSymbol,則會(huì)在工程文件夾下生成一個(gè)MY_AND2.sym文件,同時(shí)這個(gè)生成的符號(hào)被加入到符號(hào)庫(kù)中。

在原理圖編輯界面下,單擊添加符號(hào)快捷鍵。選擇Sources窗口中的Symbols選項(xiàng),Categories選項(xiàng)中會(huì)出現(xiàn)所需要的工程路徑,選擇這個(gè)路徑;在Symbols中選擇剛生成的MY_AND2符號(hào),然后將鼠標(biāo)移至原理圖編輯窗口,單擊鼠標(biāo)左鍵將MY_AND2符號(hào)放置在原理圖中。

用類似的方法生成MY_OR2和AND_OR的符號(hào),然后將符號(hào)都放置到原理圖中,就得到了如圖2.40所示的原理圖。

用與調(diào)用庫(kù)符號(hào)相同的方法對(duì)輸入的用戶符號(hào)進(jìn)行命名。圖2.40加入用戶符號(hào)的原理圖

(3)建立連線。上層設(shè)計(jì)文件AND_OR包含了三個(gè)下層模塊,下層模塊之間需要通過(guò)連線互相連接,以標(biāo)明模塊之間的信號(hào)傳遞關(guān)系。圖2.40所示的原理圖加入連線的方法

如下:

選擇菜單欄中的Add→Wire,或者單擊工具欄中的AddWire圖標(biāo)。

鼠標(biāo)移至原理圖編輯窗口,并靠近符號(hào)的端口連線處,如圖2.41所示,則在端口連線處會(huì)出現(xiàn)四個(gè)小方框,在此處單擊鼠標(biāo)左鍵。

將鼠標(biāo)移至希望與其連接的另一端口連線處,單擊鼠標(biāo)左鍵,則會(huì)在兩個(gè)連線端口之間建立連線關(guān)系。圖2.41添加連線過(guò)程在建立連接關(guān)系后,一般要對(duì)這根連線進(jìn)行命名。選擇菜單欄中的Add→NetName或單擊工具欄中的添加連線名稱按鈕,在Processes窗口中選擇Options顯示卡。

在Whenyouclickonabranch框中選中Namethebranch,在Name框中填入名字。

將鼠標(biāo)移至希望被命名的信號(hào)名上,單擊鼠標(biāo)左鍵,就完成了對(duì)信號(hào)的命名,在原理圖中,所有被命名為同一名字的連線信號(hào)都被認(rèn)為是互相連通的。上述在連線的過(guò)程中,在選擇好一個(gè)端口連線后,也可以按下鼠標(biāo)左鍵,將連線拖動(dòng)到另一連線端口或原理圖中的任意位置,并釋放左鍵。如果連接到另一端口,則在兩端口之間建立連接;如果在任意位置釋放,則在原理圖中畫出未完成的連線。

在實(shí)際工程設(shè)計(jì)中,單信號(hào)之間的互聯(lián)是最簡(jiǎn)單的一種,我們經(jīng)常會(huì)遇到總線之間的互聯(lián)和單信號(hào)與總線之間的互聯(lián)等問(wèn)題。下面舉一個(gè)簡(jiǎn)單的例子說(shuō)明這種信號(hào)的互聯(lián)方法。

如圖2.42所示,圖中包含單根信號(hào)與總線的連接、總線與另一總線的一部分之間的連接和兩個(gè)部分總線之間的連接,連接的方法如下:圖2.42總線連接方法用添加連線的方法畫出S4模塊輸入端口的總線,并將其命名為sigA(5:0)。

選擇菜單欄中的Add→BusTap,或單擊工具欄中的添加總線接入點(diǎn)按鈕,在Processes的Options顯示卡中Tap的方向上選擇Right,用鼠標(biāo)左鍵單擊sigA信號(hào),然后在Options顯示卡的NetName中填寫sigA(5)。

用鼠標(biāo)左鍵單擊S1模塊的輸出端口,則S1的輸出端口和sigA(5)信號(hào)建立連接,連接信號(hào)名為sigA(5)。

用與建立sigA(5)相同的方法建立sigA(4:2),建立的過(guò)程中將信號(hào)命名為sigA(4:2)即可。

畫出S3模塊的輸出總線,并將其命名為sigB(5:0)。建立sigB(5:4)與BUFT2的輸入端口之間和BUFT2的輸出端口與sigA(1:0)之間的連接(部分總線之間的互聯(lián)信號(hào)需要用Buffer進(jìn)行連接)。

注意:圖2.42中所示的電路圖只是為了說(shuō)明連線的不同類型,實(shí)際原理圖設(shè)計(jì)時(shí),不可參照此圖。

(4)添加輸入/輸出端口。原理圖中的輸入/輸出端口,如同文本輸入方法中定義的模塊輸入/輸出端口,是模塊必不可少的一部分。下面以用戶符號(hào)的原理圖為例,介紹添加輸入/輸出端口的方法如下:

用添加連線命令畫出一條連線,并將其命名為INP(3:0)。

用總線接入點(diǎn)將兩個(gè)MY_AND2的輸入信號(hào)與INP(3:0)總線連接。選擇Add→I/OMarker菜單,或直接單擊工具欄中的添加輸入/輸出端口按鈕,用鼠標(biāo)左鍵單擊INP(3:0)總線的一端,則在總線端口處會(huì)出現(xiàn)輸入端口圖示。

在MY_OR2模塊的輸出端口處畫出一條連線,并將其命名為Z,選擇添加輸入/輸出端口,在連線Z的另一端單擊鼠標(biāo)左鍵,即會(huì)出現(xiàn)一個(gè)輸出端口圖示。添加好輸入/輸出端口的原理圖如圖2.43所示。圖2.43添加輸入/輸出端口

(5)原理圖檢查。在原理圖繪制完成后,都需要對(duì)原理圖進(jìn)行檢查。ISE給用戶提供了自動(dòng)檢查工具DRC,用戶可以直觀地對(duì)原理圖做初步檢查。

選擇菜單欄中的Tools→CheckSchematic,或單擊工具欄中的DRC圖標(biāo),ISE會(huì)對(duì)原理圖做設(shè)計(jì)規(guī)則檢查,檢查的結(jié)果在Transcript窗口的Console顯示卡中給出。如果原理圖中有錯(cuò)誤或者警告,則可以在Errors和Warnings顯示卡中分別查看。

2)自頂向下的方式

在實(shí)際編寫底層模塊時(shí),我們多采用自底向上的方式。然而在系統(tǒng)定義和模塊劃分過(guò)程中,我們需要用自頂向下的方式直觀形象地建立整個(gè)系統(tǒng)架構(gòu)。下面仍以AND_OR為例介紹這種輸入方式(雖然AND_OR模塊非常簡(jiǎn)單,我們只以其為例說(shuō)明問(wèn)題)。

創(chuàng)建一個(gè)新的工程,并創(chuàng)建新原理圖,新的原理圖命名為AND_OR4。

選擇菜單欄Tools→SymbolWizard,彈出一個(gè)符號(hào)生成向?qū)Т翱?,在PinNameSource格內(nèi)選擇SpecifyManual,Shape格內(nèi)選擇DonotUseReferenceSymbol和Rectangle,單擊Next按鈕。如圖2.44所示,在SymbolName中填寫符號(hào)名AND_OR,單擊右側(cè)的AddPin按鈕,在左側(cè)的Pin窗格內(nèi)填寫新加入管腳的名稱和屬性定義。每次單擊AddPin都會(huì)在符號(hào)中增加一個(gè)輸入/輸出管腳,每次單擊InsertSpacer都會(huì)在符號(hào)相應(yīng)位置空出一個(gè)管腳的空間。如果想要?jiǎng)h除增加的管腳或空間,單擊右側(cè)的RemovePin/Spacer。圖2.44創(chuàng)建符號(hào)向?qū)Аx符號(hào)端口連續(xù)單擊Next和Finish按鈕后,生成好的符號(hào)文件AND_OR.sym就出現(xiàn)在原理圖編輯窗口中,如圖2.45所示。在該窗口中可以調(diào)整符號(hào)的邊框、位置和字體等屬性。圖2.45創(chuàng)建好的AND_OR符號(hào)將AND_OR符號(hào)放置于原理圖AND_OR4中。

用鼠標(biāo)右鍵單擊AND_OR符號(hào),在彈出的菜單中選擇Symbol→PushintoSymbol,將會(huì)彈出一個(gè)警告窗口(如圖2.46所示)提示由于AND_OR模塊未曾定義過(guò),因此操作無(wú)法完成,并詢問(wèn)是否要?jiǎng)?chuàng)建一個(gè)AND_OR模塊的框架。在彈出的窗口中單擊Yes按鈕。圖2.46彈出的警告窗口系統(tǒng)會(huì)繼續(xù)彈出一個(gè)窗口,詢問(wèn)選擇模板的類型。如圖2.47所示,我們可以選擇AND_OR模塊用原理圖、VHDL語(yǔ)言或Verilog語(yǔ)言實(shí)現(xiàn),這里仍選用Schematic方式,然后單擊OK按鈕,彈出新的AND_OR.sch原理圖編輯窗口。圖2.47選擇AND_OR模塊的實(shí)現(xiàn)方式在AND_OR原理圖中,再創(chuàng)建兩個(gè)Symbol,分別命名為MY_AND2和MY_OR2,并將其加入到AND_OR原理圖中,然后將其連接起來(lái)。如圖2.48所示。圖2.48繪制完成的AND_OR原理圖用相同的方法編輯MY_OR2模塊。設(shè)計(jì)完成后同樣要對(duì)原理圖進(jìn)行DRC檢查。

這樣,采用自頂向下的方式設(shè)計(jì)的AND_OR模塊就完成了。

3.其他輸入方式

ISE支持多種其他設(shè)計(jì)輸入方式,包括IPCore輸入、狀態(tài)機(jī)輸入、仿真平臺(tái)波形輸入、塊RAM映射輸入和存儲(chǔ)配置文件輸入等,這些輸入方式用智能化的工具和友好的用戶界面,可以很大程度上方便用戶進(jìn)行設(shè)計(jì)。由于本書是初學(xué)者的入門教材,因此這些輸入方式我們不做詳細(xì)介紹,將會(huì)在后續(xù)的中級(jí)和高級(jí)教材中對(duì)這些輸入方式做更為詳細(xì)的介紹。

4.UCF文件的輸入

UCF是一類特殊的文本文件,雖然它是文本輸入方式的一種,但由于其內(nèi)容的特殊性,我們?cè)诖藛为?dú)介紹。UCF文件用于在工程文件設(shè)計(jì)完成后,告知編譯器有哪些實(shí)現(xiàn)約束條件。一般的工程實(shí)現(xiàn)都有特定的實(shí)現(xiàn)條件約束,最基本的,如工程文件的輸入/輸出信號(hào)與FPGA管腳的管教鎖定約束,時(shí)序收斂設(shè)計(jì)中的時(shí)鐘周期、偏移約束,工程實(shí)現(xiàn)的面積約束等。

UCF涉及的內(nèi)容很多,可以作為一個(gè)專題來(lái)深入了解。在這里簡(jiǎn)單介紹兩種最基本的約束,即管腳約束和簡(jiǎn)單的時(shí)鐘約束,其他如組信號(hào)時(shí)鐘約束等在后續(xù)教材中再做深入探討。

管腳約束。

管腳約束的命令字為L(zhǎng)OCK,語(yǔ)法結(jié)構(gòu)如下:

NET"<SignalName>"LOC=<PinName>;

例如:

NET"INP<0>"LOC=P58;

其中,INP<0>為系統(tǒng)輸入信號(hào),P58為FPGA的管腳序號(hào),這個(gè)文本框中的約束命令將INP(0)信號(hào)鎖定到P58管腳。

時(shí)鐘約束。

時(shí)鐘約束有很多種,最簡(jiǎn)單的如全局時(shí)鐘周期約束,其語(yǔ)法結(jié)構(gòu)為:

NET"<NetName>"PERIOD=period{HIGH/LOW}[highorlowtime];例如:

NETclk33mPERIOD=10nsHIGH5ns;

其中,clk33m為時(shí)鐘網(wǎng)絡(luò)的名稱,10ns為時(shí)鐘周期值,HIGH5ns表示時(shí)鐘的占空比為50%。

約束文件的輸入方法。

約束文件有兩種輸入方法,在ISE中創(chuàng)建一個(gè)新的UCF文件后,用戶可以在文本編輯器中直接編輯UCF文本,同時(shí),ISE集成環(huán)境還提供了專用于配置UCF文件的工具軟件,在ISE中可以直接調(diào)用,在可視化界面下編輯約束參數(shù)。采用文本編輯的方法,約束文件的生成步驟為:

在ISE中選擇Project→NewSource創(chuàng)建一個(gè)新文件,在彈出的新文件創(chuàng)建向?qū)е羞x擇ImplementationConstraintFile,并填入U(xiǎn)CF的文件名ucf_AND_OR,單擊Next按鈕。

在AssociateSource窗口中選擇UCF的關(guān)聯(lián)文件,即對(duì)該模塊加入約束,這里選擇頂層設(shè)計(jì)模塊AND_OR,單擊Next和Finish按鈕后,新的UCF文件就創(chuàng)建完成了。

在Sources窗口的Sources顯示卡中,展開AND_OR的樹形結(jié)構(gòu),選中新創(chuàng)建的ucf_AND_OR文件。

在Processes窗口的Processes顯示卡中,雙擊EditConstraints(Text),則在文本編輯窗口中會(huì)彈出ucf_AND_OR文件的編輯界面。在文本編輯界面中加入管腳約束命令,單擊保存,完成約束文件的編輯。

采用工具軟件編輯時(shí)鐘約束的生成步驟前三步與文本編輯的方法相同,在第四步的Processes窗口中,用鼠標(biāo)左鍵雙擊CreateTimingConstraints,彈出XilinxConstraintsEditor窗口。在這一窗口中可以配置多種時(shí)序約束,如全局時(shí)鐘約束Global,端口時(shí)序約束Ports,組約束等相關(guān)高級(jí)約束和其他混合時(shí)序約束等。由于AND_OR模塊是組合邏輯實(shí)現(xiàn)的模塊,沒(méi)有時(shí)鐘網(wǎng)絡(luò),因此在XilinxConstraintsEditor窗口中無(wú)法編輯全局時(shí)鐘約束。采用工具軟件編輯管腳鎖定約束和面積約束的生成步驟前三步也與文本編輯方法相同,在第四步的Processes窗口中,用鼠標(biāo)左鍵雙擊AssignPackagePins或CreateAreaConstraints,彈出XilinxPACE工具軟件,在軟件中可以對(duì)設(shè)計(jì)模塊的輸入/輸出管腳和面積進(jìn)行約束。2.3.3設(shè)計(jì)綜合

綜合是設(shè)計(jì)流程中的基本步驟,它將概念性硬件描述語(yǔ)言(HDL)的設(shè)計(jì)定義轉(zhuǎn)換為針對(duì)目標(biāo)器件的邏輯或物理表示。ISE集成了Xilinx公司的XST綜合工具,一般的工程設(shè)計(jì)中常用的其他綜合工具還有Synplicity公司的Synplify/SynplifyPro和MentorGraphics公司的Precision等。經(jīng)過(guò)幾個(gè)版本的改進(jìn),XST的綜合效果已經(jīng)有了很大的提高,基本可以和專業(yè)的Synplify綜合工具媲美,而且集成于ISE中,使用非常方便,因此我們著重介紹XST綜合工具。

XST支持VHDL語(yǔ)言、Verilog語(yǔ)言,VHDL/Verilog混合描述和原理圖等多種綜合輸入,其輸出為Xilinx特有的NGC網(wǎng)表文件,NGC文件包含轉(zhuǎn)化后的邏輯數(shù)據(jù)和約束信息。XST的綜合輸入/輸出文件如圖2.49所示。圖2.49XST綜合輸入/輸出文件

XST的綜合流程包含了幾個(gè)獨(dú)立的步驟,流程圖如圖2.50所示。圖2.50XST綜合流程圖綜合流程的第一步驟是語(yǔ)法檢查,檢查HDL語(yǔ)言代碼中是否有語(yǔ)法錯(cuò)誤,如果有錯(cuò)誤,在綜合報(bào)告和Transcript窗口中將給出錯(cuò)誤語(yǔ)法的位置和信息。

在HDL綜合過(guò)程中,綜合工具對(duì)HDL代碼進(jìn)行分析,推測(cè)選擇用FPGA中的哪些底層單元實(shí)現(xiàn)HDL語(yǔ)言描述的功能,并且采用單元共享等技術(shù)使得綜合后的電路占用的器件資源最少。在綜合的過(guò)程中,狀態(tài)機(jī)是單獨(dú)處理、獨(dú)立分析的,根據(jù)綜合的選項(xiàng),綜合器選擇狀態(tài)機(jī)在綜合過(guò)程中選用的實(shí)現(xiàn)算法。

HDL綜合完成后,綜合器會(huì)根據(jù)綜合選項(xiàng)和XCF(XSTConstraintFile,綜合約束文件)文件,對(duì)綜合結(jié)果做一些基礎(chǔ)的優(yōu)化。以AND_OR模塊為例,設(shè)計(jì)綜合的方法如下:

選中Sources窗口中的AND_OR模塊。

如果AND_OR模塊不是頂層模塊,用鼠標(biāo)右鍵單擊AND_OR模塊,在右鍵菜單中選擇SetasTopModule(在ISE9.1中,只能對(duì)頂層文件進(jìn)行綜合和實(shí)現(xiàn))。

在Processes窗口中雙擊Synthesize-XST。

XST綜合的過(guò)程一方面受用戶配置約束的影響,另一方面也可以在ISE中配置XST的綜合選項(xiàng)以達(dá)到預(yù)期的綜合效果。

在Sources窗口的Sources顯示卡中選中要綜合的模塊,在Processes窗口中用鼠標(biāo)右鍵單擊Synthesis-XST,?在右鍵菜單中單擊Properties,系統(tǒng)彈出ProcessProperties窗口,如圖2.51所示。在左側(cè)選擇屬性卡的類別,右側(cè)對(duì)應(yīng)此類中可以配置的參數(shù)。在Propertydisplaylevel中選擇Standard,窗口顯示標(biāo)準(zhǔn)的配置參數(shù);選擇Advanced,窗口顯示高級(jí)的配置參數(shù)。

在XST綜合配置參數(shù)中,最經(jīng)常用到的幾個(gè)參數(shù)配置為:

●?OptimizationGoal:配置綜合的優(yōu)化目標(biāo),選擇速度優(yōu)先Speed,綜合結(jié)果的運(yùn)行時(shí)鐘頻率最高;選擇面積優(yōu)先Area,綜合結(jié)果占用的資源最少。

●?OptimizationEffort:配置綜合的努力程度,選擇正常優(yōu)化級(jí)別Normal,優(yōu)化所用的時(shí)間最短;選擇高優(yōu)化級(jí)別,優(yōu)化的效果最好,但同時(shí)運(yùn)行時(shí)間也比較長(zhǎng)。圖2.51XST綜合屬性配置窗口●?KeepHierarchy:保持電路的層次結(jié)構(gòu),即綜合后不打亂設(shè)計(jì)電路的層次結(jié)構(gòu),不跨層做優(yōu)化。

綜合選項(xiàng)的很多配置都與底層的器件和實(shí)現(xiàn)的算法有關(guān)系,如FSMEncodingAlgorithm、ResourceSharing、RegisterDuplication和RegisterBalancing等,在配置這些參數(shù)時(shí)要初步了解參數(shù)涉及的硬件單元和實(shí)現(xiàn)算法,才能更好地利用這些參數(shù)。2.3.4功能仿真

功能仿真可以對(duì)工程設(shè)計(jì)文件進(jìn)行初步的功能驗(yàn)證。仿真軟件將HDL語(yǔ)言轉(zhuǎn)換為抽象的邏輯電路,忽略信號(hào)在邏輯器件和傳輸線上的延時(shí),并對(duì)應(yīng)各種可能的輸入信號(hào)仿真得到設(shè)計(jì)工程的輸出信號(hào),檢驗(yàn)輸出信號(hào)是否滿足預(yù)期的要求。

ISE集成環(huán)境可以調(diào)用多種仿真工具做仿真驗(yàn)證,新的工程項(xiàng)目在建立時(shí),工程向?qū)?huì)要求用戶選擇工程文件的仿真工具,如圖2.12中的Simulator選項(xiàng)。實(shí)際使用中,也可以在工程建立之后,重新修改工程的仿真工具。

ISE開發(fā)環(huán)境集成了仿真功能,在Simulator選項(xiàng)卡中可以選擇ISESimulator做仿真驗(yàn)證。ISESimulator作為ISE的一個(gè)組件,使用非常方便。在實(shí)際項(xiàng)目開發(fā)過(guò)程中,也經(jīng)常使用功能更為強(qiáng)大的第三方仿真工具,如Mentor公司的ModelSim、Synopsys公司的VCS和Cadense公司的NC等。

實(shí)驗(yàn)一的行為級(jí)仿真步驟中,我們嘗試了在ISE中直接打開ModelSim進(jìn)行功能仿真的步驟,本節(jié)在簡(jiǎn)單介紹ISESimulator的使用方法后,對(duì)ModelSim的使用做進(jìn)一步深入的介紹。

1.ISESimulator使用方法

1)選用ISESimulator做仿真

創(chuàng)建新工程項(xiàng)目時(shí),可以在工程屬性選項(xiàng)卡中,選擇ISESimulator作為仿真器。項(xiàng)目創(chuàng)建好后可以在項(xiàng)目中修改仿真器的設(shè)置,修改方法如下:

在Sources窗口的Sources顯示卡中,選中所有工程的最頂層,如圖2.52所示,在右鍵菜單中選擇Properties項(xiàng),彈出工程屬性配置窗口。在Simulator位置選擇ISESimulator。圖2.52修改工程屬性

2)創(chuàng)建仿真平臺(tái)文件

對(duì)工程文件進(jìn)行仿真之前,首先要為仿真器輸入激勵(lì)源,我們可以用本章2.2節(jié)實(shí)驗(yàn)中的方法創(chuàng)建仿真平臺(tái)文件,作為ISESimulator的輸入測(cè)試激勵(lì)。同時(shí),ISESimulator提供一個(gè)可視化的波形輸入編輯平臺(tái)TBW(TestBenchWaveform),在TBW中,即使沒(méi)有任何HDL知識(shí)的工程師也可以很方便地創(chuàng)建輸入激勵(lì),設(shè)定仿真時(shí)長(zhǎng),來(lái)驗(yàn)證工程的正確性。

(1)創(chuàng)建新的測(cè)試平臺(tái)波形文件。

選擇Project

NewSource,彈出新建文件向?qū)А?/p>

選擇TestBenchWaveForm類型的文件,并命名為tbw_AND_OR,單擊Next按鈕。在關(guān)聯(lián)模塊窗口中,選擇AND_OR模塊,連續(xù)單擊Next按鈕和Finish按鈕,彈出一個(gè)初始化窗口,如圖2.53所示。2.2節(jié)實(shí)驗(yàn)中的AND_OR模塊是組合邏輯模塊,沒(méi)有用到時(shí)鐘,因此初始化窗口中,我們只能選擇仿真時(shí)長(zhǎng)等信息。

CombinatorialTimingInformation窗口中可以設(shè)定給信號(hào)賦值和檢查信號(hào)輸出的時(shí)間間隔。InitialLengthofTestBench窗口可以設(shè)定初始的仿真時(shí)間,在TimeScale窗口設(shè)定時(shí)間單位,單位可選s、ms(10-3)、μs(10-6)、ns(10-9)、ps(10-12)。單擊Finish按鈕完成初始化設(shè)定。圖2.53仿真時(shí)間和時(shí)鐘初始化創(chuàng)建好的測(cè)試平臺(tái)文件會(huì)自動(dòng)加入到工程中,在Sources窗口的Sourcesfor選項(xiàng)卡中選中BehavioralSimulation,則在Sources顯示卡中會(huì)以樹形結(jié)構(gòu)顯示測(cè)試波形文件及關(guān)聯(lián)模塊。

(2)設(shè)定測(cè)試波形文件的激勵(lì)信號(hào)。

打開創(chuàng)建好的tbw_AND_OR文件,測(cè)試平臺(tái)波形文件在創(chuàng)建的過(guò)程中已經(jīng)將模塊的輸入/輸出信號(hào)添加到波形窗口中,如圖2.54所示。如果波形窗口中沒(méi)有列出全部的模塊頂層輸入信號(hào),選擇Processes窗口中的Hierarchy顯示卡,這里有被仿真頂層模塊的全部輸入/輸出信號(hào)列表,直接用鼠標(biāo)左鍵將信號(hào)拖入波形編輯窗口即可。圖2.54仿真平臺(tái)波形輸入窗口設(shè)定測(cè)試波形文件激勵(lì)信號(hào)的方式有很多種,以AND_OR模塊為例,有下面三種方法。

按鈕方式。

在波形編輯窗口中,展開INP(3:0)信號(hào),在波形窗中任一希望修改信號(hào)值的位置單擊信號(hào),信號(hào)值即會(huì)隨之高低變化。

設(shè)定固定值。

波形編輯窗口中,在要編輯的信號(hào)位置處單擊鼠標(biāo)左鍵,或單擊鼠標(biāo)右鍵,在彈出的窗口中選擇SetValue。系統(tǒng)會(huì)彈出一個(gè)信號(hào)值輸入窗口,如圖2.55所示。在Enterthedesiredbinaryvalue窗口中填入設(shè)定的信號(hào)值,單擊OK按鈕。圖2.55設(shè)定波形信號(hào)值

使用向?qū)л斎搿?/p>

在圖2.55的窗口中單擊PatternWizard,彈出一個(gè)波形設(shè)置向?qū)?,如圖2.56所示。在波形設(shè)置向?qū)е校蛇x的波形樣式有Alternate、CountUp、CountDown、RandomBus、ShiftLeft、ShiftRight。圖2.56波形設(shè)置向?qū)?/p>

3)設(shè)計(jì)仿真

激勵(lì)波形設(shè)置完成后,就可以進(jìn)行設(shè)計(jì)仿真了。以AND_OR為例,仿真的步驟如下:

在Sources窗口的Sourcesfor選項(xiàng)卡中選擇BehavioralSimulation,Sources顯示卡中選擇仿真平臺(tái)波形文件tbw_AND_OR。

在Processes窗口中,雙擊SimulateBehavioralModel,仿真器開始進(jìn)行仿真。

仿真完成后,在WorkSpace窗口中會(huì)彈出一個(gè)Simulation窗口顯示仿真波形,查看仿真波形,驗(yàn)證工程設(shè)計(jì)的正確性。進(jìn)入仿真界面后ISE菜單欄會(huì)多出一個(gè)Simulation菜單,?對(duì)應(yīng)的在工具欄中會(huì)多出一個(gè)仿真工具欄,利用仿真工具欄可以快捷地完成波形的查看和驗(yàn)證。仿真工具欄如圖2.57所示。圖2.57仿真工具欄在查看仿真波形時(shí),如果遇到實(shí)際仿真結(jié)果與預(yù)期結(jié)果不一致的情況,通常需要查看底層模塊的信號(hào)值或頂層模塊的中間信號(hào)值。在Processes窗口中,單擊SimHierarchy顯示卡,則在顯示卡中以樹形結(jié)構(gòu)給出了模塊中的全部信號(hào),用鼠標(biāo)左鍵可以將這些信號(hào)拖入仿真波形窗口中進(jìn)行仿真。

ISESimulator不僅可以用TBW文件作為仿真的激勵(lì)輸入,也可以用2.2節(jié)實(shí)驗(yàn)中生成的測(cè)試平臺(tái)文件作為仿真激勵(lì)文件,仿真的方法與采用TBW文件的仿真方法相同。

2.ModelSim使用方法

1)選用ISESimulator做仿真

在新工程創(chuàng)建過(guò)程中,選用ModelSimVHDL/Verilog作為仿真工具;或在建好的工程中直接修改工程屬性文件,選用ModelSim進(jìn)行仿真,具體的方法與選用ISESimulator的方法相同。

2)創(chuàng)建仿真平臺(tái)文件

創(chuàng)建仿真平臺(tái)文件的方法參見本章2.2節(jié)實(shí)驗(yàn)中的“行為級(jí)仿真”部分。

3)工程仿真

ModelSim是獨(dú)立的仿真軟件,在ModelSim中可以完成仿真項(xiàng)目的創(chuàng)建、仿真文件輸入、功能仿真和時(shí)序仿真等一系列完整的工作。也可以在ISE中直接調(diào)用ModelSim,ISE集成環(huán)境實(shí)現(xiàn)了ISE與ModelSim的無(wú)縫鏈接,直接調(diào)用不需要考慮ModelSim工程的建立和庫(kù)文件的導(dǎo)入等復(fù)雜過(guò)程。

本章2.2節(jié)實(shí)驗(yàn)中,在ISE環(huán)境里直接調(diào)用ModelSim,彈出的ModelSim軟件界面如圖2.58所示。ModelSim軟件默認(rèn)打開Workspace、Objects、Wave和Transcript窗口,其他的窗口可以在菜單欄View中選擇打開。圖2.58ModelSim仿真軟件界面

Workspace窗口。

Workspace窗口包含了仿真工程的可用資源,包括Library、sim、Files等幾個(gè)顯示卡,在仿真過(guò)程中打開的Memories等視窗也會(huì)在Workspace中顯示。

●?Library包含了目前仿真工程的庫(kù)文件,包括標(biāo)準(zhǔn)庫(kù)文件、Xilinx仿真器件庫(kù)文件和用戶庫(kù)文件等,其中的Work庫(kù)為用戶庫(kù)文件,庫(kù)中包含已編譯好的全部工程模塊。

●?sim包含了仿真工程中用到的模塊,選中某一模塊則在Objects窗口中顯示對(duì)應(yīng)模塊中的仿真信號(hào)。

●?Files包含了仿真工程中用到的全部文件,包含工程文件和庫(kù)文件。

Objects窗口。在Workspace窗口的sim顯示卡中選中某一模塊時(shí),Objects窗口中會(huì)列出當(dāng)前模塊中包含的信號(hào)。在仿真過(guò)程中,可以將信號(hào)直接拖入波形窗口查看信號(hào)波形。

Wave窗口。

Wave窗口中顯示了被仿真信號(hào)的波形,在仿真過(guò)程中發(fā)現(xiàn)錯(cuò)誤時(shí),通常通過(guò)波形窗口查看相關(guān)信號(hào)的波形查找錯(cuò)誤原因。

Transcript窗口。

Transcript窗口用于輸入控制命令,顯示處理過(guò)程的輸出。圖2.59ModelSim常用仿真工具在ISE中調(diào)用ModelSim時(shí),ISE向ModelSim傳遞了部分仿真參數(shù),這些參數(shù)可以在仿真屬性窗口中修改,在Processes窗口的Processes顯示卡中用鼠標(biāo)右鍵單擊SimulateBehavioralModel,在彈出的右鍵菜單中選擇Properties,彈出屬性配置窗口如圖2.60所示,在Propertydisplaylevel下拉菜單中可以選擇Advanced配置一些高級(jí)參數(shù)。圖2.60仿真屬性配置窗口在圖2.60中,SimulationRunTime項(xiàng)用于配置仿真的時(shí)長(zhǎng)。一般在工程仿真中,固定的仿真時(shí)長(zhǎng)是不能滿足需求的。在彈出的仿真窗口中,可以通過(guò)仿真工具欄中的Run、ContinueRun、Restart、Run-all和Break等鍵控制仿真過(guò)程。

在仿真的過(guò)程中,如果發(fā)現(xiàn)有設(shè)計(jì)錯(cuò)誤,可以直接關(guān)閉ModelSim,在ISE中修改設(shè)計(jì)文件后重新啟動(dòng)仿真,也可以在ModelSim中直接修改工程文件,在對(duì)修改后的文件進(jìn)行編譯后重新仿真。2.3.5工程實(shí)現(xiàn)

工程文件在功能仿真和綜合步驟完成之后,需要進(jìn)行工程實(shí)現(xiàn)(Implementation)。在ISE中,工程實(shí)現(xiàn)包含以下四個(gè)步驟:

Translate。將綜合后的網(wǎng)表文件和約束文件融合到同一個(gè)Xilinx的設(shè)計(jì)文件中。

Map。將設(shè)計(jì)中的功能器件映射到工程設(shè)計(jì)的目標(biāo)器件資源中。

PlaceandRoute。對(duì)映射后的目標(biāo)器件資源進(jìn)行布局和布線,滿足時(shí)序約束。

GenerateProgrammingFile。生成比特流文件,這個(gè)文件可以下載到器件中,對(duì)器件進(jìn)行編程配置。以AND_OR模塊為例,在ISE中進(jìn)行工程實(shí)現(xiàn)的方法如下:

①選中Sources窗口中的AND_OR模塊。

②如果AND_OR模塊不是頂層模塊,用鼠標(biāo)右鍵單擊AND_OR模塊,在右鍵菜單中選擇SetasTopModule。

③在Processes窗口中雙擊ImplementDesign,或選擇菜單欄中的Process→ImplementTopModule。

④在Processes窗口中雙擊GenerateProgrammingFile,生成下載配置文件。工程實(shí)現(xiàn)的過(guò)程包含了很多底層操作,用戶可以在默認(rèn)的實(shí)現(xiàn)配置下完成工程實(shí)現(xiàn),也可以在ISE中對(duì)工程實(shí)現(xiàn)的參數(shù)做相應(yīng)的配置,以達(dá)到最優(yōu)的效果。工程實(shí)現(xiàn)的參數(shù)可以在Implementation的屬性卡中統(tǒng)一配置,也可以對(duì)每一個(gè)步驟的屬性做單獨(dú)配置,統(tǒng)一配置和單獨(dú)配置的可配置參數(shù)是相同的。

選中AND_OR模塊后,在Processes窗口中用鼠標(biāo)右鍵單擊ImplementDesign,在彈出的右鍵菜單中選擇Properties,屬性配置卡如圖2.61所示。圖2.61實(shí)現(xiàn)屬性配置卡在實(shí)現(xiàn)屬性的配置中,經(jīng)常用到的配置屬性及其含義為:

●?MapProperties類下的PackI/ORegisters/LatchesintoIOBs選項(xiàng):在輸入/輸出管腳中加入寄存器,可以優(yōu)化輸入/輸出信號(hào)的時(shí)序。

●?Place&RouteProperties類下的Place&RouteEffortLevel(Overall)選項(xiàng):在給定的時(shí)序和管腳約束下,布局布線器的優(yōu)化努力程度。在給定的約束條件下ISE無(wú)法完成布局布線時(shí),可以嘗試修改

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論