基于Basys 2的VGA视频游戏——Running man

这篇博客介绍了如何基于Basys 2 FPGA开发板设计一款名为'Running man'的VGA视频游戏。实验旨在掌握ISE软件、FPGA开发板结构以及Verilog编程。游戏包括主逻辑、随机数生成、数码管显示、分频和分数计算等模块。
摘要由CSDN通过智能技术生成

基于Basys 2的VGA视频游戏

一、实验目的

  1. 掌握ISE软件及FPGA开发板的基本结构
  2. 熟练应用Verilog语言编程实现
  3. 掌握VGA的显示方法并将其应用到自己的游戏之中

二、模块结构

1

三、游戏画面展示

这里写图片描述

四、实验源代码

游戏主逻辑:

module test(  
CLK,   
RED,  
GREEN,  
BLUE,  
HS,  
VS,
left,
right,
leda,
rest,
rand_num,
fenshu,
life,
nandu);  
  input CLK;   //时钟输入
  input left;  //向左移动输入
  input right; //向右移动输入
  input rest;  //重置
  input  [7:0] rand_num;
  input nandu; //调整难度
  output leda;//用于测试
  output [2:0] RED,GREEN;  
  output [1:0] BLUE;  
  output HS,VS; 
  output reg [7:0]fenshu;
  output reg [3:0]life;  

  parameter recal=10;
  parameter recah=120;
  parameter recbl=150;
  parameter recbh=20;
  parameter reccl=40;
  parameter recch=40;
  parameter recckl=20;
  parameter recckh=20;
  parameter recdl=20;
  parameter recdh=20;

  parameter recax1=200;
  parameter recax2=610;
  parameter recay1=60;
  parameter recay2=240;
  parameter recay3=420;
  parameter recay4=-120;


  parameter recbx1=240;
  parameter recbx2=350;
  parameter recbx3=460;
  parameter recby=40;

  parameter reccx=390;
  parameter reccy=440;
  parameter recckx=400;
  parameter reccky=440;

  parameter recdx1=260;
  parameter recdx2=380;
  parameter recdx3=500;
  parameter recdy=20;

parameter           char_line0=48'h000000000000;  //END数据
parameter           char_line1=48'h000000000000;
parameter           char_line2=48'h000000000000;
parameter           char_line3=48'h000000000000;
parameter           char_line4=48'h000000000000;
parameter           char_line5=48'h000000000000;
parameter           char_line6=48'h7ffcf83e7fc0;
parameter           char_line7=48'h180c38081870;
parameter           char_line8=48'h18043c081818;
parameter           char_line9=48'h18062c08180c;
parameter           char_line10=48'h18022c08180c;
parameter           char_line11=48'h18002e08180c;
parameter           char_line12=48'h181026081806;
parameter           char_line13=48'h181027081806;
parameter           char_line14=48'h183023081806;
parameter           char_line15=48'h1ff023081806;
parameter           char_line16=48'h183021881806;
parameter           char_line17=48'h181021c81806;
parameter           char_line18=48'h181020c81806;
parameter           char_line19=48'h180020e81806;
parameter           char_line20=48'h180020681806;
parameter           char_line21=48'h18002078180c;
parameter           char_line22=48'h18022038180c;
parameter           char_line23=48'h180220381808;
parameter           char_line24=48'h180420381818;
parameter           char_line25=48'h180c20181870;
parameter           char_line26=48'h7ffcf8187fc0;
parameter           char_line27=48'h000000000000;
parameter           char_line28=48'h000000000000;
parameter           char_line29=48'h000000000000;
parameter           char_line30=48'h000000000000;
parameter           char_line31=48'h000000000000;

  parameter            cmp1=8'b10000000;
  parameter            cmp2=8'b01010101;
  parameter            cmp3=8'b10101010;

reg[5:0] char_bit;
wire[9:0] y_dis;

  reg HS,VS;  
  reg [11:0] HS_CNT;// 行计数   
  reg [9:0] VS_CNT;//场计数   
  reg  [9:0]       cnt=0; //虚线下降计数
  reg  [9:0]       cntx=0;//最上方虚线计数
  reg  [9:0]       cnty=0;
  reg  [9:0]       cntz=0;
  reg  [9:0]       cnt1=0;//障碍1下降计数
  reg  [9:0]       cnt2=0;//障碍2下降计数
  reg  [9:0]       cnt3=0;//障碍3下降计数
  reg  [9:0]       cnt4=0;//生命1下降计数
  reg  [9:0]       cnt5=0;//生命2下降计数
  reg  [9:0]       cnt6=0;//生命3下降计数


  reg signed [11:0]       left1=0;
  reg signed [11:0]       right1=0;
  reg signed [11:0]       res=0;
  reg                   k1=1;//障碍1使能
  reg                    k2=0;//障碍2使能
  reg                    k3=0;//障碍3使能
  reg                   k4=0;//生命1使能
  reg                    k5=0;//生命2使能
  reg                    k6=0;//生命3使能
  reg                  pk=0;
  reg [9:0]            pk1=0;
  reg                  p;
  reg                  p1;
  reg                  p2;
  reg                  si1=0;
  reg                  si2=0;
  reg                  si3=0;
  reg [9:0]            x1;
  reg [9:0]            y1;
  reg [9:0]            x2;
  reg [9:0]            y2;
  reg                  led1=0;
  reg                  endg=0; //结束游戏
  reg [5:0]            life1=3;
  reg                  jiasu=0;
  reg [7:0]            lck;    //随机数锁存
  reg [7:0]            score=0;
  reg [5:0]            v1;
  reg [5:0]            v2;
  reg [7:0]            ColorOutput;

   wire         reset;
   wire         HBlank;
   wire         VBlank;
   wire         Blank;

 //----------------------产生HS、VS信号---------------//   
  always @(posedge CLK)  
  begin  
        life=life1;
      if(857<=HS_CNT&&HS_CNT<=977) HS<=0;//产生HS信号   
      else HS<=1;  
      if(HS_CNT==1039)  
            begin                  
              HS_CNT<=0;   
              if(VS_CNT==665)    VS_CNT<=0;//VS计数   
              else VS_CNT<=VS_CNT+1; 
            end              
       else HS_CNT<=HS_CNT+1;//HS计数   
       if(638<=VS_CNT&&VS_CNT<=644) VS<=0;//产生VS信号   
       else VS<=1;    


     end  



  assign HBlank = ((HS_CNT >= 0) & (HS_CNT < 800)) ? 1'b0 : 1'b1;

  assign VBlank = ((VS_CNT >= 0) & (VS_CNT < 600)) ? 1'b0 : 1'b1;

  assign Blank = (HBlank == 1'b1 | VBlank == 1'b1) ? 1'b1 : 1'b0;

  assign RED = (Blank == 1'b0) ? ColorOutput[7:5] : 
                3'b000;
  assign GREEN = (Blank == 1'b0) ? ColorOutput[4:2] : 
                  3'b000;
  assign BLUE = (Blank == 1'b0) ? ColorOutput[1:0] : 
                 <
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Basys2VGA信号发生器是一种用于产生VGA(Video Graphics Array,视频图形阵列)信号的设备。Basys2是一款由Digilent公司生产的高性能FPGA(Field-Programmable Gate Array,现场可编程门阵列)开发板,而VGA是一种用于显示图像的视频标准。 Basys2VGA信号发生器的主要功能是通过FPGA芯片来生成VGA信号。通过在FPGA上编程,可以控制信号的频率、分辨率和图形效果等。用户可以利用Basys2VGA信号发生器来生成各种图形,例如矩形、圆形、文本等,并将其显示在VGA显示器上。 使用Basys2VGA信号发生器有几个优点。首先,由于采用了FPGA芯片,这种信号发生器具有高度的灵活性和可编程性,用户可以根据自己的需要自定义生成的图像。其次,Basys2VGA信号发生器具有较高的性能,可以满足对图形显示的要求。此外,Basys2VGA信号发生器还可以与其他外部设备进行连接,实现更多的功能扩展。 然而,使用Basys2VGA信号发生器也有一些限制。首先,由于FPGA芯片的复杂性,对于非专业人士来说,编程和配置可能会有一定的难度。其次,由于Basys2VGA信号发生器是一款相对较旧的设备,在某些方面可能与现代VGA显示器的要求不完全匹配。 总的来说,Basys2VGA信号发生器是一款功能强大的设备,可以用于生成VGA信号并显示各种图形。它的可编程性和性能为用户提供了更多的自定义和控制选项,但需要注意的是,对于非专业人士来说,使用它可能需要一定的学习和操作。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值