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

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

软件:VIVADO

语言:Verilog

代码功能:

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

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

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

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

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

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

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

ego1开发板.png

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

工程文件:

a5a30f55-22d5-4bab-aec1-fcf2b815f573.png

程序文件:

2ecd7784-a504-41b7-8a81-b993afec9bdb.png

程序编译:

70716d08-3fb8-410c-994b-8af42690eebf.png

RTL图:

7beae0dc-66cd-48af-ac5a-c7035d845461.png

管脚分配:

a7f362ac-f6f1-48c5-b986-d32a4139b53f.png

部分代码展示:

`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

  • 24
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用、引用[2]和引用中提到了ego1开发板vivado以及Verilog代码。这些是用于实现数电大作业中的各种功能和设计的工具和语言。ego1开发板是一款硬件开发板vivado是一款用于FPGA设计和开发的集成开发环境,而Verilog是一种硬件描述语言,常用于FPGA设计。根据引用和引用的描述,这些大作业使用ego1开发板vivado软件来设计多功能的售货机和蓝牙密码锁。具体的设计内容和功能可以参考引用、引用和引用中提供的链接和说明。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数电满分大作业,数电满分大作业。数字电路——FPGA自动售货机 EGO1开发板 Vivado工程 Verilog代码.rar](https://download.csdn.net/download/yytju123/61110039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [数字逻辑设计大作业-乒乓球游戏模拟器](https://blog.csdn.net/weixin_50952205/article/details/121720196)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [FPGA-基于EGO1开发板的蓝牙密码锁 无线控制 开锁 修改密码 防盗保护](https://blog.csdn.net/sirlhh/article/details/125598103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值