软件: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)
阅读全文