名称:弹球游戏Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

设计要求

查阅FPGA、VGA接口标准等相关资料文献。

2.编写HDL代码实现νGA显示模块和按键输入模块,并下载到开发板进行测试。

3.图像分辨率不低于1024*768,目标移动方块50*50,移动弹板为20*100。

4.实现一个通过VGA显示器进行游戏显示并通过按键进行控制弹板的弹球游戏。

5.对项目的性价比以及社会经济效益进行分析说明。实验要求

1.完成系统硬件设计

2.完成HDL代码设计及仿真

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

按键模块

VGA时序控制模块

画面生成模块

部分代码展示:

//VGA时序控制模块

module vga_controller_1024x768(rst_p, pixel_clk, HS, VS, hcount, vcount, video_enable);

   input           rst_p;//高电平复位

   input           pixel_clk;//65M

   output          HS;//行同步

   output          VS;//场同步

   output [10:0]    hcount;//当前x像素坐标位置

   output [10:0]    vcount;//当前y像素坐标位置

   output          video_enable;//显示使能

   

   

   reg             HS;   

   reg             VS;   

   //定义1024*768的参数

   parameter  HMAX = 1344;

   parameter  HLINES = 1024;

   parameter  HFP = 1024;

   parameter  HSP = 1160;

   parameter  VMAX = 806;

   parameter  VLINES = 768;

   parameter  VFP = 771;

   parameter  VSP = 777;

   

   reg [10:0]       hcounter;

   reg [10:0]       vcounter;

   

   assign hcount = hcounter;

   assign vcount = vcounter;

   

   //行计数

   always @(posedge pixel_clk)

      begin

         if (rst_p == 1'b1)

            hcounter <= 11'b0;

         else if (hcounter == HMAX)

            hcounter <= 11'b0;

         else

            hcounter <= hcounter + 1;

      end

   

   //场计数

   always @(posedge pixel_clk)

      begin

         if (rst_p == 1'b1)

            vcounter <= 11'b0;

         else if (hcounter == HMAX)

         begin

            if (vcounter == VMAX)

               vcounter <= 11'b0;

            else

               vcounter <= vcounter + 1;

         end

      end

   

   //行同步

   always @(posedge pixel_clk)

      begin

         if (hcounter >= HFP & hcounter < HSP)

            HS <= 0;

         else

            HS <= 1;

      end

   

   //场同步

   always @(posedge pixel_clk)

      begin

         if (vcounter >= VFP & vcounter < VSP)

            VS <= 0;

         else

            VS <= 1;

      end

   

   //输出显示使能信号

   assign video_enable = ((hcounter < HLINES & vcounter < VLINES)) ? 1'b1 :  1'b0;

endmodule

完整代码

 扫描文章末尾的公众号二维码

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: