软件:Quartus
语言:Verilog
代码功能:8人抢答电路设计
内容及要求
完成8人抢答电路设计。
(1)按键用作抢答输入,顺序编号1~8;
(2)数码管显示抢答得胜的号码;
(3)由控制信号决定新一轮抢答的开始;
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 功能描述
8人抢答电路设计
内容及要求
完成8人抢答电路设计。
(1)按键用作抢答输入,顺序编号1~8;
(2)数码管显示抢答得胜的号码;
(3)由控制信号决定新一轮抢答的开始;
2. 工程文件
3. 程序文件
4. 程序编译
5. RTL图
6. 程序仿真
整体仿真图
抢答控制模块
显示模块
部分代码展示:
//抢答器控制模块 module?responder_ctrl ( input?clk,//100Hz时钟 input?reset,//高电平有效 input?key_main_in,//主控,控制开始 input?key_1_pos,//抢答按键输入1 input?key_2_pos,//抢答按键输入2 input?key_3_pos,//抢答按键输入3 input?key_4_pos,//抢答按键输入4 input?key_5_pos,//抢答按键输入5 input?key_6_pos,//抢答按键输入6 input?key_7_pos,//抢答按键输入7 input?key_8_pos,//抢答按键输入8 output?reg?[3:0]?responder_num//抢答指示1~8 ); parameter?s_idle=3'd0;//空闲状态 parameter?s_start=3'd1;//开始 parameter?s_qiangda=3'd2;//抢答状态 parameter?s_end=3'd3;//抢答结束 reg?[2:0]?state=3'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?|?key_4_pos?|?key_5_pos?|?key_6_pos?|?key_7_pos?|?key_8_pos) 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 //输出抢答者编号responder_num always@(posedge?clk) if(reset) responder_num<=4'd0; else if(state==s_qiangda) if(key_1_pos) responder_num<=4'd1;//1号抢答 else?if(key_2_pos) responder_num<=4'd2;//2号抢答 else?if(key_3_pos) responder_num<=4'd3;//3号抢答 else?if(key_4_pos)
阅读全文
2281