VGA 小球游戏显示控制 Verilog Quartus

名称:VGA 小球游戏显示控制 Verilog Quartus

软件:Quartus

语言:Verilog

功能介绍

这是一个使用 Verilog 实现的 VGA 小球游戏显示控制设计,工程以 `vga_controller_top` 为顶层模块。顶层接收时钟、复位和上下两个按键输入,输出 VGA 水平同步、垂直同步及 12 位 RGB 颜色信号,形成从按键输入到像素画面输出的完整控制链路。 设计将 VGA 扫描时序、像素坐标生成、按键消抖和图形绘制拆分为独立模块。图形生成模块接收像素坐标、有效显示区标志和按键状态,负责形成显示颜色数据;顶层完成各模块连接,便于按信号路径理解和修改游戏控制及画面逻辑。 工程适合用于学习 FPGA 上的 VGA 时序组织、坐标驱动图形显示、模块化 Verilog 设计以及按键输入处理。Quartus 工程文件和管脚配置可作为工程配置与硬件接口分配的参考。

运行环境

硬件描述语言:Verilog。开发软件:Quartus。工程顶层模块:`vga_controller_top`。

设计思路

设计采用模块化结构,将时钟生成、复位同步、VGA 扫描时序、按键消抖与图形生成分开处理。输入时钟经 PLL 产生设计使用的时钟;复位信号经过同步后供各模块使用,降低复位释放与时钟边沿不同步带来的影响。 VGA 时序模块产生水平和垂直同步信号、当前像素坐标以及有效显示区标志。两个按键分别经过消抖处理,再组合成控制信号送入图形生成模块。图形模块依据像素坐标、显示区状态和按键输入生成 RGB 像素数据,并将游戏画面与 VGA 同步信号一并送到顶层输出。

模块结构

顶层模块 `vga_controller_top` 连接并管理各功能模块:`pll` 生成内部时钟;`aiso_rst` 完成复位同步;`vga_sync` 输出 VGA 同步信号、像素坐标和显示有效标志;两个 `debounce` 实例分别处理上下按键;`graphic_generator` 根据控制输入与像素坐标生成 RGB 数据及分数信号。`display` 模块也位于工程源码中。

开发板验证

工程包含 VGA 管脚约束与分配配置,可用于配套开发板的接口连接与验证。顶层设计提供 VGA 水平、垂直同步信号及 12 位 RGB 输出,并以两个按键输入控制画面中的游戏图形。

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

工程包含 ModelSim 仿真目录及 Quartus 编译、时序相关输出文件,可用于了解工程仿真与实现流程。配套文档图片可展示实验设备及相关设计资料。未据此描述具体仿真波形或仿真结果。

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image227.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image218.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image214.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image96.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image95.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image91.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image90.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image84.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image94.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image92.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image69.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image80.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image149.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image76.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image75.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image72.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image71.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image70.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image139.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image67.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image65.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image60.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image129.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image59.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image56.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image55.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image52.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image87.png

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image15.jpeg

VGA 小球游戏显示控制 Verilog Quartus 设计文档图片 image141.png

部分代码

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

module vga_controller_top(clk_20M, rst, btn_up, btn_down, hsync, vsync, rgb);
   input         clk_20M;//时钟
   input         rst;//复位
   input         btn_up;//上按键
   input         btn_down;//下按键
   output        hsync;//VGA水平同步信号
   output        vsync;//VGA垂直同步信号
   output [11:0] rgb;//RGB信号
   
   
   wire          clk;
   wire          video_on;
   wire          rst_s;
   wire [9:0]    pixel_x;
   wire [9:0]    pixel_y;
   wire          db_btn_up;
   wire          db_btn_down;
   
   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;
   
	//PLL模块
pll	pll_inst (
	.inclk0 ( clk_20M ),
	.c0 ( clk )//50M
	);
	
   //复位信号同步模块
   aiso_rst u0(.clk(clk), .reset(rst), .reset_s(rst_s));
   
   //VGA时序控制模块
   vga_sync u1(.clk(clk), .rst(rst_s), .VGA_CLK(), .VGA_BLANK_N(), .hsync(hsync_buf), .vsync(vsync_buf), .pixel_x(pixel_x), .pixel_y(pixel_y), .video_on(video_on));
   
   //按键信号控制模块
   debounce u2(.clk(clk), .reset(rst_s), .sw(btn_up), .db(db_btn_up));
   
   //按键信号控制模块
   debounce u3(.clk(clk), .reset(rst_s), .sw(btn_down), .db(db_btn_down));
   //将上下控制按键信号拼接为一个2位的信号
   assign btn_up_dowm = ({db_btn_down, db_btn_up});
   
   
   //调用图形控制模块
   graphic_generator u4(.clk(clk), .rst(rst_s), .btn(btn_up_dowm), .pixel_x(pixel_x), .pixel_y(pixel_y), .video_on(video_on), .score(score), .rgb(rgb_buf));
   
endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » VGA 小球游戏显示控制 Verilog Quartus

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员