news 2026/5/30 18:13:55

VGA 方块游戏显示控制 Verilog Quartus

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VGA 方块游戏显示控制 Verilog Quartus

名称:VGA 方块游戏显示控制 Verilog Quartus FPGA代码工程源码下载

软件:Quartus

语言:Verilog

开发板/平台:Cyclone IV FPGA开发板

功能介绍

本设计实现一个基于 FPGA 的 VGA 方块游戏显示控制系统,使用 Verilog 语言完成核心逻辑开发,工程软件为 Quartus。系统通过 VGA 接口输出游戏画面,配合按键完成开始、暂停以及左右方向控制,并将分数低 4 位通过 LED 进行显示,适合用于 FPGA 图形显示、简单游戏逻辑和 VGA 时序控制相关课程设计或工程参考。

顶层模块 vga_controller_top 以 50MHz 时钟作为系统输入,外部接口包含复位、开始按键、暂停按键、两个方向控制按键、VGA 行同步/场同步信号、12 位 RGB 输出以及 4 位 LED 输出。整体功能围绕 VGA 扫描坐标生成、游戏画面像素输出、按键消抖和复位同步展开,结构清晰,便于阅读和二次修改。

画面显示部分由 VGA 时序模块产生 pixel_x、pixel_y、video_on 等显示控制信号,图形生成模块根据当前像素坐标、按键状态和游戏状态输出 RGB 颜色数据。按键输入经过消抖处理后再进入游戏控制逻辑,可减少机械按键抖动对开始、暂停和方向控制的影响。

运行环境

开发语言:Verilog。

开发软件:Quartus。

目标应用:FPGA VGA 图形显示与按键交互游戏设计。

工程顶层:vga_controller_top。

设计思路

系统采用顶层集成的设计方式,将 VGA 时序、复位同步、按键消抖和图形生成逻辑分成相对独立的功能模块。顶层模块负责连接外部时钟、复位、按键、VGA 输出和 LED 显示,同时完成各子模块之间的信号传递,使工程结构更便于定位问题和扩展功能。

VGA 显示部分先由 vga_sync 模块生成行同步、场同步、当前像素坐标以及有效显示区域标志。图形生成模块 graphic_generator 根据像素坐标判断当前位置应显示的游戏元素,并在 video_on 有效时输出对应的 12 位 RGB 数据,从而形成完整的 VGA 游戏画面。

按键控制部分使用 key_jitter 模块对开始、暂停及方向按键进行消抖处理。开始和暂停按键使用下降沿触发信号参与游戏状态切换,方向按键输出稳定电平用于控制游戏中的移动操作。复位信号经过 aiso_rst 同步处理后提供给 VGA 时序和图形控制模块,减少异步复位直接进入多模块逻辑带来的不稳定因素。

LED 输出与 score 信号相关联,用于显示分数低 4 位的状态。这样的设计既保留了 VGA 屏幕上的主要游戏显示,也提供了开发板 LED 辅助观察信号,方便调试和演示。

模块结构

vga_controller_top:工程顶层模块,连接时钟、复位、按键、VGA 输出和 LED 输出,例化复位同步、VGA 时序、按键消抖和图形生成模块。

vga_sync:VGA 时序控制模块,产生 VGA_CLK、VGA_BLANK_N、hsync、vsync、pixel_x、pixel_y 和 video_on 等显示相关信号。

aiso_rst:复位同步模块,将外部复位信号同步为内部使用的复位信号。

key_jitter:按键消抖模块,用于开始、暂停和方向控制按键输入处理。

graphic_generator:图形控制与游戏显示生成模块,根据按键、像素坐标、显示有效信号和游戏状态输出 RGB 数据及 score 分数信号。

display、RAM_set:作为工程相关显示/存储功能模块参与整体设计。

开发板验证

本设计带有 Cyclone IV FPGA 开发板验证内容,工程中配置了管脚约束文件,并提供开发板相关实物验证图片。外部接口覆盖 50MHz 时钟、复位按键、开始/暂停按键、方向按键、VGA 行场同步、12 位 RGB 输出以及 LED 显示,适合在对应 FPGA 开发板环境下进行下载演示和功能观察。

开发板验证重点包括 VGA 显示接口输出、按键交互控制和 LED 分数状态显示。通过管脚分配与工程编译结果,可作为实际硬件连接和板级调试的参考。

演示视频

提供 VGA 方块游戏运行演示视频,可用于查看开发板运行状态、VGA 画面显示效果以及按键控制过程。视频内容适合作为下载前了解工程实际演示效果的参考。

仿真图/仿真说明/设计文档图片

设计文档图片覆盖工程文件、程序文件、程序编译、RTL 图和管脚分配等内容,可辅助理解 Quartus 工程结构、模块层次关系和硬件引脚配置。工程中还包含 ModelSim 仿真目录及相关仿真生成文件,可作为进一步仿真分析和时序查看的基础。

部分代码

以下展示顶层模块vga_controller_top的部分代码,完整源码请下载压缩包查看。

module vga_controller_top(clk_50M,start_btn_n,pause_btn_n, rst, btn_0_in, btn_1_in, hsync, vsync, rgb,LED); input clk_50M;//时钟 input rst;//复位(低电平) input start_btn_n;//开始按键 input pause_btn_n;//暂停按键 input btn_0_in;//按键 input btn_1_in;//按键 output hsync;//VGA水平同步信号 output vsync;//VGA垂直同步信号 output [3:0] LED;//LED信号 output [11:0] rgb;//RGB信号 wire VGA_CLK;//VGA控制时钟 wire VGA_BLANK_N;//VGA控制有效信号 wire clk; wire video_on; wire rst_s;//高电平复位 wire [9:0] pixel_x; wire [9:0] pixel_y; wire btn_0; wire btn_1; wire [1:0] btn_up_dowm; wire [7:0] score; wire hsync_buf; wire vsync_buf; wire [11:0] rgb_buf; //信号输出 assign hsync = hsync_buf; assign vsync = vsync_buf; assign rgb = rgb_buf; assign clk = clk_50M; wire btn_start,btn_pause; assign LED = ~ score[3:0] ; //复位信号同步模块 aiso_rst i_aiso_rst(.clk(clk), .reset(rst), .reset_s(rst_s)); //VGA时序控制模块(高电平复位) vga_sync i_vga_sync(.clk(clk), .rst(rst_s), .VGA_CLK(VGA_CLK), .VGA_BLANK_N(VGA_BLANK_N), .hsync(hsync_buf), .vsync(vsync_buf), .pixel_x(pixel_x), .pixel_y(pixel_y), .video_on(video_on)); //按键消抖 key_jitter i0_key_jitter( . clkin(clk), . key_in(start_btn_n),//输入 . key_out(), . key_negedge(btn_start)//消抖后按键下降沿 ); //按键消抖 key_jitter i1_key_jitter( . clkin(clk), . key_in(pause_btn_n),//输入 . key_out(), . key_negedge(btn_pause)//消抖后按键下降沿 ); //按键消抖 key_jitter i2_key_jitter( . clkin(clk), . key_in(btn_0_in),//输入 . key_out(btn_0), . key_negedge()//消抖后按键下降沿 ); //按键消抖 key_jitter i3_key_jitter( . clkin(clk), . key_in(btn_1_in),//输入 . key_out(btn_1), . key_negedge()//消抖后按键下降沿 ); //调用图形控制模块(高电平复位) graphic_generator i_graphic_generator(.clk(clk), .rst(rst_s), .btn_start(btn_start), .btn_pause(btn_pause), .btn_0(btn_0), .btn_1(btn_1), .pixel_x(pixel_x), .pixel_y(pixel_y), .video_on(video_on), .score(score), .rgb(rgb_buf)); endmodule

代码文件

关注下方公众号获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 18:13:04

HarmonyOS文件基础服务(Core File Kit)实战演练04-文件监听与流式读写

官方文档对 FileWatcher 和 Stream 的描述不够详细,如何实现文件监听与流式读写? 在开发文件管理、日志实时监控或大文件上传下载等功能时,文件监听(FileWatcher)和流式读写(Stream)是两个绕不开…

作者头像 李华
网站建设 2026/5/30 18:12:57

AI 编程工具面试题(Claude Code、Codex 等)基础篇(二)

AI 编程工具面试题(Claude Code、Codex 等)基础篇(二) 1. 解释 “代码幻觉” 在 AI 编程中的含义。 答案 模型自信地生成看似合理但实际错误、不存在或不安全的代码,例如调用不存在的库函数、使用废弃 API、编造配置项。这是由统计模式匹配而非真实理解导致的。 追问:…

作者头像 李华
网站建设 2026/5/30 18:09:40

基于Arduino Uno的模块化机器人:全向移动、避障与蓝牙控制实践

1. 项目概述:从零打造你的全能机器人伙伴RITZ如果你对机器人技术感兴趣,想亲手搭建一个既能遥控、又能自己躲避障碍,甚至还能响应简单语音指令的移动平台,那么你来对地方了。今天要分享的,是我基于Arduino Uno R3为核心…

作者头像 李华
网站建设 2026/5/30 18:09:29

STL转STEP终极指南:如何用免费工具实现CAD工程文件无缝转换

STL转STEP终极指南:如何用免费工具实现CAD工程文件无缝转换 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域,STL到STEP格式转换是连接原型设计与专业…

作者头像 李华
网站建设 2026/5/30 18:08:47

事件相机与合成数据技术解析与应用

1. 事件相机与合成数据需求解析事件相机(Event Camera)作为新一代视觉传感器,正在彻底改变传统计算机视觉的感知范式。与常规帧式相机不同,事件相机通过异步检测每个像素的亮度变化(log-intensity change)来…

作者头像 李华