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