名称:电子拔河游戏机VGA显示设计Verilog代码Quartus? DE1-SOC开发板
软件:Quartus
语言:Verilog
代码功能:
电子拔河游戏机VGA显示。
电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。
基本要求:
1、设计一个能进行拔河游戏的VGA显示游戏。
2、电路使用15个拔河显示块,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE1-SOC开发板验证,DE1-SOC开发板如下,其他开发板可以修改管脚适配:
设计文档:
1. 工程文件
2. 程序文件

3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench(测试台)
7. 仿真图
整体仿真图
按键消抖模块
VGA时序控制模块
图形控制模块
拔河控制模块
数码管显示模块
部分代码展示:
`timescale?1ns?/?1ps module?bahe_game( input?clk_in,//标准时钟 input?reset_n,//复位信号,低有效? input?restart,//裁判控制重新开始 input?player_1_key,//选手1 input?player_2_key,//选手2 output????????hsync,//VGA水平同步信号 output????????vsync,//VGA垂直同步信号 output????????VGA_CLK,//VGA控制时钟 output????????VGA_BLANK_N,//VGA控制有效信号 output?[11:0]?rgb,//RGB信号 output?[14:0]?led,//15个led //数码管显示 output??[7:0]?HEX0, output??[7:0]?HEX2 ????); wire?[3:0]?score_1;//选手1分数 wire?[3:0]?score_2;//选手2分数 wire?[9:0]?pixel_x; wire?[9:0]?pixel_y; wire??????video_on; wire?player_1; wire?player_2; //按键消抖模块 key_debounce?U1_key_debounce( ?????.?clk(clk_in), ?????.?button_in(player_1_key),//输入 ?.?button_posedge(player_1)//消抖后按键上升沿 ); //按键消抖模块 key_debounce?U2_key_debounce( ?????.?clk(clk_in), ?????.?button_in(player_2_key),//输入 ?.?button_posedge(player_2)//消抖后按键上升沿 ); //VGA时序控制模块 vga_sync?u1( .clk(clk_in),? .rst(~reset_n),? .VGA_CLK(VGA_CLK),? .VGA_BLANK_N(VGA_BLANK_N),? .hsync(hsync),? .vsync(vsync),? .pixel_x(pixel_x),? .pixel_y(pixel_y),? .video_on(video_on) ); //图形控制模块 graphic_generator?i_graphic_generator( .clk(clk_in),? .rst(~reset_n),? .restart(restart), .player_1(player_1), .player_2(player_2),? .pixel_x(pixel_x),? .pixel_y(pixel_y),? .video_on(video_on),? .rgb(rgb) ); //拔河控制模块 bahe_ctrl?U_bahe_ctrl( .?clk_in(clk_in),//标准时钟 .?reset_n(reset_n),//复位信号,低有效? .?restart(restart),//裁判控制重新开始 .?player_1(player_1),//选手1 .?player_2(player_2),//选手2 .?led(led),//15个led .?score_1(score_1),//选手1分数 .?score_2(score_2)//选手2分数 ); //数码管显示模块 display?U_display( .?clk_in(clk_in),//标准时钟 .?score_1(score_1),//选手1分数 .?score_2(score_2),//选手2分数 //数码管显示 .?HEX0(HEX0), .?HEX2(HEX2) ); endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=916
290