四人抢答器 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、整体仿真以及按键消抖、控制、显示模块说明,并包含对应的设计文档图片,方便结合源码理解各模块的时序关系和信号连接。












部分代码
以下展示顶层模块 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
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 四人抢答器 Verilog Quartus