篮球计分器 FPGA 设计 Verilog Quartus

名称:篮球计分器 FPGA 设计 Verilog Quartus

软件:Quartus

语言:Verilog

开发板/平台:Cyclone IV FPGA开发板

功能介绍

这是一个基于 Verilog 的双队篮球计分器,支持记录 A 队和 B 队比分,并通过数码管显示当前分数。队伍由 `switch` 输入选择:逻辑 1 选择 A 队,逻辑 0 选择 B 队;三个加分输入分别用于执行一分、两分和三分操作,适合课堂数字系统设计、FPGA 外设控制及计分逻辑演示。 顶层设计为每个加分按键配置独立的消抖模块,再将处理后的按键边沿送入比分控制模块,降低机械按键抖动对加分操作的影响。两队比分分别以 10 位信号连接至显示模块,由其产生六位数码管的位选和段选输出。 工程还包含 LED 指示模块,可结合球队选择和加分按键驱动 LED 输出。项目按功能划分为顶层连接、按键消抖、比分控制、LED 闪烁和数码管显示,便于阅读模块接口并继续扩展计分或显示逻辑。

运行环境

设计语言:Verilog;开发软件:Quartus;目标平台:Cyclone IV FPGA 开发板。

设计思路

篮球计分器以球队选择和加分按键为输入,分别维护 A 队、B 队的分数,并通过数码管输出两队比分。`switch` 用于选择加分队伍,`add_1`、`add_2`、`add_3` 对应一分、两分和三分操作;顶层为三个加分按键分别接入消抖模块,将按键变化整理为分数控制模块使用的边沿信号。 设计按功能拆分为按键消抖、比分控制、LED 指示和数码管显示。比分控制模块接收队伍选择及三种加分信号,输出两队分数;LED 模块根据队伍选择和加分按键驱动指示灯;显示模块将比分转换为数码管位选和段选信号。顶层 `basketball_score` 负责连接这些模块,并统一提供时钟、复位及外部输入输出接口。

模块结构

- `basketball_score`:顶层模块,连接时钟、复位、队伍选择、加分按键、LED 和数码管接口。 - `key_jitter`:按键消抖,为三个加分按键分别生成边沿信号。 - `score`:根据队伍选择及一分、两分、三分控制信号更新 A、B 两队比分。 - `led_flash`:结合队伍选择和加分输入控制 LED0、LED1。 - `display`:接收两队比分,输出六位数码管位选与段选信号。

开发板验证

工程包含 Cyclone IV FPGA 开发板的管脚分配配置,可用于对应开发板的管脚连接与验证。

演示视频

演示视频展示篮球计分器的运行效果。

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

设计文档涉及工程文件、程序编译、RTL 图、管脚分配及 Testbench 仿真,包含整体仿真和按键、分数控制、LED 闪烁、数码管显示等模块说明。

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image1.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image10.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image11.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image12.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image13.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image14.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image2.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image3.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image4.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image5.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image6.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image7.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image8.png

篮球计分器 FPGA 设计 Verilog Quartus 设计文档图片 image9.png

部分代码

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

module basketball_score(
input clk,//时钟
input reset_n,//复位
input switch,//开关控制给A队加分或B队加分,1给A,0给B
input add_1,//控制加一分
input add_2,//控制加两分
input add_3,//控制加三分
output LED0,//LED 指示灯为逻辑高电平时,LED 指示灯点亮
output LED1, //LED 指示灯为逻辑高电平时,LED 指示灯点亮
output [5:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选	
);
wire  [9:0] score_A_o;//A队分数
wire  [9:0] score_B_o;//B队分数

wire add_1_rise;//控制加一分
wire add_2_rise;//控制加两分
wire add_3_rise;//控制加三分
//按键消抖
key_jitter i0_key_jitter(
     . clkin(clk),    
     . key_in(add_1),//输入
	 . key_negedge(add_1_rise)//消抖后按键下降沿
);
//按键消抖
key_jitter i1_key_jitter(
     . clkin(clk),    
     . key_in(add_2),//输入
	 . key_negedge(add_2_rise)//消抖后按键下降沿
);
//按键消抖
key_jitter i2_key_jitter(
     . clkin(clk),    
     . key_in(add_3),//输入
	 . key_negedge(add_3_rise)//消抖后按键下降沿
);

//分数控制
score i_score(
. clk(clk),//时钟
. reset(reset_n),//复位
. switch(switch),//开关控制给A队加分或B队加分,1给A,0给B
. add_1_rise(add_1_rise),//控制加一分
. add_2_rise(add_2_rise),//控制加两分
. add_3_rise(add_3_rise),//控制加三分
. score_A_o(score_A_o),//A队分数
. score_B_o(score_B_o)//B队分数
);

//led控制
led_flash i_led_flash(
. clk(clk),//时钟
. reset(reset_n),//复位
. switch(switch),//开关控制给A队加分或B队加分,1给A,0给B
. add_1(add_1),//控制加一分
. add_2(add_2),//控制加两分
. add_3(add_3),//控制加三分
. LED0(LED0),//LED 指示灯为逻辑高电平时,LED 指示灯点亮
. LED1(LED1) //LED 指示灯为逻辑高电平时,LED 指示灯点亮
);

//显示模块
display i_display(
. clk(clk),
. rst_n(reset_n),//复位
. score_A(score_A_o),//A分
. score_B(score_B_o),//B分
. bit_select(bit_select),//数码管位选
. seg_select(seg_select)//数码管段选	
);

		
endmodule

代码文件(付费下载)

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

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

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