軟件:Quartus
語言:Verilog
要求:
乒乓球控制器(數碼管顯示各3位:2位顯示當前局分數,1位贏得局數,再有一個數碼管顯示當前局數)
- 利用顯示燈表示球網和乒乓球。
- 利用顯示燈表示球臺的邊界。
- 在球網和球臺邊界范圍內,用開關回接乒乓球。
演示視頻:
部分代碼展示
`timescale?1ns?/?1ps module?pingpang_game( ????input?clk_in,//50MHz ?input?reset_n,//復位 ????input?start,//開始 ????input?button_1,//選手1? ????input?button_2,//選手2? ?output?win_led,//獲勝提示 ????output?[5:0]?led,//led,高電平亮?high?light ????output?[7:0]?HEX0,//數碼管0 ????output?[7:0]?HEX1,//數碼管1 ????output?[7:0]?HEX2,//數碼管2 ????output?[7:0]?HEX3,//數碼管3 output?[7:0]?HEX_win1,//1號贏的局數 output?[7:0]?HEX_win2,//2號贏的局數 output?[7:0]?HEX_total//總的局數 ????); wire?button_posedge_1; wire?button_posedge_2; wire?[7:0]?score_1; wire?[7:0]?score_2; wire[3:0]?winnum_1;//1號獲勝局數 wire[3:0]?winnum_2;//2號獲勝局數 wire?[3:0]?winnum_add;//總局數 //按鍵下降沿模塊 key_debounce?i1_key_debounce( ?????.?clk(clk_in), ?????.?button_in(button_1),//輸入 ??.?button_pos(button_posedge_1)//消抖后按鍵上升沿 ); //按鍵下降沿模塊 key_debounce?i2_key_debounce( ?????.?clk(clk_in), ?????.?button_in(button_2),//輸入 ??.?button_pos(button_posedge_2)//消抖后按鍵上升沿 ); ? //游戲控制模塊 game_ctrl?i_game_ctrl( ????.?clk_in(clk_in), ?.?reset_n(reset_n), ????.?start(start),//復位 ????.?led(led),//led,高電平亮?high?light ?.?win_led(win_led), ????.?button_posedge_1(button_posedge_1),//消抖后按鍵上升沿 ????.?button_posedge_2(button_posedge_2),//消抖后按鍵上升沿 ????.?score_1(score_1),//分數1 ????.?score_2(score_2),//分數2 ????.?winnum_1(winnum_1),//1號獲勝局數 ????.?winnum_2(winnum_2),//2號獲勝局數 .?winnum_add(winnum_add)?//總局數 ????); //數碼管顯示模塊 display_num?i_display_num( .?clk(clk_in), .?score_1(score_1),//分數1 .?score_2(score_2),//分數2 .?winnum_1(winnum_1),//1號獲勝局數 .?winnum_2(winnum_2),//2號獲勝局數 .?winnum_add(winnum_add),?//總局數 .?HEX0(HEX0),//數碼管0 .?HEX1(HEX1),//數碼管1 .?HEX2(HEX2),//數碼管2 .?HEX3(HEX3),//數碼管3 .?HEX_win1(HEX_win1),//1號贏的局數 .?HEX_win2(HEX_win2),//2號贏的局數 .?HEX_total(HEX_total)//總的局數 ); endmodule
設計報告(文檔點擊可下載):
設計文檔(文檔可下載)
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真圖
按鍵檢測模塊
控制模塊
顯示模塊
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=176
閱讀全文