verilog--4路抢答器设计-带30s倒计时
数字四路抢答器设计方案
数字四路抢答器设计方案介绍数字四路抢答器是一种常用于教育培训、比赛答题等场合的设备,其作用是指示哪个参赛者按下按钮抢答、以及谁率先抢答成功。
本文档将介绍数字四路抢答器的设计方案。
设计背景基于教育和比赛的需要,越来越多的场合需要使用抢答器来提高效率和公正性。
而数字化的抢答器相比于传统的机械式抢答器具有更高的精度和易用性,因此在市场上越来越受欢迎。
数字四路抢答器是一种常见的数字化抢答器,其能够为教师、裁判提供一种简单、准确、实用的抢答解决方案。
设计思路数字四路抢答器主要由以下部分组成:按钮、指示器、控制器。
具体的设计思路如下:按钮数字四路抢答器需要配备四个按钮,分别对应四个参赛者。
当任意一个参赛者按下按钮后,系统会进行响应,并指示哪个参赛者按下了按钮。
指示器数字四路抢答器需要配备一个指示器,用于指示哪个参赛者率先抢答成功。
指示器可以是LED灯、端口提示音等。
控制器数字四路抢答器需要配备一个控制器,用于控制按钮、指示器等功能的运行。
控制器可以使用单片机、传感器等元件来实现。
通过单片机的编程,可以实现响应按键事件、控制指示灯等功能。
设计要点设计数字四路抢答器的过程中,需注意以下关键点:稳定性抢答系统的稳定性是其最基本的设计要求之一。
在使用过程中,系统必须极具稳定性、可靠性,确保不会出现不必要的故障和错误。
在设计过程中,需要对抢答系统进行充分测试和优化,以保证其高效运行。
实用性数字四路抢答器的实用性是设计的另一项重要目标。
系统需要具备直观、简单、易操作等特点,确保教师、裁判能够方便地使用抢答器。
此外,系统还需要具有较高的适应性,可以扩展适应不同场合。
硬件选型在设计数字四路抢答器时,硬件选型将起到决定性作用。
对于不同的应用场合,不同的硬件选型将产生不同的效果。
因此,在进行硬件选型时,需要充分考虑到项目的实际需求和预算等因素。
设计实现数字四路抢答器的设计实现可以采用以下步骤:1.选用合适的硬件元件,如单片机、开发板、LED灯、按键、电源等。
毕业设计——四路智力竞赛智能抢答器【范本模板】
摘要和关键词本文主要围绕四路选手抢答电路的设计和制作而展开叙述的,叙述了电路设计的过程。
该电路主要包括电源电路、抢答显示电路、倒计时电路和脉冲电路构成。
电源电路提供稳定的5V电源,抢答显示电路能够锁存抢先获得抢答权的选手编号,倒计时电路能够对选手答题时间进行控制,脉冲电路为电路提供秒脉冲信号。
关键词:抢答电路仿真电路板倒计时目录一.绪论..。
.。
.。
.。
.。
..。
.。
..。
.。
.。
..。
11.1 设计任务与要求.。
....。
..。
.。
.....。
..。
....。
.。
.。
..。
.。
..。
11.2 设计方案.。
..。
..。
....。
....。
.....。
.。
.。
.。
..。
.。
.。
..。
1二。
模块设计及仿真..。
.。
.。
.。
...。
.....。
..。
.。
.。
.。
22。
1 仿真软件介绍。
.。
.。
.。
....。
.。
..。
.。
...。
..。
....。
..。
.。
22.2 电源电路的设计和仿真...。
.。
...。
.。
.。
..。
.。
...。
...。
......。
.。
32.3 抢答显示电路。
...。
.。
..。
..。
...。
.。
..。
.。
.。
.。
...。
..........。
.。
42.4 定时电路.....。
..。
.。
..。
.。
.。
..。
.。
.。
...。
.。
....。
...。
...。
.。
52。
5 脉冲电路..。
..。
.。
..。
..。
.。
.。
.。
.。
...。
.。
.。
..。
..。
.。
.。
(5)三. 元件及封装选择。
..。
.。
.。
..。
...。
.。
.。
..。
.。
63.1 74LS279锁存器。
.。
.。
.。
...。
.。
.....。
....。
.。
..。
..。
..。
..。
.。
.。
63.2 优先编码器 74LS148。
.。
.。
.。
......。
..。
.。
.。
...。
......。
..。
.。
.7 3.3 555定时器。
..。
.。
..。
..。
..。
..。
......。
...。
..。
.......。
...。
..9 3.4 译码器及应用.。
EDA课程设计 VHDL四路智力抢答器
EDA课程设计 VHDL四路智力抢答器eda课程设计--vhdl四路智力抢答器vhdl四路智力抢答器eda课程设计一、任务与目的1.1熟练掌握eda工具软件quartus的使用1.2熟识采用vhdl硬件描述语言叙述数字电路1.3学会采用vhdl展开大规模集成电路设计1.4学习使用cpld/fpga实验系统硬件验证电路设计的正确性1.5初步掌握eda技术并具备一定的可编程逻辑芯片的开发能力二、设计题目与建议2.1设计题目四路智力竞赛抢答器2.2设计建议1.按所布置的题目要求,每一位学生独立完成全过程2.分模块层次化的设计;3.各功能模块的底层文件必须用vhdl语言设计,顶层文件可以用vhdl语言设计,也可以用原理图设计。
2.3设计内容设计一个可容纳四组参赛者同时抢答的数字抢答器。
主持人可控制系统发的清零和抢答的开始,控制电路可实现最快抢答选手按键抢答的判别和锁定功能,并禁止后续其他选手抢答。
抢答选手确定后给出选手编号的显示,抢答选手的编号显示保持到系统被清零为止,若提前抢答则对相应的抢答组发出警告。
*拓展内容:减少答题限时的功能,在确认了答对顺利有效率后,存有主持人按下答题限时功能键,开始9s的倒计时。
在计时结束后,超时提示led闪烁。
在主持人按下clear 开关时限时复位。
三、功能分析四路智力竞赛抢答器按功能设计分为三个模块1.答对锁存模块,在主持人收到答对指令后(start=’1’),若存有参赛者按下答对按钮,则显示器显示抢答组别,同时电路处于自锁状态,使其它组的抢答器不起作用。
主持人可以用清零按钮进行清零(clr=’0’).若抢答指令未发出(start=’0’),而有参赛者按下抢答按钮,则发出警告信号(alm=1).2.表明功能模块,在参赛者答对信号(界别)收到后,对参赛者信号展开译码,然后用7段数码管显示出来。
3.计时模块,在确认了答对顺利有效率后,存有主持人按下答题限时功能键,已经开始9s的好像计时。
基于FPGA平台的四位抢答器设计
现代电子系统设计综合题目——抢答器班级:电子信息工程(4)班姓名:尹燕宁学号:07090403日期:2011-12-14合作者:王启俊按照抢答器的设计要求,本设计主要实现以下基本功能:(1) 抢答器可以容纳四组参赛队进行抢答。
(2)系统复位后进入抢答状态,抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警。
(3)能显示抢答台号,且一组抢答后,则不接纳其他组抢答。
根据其设计要求,经过仔细试验和比较开始时所设想的两种方案,采用了以下方案以满足要求:倒计时模块应用动态显示方法显示两位变化的数字,倒计时过程中无人抢答则在计时结束后触发bell 信号发出报警声表示超时,有人抢答时则首先按下按钮的人通过一个stop信号屏蔽掉其他人的抢答信号,且不再计时。
在具体实现方案时,根据给定的电子综合设计实验箱的模块和已有元件的限制,对方案进行了如下调整和补充:首先是进行时钟信号分频,由给定的50MHz的时钟分成1Hz,以实现按秒倒计时;其次是倒计时显示的两位数字,由于只有一个静态显示数码管且被用于显示抢答台号,所以必须运用动态显示来进行两位数字的显示和控制;最后是复位后的初值设定,以使上一次抢答的结果不会影响下一次的抢答过程,增加电路的稳定性。
经过仿真以及实验,本设计能够圆满完成设计要求,且具有电路简洁、方案易懂、操作方便、抗干扰性强等特点,经过适当的轻微改造即可作为实际比赛时的四组抢答器,效果良好。
第一章方案的论证与设计第二章理论计算第三章电路图及相关设计文件第四章仿真与测试分析第五章设计总结第六章参考文献第七章附件(含完整电路图、VHDL设计文件)第一章方案的论证与设计为便于进行电路的方案设计和模块化设计,首先根据要求画出实现抢答器功能的系统框图如下所示:根据其设计要求,按照现有的知识水平和实验设备,提出了以下两种实现抢答器的方案:(一)倒计时部分采用静态显示,方便简单。
四人抢答部分根据抢答信号的高低来判断是否继续倒计时并且屏蔽掉其他后来的抢答信号。
verilog--4路抢答器设计-带30s倒计时
四路抢答器一、程序module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED);input clr,clk,input1,input2,input3,input4;output [7:0] seg; //7段数码管数据output [7:0] scan; //数码管位选output [3:0] LED; //输出LED灯指示output clockin; //蜂鸣器reg [7:0] seg;reg [7:0] scan;reg [3:0] LED;reg clockin;reg [3:0] data;reg input_flag,count_flag;reg [14:0] count1;reg [8:0] count2;reg [3:0] LED_N;//reg clock_flag;reg div1khz,div1hz;reg [2:0] cnt;reg [3:0] dat;//reg [7:0] data_count;reg [3:0] count_one,count_ten;initial count_one='d0; //初始化initial count_ten='d3;initial data=4'b0000;initial LED_N=4'b1111;//-------------fenping分频1khz-----------------------------------always @(posedge clk )beginif(count1=='d25000)begin div1khz<=~div1khz;count1<=0;endelsebegin count1<=count1+1'b1;endend//-------------fenping--1hz-------------------------------always @(posedge div1khz)beginif(count2=='d500)begin div1hz<=~div1hz;count2<=0;endelsebegin count2<=count2+1'b1;endend//----------------------------------------------------------always @(posedge div1hz or negedge clr)beginif(!clr)begincount_one<='d0;count_ten<='d3;count_flag<=1'b0;endelse if((!input_flag)&(!count_flag))begin if(count_one=='d0&&count_ten=='d0)begin count_flag<=1'b1;endelse if(count_one=='d0)begin count_one<=4'b1001;count_ten<=count_ten-1'b1;endelsebegin count_one<=count_one-1'b1;endendelsebegin count_one<=count_one;count_ten<=count_ten;endend//-----------------------------------------------------------always @(posedge clk ) //or input1 or input2 or input3 or input4 beginif(!clr)beginLED_N<=4'b1111;//clock_flag<=1'b0;input_flag<=1'b0;data<=4'b0000;endelse if((!input_flag)&(!count_flag))beginif(input1==0)begindata<=4'b0001;LED_N<=4'b0111;input_flag<=1'b1;endelse if(input2==0)begindata<=4'b0010;LED_N<=4'b1011;input_flag<=1'b1;endelse if(input3==0)begindata<=4'b0011;LED_N<=4'b1101;input_flag<=1'b1;endelse if(input4==0)begindata<=4'b0100;LED_N<=4'b1110;input_flag<=1'b1;endelsebegindata<=data;LED_N<=LED_N;input_flag<=input_flag;endendend//-------------led灯及蜂鸣器--------------------------------------------------- always @(posedge clk)beginLED<=LED_N;clockin<=div1khz&(input_flag|count_flag);//dat<=data;end//--------------shu ma guan sao miao数码管扫描--------------------------------- always @(posedge div1khz)beginif(cnt=='d3)begin cnt<=0;endelsebegin cnt<=cnt+1'b1;endend//-----------------------------------------------------always @(cnt,data,count_one,count_ten)begincase(cnt)//3'b000 : begin scan<=8'b01111111;end3'b001 : begin scan<=8'b10111111;dat<=data;end //选手编号3'b010 : begin scan<=8'b11011111;dat<=count_one;end //倒计时3'b011 : begin scan<=8'b11101111;dat<=count_ten;enddefault : begin scan<=8'bx;dat<=4'bx;endendcaseend//--------------------------------------------------------always @(dat)begincase(dat)4'b0000 : seg[7:0]<=8'b11000000;4'b0001 : seg[7:0]<=8'b11111001;4'b0010 : seg[7:0]<=8'b10100100;4'b0011 : seg[7:0]<=8'b10110000;4'b0100 : seg[7:0]<=8'b10011001;4'b0101 : seg[7:0]<=8'b10010010;4'b0110 : seg[7:0]<=8'b10000010;4'b0111 : seg[7:0]<=8'b11111000;4'b1000 : seg[7:0]<=8'b10000000;4'b1001 : seg[7:0]<=8'b10010000;4'b1010 : seg[7:0]<=8'b10001000;4'b1011 : seg[7:0]<=8'b10000011;4'b1100 : seg[7:0]<=8'b11000110;4'b1101 : seg[7:0]<=8'b10100001;4'b1110 : seg[7:0]<=8'b10000110;4'b1111 : seg[7:0]<=8'b10001110;default : seg[7:0]<=8'bx;endcaseendendmodule二、框图三、设计思路四路抢答,有30s倒计时,当有人抢答时,数码管显示对应选手编号,同时对应LED灯亮,蜂鸣器响起,此时其他选手抢答无效。
VHDL四路抢答器的设计
VHDL四路抢答器的设计设计要求:1.抢答器同时供N名选手,(此处假设4个)分别用4个按钮S0~ S3表示。
2.设置一个系统“开始复位”开关S,该开关由主持人控制(当主持人按下该开关后以前的状态复位并且开始计时抢答)。
3.抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
4. 抢答器具有定时抢答功能,且一次抢答的时间(0-99S)。
当主持人启动“开始复位”键后,定时器进行减计时。
5. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
一、概述抢答器的逻辑结构主要由抢答鉴别lock模块、定时模块、译码模块和报警器模块组成。
在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。
除此之外,整个抢答器还需有一个“复位开始”信号,以便抢答器能实现清零和开始。
抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。
•方案设计与论证嘿嘿!将该任务分成N个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、译码模块、报警模块,最后是综合。
1. 抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。
在这个模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统”公用的CLEAR端、4人抢答输入信号端S0,S1,S2,S3和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3是否有信号输入。
输出端有对应于S0,S1,S2,S3编号的4个指示灯LED 和4线2进制输出端STATES(用于锁存当前的状态),还有一个STOP 端用于指示S0,S1,S2,S3按钮状态(控制计时器停止)。
verilog 分频器,30s计数器及交通灯控制器设计
分频器module div(clk, div1,div2,div3);input clk;output div1;output div2;output div3;reg [31:0] counter1;reg [31:0] counter2;reg [31:0] counter3;reg div1;reg div2;reg div3;initial begindiv1=0;div2=0;div3=0;counter1=0;counter2=0;counter3=0;endalways @(posedge clk)begin/*if(counter1==2) counter1 <= 0;else counter1 <= counter1+1;if(counter2==3) counter2 <= 0;else counter2 <= counter2+1;if(counter3==4) counter3 <= 0;else counter3 <= counter3+1;*/ if(counter1==24999999) counter1 <= 0;else counter1 <= counter1+1;if(counter2==24999) counter2 <= 0;else counter2 <= counter2+1;if(counter3==12499999) counter3 <=0;else counter3 <= counter3+1;endalways @(posedge clk)begin/*if(counter1==2) div1 <= ~div1;if(counter2==3) div2 <= ~div2;if(counter3==4) div3 <= ~div3;*/if(counter1==24999999) div1 <= ~div1;if(counter2==24999) div2 <= ~div2;if(counter3==12499999) div3 <= ~div3;endendmodule30s计数器module count30(div1,number,direction );input div1;output [4:0] number;reg [4:0] number;reg direction;initialbegindirection=0;number=30;endalways@(posedge div1)beginif(number==0)begindirection<=~direction;number<=30;endelse number<=number-1;endendmodule控制器module moniter( div3,number,direction,eastred,eastyellow,eastgreen,northred,northyellow,northgreen );input div3;input direction;input [4:0]number;output eastred;output eastyellow;output eastgreen;output northred;output northyellow;output northgreen ;//wire [4:0] number;reg eastred;reg eastyellow;reg eastgreen;reg northred;reg northyellow;reg northgreen ;initial begineastred<=1;eastgreen<=0;northred<=1;northgreen<=0;northyellow<=eastyellow<=0;endalways @(posedge div3)beginif(number<=3)beginif (direction==0) eastyellow<=~eastyellow;else northyellow<=~northyellow;endelse begin eastyellow<=0;northyellow<=0;end endalways @(number )/*beginif(number==30&&direction==0)begin eastred<=1;eastgreen<=0;northred<=1;northgreen<=0;end*/if (number>2'b00010&&direction==0)begineastred<=0;eastgreen<=1;northred<=1;northgreen<=0;endelse if(number<3&&direction==0)begineastred<=0;eastgreen<=0;northred<=1;northgreen<=0;endelse if(number>2&&direction==1)begineastred<=1;eastgreen<=0;northred<=0;northgreen<=1;endelse if(number<3&&direction==1)begineastred<=1;eastgreen<=0;northred<=0;northgreen<=0;endendmodule译码器module yimaqi( clk,number,led1,led2);input clk;input [4:0] number;output [6:0] led1;output [6:0] led2;reg [6:0] led1;reg [6:0] led2;always @( number )begincase (number)5'b00000: begin led1 <= 7'b0000001; led2 <= 7'b0000001;end5'b00001: begin led1 <= 7'b0000001; led2 <= 7'b1001111;end5'b00010: begin led1 <= 7'b0000001; led2 <= 7'b0010010;end7'b0000110;end5'b00100: begin led1 <= 7'b0000001; led2 <= 7'b1001100;end5'b00101: begin led1 <= 7'b0000001; led2 <= 7'b0100100;end5'b00110: begin led1 <= 7'b0000001; led2 <= 7'b1100000;end5'b00111: begin led1 <= 7'b0000001; led2 <= 7'b0001111;end5'b01000: begin led1 <= 7'b0000001; led2 <= 7'b0000000;end5'b01001: begin led1 <= 7'b0000001; led2 <= 7'b0001100; end5'b01010: begin led1 <= 7'b1001111; led2 <= 7'b0000001;end5'b01011: begin led1 <= 7'b1001111; led2 <= 7'b1001111; end5'b01100: begin led1 <= 7'b1001111; led2 <= 7'b0010010;end5'b01101: begin led1 <= 7'b1001111; led2 <= 7'b0000110; end5'b01110: begin led1 <= 7'b1001111; led2 <= 7'b1001100;end5'b01111: begin led1 <= 7'b1001111; led2 <= 7'b0100100;end5'b10000: begin led1 <= 7'b1001111; led2 <= 7'b1100000;end5'b10001: begin led1 <= 7'b1001111; led2 <= 7'b0001111;end5'b10010: begin led1 <= 7'b1001111; led2 <= 7'b0000000;end5'b10011: begin led1 <= 7'b1001111; led2 <= 7'b0001100;end5'b10100: begin led1 <= 7'b0010010; led2 <= 7'b0000001;end5'b10101: begin led1 <= 7'b0010010; led2 <= 7'b1001111;end5'b10110: begin led1 <= 7'b0010010; led2 <= 7'b0010010;end5'b10111: begin led1 <= 7'b0010010; led2 <= 7'b0000110;end5'b11000: begin led1 <= 7'b0010010; led2 <= 7'b1001100;end7'b0100100;end5'b11010: begin led1 <= 7'b0010010; led2 <= 7'b1100000;end5'b11011: begin led1 <= 7'b0010010; led2 <= 7'b0001111;end5'b11100: begin led1 <= 7'b0010010; led2 <= 7'b0000000;end5'b11101: begin led1 <= 7'b0010010; led2 <= 7'b0001100;end5'b11110: begin led1 <= 7'b0000110; led2 <= 7'b0000001;enddefault: begin led1 <= 7'b0000000; led2 <= 7'b0000000;endendcaseendendmodulemodule dianzhen(direction,clk,div2,row,con);input div2;input clk;input direction;output[15:0] row;output[15:0] con;reg[15:0] row;reg[15:0] con;integer cnt,b;reg[15:0] r[48:0];initialbeginif (direction==0)begin// 丁r[0] <=16'b1111111111111111;r[1] <=16'b1011111111111111;r[2] <=16'b1011111111111111;r[3] <=16'b1011111111111111;r[4] <=16'b1011111111111111;r[5] <=16'b1011111111111011;r[6] <=16'b1011111111111101;r[7] <=16'b1000000000000011;r[8] <=16'b1011111111111111;r[9] <=16'b1011111111111111;r[10]<=16'b1011111111111111;r[11] <=16'b1011111111111111;r[12]<=16'b1011111111111111;r[13]<=16'b1011111111111111;r[14]<=16'b1011111111111111;r[15]<=16'b1111111111111111;// 乾r[16]<=16'b1101111111101111 ;r[17]<=16'b1101000000101111 ;r[18]<=16'b1101010101101111 ;r[19]<=16'b0000010101101111 ;r[20]<=16'b1101010100000000 ;r[21]<=16'b1101010101101111 ;r[22]<=16'b1101000000101111 ;r[23]<=16'b1101110111101111 ;r[24]<=16'b1111001111110011 ;r[25]<=16'b0000110111001101 ;r[26]<=16'b1010110110111101 ;r[27]<=16'b1110110101111101 ;r[28]<=16'b1110110011111101 ;r[29]<=16'b1110110111100001 ;r[30]<=16'b1110111111111011 ;r[31]<=16'b1111111111111111 ;// 全灭r[32]<=16'b1111111111111111;r[33]<=16'b1111111111111111;r[34]<=16'b1111111111111111;r[35]<=16'b1111111111111111;r[36]<=16'b1111111111111111;r[37]<=16'b1111111111111111;r[38]<=16'b1111111111111111;r[39]<=16'b1111111111111111;r[40]<=16'b1111111111111111;r[41]<=16'b1111111111111111;r[42]<=16'b1111111111111111;r[43]<=16'b1111111111111111;r[44]<=16'b1111111111111111;r[45]<=16'b1111111111111111;r[46]<=16'b1111111111111111;r[47]<=16'b1111111111111111;endelse if(direction==1)begin//1r[0] <=16'b 1111111111111111;r[1] <=16'b 1111111111111111;r[2] <=16'b 1111111111111111;r[3] <=16'b 1111111111111111;r[4] <=16'b 1111111111111111;r[5] <=16'b 1111011111111011;r[6] <=16'b 1111011111111011;r[7] <=16'b 1110000000000011;r[8] <=16'b 1111111111111011;r[9] <=16'b 1111111111111011;r[10]<=16'b 1111111111111111;r[11] <=16'b 1111111111111111;r[12]<=16'b 1111111111111111;r[13]<=16'b 1111111111111111;r[14]<=16'b 1111111111111111;r[15]<=16'b 1111111111111111;// 0r[16]<=16'b 1111111111111111;r[17]<=16'b 1111111111111111;r[18]<=16'b 1111111111111111;r[19]<=16'b 1111111111111111;r[20]<=16'b 1111111111111111;r[21]<=16'b 1111100000001111;r[22]<=16'b 1111011111110111;r[23]<=16'b 1110111111111011;r[24]<=16'b 1110111111111011;r[25]<=16'b 1111011111110111;r[26]<=16'b 1111100000001111;r[27]<=16'b 1111111111111111;r[28]<=16'b 1111111111111111;r[29]<=16'b 1111111111111111;r[30]<=16'b 1111111111111111;r[31]<=16'b 1111111111111111;// 9r[32]<=16'b 1111111111111111;r[33]<=16'b 1111111111111111;r[34]<=16'b 1111111111111111;r[35]<=16'b 1111111111111111;r[36]<=16'b 1111111111111111;r[37]<=16'b 1111100011111111;r[38]<=16'b 1111011101110011;r[39]<=16'b 1110111110111011;r[40]<=16'b 1110111110111011;r[41]<=16'b 1111011101110111;r[42]<=16'b 1111100000001111;r[43]<=16'b 1111111111111111;r[44]<=16'b 1111111111111111;r[45]<=16'b 1111111111111111;r[46]<=16'b 1111111111111111;r[47]<=16'b 1111111111111111;endendalways@(posedge clk )beginif (b==47)b<=0;else b<=b+1;endalways@(posedge div2)beginif(cnt==15)begincnt<=0;endelsecnt<=cnt+1;case(cnt)15: con<=16'b0000_0000_0000_0001; 14: con<=16'b0000_0000_0000_0010; 13: con<=16'b0000_0000_0000_0100; 12: con<=16'b0000_0000_0000_1000; 11: con<=16'b0000_0000_0001_0000; 10: con<=16'b0000_0000_0010_0000; 9: con<=16'b0000_0000_0100_0000; 8: con<=16'b0000_0000_1000_0000; 7: con<=16'b0000_0001_0000_0000; 6: con<=16'b0000_0010_0000_0000; 5: con<=16'b0000_0100_0000_0000; 4: con<=16'b0000_1000_0000_0000; 3: con<=16'b0001_0000_0000_0000; 2: con<=16'b0010_0000_0000_0000; 1: con<=16'b0100_0000_0000_0000; 0: con<=16'b1000_0000_0000_0000;endcasecase(cnt)0: row<=r[b+0];1: row<=r[b+1];2: row<=r[b+2];3: row<=r[b+3];4: row<=r[b+4];5: row<=r[b+5];6: row<=r[b+6];7: row<=r[b+7];8: row<=r[b+8];9: row<=r[b+9];10: row<=r[b+10];11: row<=r[b+11];12: row<=r[b+12];13: row<=r[b+13];14: row<=r[b+14];15: row<=r[b+15];endcaseendendmodule。
抢答器verilog版
抢答器-verilog一.实验要求设计一个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答使用。
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用指示灯显示抢答组别,扬声器发出2—3s的音响。
设置犯规电路,对提前抢答和超时答题(例如3min)的组别鸣笛示警,并由组别显示电路显示出犯规组别。
设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。
二.实验方框图三.答题规则(本实验均采用脉冲按键模式)四.本次实验的verilog源程序module answer(clk,k1,k2,k3,k4,o1,o2,o3,o4,out1,out2,start,reset1, save); //抢答信号鉴别,保持模块input clk,k1,k2,k3,k4,start,reset1;//k1~k2是选手按键output o1,o2,o3,o4,out1,out2;//o1~o2是抢答信号显示灯output[2:0] save; //用于保存选手的抢答信号reg o1,o2,o3,o4,out1,out2,ok;reg[7:0] counter;reg[2:0] save;integer i;always@(posedge clk)if(reset1)//当reset1为1时复位清零begin{o1,o2,o3,o4,out1,out2,ok}<=7'b0000000;counter<=0;i=0;endelsebegin////if(start)beginok<=1;save<=0;endif(!ok)//reset1和ok为0时,有人按键表示犯规begin //一旦有人按键,他的输出信号将屏蔽其他人的按键if(k1&&!o2&&!o3&&!o4)begino1<=1;save<=1;endif(k2&&!o1&&!o3&&!o4)begino2<=1;save<=2;endif(k3&&!o1&&!o2&&!o4)begino3<=1;save<=3;endif(k4&&!o1&&!o2&&!o3)begino4<=1;save<=4;endif(o1 || o2 || o3 || o4)//提前按键扬声器响out1<=1;endelse//reset1为0,ok为1时,有人按键为正常抢答begin//if(k1 || k2 || k3 || k4)begin //一旦有人按键,他的输出信号将屏蔽其他人的按键if(k1&&!o2&&!o3&&!o4)begino1<=1;save<=1;endif(k2&&!o1&&!o3&&!o4)begino2<=1;save<=2;endif(k3&&!o1&&!o2&&!o4)begino3<=1;save<=3;endif(k4&&!o1&&!o2&&!o3)begino4<=1;save<=4;endendif(o1 || o2 || o3 || o4)begini=i+1;if(i<2)out2<=1;//有人抢到题,响几下铃。
VHDL语言设计四路抢答器
一、设计要求:在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。
同时,还可以设置计分、犯规及奖惩记录等各种功能。
本设计的具体功能是:1.可容纳四组参赛者进行抢答,每组设置一个抢答按钮供抢答者使用。
2.电路具有第一抢答信号的鉴别和锁存功能。
在主持人交系统复位并发出抢答指令后,若有一组先按下抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别,同时扬声器发出“嘀嘟”的双音音响,且持续2~3秒。
此时,电路具备自锁功能,使他组的抢答开关不起作用。
3.具有计分功能,使每组在开始时的分数预置成100分,抢答后由主持人计分,答对一次加10分。
二、系统方案论证与模块划分:根据系统设计要求可知:1.系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;2.系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LED_A、LES_B、LED_C、LED_D,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
3.本系统应具有的功能有:第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能。
根据以上的分析,我们可将整个系统分为三个主要模块:抢鉴别模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ;对于需显示的信息,需增加或外接译码器,进行显示译码。
考虑到FPGA、CPLD的可用接口及一般EDA实验开发系统的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
整个系统的组成框图如图2-1所示:系统的工作原理如下:当主持人按下使能端EN1时,抢答器开始工作,A、B、C、D四个抢答者谁最先抢答成功则此选手的台号灯(LED_A—LED_D)将点亮,并且组别显示数码管将显示出抢答成功者的台号,并由蜂鸣器发出抢答成功的警报;接下来主持人提问,若回答正确,主持人按加分按钮ADD,抢答计分模块JFQ将给对应的组加分,并将该组的总分显示在对应的选手计分数码管JF2_A-JF0_A、JF2_B-JF0_B、JF2_C-JF0_C、JF2_D-JF0_D、上。
用VerilogHDL编写四路抢答器
always@(*) begin case(qiang_da) 1:bian_ma=3'b001; 2:bian_ma=3'b010; 4:bian_ma=3'b011; 8:bian_ma=3'b100; default:bian_ma=3'b000; endcase end
assign suo=(~bian_ma_cun[0])&(~bian_ma_cun[1])&(~bian_ma_cun [2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1) bian_ma_cun<=3'b000; else if(suo_1==0) bian_ma_cun<=bian_ቤተ መጻሕፍቲ ባይዱa_cun; else bian_ma_cun<=bian_ma; end
output wire [6:0]a_to_g; output wire [3:0]A_TO_D; input wire clk;//50MHz时钟 wire [3:0]qian; wire [3:0]bai; wire [2:0]shi; wire [2:0]ge; wire cp;//1s时钟 input wire [3:0]qiang_da; input button; wire suo_1; wire [2:0]bian_ma_cun; wire fankui; output wire xuan; shumaguan shumaguan0(a_to_g,A_TO_D,clk,qian,bai,shi,ge); cp_1s cp_1s0(clk,cp); xuan_shou xuan_shou0(qiang_da,button,suo_1,bian_ma_cun,fankui); wei_xuan wei_xuan0(bian_ma_cun,xuan,shi,ge); fuwei_kongzhi fuwei_kongzhi0(button,xuan); jishu_kongzhi jishu_kongzhi0(bai,qian,cp,suo_1,xuan,fankui); endmodule
数字电子技术实验报告——基于FGPA的4位智能抢答器(verilog HDL)
基于FPGA的4位智能抢答器一、设计任务要求基于E DA/SOPC 系统开发平台,运用Q uartusⅡ可编程逻辑器件开发软件,设计一个4位智能抢答器,在开发箱上,本系统使用频率为1000 赫兹的时钟脉冲。
要求如下:1、可以同时供4名选手抢答,其编号分别为1、2、3、4,各用抢答按键S1、S2、S3、S4,按键编号与选手编号对应。
主持人设置有一个“开始”按键S5,一个“复位”按键S6,用于控制抢答的开始和系统的复位;各个按键按下为“0”,弹起为“1”;2、系统上电和按下“复位”按键后4位数码管显示“0000”,此时只有“开始”按键有效,其他按键不起作用;3、当主持人按下“开始”按键后,开始计时,数码管左边两位显示计时的时间,单位为“秒”;如果有选手按下抢答按键,定时器停止工作,数码管显示器上左边两个数码管显示抢答时刻的时间;选手编号立即锁存并显示在右边的两个数码管上,同时封锁输入电路,禁止其他选手抢答;此状态一直保持到主持人将系统复位为止;4、抢答的有效时间为10 秒,如果定时抢答的时间已到而没有选手抢答,本次抢答无效,封锁输入电路,禁止抢答,数码管左边显示“10”,右边显示“00”;此状态一直保持到主持人将系统复位为止;5、附加提高:在主持人未按下开始按键时,如果有人抢答则犯规,在数码管上右边两位闪烁犯规选手的编号,闪烁频率为0.5H Z,左边两位显示“00”;此状态一直保持到主持人将系统复位为止。
二、设计步骤本次设计主要采用V erilog HDL 语言,总体编程思路采用模块化设计方式,主要分为3 个模块,一个主控制及按键输入模块,一个计时显示模块,一个抢答组号显示模块,分别对这3个子模块进行独立编程设计,编译仿真通过并生成元件,在顶层使用原理图或者Verilog HDL 语言的方式将3个模块连接起来完成整个设计。
锁定管脚并编译仿真通过,下载到开发箱进行测试。
三、模块设计思路对于这个任务来说,计时显示模块和抢答组号显示模块的模块并不复杂,复杂的模块是主控制及按键输入模块,所以我决定再将主控制模块拆分成两个小的模块——按键输入模块、按键输入判断输出模块。
单片机的四路电子抢答器设计
单片机的四路电子抢答器设计设计四路电子抢答器可以用单片机来实现。
抢答器通常包括主控板、显示屏、按键模块、信号输入模块和声音模块,下面我将详细介绍设计过程。
一、系统硬件设计部分:1.主控板:使用单片机作为主控处理器,常见的有51系列、AVR系列和STM32系列等。
根据所选单片机的引脚分配情况,设计电路板布线。
2.显示屏:使用液晶显示屏来显示题目和选手答案情况。
选择适合的液晶显示屏,并连接到主控板上。
3.按键模块:设置每个选手的抢答按键,可以使用带有独立按键的矩阵键盘模块,也可以使用独立的按键和扩展IO口。
4.信号输入模块:接收抢答信号,可以使用红外接收器模块,当选手按下抢答键时发射红外信号,由红外接收器模块接收。
也可以选择其他合适的接收方式。
5.声音模块:用于提醒和提示答题情况,可以使用蜂鸣器模块,通过主控板控制发声。
二、系统软件设计部分:1.初始化:在主控板上编写程序,进行硬件初始化,包括液晶屏初始化、按键模块初始化、红外接收模块初始化等操作。
2.题目显示:通过液晶显示屏展示当前抢答题目。
3.抢答检测:主控板通过循环扫描检测按键状态,当检测到一些按键按下时,记录该选手抢答,并停止其他选手的抢答。
4.抢答结果显示:通过液晶显示屏显示抢答结果,标识各个选手的抢答顺序。
5.声音提示:根据抢答结果,通过蜂鸣器模块进行声音提示,例如正确答案和错误答案的不同提示音。
6.重复抢答:在抢答过程中,如果有选手重复抢答,可以通过程序进行判断并作相应的提示。
7.复位操作:可以设置一个复位按钮,用于清除抢答结果和重新开始抢答。
三、系统工作流程:1.开机初始化:主控板上电初始化,配置各个模块,显示“待机”状态。
2.显示题目:主控板从题库中读取题目内容,并通过液晶显示屏展示给选手。
3.抢答:选手按下抢答按钮,主控板检测到按键状态变化并记录抢答情况。
4.显示抢答结果:主控板通过液晶显示屏显示抢答结果,标识各个选手的抢答顺序。
四路定时抢答器课程设计
目录第一章设计任务及要求 01.1四路抢答器摘要 01.2设计任务 01.3 功能要求 0第二章设计思路 (1)2.1设计原理 (1)2.1.1编码器介绍 (1)2.2电路设计 (2)2.2.1 抢答电路 (2)2.2.2 定时电路 (4)2.2.3 秒脉冲产生电路 (7)2.2.4 报警电路 (7)2.2.5 控制电路 (9)2.2.6抢答器整体电路 (10)第三章电路仿真 (13)第四章元器件介绍 (15)4.1 元器件清单 (15)4.2 元器件简介 (16)第五章参考资料 (17)第一章设计任务及要求1.1四路抢答器摘要本文介绍了一种用74系列常用集成电路设计的数码显示八路抢答器的电路组成、设计思路及功能。
该抢答器除具有基本的抢答功能外,还具有定时、计时和报警功能。
主持人通过时间预设开关预设供抢答的时间,系统将完成自动倒计时。
若在规定的时间内有人抢答,则计时将自动停止;若在规定的时间内无人抢答,则系统中的蜂鸣器将发响,提示主持人本轮抢答无效,实现报警功能。
关键词:四路, 抢答器, 设计,定时,计时,报警。
1.2设计任务选择适当的器件设计一个电路,使它能够实现八路定时抢答器。
本次课设分基本设计和扩展设计两部分,基本设计为抢答器电路,扩展电路包括定时电路、报警电路、时序控制电路、整机电路。
在完成基本设计任务的基础上,可对抢答器进行进一步的完善设计,时期抢答器的功能更具实用性。
具体任务:(1) 四组参赛者在进行抢答时(用四个LED数码管)代表,当抢先者按下前面的按钮时,抢答器能准确地判断出抢答者,并以声、光为标志。
(2) 抢答器应具有互锁功能,某组抢答后能自动封锁其他各组进行抢答。
(3)抢答应具有一个总开关。
(4) 使抢答器具有限时(抢答时、回答问题时)功能,时间到时应发出声响,同时,时间数据要用数码管显示出来。
(5)有选手抢答时时间停止,报警电路发出报警信号,以提示灯光为标志。
1.3 功能要求(1)设计一个智能竞赛抢答器,可同时供4名选手或4个代表队参赛,他们的标号分别是0、1、2、3、各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S0、S1、S2、S3。
四路抢答器实验设计
-课程设计说明书-石油化工学院课程设计任务书一、设计题目四路抢答器二、主要容及要求(1)当某台参赛者按下抢答开关时,由数码管显示该台编号并伴有声响。
此时,抢答器不再接收其他输入信号。
(2)电路具有定时功能。
要求回答问题的时间≤30秒(显示为29~00),时间显示采用倒计时方式。
当达到限定时间时,发出声响提示。
(3)具有计分功能。
每组参赛者起始分为100分,抢答后由主持人计分,答对1次加10分,否则减去10分(4)在复位状态下台号数码管不作任何显示(灭灯)。
提高要求:(5)答题时间还剩5s时,每秒发出提示声音。
三、进度安排1、掌握multisim仿真器软件的使用(5月25号)。
2、去图书馆和网上查找需要的资料,并整理好。
(5月26日)。
3、对课程设计的要求进行理解,初步设计。
(5月27日)。
4、整体设计开始,并逐步改进和调试。
(5月29日)5、完成设计并写课程设计说明书。
(5月30日)6、课题答辩(6月20日)四、总评成绩指导教师学生签名抢答器电路设计一、设计任务与要求1.可容纳四组参赛的数字式抢答器;2.当某台参赛者按下抢答开关时,由数码管显示该台编号并伴有声响。
此时,抢答器不再接收其他输入信号;3.电路具有定时功能。
要求回答问题的时间≤60秒(显示为00~59),时间显示采用倒计时方式。
当达到限定时间时,发出声响提示;4.具有计分功能。
要求能设定初始分值,能进行加减分5.在复位状态下台号数码管不作任何显示(灭灯)二、方案设计与论证如图所示为总体方框图。
其工作原理为:接通电源后,主持人将开关拨到“清零”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始”状态,宣布“开始”,抢答器工作。
定时器倒计时,选手在定时时间抢答时,抢答器完成优先判断、编号锁存、编号显示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作“清除”和“开始”状态开关。
用Verilog HDL编写的四路抢答器演示幻灯片
always@(*)//4位位选译码 case(wei) 3:begin A_TO_D=4'b1110; duan=qian; end 2:begin A_TO_D=4'b1101;
6
module cp_1s(clk,a); //提供1秒脉 冲
input wire clk; output reg a; reg [25:0]q; always@(posedge clk)
output reg zong_kong;
always@(posedge fu_wei)
begin
zong_kong<=~zong_kong;
11
module jishu_kongzhi(q1,q2,clk,suo,clr,fa nkui);//计数电路及其控制模块
output wire [3:0]q1;
四路抢答器设计
——Verilog HDL语言
1
抢答器为四路,20秒倒计时,抢 到后显示锁定,计时停止,若 提前抢答会在另外数码管显示 抢答号码。
在BASYS 2 开发板上可以实现
2
module qiang_da_qi(a_to_g,A_TO_D,clk,q iang_da,button,xuan
14
qing_ling;
8
assign suo=(~bian_ma_cun[0])&(~bian_ ma_cun[1])&(~bian_ma_cun[2]);
assign suo_1=suo&fankui;
always@(*) begin if(qing_ling==1)
9
module wei_xuan(bian_ma_cun,xuan,bai, ge);//控制选手是否提前抢答模 块
数电电子技术课程设计之四路抢答器倒计时
集美大学诚毅学院数字电子技术课程设计题目:四路智力竞赛抢答器专业班级:机电**91学号:2012******25姓名:陈志真二〇一四年六月数字电子技术课程设计报告一、设计任务1.1要求设计一台可供4名选手参加比赛的智力竞赛抢答器并具有定时抢答功能。
1.1.1抢答器:能分辨出选手按钮的先后,并锁存优先抢答者的编号,并可通过显示译码器准确的显示出来;同时,要求其他选手按钮操作无效即避免其他选手再次抢答;开始抢答和清零由主持人控制。
1.1.2定时器:时钟脉冲由555多谐震荡器提供;通过主持人控制开始倒计时,定时抢答器可从9~0;可控制定时器停止工作,显示译码器上显示的是剩余时间,并可以保持到主持人清零位置;1.1.3整体电路:主持人拨动开关,抢答器可以进行抢答,定时器开始倒计时;某一选手抢答后,抢答器显示选手编号,定时器停止计时,这时其他选手无法进行抢答,抢答器和定时器停止工作一直保持到主持人清零为止;主持人清零后,系统恢复到禁止工作状态,以便进行下一轮抢答,当定时时间到后,却没有选手抢答时,禁止选手超时后抢答。
二、设计要求2.1基本功能2.1.1抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。
2.1.2设置一个系统清除和抢答控制开关S,该开关由主持人控制。
用来控制系统清零(编号显示数码管灭灯)和抢答的开始。
2.1.3抢答器具有锁存与显示功能。
即抢答开始后,选手按动按钮,锁存相应的编号,并在编号显示器上显示该编号。
同时封锁输入编码电路,禁止其他选手抢答。
优先抢答选手的编号一直保持到主持人将系统清除为止。
2.2扩展功能2.2.1抢答器具有定时抢答功能。
要求定时器开始倒计时,并用定时显示器显示倒计时时间,同时扬声器发出音响,音响持续0.5秒。
2.2.2参赛选手在设定时间(9秒)内抢答,抢答有效,扬声器发出音响,音响持续0.5秒,同时定时器停止倒计时,编号显示器上显示选手的编号,定时显示器上显示剩余抢答时间,并保持到主持人将系统清零为止。
单片机四路抢答器的设计
单片机四路抢答器的设计一、设计需求分析在设计四路抢答器之前,我们首先需要明确其功能需求。
1、能够同时支持四路选手进行抢答。
2、当有选手按下抢答按钮时,能够迅速锁定并显示抢答者的编号。
3、具备倒计时功能,在规定时间内无人抢答则显示超时。
4、要有声音提示,如抢答成功、违规抢答、倒计时结束等。
二、硬件设计1、单片机选择我们选用常见的 51 系列单片机,如 STC89C52 单片机。
它具有性能稳定、价格低廉、编程方便等优点。
2、输入模块使用四个独立按键作为四路选手的抢答按钮,分别连接到单片机的四个 I/O 口。
3、显示模块采用数码管显示抢答者的编号和倒计时时间。
可以选择共阴极或共阳极数码管,通过单片机的 I/O 口进行驱动。
4、声音模块使用蜂鸣器来实现声音提示功能。
通过单片机控制蜂鸣器的通断,产生不同频率的声音。
5、电源模块为整个系统提供稳定的电源,可以使用 5V 直流电源适配器。
三、软件设计1、编程语言选择 C 语言进行编程,C 语言具有语法简洁、可读性强、可移植性好等优点。
2、主程序流程系统初始化后,进入等待抢答状态。
当有选手按下抢答按钮时,判断是否违规抢答(即在倒计时未结束前抢答)。
如果是合法抢答,锁定抢答者编号并显示,同时发出抢答成功的声音提示;如果是违规抢答,则发出违规提示音并显示违规者编号。
在抢答成功后,开始倒计时,倒计时结束时发出超时提示音。
3、中断处理利用单片机的外部中断功能,实现对抢答按钮按下事件的快速响应。
4、计时与显示程序通过定时器实现倒计时功能,并将剩余时间实时显示在数码管上。
四、系统调试1、硬件调试首先检查电路连接是否正确,有无短路、断路等情况。
然后测量各个电源点的电压是否正常,确保硬件工作在稳定的状态。
2、软件调试将编写好的程序下载到单片机中,通过单步调试、断点调试等方式,检查程序的执行流程和逻辑是否正确。
同时观察数码管显示和蜂鸣器发声是否符合预期。
五、设计优化与拓展1、增加更多的抢答通道,以满足更多选手参与的需求。
基于FPGA的四路抢答器的VerilogHDL代码
moduleqiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1,Led2,Led3,Buzzer);// 开始声明各个端口//输入口input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4;//输出口//倒计时时使用的 LED 控制端 //数码管控制端 //分数显示数码管控制端 //蜂鸣器reg [0:7] Led1;reg [0:7] Led2;reg [0:7] Led3;reg cnt=32'b0;reg Buzzer;reg score=4'hf;// 分数显示寄存器//配置寄存器 ,EnFlat 是表明开始抢答的标志位reg EnFlat=1'b0;//BuClk 是蜂鸣器的标志位 reg BuClk=1'b0;//BuL 是做蜂鸣器的延时用 reg [0:7]BuL=8'd0;//抢答选手标志位reg answer=3'd0;//各组分数标志位reg score1=4'd5;reg score2=4'd5;reg score3=4'd5;reg score4=4'd5;// ------ 初始化模块 ---------always @ (posedge elk)//甫捉时钟 begin//初始化各按键并开始抢答 beginif(inputEn==1'b0) begin//初始化各个标志位和参数EnFlat=1'b1;〃倒计时开始时8个Led 灯全亮Led1=8'b11111111;//组号显示静态数码管 (数码管为共阳极)的控制端,有 8位 Led2=8'b11111111;//分数显示数码管控制端Led3=8'b11111111;//蜂鸣器标志位BuClk=1'b0;//蜂鸣器的控制管脚 ,低电平为发声音output [0:7] Led1;output [0:7] Led2; output [0:7] Led3;output Buzzer;Buzzer=1'b1;endend// --- 抢答模块----beginif(EnFlat==1'b1)begin//如果按键 1 按下if(inputL1==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;//选手标志位改变,用于加减分数模块 answer=3'd1;//静态数码管显示序号 '1',及显示选手对应的组号Led2=8'hf9;//指示蜂鸣器发声BuClk=1'b1;end//如果按键 2 按下else if(inputL2==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3'd2;Led2=8'ha4;BuClk=1'b1;end//如果按键 3 按下else if(inputL3==1'b0)begin//禁止其他选手抢答EnFlat=1'b0;answer=3'd3;Led2=8'hb0;BuClk=1'b1;end//如果按键 4 按下else if(inputL4==1'b0)begin //禁止其他选手抢答 EnFlat=1'b0; answer=3'd4; Led2=8'h99;BuClk=1'b1;endendend// ----------- 加减分数模块 ----------//第一组加减分if(answer ==3'd1)beginif(add) score1=score1+1; //当主持人判定选手的回答正确时,按下add键进行加分操作 else if(stu)score1=score1-1;//当主持人判定选手的回答错误时,按下stu 键进行减分操作score=score1;/耙第一组的分数赋值给分数寄存器 end //第二组加减分 if(answer ==3'd2) begin if(add)score2=score2+1;//当主持人判定选手的回答正确时,按下add 键进行加分操作else if(stu)score2=score2-1;//当主持人判定选手的回答错误时,按下stu 键进行减分操作score=score2;end//第三组加减分if(answer = =3'd3)beginif(add)score3=score3+1;//当主持人判定选手的回答正确时,按下add 键进行加分操作elseif(stu) score3=score3-1;//当主持人判定选手的回答错误时,按下stu 键进行减分操作score=score3;end//第四组加减分 if(answer ==3'd4) begin if(add) score4=score4+1; //当主持人判定选手的回答正确时,按下add 键进行加分操作else if(stu) score4=score4-1;//当主持人判定选手的回答错误时,按下stu 键进行减分操作score=score4;end// --------- 倒计时模块-------------beginif(EnFlat==1'b1)begin if(cnt!=32'd4*******)// 计时实现 1HZ 分频 cnt=cnt+32'd1;else begin cnt=32'd0;Led仁8'b11111111«1'b1;//Led1左移一个单位,实现一秒的倒计时endend if(Led1==8'bO)〃倒计时结束还没有按键按下,则抢答停止且蜂鸣器响 EnFlat=1'b0; BuClk=1'b1;end// 蜂鸣器模块----------------//当蜂鸣器标志位置 1 时//进入此蜂鸣器处理程序begin if(BuClk==1'b1) begin//蜂鸣器发声Buzzer=1'bO;//延时变量加 1BuL = BuL + 8'd1;//当到达延时的时间时关掉蜂鸣器if(BuL==8'd255)begin//延时变量复位BuL=8'd0;//蜂鸣器标志位复位 BuClk=1'b0;//蜂鸣器停掉Buzzer=1'b1;endendend// ------- 重置模块 ----------//按下 clr 键以后各组参数重置,整个比赛重新开始if(clr) begin//重置各个标志位和参数EnFlat=1'b1; //重置时 8 个 Led 灯全亮Led1=8'b11111111;//选手号静态数码管的控制端 ,有 8 位Led2=8'b11111111;//选手分数显示数码管重置Led3=8'b11111111;//蜂鸣器标志位重置BuClk=1'b0;//蜂鸣器的控制管脚重置 ,低电平为发声音Buzzer=1'b1;//各组分数重置score1=4'd5;score2=4'd5;score3=4'd5;score4=4'd5;//分数显示寄存器重置answer=8'hff;end// ----- 数码显示模块 --------case(score)4'h0 Led3 = 8'hc0; //显示 4'h1 Led3 = 8'hf9; //显示 4'h2 Led3 = 8'ha4; //显示 4'h3 Led3 = 8'hb0; //显示 4'h4 Led3 = 8'h99; //显示 4'h5 Led3 = 8'h92; //显示 4'h6 Led3 = 8'h82; //显示 4'h7 Led3 = 8'hf8; //显示begin123456//显示 8 //显示 9 //显示- //不显示4'h8: Led3 = 8'h80;4'h9: Led3 = 8'h90;4'ha: Led3 = 8'hbf;default:Led3 = 8'hff; endcase endend endmodule。
Verilog HDL 课程设计报告 四人抢答器电路设计 河海大学
河海大学计算机与信息学院(常州)课程设计报告题目四人抢答器电路设计学号 1062510130 授课班号 274302 学生姓名王聪同组成员 1062510135 张恒指导教师奚吉完成时间2013.01.04四人抢答器电路设计摘要Verilog HDL课程设计的主要动机是1.培养综合运用知识和独立开展实践创新的能力;2.通过完成四人抢答器电路设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础;3.通过搭建调试电路,进一步熟悉相关仪器设备的使用;4.通过Verilog程序的编写,进一步熟悉Verilog HDL的语法知识;5.规范化训练学生撰写技术研究报告,提高书面表达能力。
四人抢答器电路设计的主要问题在于各个模块的正确分配,从而使设计出的电路更加符合要求。
为了使各个模块能够正确分配,在程序开始设计之前,必须反复推敲本组的设计方案并设计好各个模块的方框图。
如果一切都设计好之后,那么最后的电路会具有抢答第一信号鉴别和锁存功能、主持人清屏功能、30秒倒计时功能、蜂鸣器报警功能。
实现四人抢答器的预期功能需要:1.将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2.遇到本组内解决不了的问题,及时和其他小组交流或询问老师;3.进行模块调试时,根据试验箱上现象的不同及时调整相关程序的内容。
本次课程设计的实现的重要结果1.完成了实验环境搭建;2.实现了一四人抢答器,有人抢答成功后,其他人再抢答无效;3.通过蜂鸣器响1秒来提示抢答成功,并在数码管上显示抢答者的序号;4.主持人通过按键清除抢答信息,并开始30秒的答题倒计时,当倒计时结束时,通过蜂鸣器响1秒来提示回答问题时间到,此时可以开始新一轮的抢答。
当然,本次课程设计还有诸多不足之处,我们已经力求改进以求设计的实用性及完美性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四路抢答器一、程序module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED);input clr,clk,input1,input2,input3,input4;output [7:0] seg; //7段数码管数据output [7:0] scan; //数码管位选output [3:0] LED; //输出LED灯指示output clockin; //蜂鸣器reg [7:0] seg;reg [7:0] scan;reg [3:0] LED;reg clockin;reg [3:0] data;reg input_flag,count_flag;reg [14:0] count1;reg [8:0] count2;reg [3:0] LED_N;//reg clock_flag;reg div1khz,div1hz;reg [2:0] cnt;reg [3:0] dat;//reg [7:0] data_count;reg [3:0] count_one,count_ten;initial count_one='d0; //初始化initial count_ten='d3;initial data=4'b0000;initial LED_N=4'b1111;//-------------fenping分频1khz-----------------------------------always @(posedge clk )beginif(count1=='d25000)begin div1khz<=~div1khz;count1<=0;endelsebegin count1<=count1+1'b1;endend//-------------fenping--1hz-------------------------------always @(posedge div1khz)beginif(count2=='d500)begin div1hz<=~div1hz;count2<=0;endelsebegin count2<=count2+1'b1;endend//----------------------------------------------------------always @(posedge div1hz or negedge clr)beginif(!clr)begincount_one<='d0;count_ten<='d3;count_flag<=1'b0;endelse if((!input_flag)&(!count_flag))begin if(count_one=='d0&&count_ten=='d0)begin count_flag<=1'b1;endelse if(count_one=='d0)begin count_one<=4'b1001;count_ten<=count_ten-1'b1;endelsebegin count_one<=count_one-1'b1;endendelsebegin count_one<=count_one;count_ten<=count_ten;endend//-----------------------------------------------------------always @(posedge clk ) //or input1 or input2 or input3 or input4 beginif(!clr)beginLED_N<=4'b1111;//clock_flag<=1'b0;input_flag<=1'b0;data<=4'b0000;endelse if((!input_flag)&(!count_flag))beginif(input1==0)begindata<=4'b0001;LED_N<=4'b0111;input_flag<=1'b1;endelse if(input2==0)begindata<=4'b0010;LED_N<=4'b1011;input_flag<=1'b1;endelse if(input3==0)begindata<=4'b0011;LED_N<=4'b1101;input_flag<=1'b1;endelse if(input4==0)begindata<=4'b0100;LED_N<=4'b1110;input_flag<=1'b1;endelsebegindata<=data;LED_N<=LED_N;input_flag<=input_flag;endendend//-------------led灯及蜂鸣器--------------------------------------------------- always @(posedge clk)beginLED<=LED_N;clockin<=div1khz&(input_flag|count_flag);//dat<=data;end//--------------shu ma guan sao miao数码管扫描--------------------------------- always @(posedge div1khz)beginif(cnt=='d3)begin cnt<=0;endelsebegin cnt<=cnt+1'b1;endend//-----------------------------------------------------always @(cnt,data,count_one,count_ten)begincase(cnt)//3'b000 : begin scan<=8'b01111111;end3'b001 : begin scan<=8'b10111111;dat<=data;end //选手编号3'b010 : begin scan<=8'b11011111;dat<=count_one;end //倒计时3'b011 : begin scan<=8'b11101111;dat<=count_ten;enddefault : begin scan<=8'bx;dat<=4'bx;endendcaseend//--------------------------------------------------------always @(dat)begincase(dat)4'b0000 : seg[7:0]<=8'b11000000;4'b0001 : seg[7:0]<=8'b11111001;4'b0010 : seg[7:0]<=8'b10100100;4'b0011 : seg[7:0]<=8'b10110000;4'b0100 : seg[7:0]<=8'b10011001;4'b0101 : seg[7:0]<=8'b10010010;4'b0110 : seg[7:0]<=8'b10000010;4'b0111 : seg[7:0]<=8'b11111000;4'b1000 : seg[7:0]<=8'b10000000;4'b1001 : seg[7:0]<=8'b10010000;4'b1010 : seg[7:0]<=8'b10001000;4'b1011 : seg[7:0]<=8'b10000011;4'b1100 : seg[7:0]<=8'b11000110;4'b1101 : seg[7:0]<=8'b10100001;4'b1110 : seg[7:0]<=8'b10000110;4'b1111 : seg[7:0]<=8'b10001110;default : seg[7:0]<=8'bx;endcaseendendmodule二、框图三、设计思路四路抢答,有30s倒计时,当有人抢答时,数码管显示对应选手编号,同时对应LED灯亮,蜂鸣器响起,此时其他选手抢答无效。
当倒计时到达0时,蜂鸣器响,此时不能够抢答,清零后重新计时。
程序有个小问题,数码管显示选手编号时,存在干扰,能够勉强辨认出选手编号,但不够清晰,找了好久都没查出。