名称:电子拔河游戏机VGA显示设计Verilog代码Quartus DE1-SOC开发板(文末获取)
软件:Quartus
语言:Verilog
代码功能:
电子拔河游戏机VGA显示
电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。由一排发光二极管表示拔河的“电子绳”。由甲乙双方通过按纽开关使发光二极管向一方的终点延伸当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负
基本要求
1、设计一个能进行拔河游戏的VGA显示游戏。
2、电路使用15个拔河显示块,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
本代码已在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
源代码
点击下方的公众号卡片获取