四人抢答器 Verilog Quartus

名称:四人抢答器 Verilog Quartus

软件:Quartus

语言:Verilog

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

功能介绍

本项目实现一套基于 Verilog 的四人抢答器,适用于 Cyclone IV FPGA 开发板。系统提供复位、抢答开始、加分、减分以及四组选手抢答按键,能够在统一时钟下完成抢答流程控制,并使用四路 LED 指示对应选手的抢答状态。 工程集成倒计时、超时提示和蜂鸣器提示功能。抢答过程中,数码管显示各组选手分数以及倒计时数值;主持人可通过加分键和减分键调整成绩,倒计时结束后由超时指示灯提示。按键消抖模块用于改善机械按键抖动带来的误触发,使控制输入更适合实际开发板操作。 源码包含顶层连接、控制逻辑、显示逻辑和按键消抖模块,并配有 Quartus 工程文件、管脚约束和仿真工程,适合学习 FPGA 状态控制、按键处理、计分器设计及多位数码管数据组织。

运行环境

开发语言:Verilog;开发软件:Quartus;目标硬件:Cyclone IV FPGA 开发板;顶层模块:qiangdaqi。顶层输入包含 20MHz 时钟、复位键、开始键、加分键、减分键和四组选手按键,输出包括四路抢答指示灯、蜂鸣器、超时指示灯以及 HEX0 至 HEX7 数码管数据。工程提供 .qpf、.qsf 和管脚约束文件,可在 Quartus 中打开、编译和配置。

设计思路

设计采用顶层 qiangdaqi 统一连接按键输入、抢答控制和数码管输出。系统以时钟驱动控制状态和倒计时,复位后等待开始操作;开始后由四组选手按键参与抢答,并通过 led_1 至 led_4 指示当前响应的选手。控制模块同时输出当前状态、倒计时、四路分数、蜂鸣器信号和超时指示信号。 按键输入经过 key_jitter 模块处理,加分和减分操作分别通过独立的消抖实例形成稳定控制信号,再送入 control 模块更新分数。display 模块根据状态、倒计时和四路分数生成 HEX0 至 HEX7 的显示数据,其中 HEX0 至 HEX5 用于分数显示,HEX6 和 HEX7 用于倒计时十位与个位。这样的模块划分便于单独调试按键、抢答逻辑和显示逻辑,也方便在 Quartus 工程中进行层次化维护。

模块结构

顶层模块 qiangdaqi 负责系统端口定义和子模块连接,内部产生 score_1 至 score_4、down_time、cur_state、add_score 和 sub_score 等信号。control 模块集中实现抢答状态、倒计时、分数管理、LED 指示、蜂鸣器及超时输出;display 模块根据控制结果驱动八组数码管数据;key_jitter 模块分别对加分键和减分键进行消抖处理。工程同时包含 qiangdaqi、control、display、key_jitter 以及仿真测试模块 qiangdaqi_vlg_tst,层次关系清晰,便于定位和扩展。

开发板验证

工程提供 Cyclone IV FPGA 开发板的管脚分配与约束文件,可用于将时钟、复位、抢答按键、指示灯、蜂鸣器及数码管信号映射到实际开发板。顶层模块 qiangdaqi 已完成工程配置和输出文件生成,便于在 Quartus 中直接编译并下载验证。上板后可通过开始键启动抢答流程,观察各选手指示灯、超时灯、蜂鸣器以及数码管上的分数和倒计时显示。

演示视频

配套演示视频展示抢答器工程的运行过程,可结合开始键、四组选手按键、加减分按键观察抢答指示、蜂鸣器提示、超时指示和数码管数据显示,便于下载后对照检查实际运行效果。

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

配套设计文档涵盖工程文件、程序文件、编译流程、RTL 结构、管脚分配、仿真图、Testbench、整体仿真以及按键消抖、控制、显示模块说明,并包含对应的设计文档图片,方便结合源码理解各模块的时序关系和信号连接。

四人抢答器 Verilog Quartus 设计文档图片 image1.png

四人抢答器 Verilog Quartus 设计文档图片 image10.png

四人抢答器 Verilog Quartus 设计文档图片 image11.png

四人抢答器 Verilog Quartus 设计文档图片 image12.png

四人抢答器 Verilog Quartus 设计文档图片 image13.png

四人抢答器 Verilog Quartus 设计文档图片 image2.png

四人抢答器 Verilog Quartus 设计文档图片 image3.png

四人抢答器 Verilog Quartus 设计文档图片 image4.png

四人抢答器 Verilog Quartus 设计文档图片 image5.png

四人抢答器 Verilog Quartus 设计文档图片 image6.png

四人抢答器 Verilog Quartus 设计文档图片 image7.png

四人抢答器 Verilog Quartus 设计文档图片 image8.png

四人抢答器 Verilog Quartus 设计文档图片 image9.png

部分代码

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

module qiangdaqi(
input clk,//20M
input reset_p,//复位--key1
input start_key,//抢答开始--key2
input add_score_key,//加分键--key3
input sub_score_key,//减分键--key4

input player_1_key,//抢答按键--key5
input player_2_key,//抢答按键--key6
input player_3_key,//抢答按键--key7
input player_4_key,//抢答按键--key8

output led_1,//抢答指示灯
output led_2,//抢答指示灯
output led_3,//抢答指示灯
output led_4,//抢答指示灯

output spaker,//蜂鸣器--单线一段连接“J7”的 DBT0 端,另一端连接“J16”的蜂鸣器输入端

output led_out,//超时指示灯

output [3:0] HEX0,//数码管显示分数
output [3:0] HEX1,//数码管显示分数
output [3:0] HEX2,//数码管显示分数
output [3:0] HEX3,//数码管显示分数
output [3:0] HEX4,//数码管显示分数
output [3:0] HEX5,//数码管显示分数
output [3:0] HEX6,//数码管显示倒计时十位
output [3:0] HEX7 //数码管显示倒计时个位
);

wire [7:0] score_1;
wire [7:0] score_2;
wire [7:0] score_3;
wire [7:0] score_4;
wire [7:0] down_time;

wire [2:0] cur_state;//当前状态

wire add_score;
wire sub_score;

//按键消抖
key_jitter i0_key_jitter(
. clkin (clk),     
. key_in(add_score_key),//输入
. key_debounce(add_score)//消抖后按键
);

//按键消抖
key_jitter i1_key_jitter(
. clkin (clk),     
. key_in(sub_score_key),//输入
. key_debounce(sub_score)//消抖后按键
);


//控制模块
control i_control(
. clk(clk),//50M
. reset_n(~reset_p),//复位
. start_key(start_key),//抢答开始
. add_score_key(add_score),//加分键
. sub_score_key(sub_score),//减分键

. player_1_key(player_1_key),//抢答按键
. player_2_key(player_2_key),//抢答按键
. player_3_key(player_3_key),//抢答按键
. player_4_key(player_4_key),//抢答按键
. spaker(spaker),//蜂鸣器

. led_1(led_1),//抢答指示灯
. led_2(led_2),//抢答指示灯
. led_3(led_3),//抢答指示灯
. led_4(led_4),//抢答指示灯
. cur_state (cur_state),//当前状态
. down_time(down_time),//倒计时
. led_out(led_out),//超时指示灯

. score_1(score_1),
. score_2(score_2),
. score_3(score_3),
. score_4(score_4)
);

//显示模块
display i_display
(
. clk(clk),
. cur_state (cur_state),//当前状态
. down_time(down_time),
. score_1(score_1),
. score_2(score_2),
. score_3(score_3),
. score_4(score_4),

. HEX0(HEX0),//数码管段选
. HEX1(HEX1),//数码管段选
. HEX2(HEX2),//数码管段选
. HEX3(HEX3), //数码管段选
. HEX4(HEX4),//数码管段选
. HEX5(HEX5), //数码管段选
. HEX6(HEX6),//数码管段选
. HEX7(HEX7)  //数码管段选
);


endmodule

代码文件(付费下载)

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

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

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