名称:4路限时抢答器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
基本功能
1.该抢答器具有主持人主控开始和复位功能。当主持人控制的“允许″按钮有效时,选手抢答能进行抢答,否则无法抢答;当主持人控制的“复位”按钮有效时,抢答选手编号和抢答时间回到原始值。
2.该抢答器具有4路抢答选手顺序判决和锁存功能。主持人允许抢答开始后,抢答器对选手的抢答优先顺序进行判决,当有选手抢答有效时,抢答器锁存该选手的编号并显示,其余选手此后无法抢答,直至主持人复位并允许下一轮抢答。
3.该抢答器具有抢答限时功能。主持人允许抢答开始后,抢答选手需在5秒内完成抢答,由倒计时器计时抢答时间。在设定的抢答时间内当有选手抢答器,抢答器倒计时停止并显示抢答时的时间,直至主持人复位并允许下一轮抢答;在设定的抢答时间内当没有选手抢答时,抢答器倒计时至0时停止计时,此后所有选手无法抢答,直至主持人复位并允许下一轮抢答。
4.使用两位数码管分别显示选手编号和倒计时值,复位后选手编号显示数字0,倒计时器显示数字。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1、工程文件
2、程序文件
3、程序编译
4、RTL图
5、Testbench
6、仿真图
整体仿真图
分频模块
控制模块
显示模块
部分代码展示:
//抢答器控制模坿 module?responder_ctrl ( input?clk,//时钟 input?reset,//低电平有敿 input?clk_1Hz,//1hz input?key_main_in,//主持人主掿 input?key_1_pos,//抢答按键输入1 input?key_2_pos,//抢答按键输入2 input?key_3_pos,//抢答按键输入3 input?key_4_pos,//抢答按键输入4 output?[2:0]?cur_state,//当前状态 output?[7:0]?time_down,//倒计 output?reg?[3:0]?responder_num//抢答指示1~6 ); parameter?s_idle=3'd0;//空闲状 parameter?s_start=3'd1;// parameter?s_timedowm=3'd2;//倒计 parameter?s_qiangda=3'd3;//抢答 parameter?s_end=3'd4;//抢答结束 reg?[2:0]?state=3'd0; reg?time_over=0;//倒计时结束指示 assign??cur_state=state; always@(posedge?clk?or?negedge?reset) 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_timedowm;//倒计时 s_timedowm: state<=s_qiangda;//倒计时 s_qiangda: if(key_1_pos?|?key_2_pos?|?key_3_pos?|?key_4_pos) state<=s_end;//结束 else?if(time_over==1)//倒计时 ????state<=s_end;//倒计时结束 else state<=s_qiangda;//抢答 s_end: if(key_main_in)//主控 state<=s_start;// else state<=s_end;//结束 default:state<=s_idle;//空闲 endcase //always@(posedge?clk?or?negedge?reset) //if(~reset) //beep<=0;//复位 //else?if(state==s_beep) //beep<=1;//输出报警信号 //else //beep<=0; reg?[7:0]?down_cnt=8'd5;//倒计时计敿 always@(posedge?clk) if(state==s_timedowm?||?state==s_qiangda)begin if(down_cnt==8'd0)begin down_cnt<=8'd0; time_over<=1;//倒计时 end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1098