VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏

这篇具有很好参考价值的文章主要介绍了VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

名称:VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏

软件:VIVADO

语言:Verilog

代码功能:

设计一个弹球游戏,并在VGA显示器上显示

1、可以控制游戏开始,开始时数码管显示0分

2、使用按键控制球拍的运动,当控制球拍接住球时,分数加1

3、弹球触碰屏幕边缘或者球拍时可以反弹

4、当未成功接球时,游戏结束

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

代码下载:VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏名称:VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏(代码在文末下载)软件:VIVADO语言:Verilog代码功能:设计一个弹球游戏,并在VGA显示器上显示1、可以控制游戏开始,开始时数码管显示0分2、使用按键控制球拍的运动,当控制球拍接住球时,分数加13、弹球触碰屏幕边缘或者球拍时可以反弹4、当未成功接球时,游戏结束FPGA代码Verilog/VHDL代码资源下载:www.http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=324

工程文件:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

程序文件:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

程序编译:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

RTL图:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

管脚分配:

verilog源设计弹力球游戏,游戏,fpga开发,ego1,vivado,verilog,vga

部分代码展示:文章来源地址https://www.toymoban.com/news/detail-771417.html

`timescale 1ns / 1ps
//产生墙、球和球拍
module graphic_generator(clk, rst, btn, pixel_x, pixel_y, video_on, rgb,score);
   input    clk, rst; 
   input    [1:0] btn; 
   input    [9:0] pixel_x, pixel_y; 
   input    video_on; 
   
   output   [11:0] rgb; 
   output [7:0] score;
   reg      [11:0] rgb; 
   
   wire     refr_tick; 
   
   // refr-tick: 1-clock tick asserted at st art of v-sync
   // i.e.. when the screen is refreshed (60 Hz)
   assign refr_tick = (pixel_y==481) && (pixel_x==0); 
   // ==========================
   // object output signals
   // ==========================
   
   wire wall_on, paddle_on, ball_on; 
   wire [11:0] wall_rgb, paddle_rgb, ball_rgb; 
   
   always @ (posedge clk, posedge rst) 
      if (rst) 
         begin   
            paddle_y_reg <= 0; 
            ball_x_reg   <= 0; 
            ball_y_reg   <= 0; 
            x_delta_reg  <= 10'h004; 
            y_delta_reg  <= 10'h004; 
         end
      else 
         begin 
            paddle_y_reg <= paddle_y_next; 
            ball_x_reg   <= ball_x_next; 
            ball_y_reg   <= ball_y_next; 
            x_delta_reg  <= x_delta_next; 
            y_delta_reg  <= y_delta_next; 
         end 
         
   // ===============
   // 墙
   // ===============
   assign wall_on  = (pixel_x >= 32) && (pixel_x <= 35); 
   assign wall_rgb = 12'hF00;  // 蓝色
   
   // ===============
   // 球拍
   // ===============
   
   wire [9:0] paddle_y_t, paddle_y_b; 
   // register to track top boundary (x position is fixed) 
   reg [9:0] paddle_y_reg, paddle_y_next; 
   assign paddle_y_t = paddle_y_reg; 
   assign paddle_y_b = paddle_y_t + 72 - 1; 
   
   assign paddle_on  = (pixel_x >= 600) && (pixel_x <= 603) && 
                       (pixel_y >= paddle_y_t) && (pixel_y <= paddle_y_b);  //bar top and bottom barriers
   assign paddle_rgb = 12'h0F0; // 绿色
   
   // new paddle y-postion 
   always@ (*) 
   begin
      paddle_y_next = paddle_y_reg; 
      if (refr_tick)
         if (btn[1] & (paddle_y_b < (480 - 1 - 4))) //maxy -1- (bar moving velocity)
            paddle_y_next = paddle_y_reg + 4;  // move down 
         else if (btn[0] & (paddle_y_t > 4))
            paddle_y_next = paddle_y_reg - 4;  // move up 
   end 
   
   // ===============
   // 球
   // ===============
   
   // ball left, right boundary 
   wire [9:0] ball_x_l, ball_x_r; 
   // ball tob, bottom boundary 
   wire [9:0] ball_y_t, ball_y_b;  
   // reg to track left , top position
   reg [9:0] ball_x_reg , ball_y_reg ;
   wire [9:0] ball_x_next , ball_y_next ; 
   //registers to track ball speed
   reg [9:0] x_delta_reg, x_delta_next; 
   reg [9:0] y_delta_reg, y_delta_next; 
   
   //boundary 
   assign ball_x_l = ball_x_reg; 
   assign ball_y_t = ball_y_reg; 
   assign ball_x_r = ball_x_l + 8 - 1; 
   assign ball_y_b = ball_y_t + 8 - 1;
   
   //pixel within ball 
   assign ball_on = (pixel_x >= ball_x_l) && (pixel_x <= ball_x_r) && 
                    (pixel_y >= ball_y_t) && (pixel_y <= ball_y_b); 
   assign ball_rgb = 12'hFF0; //球色为红绿混合色
  
  // new ball position 
   assign ball_x_next = (refr_tick) ? ball_x_reg + x_delta_reg : ball_x_reg; 
   assign ball_y_next = (refr_tick) ? ball_y_reg + y_delta_reg : ball_y_reg; 
//   assign ball_x_next = (refr_tick) ? ball_x_reg + x_delta_reg : 10'd0; 
//   assign ball_y_next = (refr_tick) ? ball_y_reg + y_delta_reg : 10'd0;    
   // new ball velocity 
   always @ (*) 
   begin 
      x_delta_next = x_delta_reg; 
      y_delta_next = y_delta_reg; 
      if (ball_y_t < 1) //reach top 
         y_delta_next = 1; 
      else if (ball_y_b > (480 - 1)) // reach bottom 
         y_delta_next = -1; 
      else if (ball_x_l <= 35) // reach wall 
         x_delta_next = 1; //bounce back 
      else if ((ball_x_r >= 600) && (ball_x_r <= 603) &&
               (ball_y_b >= paddle_y_t) && (ball_y_t <= paddle_y_b))
         // reach x of right paddle and hit, ball bounces back 
         x_delta_next = -1; 
       else if(ball_x_r>=610)begin//end game
         x_delta_next = 0;    
         y_delta_next = 0;
         end
   end

到了这里,关于VIVADO弹球游戏VGA显示Verilog代码EGO1开发板游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vivado数字秒表verilog代码ego1开发板电子秒表跑表

    名称:vivado数字秒表verilog代码ego1开发板电子秒表跑表 软件:VIVADO 语言:Verilog 代码功能: 数字秒表设计 1、秒表的设计精确到10毫秒(0.01秒) 2、可通过按键控制秒表启动、暂停、复位 3、数码管显示分、秒、毫秒 本代码已在ego1开发板验证,开发板如下,其他开发板可以修

    2024年02月03日
    浏览(61)
  • VIVADO自动售票机售货机verilog代码ego1开发板验证

    名称:VIVADO自动售票机售货机verilog代码ego1开发板验证 软件:VIVADO 语言:Verilog 代码功能: 自动售票机  1、自动售票机只出售1角、2角、5角和1元4种车票 2、只接收1角、5角和1元硬币,每次只能出售1张车  3、自动售票机具有累加销售额的功能 实验要求  出售车票用SW0~3分别

    2024年02月05日
    浏览(43)
  • 4人竞赛数字抢答器vivado软件verilog代码ego1开发板

    名称:4人竞赛数字抢答器vivado软件verilog代码ego1开发板 软件:VIVADO 语言:Verilog 代码功能: 数字抢答器的设计任务说明: 设计一个可供4人竞赛的数字抢答器。 (1)具有定时抢答功能,且一次抢答的时间由主持人设定,本抢答器的时间 设定为60秒以内,当主持人启动“开始”开关后

    2024年02月05日
    浏览(41)
  • 售货机基于ego1开发板的自动饮料机verilog代码vivado软件

    名称:售货机基于ego1开发板的自动饮料机verilog代码vivado软件 软件:VIVADO 语言:Verilog 代码功能: 设计一个自动饮料机逻辑电路, 它的投币口只能投入一枚五角或一元硬币; 投入一元五角硬币后机器自动给出一杯饮料,投入两元硬币后再给出饮料的同时找回一枚五角硬币;

    2024年01月18日
    浏览(50)
  • 数码管移位循环显示数字verilog代码ego1开发板

    名称:数码管移位循环显示数字verilog代码ego1开发板 软件:VIVADO 语言:Verilog 代码功能: 采用EGO1中的两组数码管,让该8个数码管循环显示:01234567,12345678,23456789.... 电路的输入信号en进行启动或暂停;用按键控制循环,按一下显示下一组数。 FPGA代码Verilog/VHDL代码资源下载

    2024年02月03日
    浏览(39)
  • vivado交通灯设计verilog代码ego1板红绿灯时间可修改

    名称:vivado交通灯设计verilog代码ego1板红绿灯时间可修改 软件:VIVADO 语言:Verilog 代码功能: 十字路口红绿灯设计; 1、每次通行时间可在0-99秒内设定,可以通过按键修改通行时间。 2、路口四边均设红黄绿三色信号灯和用于计时的两位数码管显示时间(十进制数)。 3、黄灯亮

    2024年02月04日
    浏览(41)
  • VIVADO三层电梯控制器VHDL代码ego1开发板

    名称:VIVADO三层电梯控制器VHDL代码ego1开发板 软件:VIVADO 语言:VHDL 代码功能: 3层电梯控制 (1)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下

    2024年02月04日
    浏览(46)
  • 使用ego1的xadc采集心电模块的输出并用vga显示

    最近刚做完学校的实验,记录一下自己的实验过程,也可以给需要的朋友一个参考,不对之处欢迎指正。 XADC:fpga内部IP核 XADC可以将0-1V的模拟电压信号转化为12位的数字电压信号,存储在DO[15:0]口的高12位上,转化速率为1MSPS的ADC(模数转换器)。 XADC中文全称应该是“Xilinx模

    2024年02月06日
    浏览(46)
  • 基于ego1开发板的万年历自动数字日历设计verilog代码

    名称:基于ego1开发板的万年历自动数字日历设计verilog代码 软件:VIVADO 语言:Verilog 代码功能: 自动数字日历设计  设计自动数字日历,用七段数字显示器显示年(后2位)、月、日和星期数,在计日脉冲的作用下,自动完成1-12月的月、日及星期的计数和显示。 FPGA代码Verilog/VHDL代码

    2024年02月03日
    浏览(42)
  • 弹球游戏Verilog代码Quartus仿真

    名称:弹球游戏Verilog代码Quartus仿真(文末获取) 软件:Quartus 语言:Verilog 代码功能: 设计要求 查阅FPGA、VGA接口标准等相关资料文献。 2.编写HDL代码实现νGA显示模块和按键输入模块,并下载到开发板进行测试。 3.图像分辨率不低于1024*768,目标移动方块50*50,移动弹板为20*100。

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包