抢答器设计Verilog代码VIVADO仿真

名称:抢答器设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

抢答器设计要求:

三人参赛每人一个按钮,主持人一个按钮,按下就开始  

每人一个发光二极管,抢中者灯亮

有人抢答时,显示器显示其序号两秒    

答题时限为10秒钟,从有人抢答开始,用数码管倒计时间,10、9、8…1、0

倒计时到0的时候,然后显示四个0两秒


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

抢答器设计.doc

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仿真

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

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