EDA八路抢答器的设计Word下载.docx
《EDA八路抢答器的设计Word下载.docx》由会员分享,可在线阅读,更多相关《EDA八路抢答器的设计Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
完成时间2012年12月25日
八人抢答器
1、八人抢答器设计题目与要求
1、1基本要求
(1)给主持人设置一个开关,用来控制系统的清零和抢答器的开始。
(2)抢答器具有锁存和显示的功能。
抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码管上显示选手的编号,此外,要封锁输入电路,禁止其他选手抢答。
优先抢答选手的编号一直保持到主持人将系统清零为止。
1、2我的设计功能
(1)八路智力抢答器,同时供8个选手参赛,编号分别为1到8。
每位选手用一个答题按钮和LED灯,选手按下时其灯亮。
(2)给主持人一个控制开关,实现系统的清零和抢答的开始。
具有数据锁存和显示功能。
(3)抢答开始后,如果有选手按下了抢答按钮,其编号立即锁存并显示在LCD液晶显示屏上。
此外,禁止其他选手再次抢答。
选手的编号一直保存直到主持人清除。
2、抢答器整体设计
2、1设计思路
(1)、基本原理
本系统共由抢答鉴别模块(jdjb.vhdl)、计时模块(js.vhdl)、计分模块(jf.vhdl)和LCD译码显示模块等四部分组成。
抢答过程:
主持人按下系统复位键(RST),系统进入抢答状态,计时模块和计分模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余七路抢答信号封锁,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组别号,并一直保持到下一轮主持人将系统清零为止。
随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
计时至0时,停止计时,以中止未回答完问题。
若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号。
主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
·
抢答鉴别模块
抢答鉴别模块用来准确直观地判断八组抢答者谁最先按下按钮,并为显示端送出信号,通过LCD显示使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。
同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。
抢答鉴别模块的元件图如下图所示:
计时模块
当抢答鉴别模块成功判别出最先按下抢答按钮的参赛组后,在成功鉴别出哪组最先抢答后,由锁存器输出的计时使能信号使能,进入计时状态。
计时模块可分作两部分:
(1)预置数;
(2)60秒倒计时。
计时模块开始工作从预置初始值开始以秒计时,计时至0秒时停止,以中止答题。
时间通过LCD显示。
元件图如下:
计分模块
计分模块的运行方式是按照十进制进行加减,即当时钟出现上升沿时就进行加一或者减一的操作。
记分模块为哪组进行记分取决于鉴别模块的输入信号STATE,当STATE=0001时表示A0组最先抢答,则在此模块中为A组记分,当G=0010时表示A1组最先抢答,则在此模块中为A1组记分等等。
以A0组为例来说明此模块的设计,当复位信号RST=1时,系统复位且A组的分值显示初始值,为100分。
当RST=0时,如果该组选手答题正确,则主持人按下加分键,即PLUS=1,此时对该组进行加分操作;
如果该组选手答题错误,则主持人按下减分键,即MINUS=1,此时对该组进行减分操作。
译码显示模块
该模块将抢答成功的组别,时间及各组分数译码送LCD显示,这里采用了实验室资料里的程序。
系统总图如下:
3、程序与仿真波形
moduleqianda(DATA,SET,C0);
inputSET;
input[7:
0]DATA;
output[3:
0]C0;
reg[3:
0]C0,C1;
reg[7:
0]TEP;
regT0,T1;
rega;
//wire[3:
0]C3;
always@(posedgeSET)begin//设置开启开关/清零开关a
a=~a;
if(a)T0=1;
//主持人开启开关,设置触发开关参数
elsebeginT0=0;
C1=0;
end//主持人关闭开关,关闭触发开关
end
always@(DATA)begin
if(a)beginT1=T0;
//主持人开关是开还是清零状态
if(T1)begin//触发开关T1开否?
TEP=DATA;
case(TEP)
8'
b00000001:
beginC0=1;
T1=0;
end//条件满足,关闭开关,封锁输入
b00000010:
beginC0=2;
end
b00000100:
beginC0=3;
b00001000:
beginC0=4;
b00010000:
beginC0=5;
b00100000:
beginC0=6;
b01000000:
beginC0=7;
b10000000:
beginC0=8;
default:
beginC0=C0;
T1=T1;
endcase
elsebeginC0=C0;
end//触发开关关
elseC0=0;
//主持人开关管事情零状态
endmodule
仿真效果:
4、设计心得与体会
这次课程设计总共经历了好几星期的时间,从功能需求分析到功能时序逻辑分析,从程序的设计到程序的调试,从系统的仿真到系统的调试、下载,最后终于完成了这次具有实际使用价值的课程设计。
在这次实验中,我收获颇多。
首先是对实际中的工程设计有了深刻的了解,熟练掌握了verilog语言编程的方法与特点以及集成开发环境QuartusⅡ的基本实验操作。
其次是增强了自己动手,解决实际问题的能力。
一开始因为对怎么做一个实际项目一无所知,在设计中遇到了不少麻烦。
但在慢慢地摸索中,渐渐养成了比较好的习惯,比如做事情要分主次,条理清晰,在QuartusⅡ中要深刻理解工程的概念,一些小细节,比如同一个工程下的文件要集中放在一起,文件名不要有中文等等,遇到不懂的问题,要积极寻找多种途径解决,可以问别人,更多的要自己查找资料。