乒乓球游戏 FPGA 设计 VHDL Quartus

名称:乒乓球游戏 FPGA 设计 VHDL Quartus

软件:Quartus

语言:VHDL

功能介绍

本设计实现一个基于FPGA的两人乒乓球游戏系统,采用VHDL硬件描述语言开发,整体功能围绕发球、击球、球体移动、失分判定、计分显示和胜利判定展开。系统用8位LED模拟乒乓球在球台上的位置变化,玩家A、玩家B通过各自按键完成击球操作,提前击球或球出界未击中都会触发相应失分逻辑。 系统支持8档速度调节,球体移动步长时间覆盖0.1s到0.5s,可通过3位速度选择开关改变游戏节奏。比赛规则采用11分制,A、B双方分别设置计分显示,任意一方先达到11分后给出胜利指示,便于直观看到当前局的胜负结果。 显示部分由LED球位显示、四位七段数码管分数显示和胜利指示灯组成。HEX0、HEX1显示A方个位和十位分数,HEX2、HEX3显示B方个位和十位分数,A_win_LED与B_win_LED用于输出对应玩家胜利状态,适合FPGA课程设计、状态机实验、数字系统综合设计等场景参考。

运行环境

开发语言:VHDL 开发软件:Quartus 仿真测试:包含Testbench仿真文件,可用于验证分频、游戏控制、计分显示和顶层联调功能。 目标器件参考:Cyclone III EP3C25F324C8。

设计思路

系统采用模块化设计,将完整的乒乓球游戏拆分为时钟分频、游戏控制、数码管显示和顶层集成几个部分。顶层模块负责连接外部时钟、复位、按键、速度开关、LED、数码管和胜利指示信号;游戏控制模块负责核心规则;分频模块负责产生球体移动节拍;显示模块负责把分数转换为七段数码管段码。 游戏逻辑采用有限状态机实现,状态包括空闲、A方发球、B方发球、向B方移动、向A方移动、A方得分、B方得分等。球的位置使用8位寄存器表示,通过移位方式模拟球在球台上的移动方向。系统根据当前球位、移动方向和玩家按键时机判断击球是否有效,从而完成方向反转、得分或进入下一轮发球。 速度控制由分频模块完成,输入100Hz系统时钟后,根据3位speed_sw选择不同分频系数。速度档位000到111分别对应不同移动节拍,最快约0.1s移动一位,最慢约0.5s移动一位。这样的设计既能体现硬件分频逻辑,也能让游戏难度具备可调节性。 计分部分采用BCD形式组织A、B双方分数,并通过数码管显示模块输出到HEX0到HEX3。分数递增时处理个位进位与十位显示,到达11分后触发对应胜利指示并锁定当前局结果,复位后可重新开始新一局。

模块结构

顶层模块:pingpang_game,负责系统外部接口和各子模块连接。 分频模块:div_clk,将100Hz系统时钟转换为游戏移动节拍,并支持8档速度选择。 游戏控制模块:game,实现状态机控制、球位移位、击球判断、出界判定、分数计算和胜利判定。 分数显示模块:score_display,负责A、B双方分数的数码管显示组织。 七段译码模块:LED7S,将BCD数字转换为七段数码管段码。 测试模块:tb_pingpang_game,用于对顶层及关键游戏流程进行仿真验证。

开发板验证

工程包含Quartus管脚约束/分配文件,可用于FPGA开发板按键、拨码开关、LED、数码管和胜利指示灯等外设连接验证。设计文档中给出了Cyclone III EP3C25F324C8器件实现参考,综合资源占用约172个逻辑单元、75个寄存器、45个引脚,资源占用较低,适合在同类FPGA实验平台上进行移植和验证。

演示视频

包含演示视频,可用于查看乒乓球游戏运行效果、LED球位移动、双方按键击球、数码管计分以及胜利指示等功能表现。

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

设计文档包含工程文件、程序文件、程序编译、RTL图、Testbench仿真图、顶层模块仿真图、分频模块仿真图、控制模块仿真图和显示模块仿真图等内容。 仿真说明覆盖分频模块速度切换、游戏状态机转换、球位移位方向、合法击球、提前击球、出界判定、0到11分计分递增、BCD进位和数码管段码输出等关键功能。顶层仿真展示了分频模块、游戏控制模块和显示模块之间的信号传递关系,可用于理解完整系统的数据流和控制流程。

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image1.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image10.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image11.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image2.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image3.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image4.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image5.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image6.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image7.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image8.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image9.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image1.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image10.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image11.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image12.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image13.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image2.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image3.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image4.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image5.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image6.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image7.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image8.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image9.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image1.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image10.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image11.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image2.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image3.png

乒乓球游戏 FPGA 设计 VHDL Quartus 设计文档图片 image4.png

部分代码

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

ENTITY pingpang_game IS
   PORT (
      clk          : IN STD_LOGIC;                     -- 输入:100Hz系统时钟(周期10ms)
      rst_n        : IN STD_LOGIC;                     -- 输入:低有效复位信号('0'复位)
      play_A       : IN STD_LOGIC;                     -- 输入:A玩家击球按键(低有效)
      play_B       : IN STD_LOGIC;                     -- 输入:B玩家击球按键(低有效)
      speed_sw     : IN STD_LOGIC_VECTOR(2 DOWNTO 0);  -- 输入:3位速度选择拨码开关
      led          : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- 输出:8位台面LED显示(低有效)
      HEX0         : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -- 输出:A玩家分数个位数码管段码
      HEX1         : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -- 输出:A玩家分数十位数码管段码
      HEX2         : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -- 输出:B玩家分数个位数码管段码
      HEX3         : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -- 输出:B玩家分数十位数码管段码
      A_win_LED    : OUT STD_LOGIC;                    -- 输出:A玩家胜利指示灯(高有效)
      B_win_LED    : OUT STD_LOGIC                     -- 输出:B玩家胜利指示灯(高有效)
   );
END pingpang_game;

代码文件(付费下载)

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

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

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