Verilog項(xiàng)目設(shè)計(jì)報(bào)拔河游戲機(jī)_第1頁
Verilog項(xiàng)目設(shè)計(jì)報(bào)拔河游戲機(jī)_第2頁
Verilog項(xiàng)目設(shè)計(jì)報(bào)拔河游戲機(jī)_第3頁
Verilog項(xiàng)目設(shè)計(jì)報(bào)拔河游戲機(jī)_第4頁
Verilog項(xiàng)目設(shè)計(jì)報(bào)拔河游戲機(jī)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、河海大學(xué)物聯(lián)網(wǎng)工程學(xué)院Verilog HDL項(xiàng)目設(shè)計(jì)報(bào)告題目拔河游戲機(jī)專業(yè)電子科學(xué)與技術(shù)學(xué)號(hào) 1562910123、1562910125授課班號(hào)學(xué)生 徐子豪、詩欣 指導(dǎo)教師齊本勝摘要和關(guān)鍵字為了掌握數(shù)字系統(tǒng)的設(shè)計(jì)方法,掌握硬件描述語言VerilogHDL,掌握模塊化設(shè)計(jì)方法,掌握開發(fā)軟件的使用方法。選擇基于FPGA開發(fā)板設(shè)計(jì)的拔河游戲機(jī),使用兩個(gè)按鍵進(jìn)行比賽, 利用按鍵按下的快慢作為模擬的雙方選手拔河過程,led燈的變 化決定繩子的位置,led燈到了一邊以后比賽終止,整個(gè)過程的 難點(diǎn)在于,需要過濾信號(hào),使按鍵產(chǎn)生的信號(hào)穩(wěn)定,所以程序中 需要有按鍵消抖模塊,同時(shí)需標(biāo)識(shí)符來控制比賽的開始與結(jié)束。關(guān)

2、鍵詞:ver i log 拔河比賽消抖模塊標(biāo)識(shí)符I n order to mas ter the des i gn met hod of d i g ital system, we must master the hardware descr i ption Ianguage 一一 Ver iIog HDL, grasp the modu I ar des i gn met hod and mas ter the way of developing software. ChoiceTug of war game FPGA deve I opment board based on the des

3、 i gn, the use of two button game, us i ng key press speed as bothp I ayers tug of war of Simulation, change I ed I amp decide the position of the rope, LED I ights to the side after the end game, the diff icu Ity lies in the who I e process, need to filter the signal, the stable signal generated by

4、 the keys so, the procedure requi res a key debounce modu I e, a I so need to control the game1s ident ifier and end start.Key words: Ver i log tug shake-off moduIe ident if ier一、系統(tǒng)設(shè)計(jì)1實(shí)驗(yàn)要求設(shè)計(jì)拔河游戲電路,用按鍵與LED表示輸入與輸出。(1) 初始時(shí),16個(gè)LED中間的兩個(gè)點(diǎn)亮,然后游戲雙方不停按動(dòng)按鍵,點(diǎn)亮的兩個(gè)LED向按動(dòng)按鍵慢的一方移動(dòng);(2) 每按動(dòng)一下按鍵,LED向?qū)Ψ揭苿?dòng)一格;(3) 只要LED移

5、動(dòng)到頭,游戲結(jié)束;(4) 工作時(shí)鐘100Hz即可;(5) 完成全部流程:設(shè)計(jì)規(guī)文檔、模塊設(shè)計(jì)、代碼輸入、功能 仿真、約束與綜合、布局布線、時(shí)序仿真、下載驗(yàn)證等。2 .方案對(duì)比脈沖信號(hào)方案:在選定一定的時(shí)間周期,檢測按鍵A與按鍵B的產(chǎn)生的 脈沖個(gè)數(shù),進(jìn)行比較,若A的脈沖數(shù)量大于B,則Led向A 方向移動(dòng),反之則向B方向移動(dòng),若相等則不動(dòng)。消抖模塊方案給所定按鍵兩個(gè)狀態(tài),一個(gè)前狀態(tài),一個(gè)后狀態(tài),當(dāng)時(shí) 鐘時(shí)鐘的脈沖沿來臨時(shí),將按鍵狀態(tài)賦值給前狀態(tài),設(shè)置定 時(shí)器,當(dāng)計(jì)數(shù)計(jì)滿后,前狀態(tài)值賦給后狀態(tài),按鍵輸出值為 前狀態(tài)和后狀態(tài)的取反的并。此方案當(dāng)一直按住按鍵時(shí),按鍵電平信號(hào)一直為高,取 反后的變?yōu)榈?,?/p>

6、以避免一直按住而直接比賽結(jié)束的特殊情 況。3. 系統(tǒng)框圖由分頻后的時(shí)鐘信號(hào)模塊控制按鍵信號(hào)模塊,之后進(jìn)入比較 模塊,若A的脈沖數(shù)大于B,則Led向A代表方向移動(dòng),反 之則向B代表方向移動(dòng),若相等則不動(dòng)。由Led的位置決定 使能端的開啟與關(guān)閉,若移動(dòng)至A或B的頂端,則使能端控 制Led無法再移動(dòng)。4. 代碼設(shè)計(jì)和說明(1) 對(duì)于輸入端口輸出端口的定義,和等存器,線網(wǎng)型變量的,以及計(jì)數(shù)常量的定義moduIe project_ba (CIk,Rst_n,KEY1,KEY2,LED);input CIk;i nput Rst_n;i nput KEY1;input KEY2;/定義輸入output 1

7、5:0 LED;/定狡輸出reg 27:0 Cnt;reg CIk_1OOhz;reg en;reg Key1_n;reg Key1 _n_reg;reg Key2_n;reg Key2_n_reg;reg 3:0 t;reg 15:0 Ied;w i re key1,key2;parameter CNT = 28'd49 999;(2) 分頻模塊,將Basys3的100M系統(tǒng)時(shí)鐘分頻成為周期為 10ms, 100Hz 頻率a I ways (posedge CIk or posedge Rst_n)begini f (Rst_n) beg i nCnt <= 28,d0;Clk

8、_100hz <= 0;end eIse i f (Cnt = CNT) beginCnt 二 28'd0;Clk_100hz <= CIk_1OOhz;endendcasee I seCnt <= Cnt + 1'b1;end(3) 按鍵消抖模塊,給每一個(gè)按鍵兩個(gè)狀態(tài),保證按鍵產(chǎn)生的信號(hào)可以消除抖動(dòng)穩(wěn)定。a I ways (posedge CIk or posedge Rst_n)beg i n i f (Rst_n)begin Key1_n <= 0;Key2_n <= 0;endeIse beg i nKey1_n <=Key1_reg

9、;Key2_n <=Key2_n_reg;endenda I ways(*)i f (Cnt =CNT)beg i n=KEY1;=KEY2;ende I se beg i nKey1_n_reg(4) 比較模塊,每當(dāng)時(shí)鐘的上升沿,便比較A,B的脈沖個(gè) 數(shù),即誰按得快,輸出就為1,否則就為0a I ways(posedge CIk)begin i f (t = 41dO I I t 二二 4'd14)en 二 1'bO;e I seen二;end(5) 移動(dòng)模塊a I ways (posedge CIk_1OOhz or posedge Rst_ n )beg i ni

10、f (Rst_n)t <= 7;e I sei f (en)case (key1,key2)2*b10 : t t + 1*b1;2*b01 : t <= t - 1'b1;defauIt:t <= t;end(6) 譯碼模塊,將得到的信號(hào)t轉(zhuǎn)化為,Led的顯示,最后賦值給Led輸出端口,并且由數(shù)碼管顯示勝利的一方a I ways (*)beg i ncase (t)4'dO : led = 16*60000 0000 0000 0011;4fd1 : led = 16*60000 0000 0000 0110;4'd2 : led = 16*b000

11、0 ,0000_0000_1100;4'd3 : led = 16*60000 0000 0001 1000;4*d4 : led = 16* bOOOO 0000_0011 _0000;4'd5 : led = 16*60000 0000 0110 0000;4'd6 : led = 16*bOOOO_0000_J 100_0000;4'd7 : led = 161b0000_0001_1000,0000;4'd8 : led = 16* bOOOO 0011_0000_0000;4'd9 : led = 16'bOOOO.0110_0

12、000_0000;4'd10: led = 16'b0000_1100_0000_0000;4'd11: led = 161b0001_1000_0000_0000;4'd12: led = 16*60011_0000_0000_0000;4'd13: led = 16'b0110_0000_0000_0000;4'd14: led = 16*b1100 0000 0000 0000;default : led = 161bOOOO 0000 0000 0000;endcaseendass i gn LED = Ied; endmoduI

13、e二、結(jié)果與討論1、仿真代碼modu I e BaTB ();def i ne c I k_per i od 10 /定義時(shí)鐘周期reg Rst_n;reg KEY1, KEY2; wi re15:0 LED;pro jectba uO (.Clk(Clk), Rst_n (Rst_n),.KEY1 (KEY1),.KEY2 (KEY2),.LED (LED);initialClk = Clk;1;KEY2 = 0;begin Clk = 0; er a I ways # ('c I k per i od /2.i n i t i a I beg i nKEY1 = 0;KEY2 =

14、0;# (、cIk_period * 10);Rst_n = 1 ;# (、cIk_ per i od * 10);Rst.n = 0; KEY1 =#( clk period * 100);KEY1 = 1;KEY2 = 0;# ('cIk per i od * 100);KEY1 = 1;KEY2 = 0; endendmoduIe2、仿真波形可以看到一直給Key1施加高電平時(shí)鐘信號(hào)丄ed燈的高電平一直向1方向的led燈方向移動(dòng),由此可得仿真成功。3. 問題與分析在仿真成功以后生成比特流文件時(shí)一直顯示錯(cuò)誤無法成 功,之后在請(qǐng)教其他同學(xué)以后,共同分析后發(fā)現(xiàn),一開始設(shè) 計(jì)中的數(shù)碼管模塊

15、無法在結(jié)束后對(duì)應(yīng)顯示,于是便刪除了數(shù) 碼管模塊,在led移動(dòng)到一端后便是游戲結(jié)束標(biāo)志。4、結(jié)果在分析出問題兵解決之后,將程序燒寫到fpga開發(fā)板上, 設(shè)計(jì)的功能都能實(shí)現(xiàn),于是上板驗(yàn)證也成功。三、心得體會(huì)一開始接觸這個(gè)課題的時(shí)候,不知道怎么下手,通過其他同學(xué)的 講解以及查找資料基本了解了拔河游戲機(jī)的設(shè)計(jì)原理。通過這次 課程設(shè)計(jì),我更加感到理論和實(shí)際之間的差異很大。我也越來越 強(qiáng)烈地感到要掌握一項(xiàng)技術(shù),唯一的辦法也是最好的辦法就是實(shí) 踐。只有通過實(shí)踐才能將書本上的知識(shí)應(yīng)用,也只有實(shí)踐才能發(fā) 現(xiàn)很多問題,真正掌握知識(shí),學(xué)以致用。雖然遇到的問題很多, 但是同時(shí)得到很多有用的經(jīng)驗(yàn)。這些對(duì)于以后的學(xué)習(xí)和工

16、作都有 很大的幫助。四、參考文獻(xiàn)1 夏宇聞,Veidlog數(shù)字系統(tǒng)設(shè)計(jì)教程,航天航空大學(xué),20132 王金明,數(shù)字系統(tǒng)設(shè)計(jì)與Veri logHDL,電子工業(yè),20093 松,EDA技術(shù)實(shí)用教程,科學(xué),2009附錄實(shí)物板級(jí)驗(yàn)證圖:1、左邊隊(duì)員腔利2、右邊隊(duì)員勝利U:門鳳3、清零重置4、源代碼modu I e project_.ba (Clk, Rst.n, KEY1,KEY2,LED);inputClk;i nputRst_n;inputKEY1;inputKEY2;/定義輸入output 15:0 LED;/ 定義輸出 reg 27:0 Cnt;reg Clk_100hz;reg en;reg

17、 Key1_n;reg Key1_n_reg;regKey2_n;regKey2_n_.reg;reg3:0t;reg15:0led;wi rekey1,key2;parameter CNT = 281d49_999;always (posedge Clk or posedge Rst_n) begini f(Rst_n) beginCnt 二 28,d0;ClkJ00hz <= 0;endelse i f (Cnt = CNT) beginCnt <= 28'dO;CIk_1OOhz <= 飛Ik_1OOhz;end e I seCnt <= Cnt + 1&

18、#39;b1;endalways (posedge Clk or posedge Rst_n) begin if (Rst_n)a I ways (*) begin if (Cnt = Key1_n_reg Key2_n_reg eIse begin Key1_n_reg Key2_n_reg endCNT) begin =KEY1;=KEY2;endKey1_n;Key2_n;endass i gn key1 = assign key2 =Key1_n &Key2_n &(Key1_n_reg);(Key2_n_reg);begini Key1_n <=0;Key2_n

19、 <= 0;ende I sebeginKey1_,n <=Key1_n_.reg;Key2_,n <=Key2_n_reg;endendalways(posedge Clk_100hz or posedge Rst_n ) begini f (Rst_n)t二 7;e I sei f (en)+ rb1;一 1*b1;case (key1,key2) 2*b10 : t 二 t 2*b01: t 二 tdefault:t <= t; endcasea I ways (posedge CIk)beginif (t =4k0| t = 4*d14)en <= e I

20、 serbo;en <=endrbi;always (*)begincase (t)4'dO4'd14'd24'd34'd44'd54'd64'd74'd84'd9led二16*b0000_0000_00000011;led二16'bOOOO000000000110;led二16'bOOOO000000001100;led二16*b0000000000011000;led二16'bOOOO000000110000;led二16'bOOOO000001100000;led二16&

21、#39;bOOOO000011000000;led二16'bOOOO000110000000;led二16'bOOOO001100000000;led二16'bOOOO011000000000;led =16*60000 0000 0000 0000;CMB歹4*d10:led = 16'bOOOO 1100 0000 0000;4*d11:led =160001 1000 0000 0000;4'd12:led = 16*b0011 0000 0000 0000;4'd13:led =16-60110 0000 0000 0000;4"

22、;d14:led = 16'bH00 0000 0000 0000;OMBMMB歹defau Itendcaseend/譯碼模塊ass i gn LED = led;endmoduIe5、測試文件'define c I k_per i od 10 /定 5C 時(shí)鐘周期modu I e BaTB ();reg CIk;reg Rst_n;reg KEY1, KEY2;wire15:0 LED;pro ject_ba uO (.Clk(Clk), Rst_n (Rst_n),.KEY1 (KEY1), KEY2 (KEY2),.LED (LED);initialbeginCIk =

23、 0; enda I ways # ('c I k. per i od /2) C I k = C I k ;i n i t i a I beg i nKEY1 = 0;KEY2 = 0;# (、cIk_period * 10);Rst_n = 1; #(、clk_per iod * 10);Rst_n = 0; KEY1 = 1;KEY2 = 0;#(、clk_per i od * 100);KEY1 = 1;KEY2 = 0;# (、cIk_period * 100);KEY1 = 1;KEY2 = 0; endendmoduIe6、管腳約束setpropertyiostandar

24、dLVCM0S33get_portsLED15)set_ propertyiostandardLVCM0S33geports(LED14set_propertyiostandardLVCM0S33geportsLED13JsetpropertyiostandardLVCM0S33get一portsLED 12set_propertyiostandardLVCM0S33get_ports(LED11set_ propertyiostandardLVCM0S33get_ports(LED10)pertyiostandardLVCM0S33geportsLED9Jset_propert

25、yiostandardLVCM0S33get_portsLED 8setpropertyiostandardLVCM0S33get_ports(LED7)pertyiostandardLVCM0S33get_portsLED6set_ propertyiostandardLVCM0S33get_portsLED門set propertyiostandardLVCM0S33get_ports(LED4set property 1OSTANDARD LVCM0S33 get_ports LED 3set property 1OSTANDARD LVCMOS33 get ports L

26、ED 2set property 1OSTANDARD LVCMOS33 get_ports LED 1set,property IOSTANDARD LVCMOS33 get_ports LED0set. property PACKAGE PIN L1 get_ports LED 15)set. property PACKAGE PIN P1 get_ports LED 14)set property PACKAGE PIN N3 get_ports LED 13)set. property PACKAGE PIN P3 get_ports LED12)set property PACKAGE PIN U3 ge

溫馨提示

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