抢答器设计Verilog代码VIVADO仿真
名称:抢答器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
抢答器设计要求:
三人参赛每人一个按钮,主持人一个按钮,按下就开始
每人一个发光二极管,抢中者灯亮
有人抢答时,显示器显示其序号两秒
答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,10、9、8…1、0
倒计时到0的时候,然后显示四个0两秒
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 程序仿真
整体仿真


分频模块仿真

抢答器控制模块仿真




数码管显示模块仿真


部分代码展示:
//抢答器控制模块 module responder_ctrl ( input clk,//100Hz input clk_1Hz,//1Hz使能信号 input reset,//高电平有效 input key_main_in,//主控,按键输入 input key_1_pos,//抢答按键输入1 input key_2_pos,//抢答按键输入2 input key_3_pos,//抢答按键输入3 output reg LED_1,//LED抢答指示灯 output reg LED_2,//LED抢答指示灯 output reg LED_3,//LED抢答指示灯 output [2:0] state_O,//当前状态 output reg [3:0] responder_num,//抢答指示1~3 output [3:0] downcnt_O//输出倒计时 ); parameter s_idle=3'd0;//空闲状态 parameter s_start=3'd1;//开始 parameter s_qiangda=3'd2;//抢答状态 parameter s_downcnt=3'd3;//倒计时10~0 parameter s_zero=3'd4;//显示4个0,2秒 parameter s_end=3'd5;//抢答结束,计分状态 reg [2:0] state=3'd0; assign state_O=state;//当前状态 reg [3:0] downcnt=4'd10; reg [3:0] zerocnt=4'd0; assign downcnt_O=downcnt;//输出倒计时 //倒计时控制 always@(posedge clk) if(reset) downcnt<=4'd10; else if(state==s_downcnt && clk_1Hz)//倒计时10~0 downcnt<=downcnt-4'd1;//倒计时 else if(state==s_zero) downcnt<=4'd10; //显示2秒0计时 always@(posedge clk) if(reset) zerocnt<=4'd0; else if(state==s_zero && clk_1Hz)//显示2秒0计时 zerocnt<=zerocnt+4'd1;// else if(state==s_end) zerocnt<=4'd0; always@(posedge clk) if(reset) state<=s_idle;//空闲状态 else case(state) s_idle: if(key_main_in)//主控,按键输入 state<=s_start;//开始状态 else state<=s_idle;//空闲状态 s_start: state<=s_qiangda;//抢答状态 s_qiangda://抢答状态 if(key_1_pos | key_2_pos | key_3_pos ) state<=s_downcnt;//倒计时10~0 else state<=s_qiangda;//抢答状态 s_downcnt://倒计时10~0 if(downcnt==0 && clk_1Hz) state<=s_zero; else state<=s_downcnt; s_zero://显示0,2秒 if(zerocnt==2) state<=s_end; else state<=s_zero; s_end: if(key_main_in)//主控,按键输入 state<=s_start;//开始状态 else state<=s_end;//结束 default:state<=s_idle;//空闲状态 endcase //输出抢答者编号responder_num always@(posedge clk) if(reset)begin responder_num<=4'd0; LED_1<=0; LED_2<=0; LED_3<=0; end else if(state==s_qiangda) if(key_1_pos)begin responder_num<=4'd1;//1号抢答 LED_1<=1; end else if(key_2_pos)begin responder_num<=4'd2;//2号抢答 LED_2<=1; end else if(key_3_pos)begin responder_num<=4'd3;//3号抢答 LED_3<=1; end else ; else if(state==s_start || state==s_zero)begin responder_num<=4'd0; LED_1<=0; LED_2<=0; LED_3<=0; end else ; endmodule
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 抢答器设计Verilog代码VIVADO仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 抢答器设计Verilog代码VIVADO仿真