FPGA開(kāi)發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch02】分頻器實(shí)驗(yàn)_第1頁(yè)
FPGA開(kāi)發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch02】分頻器實(shí)驗(yàn)_第2頁(yè)
FPGA開(kāi)發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch02】分頻器實(shí)驗(yàn)_第3頁(yè)
FPGA開(kāi)發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch02】分頻器實(shí)驗(yàn)_第4頁(yè)
FPGA開(kāi)發(fā)實(shí)用教程-基于Xilinx和Verilog HDL(微課版) 課件 【ch02】分頻器實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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)介

分頻器實(shí)驗(yàn)卓越工程師培養(yǎng)系列FPGA開(kāi)發(fā)實(shí)用教程——基于Xilinx和VerilogHDL第二章01實(shí)驗(yàn)內(nèi)容設(shè)計(jì)分頻器,對(duì)50MHz的系統(tǒng)時(shí)鐘進(jìn)行分頻,輸出一個(gè)占空比為50%、頻率為1Hz的方波信號(hào),并且將該方波信號(hào)約束到FPGA高級(jí)開(kāi)發(fā)系統(tǒng)編號(hào)為L(zhǎng)ED。的發(fā)光二極管上,使發(fā)光二極管每500ms更改一次狀態(tài)。另外,該分頻器還可以通過(guò)編號(hào)為RESET的按鍵進(jìn)行低電平復(fù)位。實(shí)驗(yàn)內(nèi)容02實(shí)驗(yàn)原理分頻器實(shí)驗(yàn)涉及的硬件電路包括一個(gè)位于FPGA高級(jí)開(kāi)發(fā)系統(tǒng)上的LED。及與LED。串聯(lián)的限流電阻R513,LED。通過(guò)470。電阻連接X(jué)C6SLX16芯片的G14引腳。另外,硬件電路還包括系統(tǒng)時(shí)鐘引腳和系統(tǒng)復(fù)位引腳。其中,系統(tǒng)時(shí)鐘引腳連接50MHz時(shí)鐘模塊,是XC6SLX16芯片的時(shí)鐘源,系統(tǒng)復(fù)位引腳連接RESET按鍵,低電平復(fù)位,分頻器LED電路原理圖如圖所示。實(shí)驗(yàn)原理分頻器LED電路原理圖時(shí)鐘信號(hào)的處理是FPGA的特色之一,因此分頻器也是FPGA設(shè)計(jì)中使用頻率非常高的基本部件之一。FPGA中通常集成了鎖相環(huán),可以滿足各種時(shí)鐘的分頻和倍頻設(shè)計(jì),但是通過(guò)VerilogHDL或VHDL進(jìn)行時(shí)鐘分頻是最基本的,在對(duì)時(shí)鐘要求不高的設(shè)計(jì)場(chǎng)合也能節(jié)省珍貴的鎖相環(huán)資源。顧名思義,分頻即對(duì)較高頻率的信號(hào)進(jìn)行劃分,得到較低頻率的信號(hào)。若一個(gè)高頻信號(hào)的頻率降低為原來(lái)的1/M則稱其為N分頻。實(shí)驗(yàn)原理時(shí)鐘分頻原理在本實(shí)驗(yàn)中,LED。每500ms更改一次狀態(tài),即LED0的閃爍頻率為1Hz,50MHz的時(shí)鐘周期為20ns。因此,基于50MHz的時(shí)鐘,需要計(jì)數(shù)的次數(shù)為1s/20ns=1x109ns/20ns=50000000次。實(shí)驗(yàn)原理分頻器實(shí)驗(yàn)電路有3個(gè)引腳,引腳的名稱、類型、約束及描述如表所示。實(shí)驗(yàn)原理引腳名稱引腳類型引腳約束引腳描述clk_iinV10時(shí)鐘輸入,50MHzrst_ji_iinN7復(fù)位輸入,低電平復(fù)位clkooutG14時(shí)鐘輸出,1Hz分頻器模塊內(nèi)部電路圖分頻器模塊內(nèi)部電路圖如圖所示。實(shí)驗(yàn)原理03實(shí)驗(yàn)步驟步驟1:ISE軟件標(biāo)準(zhǔn)化設(shè)置在進(jìn)行程序設(shè)計(jì)前,建議對(duì)ISE軟件進(jìn)行標(biāo)準(zhǔn)化設(shè)置,如將Tab鍵設(shè)置為2個(gè)空格,這樣可以避免在使用不同的編輯器閱讀代碼時(shí)出現(xiàn)代碼布局不整齊的現(xiàn)象。針對(duì)ISE軟件,下面介紹設(shè)置Tab鍵和顯示行號(hào)的具體方法。實(shí)驗(yàn)步驟打開(kāi)ISEDesignSuite14.7軟件,執(zhí)行菜單命令“Edit”—“Preferences”,如圖所示。在如圖所示的對(duì)話框中,打開(kāi)“ISETextEditor”標(biāo)簽頁(yè),單擊選擇“Insertspaces”單選按鈕,并且在“Tabwidth”輸入框中輸入2,勾選“Showlinenumbersw”復(fù)選框。最后,單擊“OK”按鈕。實(shí)驗(yàn)步驟步驟2:創(chuàng)建FPGAI程首先,在計(jì)算機(jī)的D盤新建一個(gè)名為Spartan6FPGATest的文件夾,將本書(shū)配套資料包中的“04.例程資料\Material”文件夾復(fù)制到新建的文件夾中,然后在Spartan6FPGATest文件夾中新建一個(gè)名為Product的文件夾。實(shí)驗(yàn)步驟在“D:\Spartan6FPGATest\Product”目錄中新建一個(gè)名為expO1_clk_gen_1hz的文件夾,將“D:\Spartan6FPGATest\Material\exp01_clk_gen_lhz”目錄中的所有文件(包括code、project)復(fù)制到“D:\Spartan6FPGATest\Product\exp01_clk_gen_lhz”目錄中。其中,code文件夾用于存放VerilogHDL源代碼或仿真激勵(lì)文件,project文件夾用于存放工程文件。步驟2:創(chuàng)建FPGA工程下面開(kāi)始新建工程,打開(kāi)ISEDesignSuite14.7軟件,執(zhí)行菜單命令“File”-“NewProject如圖所示。實(shí)驗(yàn)步驟在彈出的對(duì)話框中,在“Name”文本框中輸入clk_gen_lhz,在“Location”和“WorkingDirectory”文本框中選擇如圖所示的路徑,然后單擊“Next”按鈕。實(shí)驗(yàn)步驟在彈出的對(duì)話框中,分別在“Family”“Device”“Package”“Speed”“SynthesisTool”“Simulator”“PreferredLanguage”下拉列表中,選擇如圖所示的選項(xiàng),然后單擊“Next”按鈕。確認(rèn)工程名、工程路徑、器件、仿真綜合工具等工程信息是否正確,如果有問(wèn)題,則單擊“Back”按鈕返回到相應(yīng)的對(duì)話框中進(jìn)行更改,否則直接單擊“Finish”按鈕結(jié)束,如圖所示。實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟步驟3:新建Verilog文件完成工程創(chuàng)建后還需要新建Verilog文件,執(zhí)行菜單命令“Project”-“NewSource”,如圖所示。在彈出的對(duì)話框中,文件類型選擇“VerilogModule”選項(xiàng),在“Filename”文本框中輸入clk_gen_lhz,在“Location”文本框中選擇如圖所示的路徑,并勾選“Addtoproject”復(fù)選框,最后單擊“Next”按鈕。實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟在彈出的對(duì)話框中,直接單擊“Next”按鈕,該對(duì)話框用于設(shè)置端口等信息,建議在Verilog文件中自定義,如圖所示。確認(rèn)Verilog文件路徑、類型、名稱等信息是否正確,無(wú)誤后單擊“Finish”按鈕,如圖所示。實(shí)驗(yàn)步驟在如圖所示的軟件界面中,刪除clk_gen_lhz.v文件中由ISE自動(dòng)生成的所有代碼。步驟4:完善clk_gen_1hz.v文件將程序清單2-1中的代碼輸入clk_gen_lhz.v文件中,下面對(duì)關(guān)鍵語(yǔ)句進(jìn)行解釋。實(shí)驗(yàn)步驟第1行代碼:'timescale是Verilog中的預(yù)編譯指令,用來(lái)定義模塊在仿真時(shí)的時(shí)間單位和時(shí)間精度,這里的時(shí)間單位為Ins,時(shí)間精度為Ips。注意,時(shí)間精度必須小于或等于時(shí)間單位,并且時(shí)間單位和時(shí)間精度只能是1、10和100這3個(gè)整數(shù),單位有s、ms、μs、ns、ps和fs。第6至8行代碼:輸入/輸出端口的定義。第13至14行代碼:定義了實(shí)現(xiàn)分頻功能時(shí)要用到的兩個(gè)常量參數(shù)CNT_MAX和CNT_HALF。實(shí)驗(yàn)步驟第18至19行代碼:定義了實(shí)現(xiàn)分頻功能時(shí)使用到的兩個(gè)reg型信號(hào)。第23至33行代碼:實(shí)現(xiàn)時(shí)鐘計(jì)數(shù)功能。當(dāng)復(fù)位時(shí),將計(jì)數(shù)器s_cnt清零;在clk_50mhz_i的上升沿,如果s_cnt大于或等于CNT_MAX,則s_cnt清零,否則s_cnt執(zhí)行加1操作。第35至45行代碼:實(shí)現(xiàn)分頻時(shí)鐘輸出功能。當(dāng)復(fù)位時(shí),將分頻后的時(shí)鐘s_clk清零;在clk_50mhz_i的上升沿,如果s_cnt在0和24999999之間(包含0和24999999),則s_clk為低電平,如果s_cnt在25000000和49999999之間(包含25000000和49999999),則s_clk為高電平。第47行代碼:用assign語(yǔ)句將時(shí)鐘信號(hào)s_clk賦給輸出信號(hào)clk_o,clk_o輸出一個(gè)占空比為50%、頻率為1Hz的方波信號(hào)。實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟步驟5:檢查VerilogX件語(yǔ)法在如圖所示的軟件界面中,首先單擊工具欄中的保存按鈕保存文件,然后在“Hierarchy”欄中單擊“clk_gen_lhz”選項(xiàng),接著在“Processes:clk_gen_lhz”欄中右擊“CheckSyntax”選項(xiàng),選擇“Run”命令,當(dāng)“Console”窗口中出現(xiàn)“Process“CheckSyntax”completedsuccessfully”時(shí),表示檢查語(yǔ)法成功。注意,如果在“Console”窗口中出現(xiàn)錯(cuò)誤提示信息,則以該提示信息為線索對(duì)Verilog源代碼進(jìn)行修改,直到?jīng)]有錯(cuò)誤為止。實(shí)驗(yàn)步驟步驟6:通過(guò)Synplify綜合工程Synplify綜合是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型描述,在系統(tǒng)設(shè)計(jì)的初始階段,通過(guò)對(duì)系統(tǒng)行為描述的仿真來(lái)發(fā)現(xiàn)系統(tǒng)設(shè)計(jì)中存在的問(wèn)題,以此考慮系統(tǒng)結(jié)構(gòu)和工作過(guò)程能否達(dá)到設(shè)計(jì)要求。確認(rèn)Verilog文件語(yǔ)法正確后,在如圖所示的軟件界面中,右擊“xc6slxl6-2csg324”選項(xiàng),選擇“DesignProperties,命令,打開(kāi)“DesignProperties對(duì)話框,或者雙擊“xc6slxl6-2csg324”選項(xiàng)直接打開(kāi)“DesignProperties”對(duì)話框。在該對(duì)話框中,將“SynthesisTool”下拉列表設(shè)置為“SynplifyPro(VHDL/Verilog)”,如圖所示,然后單擊“OK”按鈕。實(shí)驗(yàn)步驟在如圖所示的界面中,單擊“clk_gen_lhz”選項(xiàng),然后右擊“ViewRTLSchematic”選項(xiàng),在彈出的菜單中選擇“Run”命令。實(shí)驗(yàn)步驟綜合成功后會(huì)自動(dòng)彈出Synplify軟件界面,Synplify綜合工程硬件邏輯電路如圖所示。注意,當(dāng)一個(gè)綜合電路打開(kāi)后,在未關(guān)閉的情況下再次綜合,會(huì)出現(xiàn)綜合失敗的情況。實(shí)驗(yàn)步驟步驟7:新建Verilog測(cè)試文件進(jìn)行仿真將工程下載到FPGA高級(jí)開(kāi)發(fā)系統(tǒng)之前,為了檢驗(yàn)電路的正確性,需要對(duì)電路進(jìn)行仿真測(cè)試,確保無(wú)誤后再將電路下載到系統(tǒng)中。首先新建一個(gè)測(cè)試文件,執(zhí)行菜單命令“Project”-“NewSource”。在彈出的對(duì)話框中,文件類型選擇“VerilogTestFixture”選項(xiàng),在“Filename”文本框中輸入clk_gen_lhz_tf,在“Location”文本框中選擇如圖所示的路徑,并勾選“Addtoproject”復(fù)選框。最后,單擊“Next”按鈕。實(shí)驗(yàn)步驟在彈岀的對(duì)話框中選擇仿真目標(biāo)文件,通常選擇頂層文件,由于本實(shí)驗(yàn)只有一個(gè)Verilog文件,所以直接單擊“Next”按鈕進(jìn)行關(guān)聯(lián),如圖2-22所示。確認(rèn)文件路徑、文件類型、文件名等信息是否正確,無(wú)誤后單擊“Finish”按鈕,如圖2-23所示。實(shí)驗(yàn)步驟如程序清單2-2所示,在ISE軟件自動(dòng)生成的測(cè)試文件clk_gen_lhz_tf.v中添加第19行和第30行代碼,下面對(duì)程序清單2-2中的關(guān)鍵語(yǔ)句進(jìn)行解釋。實(shí)驗(yàn)步驟第19行代碼:#10表示延遲10個(gè)時(shí)間單位,因?yàn)榈?行代碼定義的時(shí)間單位為Ins,所以延遲10ns,即每10ns電平發(fā)生一次變化,用于產(chǎn)生周期為20ns的時(shí)鐘,因?yàn)镕PGA高級(jí)開(kāi)發(fā)系統(tǒng)的時(shí)鐘頻率為50MHz,周期為20ns,故仿真也采用20ns的周期。第21至24行代碼:將時(shí)鐘信號(hào)clk_50mhz_i和復(fù)位信號(hào)rst_n_i初始化賦值為0。第26至30行代碼:延遲100ns后將復(fù)位信號(hào)rst

n

i電平拉高。在如圖2-24所示的軟件界面中,單擊選擇“Simulation”單選按鈕,單擊“clk_gen_lhz_tf”選項(xiàng),然后雙擊“BehavioralCheckSyntax”對(duì)仿真文件clk_gen_lhz_tf-v進(jìn)行語(yǔ)法檢查,當(dāng)“Console”窗口出現(xiàn)“Process“BehavioralCheckSyntax”completedsuccessfully”時(shí),表示檢查語(yǔ)法成功。最后,右擊“SimulateBehavioralModel”選項(xiàng),在彈出的對(duì)話框中選擇“Run”命令運(yùn)行仿真。實(shí)驗(yàn)步驟在彈出的如圖2-25所示的ISim軟件界面中,執(zhí)行以下操作查看仿真結(jié)果:①單擊工具欄的按鈕;②單擊*按鈕,運(yùn)行仿真;③運(yùn)行大約2500ms;④單擊H按鈕,中止仿真,顯示界面會(huì)切換到clk_gen_lhz_tf.v文件;⑤單擊“Default.wcfg"標(biāo)簽頁(yè),顯示界面切換回仿真文件;⑥單擊用按鈕,查看完整的仿真波形,單擊按鈕,或者按Ctrl鍵且同時(shí)滾動(dòng)鼠標(biāo)滾輪可以對(duì)仿真波形進(jìn)行放大、縮小操作。實(shí)驗(yàn)步驟在默認(rèn)情況下,ISim的仿真文件中僅顯示實(shí)體中的輸入和輸出等端口,不會(huì)顯示內(nèi)部定義的信號(hào),但在仿真過(guò)程中出現(xiàn)錯(cuò)誤時(shí),常常需要查看內(nèi)部信號(hào)等信息,因此還要掌握如何將信號(hào)添加到波形窗口中。下面以s_cnt信號(hào)為例進(jìn)行介紹。實(shí)驗(yàn)步驟①在ISim軟件界面的“InstancesandProcesses”面板上,單擊“clk_gen_lhz_tf”節(jié)點(diǎn)下的“uut”選項(xiàng);②在“Objects”面板上右擊“s_cnt[25:0]”信號(hào),在彈出的快捷菜單中選擇“AddToWaveWindow”命令,完成添加s_cnt[25:0]信號(hào)到波形窗口后,依次單擊按鈕重新運(yùn)行仿真。可以看到,s_cnt[25:0]信號(hào)已經(jīng)成功添加到波形窗口的最后一行并顯示出仿真值了。分頻器實(shí)驗(yàn)是一個(gè)簡(jiǎn)單的實(shí)驗(yàn),只有兩個(gè)信號(hào)。但絕大多數(shù)工程都有非常豐富的內(nèi)部信號(hào),如果在仿真中出現(xiàn)錯(cuò)誤,就需要重新更改Verilog源代碼或Verilog測(cè)試文件,重新仿真,這樣就需要重新添加信號(hào)。為節(jié)省時(shí)間,可以先保存當(dāng)前仿真文件:①執(zhí)行菜單命令“File”-“Save”;②輸入文件名,并選擇保存路徑,如文件名為clk_gen_lhz,文件路徑為D:\Spartan6FPGATest\Product\exp01_clk_gen_lhz\project;③關(guān)閉該仿真文件。完成仿真文件的存儲(chǔ)后,可以在軟件界面中,右擊“SimulateBehavioralModel”選項(xiàng),在彈出的快捷菜單中選擇“ProcessProperties”命令。實(shí)驗(yàn)步驟在彈出的如圖2-28所示的對(duì)話框中,勾選“UseCustomWaveformConfigurationFile”復(fù)選框,并在“Cu-stomWavefbrmConfigurationFile”文本后輸入仿真文件的路徑和文件名,最后單擊“OK”。重新進(jìn)行仿真,這樣就可以在仿真波形窗口中同時(shí)看到實(shí)體的輸入和輸出端口,以及s_cnt[25:0]信號(hào)了,可以通過(guò)反復(fù)仿真確保仿真正確。實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟步驟8:新建引腳約束文件在板級(jí)調(diào)試之前,還需要進(jìn)行引腳約束。將窗口從Simulation切換到Implementation,然后執(zhí)行菜單命令“Project”—“NewSource”,在彈出的對(duì)話框中,文件類型選擇“ImplementationConstraintsFilew”選項(xiàng),在“Filename”文本框中輸入clk_gen_lhz,在“Location”文本框中選擇如圖2-29所示的路徑,并勾選“Addtoproject”復(fù)選框。最后,單擊“Next”按鈕。實(shí)驗(yàn)步驟確認(rèn)文件路徑、文件類型、文件名等信息是否正確,無(wú)誤后單擊“Finish”按鈕,如圖2-30所示。在ISE軟件界面中,將程序清單2-3中的代碼輸入clk_gen_lhz.ucf文件,下面對(duì)關(guān)鍵語(yǔ)句進(jìn)行解釋。實(shí)驗(yàn)步驟第1至3行代碼:時(shí)鐘輸入引腳約束,將時(shí)鐘輸入clk_i分配到FPGA芯片的V10引腳;建立以clk_i驅(qū)動(dòng)的約束組sys_clk_pin;對(duì)約束組sys_clk_pin進(jìn)行周期約束TS_sys_clk_pin(格式為“TS_約束組名”),時(shí)鐘頻率為50MHz。實(shí)驗(yàn)步驟第5至7行代碼:復(fù)位輸入引腳約束,將復(fù)位輸入rst_n_i分配到FPGA芯片的N7引腳。在ISE軟件中,rst_n_i常被識(shí)別為時(shí)鐘信號(hào),但該信號(hào)并沒(méi)有在專用時(shí)鐘引腳上,這樣,在布局布線時(shí)會(huì)報(bào)錯(cuò),加上第7行代碼會(huì)讓ISE軟件忽略這個(gè)錯(cuò)誤。第9至10行代碼:時(shí)鐘輸出引腳約束,將時(shí)鐘輸出clk_o分配到FPGA芯片的G14引腳。另外,IOSTANDARD=“LVCMOS33”語(yǔ)句表示使用3.3V電平標(biāo)準(zhǔn)。XC6SLX16芯片可以適配1.2V、3.3V等多個(gè)標(biāo)準(zhǔn),同時(shí)還可以調(diào)整引腳輸入/輸出電流

溫馨提示

  • 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)論