Verilog流水燈實驗報告_第1頁
Verilog流水燈實驗報告_第2頁
Verilog流水燈實驗報告_第3頁
Verilog流水燈實驗報告_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

...wd......wd......wd...流水燈實驗報告實驗二流水燈實驗目的學會編寫一個簡單的流水燈程序并掌握分頻的方法。熟悉Modelsim仿真軟件的使用。實驗要求用Quartus編寫流水燈程序,在Modelsim軟件中進展仿真。實驗儀器和設備硬件:計算機軟件:Quartus、Modelsim、〔UE〕實驗內容將時鐘周期進展分頻。編寫Verilog程序實現(xiàn)LED等依次亮滅,用Modelsim進展仿真,繪制波形圖。實驗設計〔一〕分頻原理時鐘周期f為50MHz,周期T為1/f,即20ns。假設想得到四分頻計數(shù)器,即周期為80ns的時鐘,需要把時鐘進展分頻。即每四個時鐘周期合并為一個周期。原理圖如圖1所示。圖1四分頻原理圖〔二〕流水燈設計思路1、實現(xiàn)4盞LED燈依次隔1s亮滅,即周期為1s;2、計算出頻率f為1/T=1Hz;3、設置計數(shù)器cnt,當檢測到clk上升沿時開場計數(shù),當cnt計數(shù)到24_999_999時,clk_4跳變?yōu)?,LED燈亮起,當cnt計數(shù)49_999_999時,clk_4置0,LED燈熄滅。4、給LED賦初值4’b0001,第一盞燈亮。5、利用位拼接,實現(xiàn)循環(huán)。〔三〕設計框圖圖2設計根本框圖〔四〕位拼接的用法假設輸入a=4'b1010,b=3'b101,c=4'b0101,想要使輸出d=5'b10001用位拼接,符號“{}〞:d<={b[2:1],c[1],a[2:1]}即把b的低1~2位10,c的低1位0,a的低1~2位01拼接起來,得到10001。流水燈4'b00014'b00104'b01004'b1000相當于把低三位左移,并最高位放在最低位。用位拼接可寫為:led<={led[2:0],led[3]};低三位最高位實驗方法和步驟〔一〕時鐘分頻編寫分頻程序。編寫測試程序。進展仿真,波形如圖3所示。圖3分頻仿真結果〔二〕流水燈1、編寫分頻程序。編寫測試程序。3、進展仿真,為了節(jié)約時間和方便觀察波形,將計數(shù)器值分別改為24、49跳轉。波形如圖4所示。圖4流水燈仿真結果實驗參考程序時鐘分頻1、程序文件modulediv_clk( //模塊名與文件名一致。定義端口列表,input wire clk, //輸入線型input wire rst_n,output reg clk_4 //輸出定義為存放器型);reg[3:0] cnt; //中括號定義位寬,定義中間變量cnt always@(posedgeclk) if(rst_n==0) cnt <= 0; //復位為0,計數(shù)器也為0 elseif(cnt==3) //當計數(shù)器=3時清零〔可用elseif〕 cnt <= 0; else cnt <= cnt+1; //計數(shù)器自加1always@(posedgeclk) if(rst_n==0) clk_4 <= 0; //復位為0.clk_4為0 elseif(cnt==1) clk_4 <= 1; //當計數(shù)器為1時,時鐘跳變?yōu)? elseif(cnt==3) clk_4 <= 0; //當計數(shù)器為3時,時鐘跳變?yōu)?endmodule 2、測試文件`timescale 1ns/1nsmoduletb_div_clk();reg clk;reg rst_n;wireclk_4;initial begin clk = 0; rst_n = 0; #100 rst_n = 1; endalways #5 clk=~clk;div_clkdiv_clk_inst(.clk(clk),.rst_n(rst_n),.clk_4(clk_4) );endmodule流水燈程序文件moduleLSD( //模塊名與文件名一致。定義端口列表,input wire clk, //輸入線型input wire rst_n,output reg[3:0] led);reg[25:0] cnt; //中括號定義位寬,定義中間變量cnt reg clk_4; always@(posedgeclk) if(rst_n==0) cnt <= 0; //復位為0,計數(shù)器也為0 elseif(cnt==49_999_999) //當計數(shù)器=49999999時清零〔可用elseif〕 cnt <= 0; else cnt <= cnt+1; //計數(shù)器自加1always@(posedgeclkornegedgeclk) //異步復位 if(rst_n==0) clk_4 <= 0; //復位為0.clk_4為0 elseif(cnt==24_999_999) clk_4 <= 1; //當計數(shù)器為24999999時,時鐘跳變?yōu)? elseif(cnt==49_999_999) clk_4 <= 0; //當計數(shù)器為49999999時,時鐘跳變?yōu)? else clk_4 = clk_4; always@(posedgeclk_4ornegedgeclk_4) if(rst_n==0) led <= 4'b0001; else led <= {led[2:0],led[3]};//位拼接endmodule 測試文件`timescale 1ns/1nsmoduleLSD();reg clk;reg rst_n;reg cnt;wireled;initial begin clk = 0; rst_n = 0; #100 rst_n = 1; endalways #5 clk=~clk;LSDLSD_inst(.clk(clk),.rst_n(rst_n),.led(led) );endmodule實驗小結做實驗要養(yǎng)成良好的習慣,每次做實驗時,都要建設一個新的文件夾存放實驗所需的程序文件,為仿真時添加文件做準備,也方便以后的查找和使用。寫程序前要想清楚電路實現(xiàn)原理,根據(jù)所學數(shù)電知識對各個元器件進展控制。寫程序時注意排版美觀整潔,同時注意添加注釋。注意程序中模塊名要和文件名一致,否則程序報錯,無法編譯通過。仿真時,可以選擇不同的進制。在想要更改的地方右鍵,選擇【Radi

溫馨提示

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

評論

0/150

提交評論