




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章VHDL程序設(shè)計(jì)實(shí)驗(yàn)6.1實(shí)驗(yàn)一層次化工程的創(chuàng)建6.2實(shí)驗(yàn)二仿真測(cè)試平臺(tái)的創(chuàng)建6.3實(shí)驗(yàn)三存儲(chǔ)器和記錄類型實(shí)驗(yàn)6.4實(shí)驗(yàn)四n比特計(jì)數(shù)器及RTL驗(yàn)證實(shí)驗(yàn)
6.5實(shí)驗(yàn)五比較器實(shí)驗(yàn)6.6實(shí)驗(yàn)六算術(shù)邏輯單元實(shí)驗(yàn)6.7實(shí)驗(yàn)七狀態(tài)機(jī)實(shí)驗(yàn)6.8實(shí)驗(yàn)八計(jì)數(shù)器實(shí)驗(yàn)6.9實(shí)驗(yàn)九IP核應(yīng)用實(shí)驗(yàn)6.10實(shí)驗(yàn)十?dāng)?shù)字時(shí)鐘管理IP核實(shí)驗(yàn)
6.1實(shí)驗(yàn)一層次化工程的創(chuàng)建
6.1.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成兩個(gè)實(shí)體MY_AND2和MY_OR2的RTL描述,并用結(jié)構(gòu)化的描述方式描述如圖6.1所示電路的頂層模塊AND_OR。實(shí)驗(yàn)中默認(rèn)的文件夾為\VHDL_LABS\,讀者可以在任意位置創(chuàng)建文件夾VHDL_LABS。圖6.1AND_OR的層次結(jié)構(gòu)6.1.2實(shí)驗(yàn)?zāi)繕?biāo)
●熟悉簡(jiǎn)單邏輯門(mén)的RTL描述;
●創(chuàng)建簡(jiǎn)單電路的結(jié)構(gòu)化描述;
●用VHDL創(chuàng)建層次結(jié)構(gòu)描述;
●熟悉ISE集成環(huán)境中的HDL編輯器。
6.1.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含三個(gè)主要的部分:使用ISE集成環(huán)境創(chuàng)建一個(gè)新的工程;完成邏輯門(mén)的RTL描述;檢查代碼中的語(yǔ)法錯(cuò)誤并生成原理圖。每個(gè)部分都有對(duì)應(yīng)的詳細(xì)步驟,并有圖表輔助說(shuō)明步驟的內(nèi)容。讀者可以按照詳細(xì)步驟一步一步完成實(shí)驗(yàn),也可以按照大的實(shí)驗(yàn)部分自行完成。6.1.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB1。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接雙擊桌面上XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,如圖6.2所示。圖6.2創(chuàng)建新工程界面
(3)在ProjectName中填入工程名LAB1,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB1。
(4)單擊Next按鈕。
(5)在圖6.3中填入如下參數(shù):
Family:Spartan3;
Device:XC3S200;
Package:PQ208;
Speed:-5。
(6)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中都不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。圖6.3工程屬性參數(shù)
2.邏輯門(mén)的RTL描述
編寫(xiě)MY_AND2實(shí)體的VHDL代碼。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)VHDLModule,在右側(cè)FileName欄中填入文件名MY_AND2,單擊Next按鈕后彈出DefineModule窗口,如圖6.4所示。圖6.4輸入模塊的相關(guān)參數(shù)
(3)輸入模塊的ArchitectureName和端口參數(shù),如圖6.4所示。
(4)輸入完成后單擊Next按鈕,確認(rèn)模塊參數(shù)后,單擊Finish按鈕。
新文件生成向?qū)?huì)按照用戶輸入的參數(shù)創(chuàng)建新文件,但是完成向?qū)У牟僮骱?,?duì)文件的全部后續(xù)修改都只能在HDL編輯器中修改。
(5)用VHDL的邏輯運(yùn)算操作符和直接代入語(yǔ)句描述邏輯門(mén)的功能,即C<=AandB。用戶可以對(duì)照實(shí)驗(yàn)后面給出的代碼做相應(yīng)的修改。
編寫(xiě)MY_OR2和AND_OR模塊的VHDL代碼。
(1)重復(fù)上面的步驟完成MY_OR2.VHD和AND_OR.VHD代碼的編寫(xiě)。
(2)將AND_OR.VHD的輸入定義為一個(gè)總線,即STD_LOGIC_VECTOR類型。
(3)在AND_OR模塊中,必須聲明和例化被調(diào)用的下層模塊MY_AND2和MY_OR2。
(4)在AND_OR模塊中,必須顯式地定義用于下層模塊互聯(lián)的連線信號(hào)。
(5)?MY_OR2和AND_OR模塊的代碼可以參照本實(shí)驗(yàn)后面給出的代碼實(shí)例。
3.語(yǔ)法檢查并生成原理圖
檢查所寫(xiě)代碼中的語(yǔ)法。
(1)在ISE的Sources窗口中選中AND_OR模塊,在Processes窗口中,展開(kāi)Synthesize,雙擊CheckSyntax,如圖6.5所示。圖6.5語(yǔ)法檢查
(2)如果語(yǔ)法檢查有錯(cuò)誤,修正相應(yīng)的錯(cuò)誤。
語(yǔ)法檢查成功并不能說(shuō)明設(shè)計(jì)文件中沒(méi)有任何問(wèn)題,設(shè)計(jì)文件的問(wèn)題有可能在綜合或后續(xù)的一些操作中才會(huì)被檢測(cè)出。
將設(shè)計(jì)文件生成對(duì)應(yīng)的原理圖,直觀地檢查設(shè)計(jì)是否滿足最初的設(shè)計(jì)要求。在生成原理圖的過(guò)程中,ISE同時(shí)會(huì)對(duì)工程做綜合。在綜合的過(guò)程中,ISE有可能會(huì)對(duì)設(shè)計(jì)文件的一些問(wèn)題報(bào)錯(cuò),如果出現(xiàn)錯(cuò)誤,請(qǐng)對(duì)照修正。
(1)在Sources窗口中,選中AND_OR.VHD,在Processes窗口中,展開(kāi)Synthesis,雙擊ViewRTLSchematic,如圖6.6所示。圖6.6查看原理圖
AND_OR模塊對(duì)應(yīng)的頂層原理圖如圖6.7所示,雙擊AND_OR模塊的圖示,可以看到AND_OR底層的電路。圖6.7AND_OR的原理圖
AND_OR的底層電路如圖6.8所示。
(2)如果電路圖與設(shè)計(jì)的預(yù)期結(jié)構(gòu)不同,可以從設(shè)計(jì)源文件中修改。
(3)讀者可以在圖6.6的Processes窗口中雙擊ViewTechnologySchematic查看設(shè)計(jì)文件在XilinxFPGA器件中的綜合后實(shí)現(xiàn)方法。圖6.8AND_OR的底層電路6.1.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們創(chuàng)建了一個(gè)簡(jiǎn)單的邏輯門(mén)模塊,這個(gè)模塊在上層的模塊中被調(diào)用,模塊之間通過(guò)信號(hào)相連。讀者通過(guò)這個(gè)簡(jiǎn)單的實(shí)驗(yàn),接觸了使用VHDL編程的一些基本技術(shù)和方法,這些方法會(huì)在后續(xù)的工程中經(jīng)常使用。
6.1.6實(shí)驗(yàn)中的代碼
本實(shí)驗(yàn)中會(huì)用到3個(gè)文件,文件對(duì)應(yīng)的代碼分別如下:
6.2實(shí)驗(yàn)二仿真測(cè)試平臺(tái)的創(chuàng)建
6.2.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將對(duì)實(shí)驗(yàn)一中的AND_OR模塊建立一個(gè)測(cè)試平臺(tái)文件,并進(jìn)行仿真驗(yàn)證。仿真平臺(tái)框架如圖6.9所示。作為測(cè)試平臺(tái)的一部分,讀者將學(xué)會(huì)如何用并發(fā)描述語(yǔ)句和順序描述語(yǔ)句創(chuàng)建一個(gè)簡(jiǎn)單的輸入激勵(lì)。圖6.9AND_OR的測(cè)試平臺(tái)框架6.2.2實(shí)驗(yàn)?zāi)繕?biāo)
●創(chuàng)建一個(gè)測(cè)試平臺(tái)文件,測(cè)試實(shí)驗(yàn)一中的AND_OR模塊,驗(yàn)證其正確性;
●學(xué)習(xí)ISE9.1i中的測(cè)試平臺(tái)向?qū)В?/p>
●建立基本的輸入激勵(lì);
●學(xué)習(xí)仿真驗(yàn)證的方法。
6.2.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含四個(gè)主要的部分:創(chuàng)建一個(gè)新的工程,并導(dǎo)入VHDL源文件;用ISE中的測(cè)試平臺(tái)向?qū)蓽y(cè)試平臺(tái)文件;創(chuàng)建并發(fā)和順序描述的輸入激勵(lì)語(yǔ)句;最后運(yùn)行仿真,驗(yàn)證邏輯的正確性,并通過(guò)仿真波形,驗(yàn)證設(shè)計(jì)的功能是否正確。6.2.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB2,并導(dǎo)入已有的VDHL程序。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject打開(kāi)創(chuàng)建新工程界面,ProjectName中填入工程名LAB2,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB2。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
(5)選擇菜單欄中的Porject→AddCopyofSource。
(6)文件查找路徑選擇為\VHDL_LABS\LAB1,選擇已存在的三個(gè)文件AND_OR,MY_AND2,MY_OR2,然后單擊Open按鈕。
(7)?ISE會(huì)自動(dòng)檢測(cè)加入的文件,如圖6.10所示。單擊OK按鈕,確認(rèn)添加的文件。圖6.10加入源文件
2.創(chuàng)建一個(gè)測(cè)試平臺(tái)文件
使用測(cè)試平臺(tái)向?qū)梢粋€(gè)測(cè)試平臺(tái)文件。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,左側(cè)選擇VHDLTestBench,右側(cè)FileName欄中填入文件名AND_OR_TB,如圖6.11所示。
(3)單擊Next按鈕,軟件會(huì)彈出一個(gè)界面,詢問(wèn)測(cè)試平臺(tái)文件與哪個(gè)設(shè)計(jì)文件關(guān)聯(lián)。
(4)選擇頂層模塊AND_OR,單擊Next按鈕,確認(rèn)文件信息后,單擊Finish按鈕,完成文件的創(chuàng)建。圖6.11源文件類型選擇向?qū)е链?,我們已?jīng)設(shè)計(jì)好了測(cè)試平臺(tái)文件的框架。ISE的測(cè)試平臺(tái)文件向?qū)ё詣?dòng)為我們完成了測(cè)試平臺(tái)文件的結(jié)構(gòu)設(shè)計(jì)。在ISE的Sources窗口中,選擇Sourcesfor欄的BehavioralSimulation,用戶可以在Sources窗口中看到AND_OR_TB文件,雙擊這個(gè)文件,可以查看文件的內(nèi)容。
測(cè)試平臺(tái)文件包括以下幾部分:
●被測(cè)試的頂層元件聲明;
●頂層的信號(hào)聲明;
●元件例化與端口映射;
●測(cè)試激勵(lì)輸入的外部描述結(jié)構(gòu)。
3.創(chuàng)建簡(jiǎn)單的輸入激勵(lì)
用并發(fā)描述語(yǔ)句和順序描述語(yǔ)句創(chuàng)建簡(jiǎn)單的測(cè)試輸入激勵(lì)。測(cè)試源需要對(duì)總線INP(3downto0)的信號(hào)單獨(dú)輸入測(cè)試激勵(lì),因此首先要將INP的信號(hào)分開(kāi),這里用兩組信號(hào)分別與INP的不同信號(hào)相連,便于分別驅(qū)動(dòng)。
(1)在AND_OR_TB文件的Architecture中加入兩個(gè)信號(hào)定義:
signalA_STIM,B_STIM:STD_LOGIC_VECTOR(1downto0);
(2)在Architecture聲明后,在begin之后插入下面的直接代入語(yǔ)句:
INP<=A_STIM&B_STIM;
(3)參考本實(shí)驗(yàn)后面的代碼對(duì)A_STIM和B_STIM分別輸入獨(dú)立的測(cè)試激勵(lì)。
4.驗(yàn)證AND_OR的邏輯結(jié)構(gòu)
運(yùn)行仿真,查看仿真波形,驗(yàn)證設(shè)計(jì)的功能正確性。
(1)在完成了AND_OR_TB.VHD測(cè)試平臺(tái)文件的編寫(xiě)之后,在Sources窗口的Sourcesfor欄中選擇BehavioralSimulation,并在文件樹(shù)中選擇AND_OR_TB.vhd,在Processes窗口中雙擊CheckSyntax,如圖6.12所示。
(2)如果發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,請(qǐng)修正錯(cuò)誤后繼續(xù)進(jìn)行下面的步驟。圖6.12對(duì)仿真平臺(tái)文件做語(yǔ)法檢查
(3)在Processes窗口中,雙擊SimulateBehavioralModel,ISE將會(huì)自動(dòng)進(jìn)行仿真,如果沒(méi)有錯(cuò)誤,仿真后的波形應(yīng)如圖6.13所示。圖6.13AND_OR_TB仿真波形注意:在圖6.13左側(cè)的Processes窗口中,會(huì)出現(xiàn)一個(gè)SimHierarchy選項(xiàng)卡,這個(gè)層次結(jié)構(gòu)即為AND_OR_TB測(cè)試平臺(tái)的層次結(jié)構(gòu)。用戶可以展開(kāi)這個(gè)仿真層次,然后選中設(shè)計(jì)文件中任一層次的任一信號(hào),將其拖入波形窗口中,查看仿真結(jié)果。
開(kāi)始仿真后,在ISE的菜單欄中會(huì)出現(xiàn)一個(gè)Simulate菜單,與其相應(yīng)的,在工具欄中會(huì)出現(xiàn)仿真工具,如圖6.14所示。圖6.14工具欄中的仿真工具6.2.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們創(chuàng)建了一個(gè)測(cè)試平臺(tái),并對(duì)實(shí)驗(yàn)一中的AND_OR模塊進(jìn)行了驗(yàn)證。這個(gè)測(cè)試平臺(tái)雖然簡(jiǎn)單,但包含了一般仿真過(guò)程的基本步驟。在后續(xù)的實(shí)驗(yàn)中,還會(huì)在測(cè)試平臺(tái)文件中加入更多的功能和特性。
6.2.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下:
6.3實(shí)驗(yàn)三存儲(chǔ)器和記錄類型實(shí)驗(yàn)
6.3.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成圖6.15所示的結(jié)構(gòu)中MEM部分的模塊。實(shí)驗(yàn)內(nèi)容主要涉及記錄(record)數(shù)據(jù)類型的使用方法,以及如何以此為基礎(chǔ),用二維數(shù)組描述一個(gè)存儲(chǔ)器。圖6.15簡(jiǎn)單的計(jì)數(shù)器6.3.2實(shí)驗(yàn)?zāi)繕?biāo)
●用記錄(record)數(shù)據(jù)類型創(chuàng)建一個(gè)用戶自定義的RAM結(jié)構(gòu);
●創(chuàng)建計(jì)數(shù)器的第一個(gè)元件;
●多種VHDL數(shù)據(jù)類型的復(fù)合使用;
●驗(yàn)證邏輯結(jié)構(gòu)。
6.3.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含三個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;創(chuàng)建一個(gè)VHDL的包集合,包集合中定義了用戶自定義的記錄(record)數(shù)據(jù)類型;最后用這個(gè)記錄(record)數(shù)據(jù)類型創(chuàng)建一個(gè)二維的存儲(chǔ)器數(shù)組。6.3.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB3。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,ProjectName中填入工程名LAB3,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB3。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中都不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.創(chuàng)建一個(gè)包含記錄(record)數(shù)據(jù)類型的包集合
創(chuàng)建一個(gè)包集合,并在包集合中包含用戶自定義的記錄(record)數(shù)據(jù)類型。
(1)選擇菜單欄的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLPackage,在右側(cè)FileName欄中填入文件名CALC1_PACKAGE。
(3)單擊Next按鈕,文本編輯框中即顯示已創(chuàng)建好的包集合模板。這個(gè)包集合模板中包含了各種常用的聲明語(yǔ)句,在使用時(shí)可能感覺(jué)比較繁雜,由于本實(shí)驗(yàn)只定義一個(gè)記錄(record)數(shù)據(jù)類型,讀者可以只保留包集合模板中package和endpackage的聲明語(yǔ)句,其他語(yǔ)句都刪掉。
(4)將包集合命名為CALC1_PAK。
(5)創(chuàng)建一個(gè)記錄,命名為MY_RECORD,MY_RECORD包含以下元素:
3.創(chuàng)建一個(gè)二維存儲(chǔ)器數(shù)組
用已定義好的MY_RECORD類型聲明一個(gè)二維存儲(chǔ)器數(shù)組。
(1)選擇菜單欄中的Project→NewSource;
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLModule,在右側(cè)FileName欄中填入文件名MEM,單擊Next按鈕進(jìn)入端口定義窗口DefineModule。
(3)在DefineModule窗口中輸入下面的端口定義:
ADDR:in
STD_LOGIC_VECTOR(2downto0);
EN:in
STD_LOGIC;
DATA_FRAME:outMY_RECORD;注意:在DefineModule窗口中是無(wú)法定義MY_RECORD類型的,窗口中的端口默認(rèn)為STD_LOGIC和STD_LOGIC_VECTOR類型的數(shù)據(jù)。DATA_FRAME的數(shù)據(jù)類型需要在文件生成好后,在文本編輯器中修改。
(4)在MEM的庫(kù)和包集合使用聲明中,加入對(duì)CALC1_PAK的使用聲明。
(5)在結(jié)構(gòu)體中定義一個(gè)二維存儲(chǔ)器類型ROM_ARRAY,ROM_ARRAY類型中包含6個(gè)MY_RECORD類型的數(shù)據(jù)。
(6)聲明一個(gè)ROM_ARRAY類型的常量MY_ROM,并對(duì)其進(jìn)行初始化。
(7)在結(jié)構(gòu)體的進(jìn)程中,用MY_ROM中的數(shù)據(jù)對(duì)輸出端口賦值,讀者可以參考本實(shí)驗(yàn)后面的實(shí)驗(yàn)代碼完成此步驟。
語(yǔ)法檢查:
(1)在Sources窗口中選擇MEM.VHD,在Processes窗口中雙擊CheckSyntax。
(2)如果語(yǔ)法檢查有錯(cuò)誤,請(qǐng)修正錯(cuò)誤后繼續(xù)進(jìn)行下面的步驟。
注意:如果此時(shí)查看MEM對(duì)應(yīng)的RTL原理圖,讀者會(huì)看到這個(gè)原理圖并不完整,這是由于存儲(chǔ)器中全部的值都是常量,而且沒(méi)有做任何的處理,綜合器在綜合時(shí)將電路做了優(yōu)化。6.3.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們首先創(chuàng)建了一個(gè)包集合,包集合中的內(nèi)容將會(huì)在后續(xù)的設(shè)計(jì)中經(jīng)常用到;之后,創(chuàng)建了一個(gè)用戶自定義的記錄類型,并以此為基礎(chǔ)定義了一個(gè)二維存儲(chǔ)數(shù)組類型。存儲(chǔ)器內(nèi)部的值設(shè)置為常量,我們會(huì)在后續(xù)的實(shí)驗(yàn)中修改存儲(chǔ)器中的值。
6.3.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下:
6.4實(shí)驗(yàn)四n比特計(jì)數(shù)器及RTL驗(yàn)證實(shí)驗(yàn)
6.4.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成圖6.16中MY_CNTR計(jì)數(shù)器的RTL描述,計(jì)數(shù)器的位寬用generic語(yǔ)句設(shè)置為參數(shù)。MY_CNTR是一個(gè)n比特二進(jìn)制的計(jì)數(shù)器,可以向上向下計(jì)數(shù),并可設(shè)置計(jì)數(shù)值,計(jì)數(shù)器用異步的方式進(jìn)行低電平復(fù)位。實(shí)驗(yàn)的后半部分將會(huì)建立一個(gè)測(cè)試平臺(tái),測(cè)試計(jì)數(shù)器的RTL代碼是否能夠完成既定的功能。圖6.16n比特計(jì)數(shù)器6.4.2實(shí)驗(yàn)?zāi)繕?biāo)
●創(chuàng)建、仿真并驗(yàn)證n比特二進(jìn)制計(jì)數(shù)器的RTL代碼;
●在ISE中使用語(yǔ)法模板;
●使用VHDL中的generic語(yǔ)句。
6.4.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含三個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;用generic語(yǔ)句聲明參數(shù);創(chuàng)建一個(gè)測(cè)試平臺(tái)驗(yàn)證設(shè)計(jì)文件的正確性。
6.4.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB4。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject打開(kāi)創(chuàng)建新工程界面,在ProjectName中填入工程名LAB4,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB4。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中都不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.用generic語(yǔ)句聲明參數(shù)
創(chuàng)建MY_CNTR實(shí)體。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口的左側(cè)選擇VHDLModule,在右側(cè)FileName欄中填入文件名MY_CNTR。
(3)單擊Next按鈕,進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中輸入圖6.16所示的輸入/輸出端口定義,其中只有D_IN和Q_OUT是位寬為參數(shù)的總線,其他端口都為單根信號(hào),單擊Next按鈕,確認(rèn)模塊信息后單擊Finish按鈕完成模塊的生成。
在DefineModule中不能使用generic語(yǔ)句定義模塊的參數(shù),模塊的參數(shù)需要在文本編輯器中添加和修改。本實(shí)驗(yàn)中的功能語(yǔ)句將需要用到數(shù)組的算術(shù)運(yùn)算,因此要聲明使用IEEE的兩個(gè)包集合IEEE.STD_LOGIC_UNSIGNED.ALL和IEEE.STD_LOGIC_ARITH.ALL。
模塊生成向?qū)Р恢С帜K的參數(shù)定義,因此需要手工輸入。
(1)使用VHDL中的generic語(yǔ)句將模塊的端口位寬定義為參數(shù),參數(shù)的類型定義為整數(shù)類型,默認(rèn)值為8。
(2)端口位寬的參數(shù)名用戶可以自行定義。
模塊的實(shí)體定義完成之后,需要定義模塊的結(jié)構(gòu)體實(shí)現(xiàn)。
(1)在結(jié)構(gòu)體內(nèi),用if/else語(yǔ)句描述計(jì)數(shù)器的功能實(shí)現(xiàn)。在描述功能實(shí)現(xiàn)時(shí),讀者首先需要考慮這些控制信號(hào)的優(yōu)先級(jí),然后考慮在設(shè)定的優(yōu)先級(jí)情況下如何描述計(jì)數(shù)器的功能實(shí)現(xiàn)。
ISE的VHDL語(yǔ)言模板中已經(jīng)定義了一個(gè)計(jì)數(shù)器的模板,讀者可以直接拷貝模板程序,然后做一些簡(jiǎn)單的修改。選擇菜單欄中的Edit→LanguageTemplates,如圖6.17所示,即可打開(kāi)計(jì)數(shù)器的模板。圖6.17VHDL中的計(jì)數(shù)器模板
(2)在結(jié)構(gòu)體中聲明一個(gè)信號(hào),信號(hào)的位寬為8,用參數(shù)聲明信號(hào)的位寬,信號(hào)名稱定義為COUNT。在時(shí)序進(jìn)程中,將控制這個(gè)信號(hào)的值。
(3)在進(jìn)程外,用COUNT對(duì)模塊的端口Q_OUT賦值,即Q_OUT<=COUNT。
(4)復(fù)位時(shí),用下面的語(yǔ)句對(duì)COUNT信號(hào)賦值:
COUNT<=(others=>'0');
使用這種方式賦值時(shí),設(shè)計(jì)者不需要關(guān)注信號(hào)的實(shí)際位寬。這是增強(qiáng)程序靈活性的一種重要方法,因?yàn)樵谑褂胓eneric語(yǔ)句時(shí),端口的位寬可以是任意長(zhǎng)度。這一步完成后,MY_CNTR的源代碼就編寫(xiě)完成了,如果讀者對(duì)代碼仍有疑問(wèn),可以參考本實(shí)驗(yàn)后面的實(shí)驗(yàn)代碼部分完成代碼的編寫(xiě)。
語(yǔ)法檢查:
(1)在Sources窗口中選中MY_CNTR.VHD,在Processes窗口中展開(kāi)Synthesis,并雙擊CheckSyntax。
(2)雙擊ViewRTLSchematic驗(yàn)證綜合器是否將代碼綜合為一個(gè)二進(jìn)制計(jì)數(shù)器。
(3)如果代碼中有語(yǔ)法錯(cuò)誤,請(qǐng)修正錯(cuò)誤后繼續(xù)執(zhí)行下面的步驟。
3.創(chuàng)建測(cè)試平臺(tái)
建立測(cè)試平臺(tái)并驗(yàn)證計(jì)數(shù)器的功能是否滿足設(shè)計(jì)需求。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLTestBench,在右側(cè)FileName欄中填入文件名MY_CNTR_TB。
(3)單擊Next按鈕,軟件彈出一個(gè)界面,詢問(wèn)測(cè)試平臺(tái)文件與哪個(gè)設(shè)計(jì)文件關(guān)聯(lián),選擇MY_CNTR。
與之前的實(shí)驗(yàn)相同,測(cè)試平臺(tái)生成向?qū)б呀?jīng)為用戶搭建好了測(cè)試平臺(tái)的框架,設(shè)計(jì)者可以只關(guān)注于測(cè)試輸入激勵(lì)。
測(cè)試平臺(tái)向?qū)傻奈募蚣苤?,元件的參?shù)已經(jīng)被去掉,而直接用參數(shù)的默認(rèn)值代替。在本實(shí)驗(yàn)中,參數(shù)的默認(rèn)值正好是我們需要的值,然而在其他的應(yīng)用中,為了保持參數(shù)的靈活性,用戶可能要重新聲明元件的參數(shù)。
創(chuàng)建測(cè)試輸入激勵(lì),如果在編寫(xiě)激勵(lì)過(guò)程中有疑問(wèn)可以對(duì)照本實(shí)驗(yàn)后面的實(shí)驗(yàn)代碼部分。
(1)?CLOCK時(shí)鐘頻率設(shè)置為100MHz。
(2)在15ns時(shí)對(duì)計(jì)數(shù)器進(jìn)行復(fù)位,復(fù)位保持時(shí)間為25ns。
(3)?CE信號(hào)的初始值設(shè)置為High,300ns后拉低,并保持100ns。
(4)?LOAD信號(hào)初始值為L(zhǎng)ow,500ns后拉高,并保持一個(gè)時(shí)鐘周期。
(5)?UPDN信號(hào)初始值為High,750ns后拉低。
(6)?D_IN信號(hào)的值設(shè)置為X“0F”或00001111。
檢查語(yǔ)法錯(cuò)誤,并用ISESimulator進(jìn)行仿真。
(1)在Sources窗口中選中MY_CNTR_TB.VHD,在Processes窗口中雙擊CheckSyntax。
(2)如果有語(yǔ)法錯(cuò)誤,請(qǐng)修正后繼續(xù)后面的步驟。
(3)在Processes窗口中,雙擊SimulateBehavioralModel。仿真的結(jié)果如圖6.18所示。圖6.18計(jì)數(shù)器仿真結(jié)果6.4.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們創(chuàng)建了一個(gè)參數(shù)可配置的n比特二進(jìn)制計(jì)數(shù)器,計(jì)數(shù)器可以被配置成任意位寬,generic語(yǔ)句是模塊重用和增加代碼可讀性的一種重要方法。
我們同時(shí)熟悉了ISE中的VHDL語(yǔ)言模板的使用方法,使用模板可以幫助用戶方便快捷地建立所需類型的代碼。
實(shí)驗(yàn)的最后,我們創(chuàng)建了一個(gè)測(cè)試平臺(tái),并設(shè)計(jì)了輸入激勵(lì),對(duì)設(shè)計(jì)文件進(jìn)行了對(duì)應(yīng)的功能仿真。
6.4.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下:
6.5實(shí)驗(yàn)五比較器實(shí)驗(yàn)
6.5.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成圖6.19中比較器COMP的兩種描述方式下的獨(dú)立描述,一種為行為描述方式,應(yīng)用VHDL中的Assert語(yǔ)句和條件信號(hào)賦值語(yǔ)句;另一種為RTL描述方式,用if/else語(yǔ)句。圖6.19簡(jiǎn)單的計(jì)數(shù)器6.5.2實(shí)驗(yàn)?zāi)繕?biāo)
●學(xué)習(xí)使用assert語(yǔ)句;
●學(xué)習(xí)使用VHDL中的基本條件描述結(jié)構(gòu)if/else;
●用行為描述方式和RTL描述方式分別對(duì)給定的模塊進(jìn)行描述;
●驗(yàn)證設(shè)計(jì)文件的正確性。
6.5.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含四個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;創(chuàng)建COMP的行為描述代碼;創(chuàng)建COMP的RTL描述代碼;創(chuàng)建測(cè)試平臺(tái)文件,驗(yàn)證描述模型的正確性。6.5.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB5。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,ProjectName中填入工程名LAB5,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB5。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.創(chuàng)建COMP的行為描述
1)創(chuàng)建COMP的行為描述
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLModule,在右側(cè)FileName欄中填入文件名COMP。
(3)單擊Next按鈕進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中輸入表6.1所示的輸入/輸出端口定義,單擊Next按鈕,確認(rèn)模塊信息后,單擊Finish按鈕,完成模塊的配置。表6.1COMP的端口定義
(5)在生成的模塊定義中,結(jié)構(gòu)體的名稱默認(rèn)為Behavioral,無(wú)需改變。
2)完成模塊的結(jié)構(gòu)體描述
本步驟主要完成行為描述方式的結(jié)構(gòu)體,最主要的目的是仿真。使用VHDL中的assert語(yǔ)句比較兩個(gè)輸入信號(hào),并配以severitylevel和report結(jié)構(gòu)完成比較。用條件信號(hào)賦值語(yǔ)句對(duì)輸出信號(hào)RESULT賦值,如果輸入的兩個(gè)信號(hào)相等,則賦值為1,否則賦值為0。讀者可以參考本實(shí)驗(yàn)后面的代碼完成源文件的編寫(xiě)。
3)語(yǔ)法檢查
(1)在Sources窗口中選中COMP.VHD,在Processes窗口中展開(kāi)Synthesis,并雙擊CheckSyntax。
(2)如果代碼中有語(yǔ)法錯(cuò)誤,請(qǐng)修正錯(cuò)誤后繼續(xù)執(zhí)行下面的步驟。
3.創(chuàng)建COMP的RTL描述
創(chuàng)建RTL描述方式的COMP。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口的左側(cè)選擇VHDLModule,右側(cè)FileName欄中填入文件名COMP_RTL。
(3)單擊Next按鈕,進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中將模塊的結(jié)構(gòu)體名稱改為RTL,并按照與行為描述方式中相同的方法填寫(xiě)模塊的端口定義。
(5)在COMP_RTL的結(jié)構(gòu)體描述中使用if/else語(yǔ)句描述COMP_RTL的功能,實(shí)現(xiàn)的功能與行為描述中實(shí)現(xiàn)的功能相同。
4.創(chuàng)建測(cè)試平臺(tái)文件
創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試平臺(tái),并驗(yàn)證行為描述方式下的COMP模塊功能是否正確。
在仿真的時(shí)候請(qǐng)注意查看ISE的console窗口,如果輸入的兩個(gè)數(shù)據(jù)不同,則在console窗口中會(huì)打印出用戶定制的消息。
使用ISESimulator對(duì)創(chuàng)建的測(cè)試平臺(tái)進(jìn)行仿真,并調(diào)試工程源代碼。6.5.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們創(chuàng)建了COMP模塊的兩種描述方式下的代碼,第一種為行為級(jí)描述方式,主要用于仿真,使用的描述語(yǔ)句為assert語(yǔ)句和report語(yǔ)句;第二種為RTL描述,主要用于綜合生成最終的電路,使用的描述語(yǔ)句為if/else語(yǔ)句。
在實(shí)驗(yàn)中,用戶需要使用VHDL中的generate語(yǔ)句在兩種結(jié)構(gòu)體描述中做出選擇。
6.5.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下:
6.6實(shí)驗(yàn)六算術(shù)邏輯單元實(shí)驗(yàn)
6.6.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成圖6.19中算術(shù)邏輯單元ALU的RTL描述。
6.6.2實(shí)驗(yàn)?zāi)繕?biāo)
●學(xué)習(xí)使用case語(yǔ)句描述ALU的結(jié)構(gòu);
●驗(yàn)證邏輯結(jié)構(gòu);
●為計(jì)數(shù)器項(xiàng)目創(chuàng)建一個(gè)子模塊;
●為輸出數(shù)據(jù)的比較做準(zhǔn)備。
6.6.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含三個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;創(chuàng)建COMP的行為描述代碼;使用case描述語(yǔ)句;估計(jì)輸出的期望值以用于后面輸出的比較。6.6.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB6。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject打開(kāi)創(chuàng)建新工程界面,在ProjectName中填入工程名LAB6,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB6。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中都不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.使用case描述語(yǔ)句
創(chuàng)建ALU模塊的實(shí)體:
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLModule,在右側(cè)FileName欄中填入文件名ALU。
(3)單擊Next按鈕,進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中輸入表6.2所示的輸入/輸出端口定義,單擊Next按鈕,確認(rèn)模塊信息后,單擊Finish按鈕完成模塊的配置。表6.2ALU的端口定義完成模塊的結(jié)構(gòu)體描述:
(1)用case語(yǔ)句描述如表6.3所示的ALU的功能語(yǔ)句,讀者可以參照本實(shí)驗(yàn)后面的代碼完成功能語(yǔ)句的描述。表6.3ALU的功能描述
(2)計(jì)算可能的輸出結(jié)果。填寫(xiě)表格6.4,計(jì)算在給定的一些輸入時(shí),輸出應(yīng)該是什么。表格中的數(shù)據(jù)將被用于描述語(yǔ)句的功能驗(yàn)證。表6.4估計(jì)期望的輸出值語(yǔ)法檢查:
(1)在Sources窗口選中ALU.VHD,在Processes窗口中展開(kāi)Synthesis,并雙擊CheckSyntax。
(2)如果代碼中有語(yǔ)法錯(cuò)誤,請(qǐng)修正錯(cuò)誤后繼續(xù)執(zhí)行下面的步驟。
6.6.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們用case語(yǔ)句創(chuàng)建了計(jì)數(shù)器工程中的ALU模塊,并為驗(yàn)證后續(xù)實(shí)驗(yàn)中的設(shè)計(jì)模塊做好了準(zhǔn)備。
在后續(xù)的模塊中,將從MEM模塊中讀出用于計(jì)算的數(shù)據(jù)和期望的輸出結(jié)果,將用于計(jì)算的輸入數(shù)據(jù)傳入ALU中進(jìn)行計(jì)算,計(jì)算的結(jié)果傳輸?shù)紺MP的輸入接口。在CMP中,將ALU計(jì)算的結(jié)果和MEM模塊中讀出的期望結(jié)果進(jìn)行比較,最后給出比較結(jié)果。6.6.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下: 6.7實(shí)驗(yàn)七狀態(tài)機(jī)實(shí)驗(yàn)
6.7.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將完成圖6.19中CNTRL_FSM子模塊的描述,同時(shí)對(duì)CNTRL_FSM的RTL描述做進(jìn)一步的驗(yàn)證。
在本實(shí)驗(yàn)中,讀者可以采用單進(jìn)程的方式描述FSM,也可以采用多進(jìn)程的方式描述,無(wú)論采用哪種方式,F(xiàn)SM的輸出都要通過(guò)寄存器輸出。在本實(shí)驗(yàn)過(guò)程中,我們采用多進(jìn)程的方式描述,如果時(shí)間允許,讀者可以嘗試使用單進(jìn)程的方式完成本實(shí)驗(yàn)。
本實(shí)驗(yàn)將完成如圖6.20所示FSM的VHDL代碼描述。圖6.20CNTRL_FSM的狀態(tài)機(jī)6.7.2實(shí)驗(yàn)?zāi)繕?biāo)
●學(xué)習(xí)狀態(tài)機(jī)的VHDL語(yǔ)言描述方法;
●學(xué)習(xí)狀態(tài)機(jī)的單進(jìn)程和多進(jìn)程描述方法。
6.7.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含三個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;編寫(xiě)FSM的VHDL代碼;仿真驗(yàn)證代碼的功能正確性。
6.7.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB7。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,在ProjectName中填入工程名LAB7,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB7。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.FSM的多進(jìn)程描述方式
創(chuàng)建FSM模塊的實(shí)體。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口的左側(cè)選擇VHDLModule,右側(cè)FileName欄中填入文件名CNTRL_FSM。
(3)單擊Next按鈕,進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中輸入如圖6.21所示的輸入/輸出端口定義,單擊Next按鈕,確認(rèn)模塊信息后,單擊Finish按鈕完成模塊的配置。
(5)導(dǎo)入實(shí)驗(yàn)三中定義的包集合CALC1_PAK。
由于MEM和FSM有相同的MY_RECORD類型信號(hào)的互聯(lián),導(dǎo)入CALC1_PAK可以保持兩個(gè)模塊之間數(shù)據(jù)的一致性。
(6)在FSM中用use語(yǔ)句聲明使用CLAC1_PAK。
(7)在關(guān)鍵字architecture和begin之間,定義一個(gè)枚舉類型STATE_TYPE,枚舉的值為圖6.20中的狀態(tài)值。
(8)定義兩個(gè)STATE_TYPE類型的信號(hào)CURR_STATE和NEXT_STATE,如果是單進(jìn)程描述,可以只定義一個(gè)信號(hào)STATE。
注意:模塊的復(fù)位有效信號(hào)為RESET的高電平。
(9)描述FSM的狀態(tài)轉(zhuǎn)換代碼,在描述的過(guò)程中要注意以下幾點(diǎn):
●輸出信號(hào)ADDR在FSM內(nèi)部要完成自加操作,同時(shí)要作為判斷條件使用,因此需要定義一個(gè)內(nèi)部信號(hào),這個(gè)信號(hào)在FSM內(nèi)部可以被更新,同時(shí)可以驅(qū)動(dòng)外部的輸出端口。在實(shí)驗(yàn)中注意觀察這個(gè)信號(hào)的變化?!衲K需要定義一個(gè)MY_RECORD類型的輸入端口,接收前端模塊輸入的MY_RECORD類型的數(shù)據(jù)DATA_FRAME。在結(jié)構(gòu)體內(nèi)部需要用DATA_FRAME中的組成元素分別驅(qū)動(dòng)模塊中的信號(hào)和輸出端口。例如,A_OP<=DATA_FRAME.A_IN。
●?COMP_EN和ALU_EN信號(hào)需要精確地控制。
●當(dāng)ADDR_I信號(hào)的計(jì)數(shù)值計(jì)到“101”后,F(xiàn)SM需要一直保持在這個(gè)狀態(tài),直到復(fù)位信號(hào)有效。
3.驗(yàn)證功能的正確性
創(chuàng)建一個(gè)測(cè)試平臺(tái),測(cè)試FSM的功能正確性,對(duì)單進(jìn)程的FSM描述和多進(jìn)程的FSM描述可以采用同一個(gè)輸入激勵(lì)源。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLTestBench,在右側(cè)FileName欄中填入文件名CNTRL_FSM_TB。
(3)單擊Next按鈕,軟件彈出一個(gè)界面,詢問(wèn)測(cè)試平臺(tái)文件與哪個(gè)設(shè)計(jì)文件有關(guān)聯(lián),選擇CNTRL_FSM。
注意:測(cè)試平臺(tái)文件中也需要聲明使用CLAC1_PAK。測(cè)試平臺(tái)和測(cè)試輸入激勵(lì)需要完成下面的功能:
●?RESET為High時(shí),F(xiàn)SM是否能正常復(fù)位;
●?ADDR是否按照既定的方式自增;
●?COMP_EN和ALU_EN信號(hào)的時(shí)序是否滿足要求;
●當(dāng)ADDR_I信號(hào)達(dá)到上界時(shí),F(xiàn)SM是否保持在S3_DONE狀態(tài)。
讀者可以使用之前填好的表6.4中的測(cè)試數(shù)據(jù)來(lái)測(cè)試本實(shí)驗(yàn)中的FSM。
(1)輸入的時(shí)鐘信號(hào)頻率為50MHz。
(2)仿真25ns后將RESET信號(hào)拉高進(jìn)行復(fù)位,并保持25ns。
(3)控制輸入用于測(cè)試的DATA_FRAME數(shù)據(jù)。在ISE默認(rèn)的仿真情況下,仿真平臺(tái)中使用的下層元件信號(hào)是無(wú)法在波形窗口中看到的。讀者需要手動(dòng)將下層的信號(hào)加入到仿真波形中。
(1)在Sources窗口中選中CNTRL_FSM_TB,在Processes窗口中雙擊SimulateBehavioralVHDLModule,在彈出的仿真波形窗口中,可以看到仿真的波形。
(2)在Processes的SIMHierarchyView窗口中,選擇CNTRL_FSM_TB的下層模塊CNTRL_FSM,并展開(kāi)其樹(shù)結(jié)構(gòu)。
(3)選中樹(shù)結(jié)構(gòu)中的CURRENT_STATE信號(hào),并將其拖動(dòng)到仿真波形窗口中。
(4)讀者可以使用仿真工具欄中的仿真工具控制仿真過(guò)程。6.7.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們用狀態(tài)機(jī)實(shí)現(xiàn)了計(jì)數(shù)器工程中的控制模塊。為了保持?jǐn)?shù)據(jù)類型的一致性,在程序中導(dǎo)入了之前定義的CALC1_PAK包集合,這個(gè)包集合中包含了MY_RECORD類型定義。
為了驗(yàn)證狀態(tài)機(jī)描述的正確性,我們創(chuàng)建了一個(gè)測(cè)試平臺(tái)來(lái)測(cè)試模塊功能的正確性。
6.7.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下: 6.8實(shí)驗(yàn)八計(jì)數(shù)器實(shí)驗(yàn)
6.8.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)將前面實(shí)驗(yàn)中分別完成的計(jì)數(shù)器子模塊組合在一起,完成計(jì)數(shù)器的頂層模塊SIMPLE_CALC,如圖6.19所示。
6.8.2實(shí)驗(yàn)?zāi)繕?biāo)
●合并之前已經(jīng)設(shè)計(jì)好的子模塊;
●使用VHDL中的generate描述語(yǔ)句;
●在仿真過(guò)程中對(duì)輸出數(shù)據(jù)做比較;
●驗(yàn)證整個(gè)電路功能的正確性;
●運(yùn)行仿真。6.8.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)包含六個(gè)主要的部分:創(chuàng)建一個(gè)新的ISE工程;導(dǎo)入之前寫(xiě)好的工程文件;修改MEM模塊,更新ROM中的值;編寫(xiě)SIMPLE_CALC的頂層模塊,并檢查語(yǔ)法錯(cuò)誤;創(chuàng)建測(cè)試平臺(tái),并對(duì)工程進(jìn)行仿真驗(yàn)證;最后,用ISE中的Place&Route工具在FPGA器件中實(shí)現(xiàn)這個(gè)計(jì)數(shù)器,并查看相應(yīng)的報(bào)告文件。
6.8.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB8。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,在ProjectName中填入工程名LAB8,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB8。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
2.導(dǎo)入源文件
導(dǎo)入實(shí)驗(yàn)三、五、六、七中分別創(chuàng)建的包集合CLAC_PAK和下層模塊MEM、COMP、COMP_RTL、ALU和CNTRL_FSM。
(1)選擇菜單欄中的Project→AddCopyofSource。
(2)選擇目錄為\VHDL_LABS\LAB5,選擇COMP.vhd和COMP_RTL.vhd,單擊打開(kāi)按鈕,如圖6.21所示。圖6.21添加已有源文件的拷貝
(3)?ISE會(huì)自動(dòng)識(shí)別添加文件的類型,如圖6.22所示。
(4)重復(fù)上面的操作步驟,將實(shí)驗(yàn)三完成的CALC1_PAK包集合和MEM、實(shí)驗(yàn)六完成的ALU以及實(shí)驗(yàn)七完成的CNTRL_FSM加入到工程中來(lái)。圖6.22自動(dòng)識(shí)別源文件的類型
3.修改MEM模塊
修改MEM模塊的源文件,更新ROM中的數(shù)據(jù),將測(cè)試數(shù)據(jù)輸入MEM模塊中。
(1)在Sources窗口中雙擊MEM模塊。
(2)將MY_ROM中初始化的數(shù)據(jù)用表6.4中的數(shù)據(jù)修改,用于工程的仿真驗(yàn)證。
(3)保存修改后的文件。
4.編寫(xiě)頂層模塊的VHDL源代碼并做語(yǔ)法檢查
編寫(xiě)SIMPLE_CALC模塊的VHDL源代碼,并檢查語(yǔ)法錯(cuò)誤。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLModule,在右側(cè)FileName欄中填入文件名SIMPLE_CALC。
(3)單擊Next按鈕,進(jìn)入DefineModule窗口。
(4)在DefineModule窗口中輸入如表6.5所示的輸入/輸出端口定義,單擊Next按鈕,確認(rèn)模塊信息后,單擊Finish按鈕完成模塊的配置。表6.5SIMPLE_CALC的端口定義
(5)在打開(kāi)的新建VHDL文件編輯窗口中,聲明使用CALC1_PAK包集合,并將結(jié)構(gòu)體名稱修改為STRUCTURAL。
(6)在結(jié)構(gòu)體內(nèi),聲明要使用到的元件MEM、ALU、COMP、COMP_RTL和CNTRL_FSM。讀者可以采用快捷的方法聲明使用的元件,如直接將這些模塊的實(shí)體定義拷貝下來(lái),然后修改為元件聲明,或者選中某一個(gè)源文件,在Processes窗口中雙擊DesignUtilities→ViewInstantiationTemplate,ISE會(huì)給出源文件的聲明和例化模板,供設(shè)計(jì)者直接拷貝。
(7)聲明用于連接各個(gè)子模塊的內(nèi)部信號(hào)。用generate語(yǔ)句配置選擇使用COMP或是COMP_RTL模塊,COMP是行為描述結(jié)構(gòu)的模塊,只用于仿真,而COMP_RTL是RTL描述結(jié)構(gòu)的模塊。實(shí)際應(yīng)用中,要根據(jù)設(shè)計(jì)者的目的選擇使用哪一種配置。在本實(shí)驗(yàn)中,我們先用仿真的方法做驗(yàn)證,因此用generate語(yǔ)句配置為使用COMP模塊。
(1)在SIMPLE_CALC的實(shí)體定義中,用generic定義一個(gè)BOOLEAN類型的參數(shù)SYNTH,SYNTH參數(shù)的默認(rèn)值為FALSE。
(2)在結(jié)構(gòu)體的關(guān)鍵字begin之后,根據(jù)SYNTH的值創(chuàng)建兩個(gè)generate描述語(yǔ)句。讀者可以參照后面的實(shí)驗(yàn)代碼完成描述語(yǔ)句的編寫(xiě)。
(3)定義一個(gè)MY_RECORD類型的信號(hào),用于連接MEM子模塊和CNTRL_FSM子模塊。檢查語(yǔ)法錯(cuò)誤:
(1)在Sources窗口中,選中SIMPLE_CALC.VHD模塊,在Processes窗口中,展開(kāi)Synthesize樹(shù),并雙擊CheckSyntax。
(2)雙擊ViewRTLSchematic,查看綜合后的電路與設(shè)計(jì)目標(biāo)電路是否相符。
(3)如果源文件中有語(yǔ)法錯(cuò)誤,請(qǐng)修正語(yǔ)法錯(cuò)誤后繼續(xù)進(jìn)行下面的步驟。
5.仿真,驗(yàn)證功能正確性
創(chuàng)建SIMPLE_CALC模塊的測(cè)試平臺(tái),并運(yùn)行仿真,驗(yàn)證功能正確性。
(1)選擇菜單欄中的Project→NewSource。
(2)在SelectSourceType窗口中,選擇左側(cè)的VHDLTestBench,在右側(cè)FileName欄中填入文件名SIMPLE_CALC_TB。
(3)單擊Next按鈕,軟件彈出一個(gè)界面,詢問(wèn)測(cè)試平臺(tái)文件與哪個(gè)設(shè)計(jì)文件關(guān)聯(lián),選擇SIMPLE_CALC。
(4)在測(cè)試平臺(tái)文件編輯窗口中,設(shè)置CLK的時(shí)鐘頻率為50MHz。
(5)對(duì)測(cè)試平臺(tái)文件進(jìn)行仿真。
(6)在仿真過(guò)程中,將需要查看的子模塊中的信號(hào)拖入仿真波形窗口。
為了驗(yàn)證功能的正確性,讀者可以將所有希望查看的信號(hào)都拖入仿真波形窗口,仔細(xì)驗(yàn)證工程文件的功能正確性。
6.在FPGA中實(shí)現(xiàn)工程設(shè)計(jì),并查看報(bào)告文件
使用ISE中的Place&Route工具實(shí)現(xiàn)工程設(shè)計(jì),查看MAP和PAR的報(bào)告文件。
(1)在Sources窗口中,選中SIMPLE_CALC.VHD文件,在Processes窗口中,雙擊ImplementDesign,如圖6.23所示。圖6.23工程實(shí)現(xiàn)工具雙擊ImplementDesign,將執(zhí)行器件實(shí)現(xiàn)之前所需的全部步驟,這些步驟包括:
●?Translation:將全部的子模塊或網(wǎng)表文件融合到一個(gè)網(wǎng)表中。
●?Map:將網(wǎng)表中的邏輯用FPGA的底層資源替換,如slices,registers和I/O等。
●?Placement:將Map后的資源分布到FPGA的固定器件元素中。
●?Routing:對(duì)已經(jīng)布局好的FPGA底層器件進(jìn)行布線連接。
●?Trace:對(duì)布局布線后的設(shè)計(jì)工程進(jìn)行時(shí)序匯總,給出設(shè)計(jì)文件的最高運(yùn)行頻率等。
(2)工程實(shí)現(xiàn)全部結(jié)束之后,展開(kāi)ImplementDesign樹(shù),顯示所做底層的操作步驟及對(duì)應(yīng)的報(bào)告文件,如圖6.24所示。圖6.24工程實(shí)現(xiàn)的全部操作步驟
(3)雙擊MapReport。這個(gè)報(bào)告中包括警告、錯(cuò)誤和資源占用情況等全部信息。
報(bào)告中還包括工程實(shí)現(xiàn)所占用的分類FPGA器件資源。查看Map報(bào)告并嘗試填寫(xiě)下面的表格。
(4)展開(kāi)GeneratePost-Place&RouteStaticTiming,并雙擊AnalyzePostPlaceandRouteStaticTiming(TimingAnalyzer)。
(5)?ISE界面彈出一個(gè)新的工具組件,這個(gè)工具打開(kāi)后,選擇工具欄中的AnalyzeAgainstAuto-GeneratedDesignConstraints按鈕。如圖6.25所示,由于在工程設(shè)計(jì)中,我們并沒(méi)有加入任何的時(shí)序約束,因此這個(gè)報(bào)告會(huì)用默認(rèn)的分析工具給出詳細(xì)的時(shí)序報(bào)告。圖6.25時(shí)序分析器的工具欄查看時(shí)序分析報(bào)告,并填寫(xiě)下表中的內(nèi)容:6.8.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們完成了計(jì)數(shù)器工程的全部?jī)?nèi)容,學(xué)會(huì)了使用generate描述語(yǔ)句配置兩種不同描述方式的模塊。這個(gè)計(jì)數(shù)器工程已經(jīng)是一個(gè)完整的工程了,下一步我們只需要將這個(gè)工程下載到FPGA器件中實(shí)際運(yùn)行,并測(cè)試硬件系統(tǒng)電路即可。
6.8.6實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下: 6.9實(shí)驗(yàn)九IP核應(yīng)用實(shí)驗(yàn)
6.9.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)指導(dǎo)讀者使用ISE中的XilinxCoreGenerator工具生成一個(gè)IP核,?在設(shè)計(jì)工程中將生成的IP核作為一個(gè)元件使用,并對(duì)其進(jìn)行仿真驗(yàn)證。
6.9.2實(shí)驗(yàn)?zāi)繕?biāo)
●使用XilinxCoreGenerator工具生成一個(gè)IP核;
●在已有的工程文件中對(duì)IP核進(jìn)行例化;
●對(duì)包含IP核的工程設(shè)計(jì)文件進(jìn)行功能仿真。6.9.3實(shí)驗(yàn)過(guò)程
本實(shí)驗(yàn)中,我們將使用CoreGenerator工具創(chuàng)建一個(gè)塊RAM核,使用這個(gè)核替換已有工程中的fifo_2048x8模塊。
實(shí)驗(yàn)包含四個(gè)主要的部分:創(chuàng)建一個(gè)工程;生成新的核;在工程中對(duì)核進(jìn)行例化;對(duì)修改后的核做功能仿真。
6.9.4實(shí)驗(yàn)步驟
1.創(chuàng)建一個(gè)新的工程
在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB9。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,ProjectName中填入工程名LAB9,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB9。
(3)在DeviceProperties窗口中,填寫(xiě)與實(shí)驗(yàn)一中相同的屬性配置。
(4)單擊Next按鈕,在CreateNewSource窗口和AddExistingSources窗口中不做任何操作,在ProjectSummary窗口中確認(rèn)工程信息后,單擊Finish按鈕完成新工程的創(chuàng)建。
(5)讀者可以將光盤(pán)中LAB9的工程設(shè)計(jì)文件全部導(dǎo)入,如果沒(méi)有光盤(pán),請(qǐng)查看實(shí)驗(yàn)代碼,創(chuàng)建對(duì)應(yīng)的設(shè)計(jì)文件,并添加到工程設(shè)計(jì)中。在進(jìn)行下面的步驟之前,請(qǐng)?jiān)敿?xì)查看工程設(shè)計(jì)文件,并回答下面兩個(gè)問(wèn)題:
(1)觸發(fā)數(shù)據(jù)向塊RAM存儲(chǔ)的PN碼是什么?
(2)每一個(gè)數(shù)據(jù)通道需要用幾個(gè)塊RAM?
2.生成一個(gè)新的IP核
生成一個(gè)新的IP核,并命名為RAM_CORE,核的類型為雙端口塊存儲(chǔ)器。
(1)選擇菜單欄中的Project→NewSource;
(2)在SelectSourceType對(duì)話框中,選擇左側(cè)的IP(CoreGen&ArchitectureWizard),在右側(cè)的FileName文本框中填入RAM_CORE。
(3)單擊Next按鈕。
(4)在SelectIP對(duì)話框中,展開(kāi)Memories&StorageElements,展開(kāi)RAMs&ROMs,選擇DualPortBlockMemoryv6.3,如圖6.26所示。圖6.26選擇IP類型
(5)單擊Next按鈕,確認(rèn)IP信息后,再單擊Finish按鈕。
配置IP核的參數(shù),配置的參數(shù)如下:
●?Name:RAM_CORE。
●?PortA:2048×8bits,writeonly,activehighSINITpin,initialvalue“0”。
●?PortB:2048×8bits,readonly,noreadonwrite,activehighenablepin,activehighSINITpin,initialvalue“0”。
(1)如圖6.27所示,設(shè)定IP核的參數(shù)。
●?ComponentName:ram_core。
●?WidthA:8。
●?DepthA:2048。
●?WidthB:8。
●?PortAOptions:WriteOnly。
●?PortBOptions:ReadOnly。圖6.27設(shè)定IP核的參數(shù)
(2)單擊Next按鈕,選擇PortA的SINITpin選項(xiàng),如圖6.28所示。圖6.28選擇PortA的SINIT選項(xiàng)
(3)單擊Next按鈕,選擇PortB的EnablePin和SINITpin,如圖6.29所示。
(4)單擊Next按鈕,最后一頁(yè)的參數(shù)不需要改變,選用默認(rèn)參數(shù)即可。
(5)單擊Generate按鈕,生成配置好的IP核。
CoreGenerate工具會(huì)自動(dòng)關(guān)閉,請(qǐng)注意,新生成的核已經(jīng)被加入到工程中,名字為ram_core.xco。圖6.29設(shè)置PortB的相關(guān)參數(shù)
3.在VHDL源文件中例化塊RAM的IP核
在fifo_2048x8.vhd中將第二步生成的IP核進(jìn)行例化。
(1)在Sources窗口中,雙擊fifo_2048x8.vhd,在文本編輯窗口中fifo_2048x8.vhd打開(kāi)。
(2)在Sources窗口中,選中ram_core.xco。
(3)在Processes窗口中,雙擊ViewVHDLFunctionalModel,在文本編輯器窗口中查看ram_core的實(shí)體定義。
(4)拷貝ram_core的實(shí)體定義部分,粘貼到fifo_2048x8.vhd文件對(duì)應(yīng)位置,并修改為元件的聲明和例化。
元件的聲明和例化,也可以采用下面的方式:在ISE中打開(kāi)CoreGenerator生成的ram_core.vho文件,并拷貝文件中的聲明和例化內(nèi)容到fifo_2048x8.vhd文件稍做修改。
(5)?ram_core的例化如下所示:
4.功能仿真
建立測(cè)試平臺(tái)文件fifo_2048x8_tb.vhd,對(duì)fifo_2048x8.vhd進(jìn)行仿真。
將光盤(pán)中的fifo_2048x8_tb.vhd添加到工程中,如果沒(méi)有光盤(pán),請(qǐng)參照實(shí)驗(yàn)代碼,自行輸入。仔細(xì)查看測(cè)試平臺(tái)文件,注意以下幾點(diǎn):
●測(cè)試平臺(tái)首先向RAM的前16個(gè)地址寫(xiě)入數(shù)據(jù),然后從這些地址中讀出數(shù)據(jù);
●常量misc_data用于RAM數(shù)據(jù)的初始化;
●?read_data進(jìn)程用于讀取RAM中的數(shù)據(jù)。
運(yùn)行測(cè)試平臺(tái)fifo_2048x8_tb.vhd的功能仿真,運(yùn)行時(shí)間為2500ns,查看波形文件驗(yàn)證核的連接是否正確。
(1)在Sources窗口中,選擇Sourcesfor欄中的BehavioralSimulation,然后在文件結(jié)構(gòu)樹(shù)中選中fifo_2048x8_tb.vhd。
(2)在Processes窗口中,展開(kāi)XilinxISESimulator,右鍵單擊SimulateBehavioralModel,選擇Properties。
(3)輸入仿真時(shí)間為2500ns。
(4)單擊OK按鈕。
(5)雙擊SimulateBehavioralModel。
(6)查看波形窗口,驗(yàn)證波形輸出是否與預(yù)期的結(jié)果相同。6.9.5實(shí)驗(yàn)總結(jié)
在本實(shí)驗(yàn)中,我們使用CoreGenerator工具生成了一個(gè)IP核,在已有工程中對(duì)生成的IP核進(jìn)行聲明和例化,并對(duì)包含IP核的工程文件進(jìn)行了仿真驗(yàn)證。
6.9.6問(wèn)題答案
(1)觸發(fā)數(shù)據(jù)向塊RAM存儲(chǔ)的PN碼字是什么?
PN碼字是“10001101”,在pn_correlation模塊中定義為generic參數(shù)K。
(2)每一個(gè)數(shù)據(jù)通道需要用幾個(gè)塊RAM?
每個(gè)FIFO的大小為2048×8,即16K比特,只需要一個(gè)塊RAM就可以。
6.9.7實(shí)驗(yàn)中的代碼
文件對(duì)應(yīng)的代碼如下:
6.10實(shí)驗(yàn)十?dāng)?shù)字時(shí)鐘管理IP核實(shí)驗(yàn)
6.10.1實(shí)驗(yàn)介紹
本實(shí)驗(yàn)指導(dǎo)讀者使用Xilinx的時(shí)鐘管理IP工具配置具有多個(gè)時(shí)鐘輸出頻率的數(shù)字時(shí)鐘管理模塊,并將這些時(shí)鐘信號(hào)連接到全局時(shí)鐘緩沖端口。
6.10.2實(shí)驗(yàn)?zāi)繕?biāo)
●使用數(shù)字時(shí)鐘向?qū)渲脭?shù)字時(shí)鐘管理IP核(DCM,DigitalComposerManager);
●將DCM的輸出連接到全局時(shí)鐘緩沖端口。
6.10.3實(shí)驗(yàn)過(guò)程
實(shí)驗(yàn)包含兩個(gè)主要的部分:生成一個(gè)DCM模塊;將這個(gè)模塊在HDL代碼中例化。6.10.4實(shí)驗(yàn)步驟
1.生成DCM模塊
本設(shè)計(jì)中包含兩個(gè)輸入時(shí)鐘。
●?66MHz時(shí)鐘:clk_66。這是系統(tǒng)的主時(shí)鐘,這個(gè)時(shí)鐘在系統(tǒng)的整個(gè)工作過(guò)程中一直保持穩(wěn)定有效,包括在系統(tǒng)上電和測(cè)試的過(guò)程中。
●?50MHz時(shí)鐘:clk_50。這個(gè)時(shí)鐘在系統(tǒng)上電和測(cè)試的過(guò)程中有可能被關(guān)閉。
為了在上電過(guò)程中測(cè)試系統(tǒng),我們用DCM從系統(tǒng)的主時(shí)鐘66MHz生成一個(gè)50MHz的測(cè)試時(shí)鐘,然后用一個(gè)BUFGMUX選擇使用外部輸入的50MHz時(shí)鐘或生成的50MHz時(shí)鐘。兩個(gè)時(shí)鐘的連接方式如圖6.30所示。圖6.30DCM的連接方式創(chuàng)建一個(gè)新的工程。在\VHDL_LABS\目錄下創(chuàng)建一個(gè)新的工程,新工程命名為L(zhǎng)AB10。具體操作步驟如下:
(1)選擇“開(kāi)始→所有程序→XilinxISE9.1i”或直接在桌面雙擊XilinxISE9.1i的圖標(biāo),打開(kāi)ISE9.1i集成環(huán)境。
(2)在ISE中,選擇菜單欄中的File→NewProject,打開(kāi)創(chuàng)建新工程界面,在ProjectName中填入工程名LAB10,在ProjectLocation中填入工程所在文件夾\VHDL_LABS\LAB10。
(3)在Devi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025春季【高二】【蛇啟新航 蛻變前行】開(kāi)學(xué)第一課-文字稿
- 2025年合同會(huì)審單模板
- 二年級(jí)上冊(cè)數(shù)學(xué)教案-第五單元第6課時(shí)回家路上 北師大版
- 五年級(jí)上冊(cè)數(shù)學(xué)教案-2.1 《平行四邊形的面積》 ︳西師大版
- 五年級(jí)下冊(cè)數(shù)學(xué)教案 - 露在外面的面 北師大版
- 《長(zhǎng)方體和正方體的體積》(教案)青島版五年級(jí)下冊(cè)數(shù)學(xué)
- 第6課 貓抓老鼠(教學(xué)設(shè)計(jì))2023-2024學(xué)年五年級(jí)上冊(cè)信息技術(shù)粵教版B版
- 部編版九年級(jí)上冊(cè)古詩(shī)欣賞中考試題匯編(截至2023年)
- 《茅屋為秋風(fēng)所破歌》歷年中考古詩(shī)欣賞試題匯編(截至2024年)
- 2025年河南省鶴壁市單招職業(yè)傾向性測(cè)試題庫(kù)完整
- 2025年中國(guó)遠(yuǎn)洋海運(yùn)集團(tuán)限公司中石化中海船舶燃料供應(yīng)限公司招聘26人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年春季學(xué)期各周國(guó)旗下講話安排表+2024-2025學(xué)年度第二學(xué)期主題班會(huì)安排表
- 汽車電腦故障解碼器項(xiàng)目可行性研究報(bào)告評(píng)審方案設(shè)計(jì)2025年發(fā)改委標(biāo)準(zhǔn)
- 《幼兒教育政策與法規(guī)》教案-單元1 幼兒教育政策與法規(guī)
- 【語(yǔ)文】第23課《“蛟龍”探?!氛n件 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 2024年決戰(zhàn)行測(cè)5000題言語(yǔ)理解與表達(dá)(培優(yōu)b卷)
- 《現(xiàn)代企業(yè)管理學(xué)》本科教材
- 《中國(guó)人民站起來(lái)了》課件+2024-2025學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 單值-移動(dòng)極差控制圖(自動(dòng)版)
- 道岔及交叉渡線施工方案
- 反撈式格柵除污機(jī)
評(píng)論
0/150
提交評(píng)論