《EDA技术及应用》实训报告抢答器.docx
- 文档编号:30154241
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:19
- 大小:186.04KB
《EDA技术及应用》实训报告抢答器.docx
《《EDA技术及应用》实训报告抢答器.docx》由会员分享,可在线阅读,更多相关《《EDA技术及应用》实训报告抢答器.docx(19页珍藏版)》请在冰豆网上搜索。
《EDA技术及应用》实训报告抢答器
桂林电子科技大学信息科技学院
《EDA技术及应用》实训报告
学号1152100135
姓名殷浩
指导教师:
江国强窦文淼
2013年5月10日
实训题目:
智能电子抢答器
1.系统设计
1.1设计要求
1.1.1设计任务
设计并制作一台智能电子抢答器。
1.1.2技术要求
①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。
②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。
③电路具有第一抢答信号的鉴别和锁存功能。
在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。
④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。
⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。
1.2设计思路及设计框图
1.2.1设计思路
利用鉴别与锁存先确定第一抢答选手的号数,并用数码管显示其对应组号,通过输入信号,将组号传入计分模块,让计分模块显示对应组的分数,再通过加减按键对该组进行加减。
最后复位,进行新一轮的抢答。
犯规模块与抢答模块的思路基本相同,也要锁存与鉴别第一抢答选手。
1.2.2总体设计框图
2.各个模块程序的设计
(1)分频器模块
模块代码:
modulefpq(clk,cout);
inputclk;
reg[24:
0]q;
outputregcout;
always@(posedgeclk)
begin
if(q<20000000-1)q=q+1;
elseq=0;
if(q==20000000-1)cout=1;
elsecout=0;
end
endmodule
(2)30秒倒计时模块
模块代码:
modulecnt30(clk,clr,ks,zt,q,bout);
inputclk;
inputclr;
inputks;
inputzt;
outputreg[7:
0]q;
outputregbout;
regkz1;
always@(posedgeclkornegedgeclrornegedgeksornegedgezt)
begin
if(~clr)beginkz1=1;q='h30;bout='h0;end
elseif(~ks)kz1=0;
elseif(~zt)kz1=1;
elsebegin
if(kz1==0)
begin
if(q==0)q='h0;
elseq=q-1;
if(q[3:
0]=='hf)q[3:
0]=9;
elseif(q==0)bout=1;
elsebout=0;
end
end
end
endmodule
(3)抢答模块
模块代码:
moduleqdmk(en,clr,k1,k2,k3,k4,q,f,e);
inputen;
inputclr;
inputk1;
inputk2;
inputk3;
inputk4;
outputreg[7:
0]q;
outputregf;
outputrege;
regg;
regh;
always
begin
if(~clr)beginq=0;g=0;h=0;f=0;e=1;end
elseif(~en)beginq=0;h=1;g=0;e=1;end
elsebegin
if(g==0)
begin
if(~k1)beginq=1;g=1;e=0;end
elseif(~k2)beginq=2;g=1;e=0;end
elseif(~k3)beginq=3;g=1;e=0;end
elseif(~k4)beginq=4;g=1;e=0;end
end
if(h==0)
begin
if(~k1)beginq=1;h=1;f=1;end
elseif(~k2)beginq=2;h=1;f=1;end
elseif(~k3)beginq=3;h=1;f=1;end
elseif(~k4)beginq=4;h=1;f=1;end
end
end
end
endmodule
(4)计分模块
模块代码:
modulejsq(clk,p,m,k1,clr,e,clrn);
inputp,m;
input[7:
0]k1;
inputclk;
inputclr;
inputclrn;
outputreg[7:
0]e;
reg[7:
0]c,d,f,g;
always@(negedgeclkornegedgeclrornegedgeclrn)
begin
if(~clr)beginc[7:
4]=1;c[3:
0]=0;d[7:
4]=1;d[3:
0]=0;f[7:
4]=1;f[3:
0]=0;g[7:
4]=1;g[3:
0]=0;end
elseif(~clrn)e=0;
elseif(k1==1)
beginif(p==1)
beginif(c[3:
0]<9&&c[7:
4]!
=9)
c[3:
0]=c[3:
0]+1;
elseif(c[3:
0]==9&&c[7:
4]!
=9)
beginc[3:
0]=0;c[7:
4]=c[7:
4]+1;end
elseif(c[3:
0]==9&&c[7:
4]==9)
beginc[3:
0]=9;c[7:
4]=9;end
e=c;
end
elseif(m==1)
beginif(c[3:
0]==0&&c[7:
4]==0)
beginc[3:
0]=0;c[7:
4]=0;end
elseif(c[3:
0]==0&&c[7:
4]!
=0)
beginc[3:
0]=9;c[7:
4]=c[7:
4]-1;end
elseif(c[3:
0]!
=0&&c[7:
4]==0)
c[3:
0]=c[3:
0]-1;
elseif(c[3:
0]!
=0&&c[7:
4]!
=0)
beginc[7:
4]=c[7:
4];c[3:
0]=c[3:
0]-1;end
e=c;
end
elsee=c;
end
elseif(k1==2)
beginif(p==1)
beginif(d[3:
0]<9&&d[7:
4]!
=9)
d[3:
0]=d[3:
0]+1;
elseif(d[3:
0]==9&&d[7:
4]!
=9)
begind[3:
0]=0;d[7:
4]=d[7:
4]+1;end
elseif(d[3:
0]==9&&d[7:
4]==9)
begind[3:
0]=9;d[7:
4]=9;end
e=d;
end
elseif(m==1)
beginif(d[3:
0]==0&&d[7:
4]==0)
begind[3:
0]=0;d[7:
4]=0;end
elseif(d[3:
0]==0&&d[7:
4]!
=0)
begind[3:
0]=9;d[7:
4]=d[7:
4]-1;end
elseif(d[3:
0]!
=0&&d[7:
4]==0)
d[3:
0]=d[3:
0]-1;
elseif(d[3:
0]!
=0&&d[7:
4]!
=0)
begind[7:
4]=d[7:
4];d[3:
0]=d[3:
0]-1;end
e=d;
end
elsee=d;
end
elseif(k1==3)
beginif(p==1)
beginif(f[3:
0]<9&&f[7:
4]!
=9)
f[3:
0]=f[3:
0]+1;
elseif(f[3:
0]==9&&f[7:
4]!
=9)
beginf[3:
0]=0;f[7:
4]=f[7:
4]+1;end
elseif(f[3:
0]==9&&f[7:
4]==9)
beginf[3:
0]=9;f[7:
4]=9;end
e=f;
end
elseif(m==1)
beginif(f[3:
0]==0&&f[7:
4]==0)
beginf[3:
0]=0;f[7:
4]=0;end
elseif(f[3:
0]==0&&f[7:
4]!
=0)
beginf[3:
0]=9;f[7:
4]=f[7:
4]-1;end
elseif(f[3:
0]!
=0&&f[7:
4]==0)
f[3:
0]=f[3:
0]-1;
elseif(f[3:
0]!
=0&&f[7:
4]!
=0)
beginf[7:
4]=f[7:
4];f[3:
0]=f[3:
0]-1;end
e=f;
end
elsee=f;
end
elseif(k1==4)
beginif(p==1)
beginif(g[3:
0]<9&&g[7:
4]!
=9)
g[3:
0]=g[3:
0]+1;
elseif(g[3:
0]==9&&g[7:
4]!
=9)
beging[3:
0]=0;g[7:
4]=g[7:
4]+1;end
elseif(g[3:
0]==9&&g[7:
4]==9)
beging[3:
0]=9;g[7:
4]=9;end
e=g;
end
elseif(m==1)
beginif(g[3:
0]==0&&g[7:
4]==0)
beging[3:
0]=0;g[7:
4]=0;end
elseif(g[3:
0]==0&&g[7:
4]!
=0)
beging[3:
0]=9;g[7:
4]=g[7:
4]-1;end
elseif(g[3:
0]!
=0&&g[7:
4]==0)
g[3:
0]=g[3:
0]-1;
elseif(g[3:
0]!
=0&&g[7:
4]!
=0)
beging[7:
4]=g[7:
4];g[3:
0]=g[3:
0]-1;end
e=g;
end
elsee=g;
end
end
endmodule
(5)超时模块
模块代码:
modulecs(d,bout,dout,eout);
input[7:
0]d;
inputbout;
outputregdout;
outputregeout;
always
begin
if(bout==1)
begin
if(d==0)begindout=1;eout=0;end
elsebegindout=1;eout=1;end
end
elsebegindout=0;eout=0;end
end
endmodule
(6)闪烁模块
模块代码:
moduless(clk,en,qb);
inputclk;
inputen;
reg[24:
0]q;
regcout;
reg[3:
0]qa;
outputregqb;
always@(posedgeclk)
begin
if(q<10000000-1)q=q+1;
elseq=0;
if(q<10000000-1)cout=1;
elsecout=0;
end
always@(posedgecoutorposedgeen)
begin
if(en==1)qa=6;
elseif(qa==0)qa=0;
elseqa=qa-1;
end
always@(qa)
begin
if(qa==6)qb=0;
elseif(qa==5)qb=1;
elseif(qa==4)qb=0;
elseif(qa==3)qb=1;
elseif(qa==2)qb=0;
elseif(qa==1)qb=1;
elseif(qa==0)qb=0;
end
endmodule
各模块的组合
3.调试过程
打开QuartusII7.0主窗口,选择新建工程,新建VerilogHDL文本
(1)用VerilogHDL设计语言编写用于20M分频模块,产生秒脉冲用于倒计时。
(2)用VerilogHDL设计语言编写用于倒数计时的十进制模块。
(3)用VerilogHDL设计语言编写抢答与犯规模块。
(4)用VerilogHDL设计语言编写加减分模块。
(5)将设计好的文本模块添加到元件库中,最后新建原理图,将电路连好线,编译成功后进行管脚锁定。
准确无误后,载入电路箱。
4.功能测试
4.1测试仪器与设备
计算机一台
EDA实训箱一台
4.2性能指标测试
将做好的程序锁定好管脚下载到实训箱内,按键K0~K3分别是选手1~4号,K4是开始按键,K5是复位按键,K7是清零按键,K6是加减分按键,两个拨码开关分别控制加分和减分!
当按下K5时,数码管显示30秒,这时按下开始按钮K4,倒计时开始,若K0~K3其中之一按下,则绿灯闪3秒,倒计时暂停,数码管同时显示选手号;当倒计时结束时,若没人按下,则亮起黄灯,若有人按下,则黄灯红灯同时亮起,数码管显示选手号。
最后拨动加分的开关,按K6进行加分,拨动减分开关,按K6进行减分。
当按下K7时,各选手的分数都被重置为100。
5.实训心得体会
经过这次的实训,我个人得到了不少的收获,一方面加深了我对课本理论的认识,另一方面也提高了实验操作能力。
现在我总结了以下的体会和经验。
这次的实验跟我们以前做的实验不同,因为我觉得这次我是真真正正的自己亲自去完成。
所以是我觉得这次实验最宝贵,最深刻的。
就是实验的过程全是我们学生自己动手来完成的,这样,我们就必须要弄懂实验的原理。
在这里我深深体会到哲学上理论对实践的指导作用:
弄懂实验原理,而且体会到了实验的操作能力是靠自己亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。
我们做实验绝对不能人云亦云,要有自己的看法,这样我们就要有充分的准备,若是做了也不知道是个什么实验,那么做了也是白做。
实验总是与课本知识相关的。
在实验过程中,我们应该尽量减少操作的盲目性提高实验效率的保证,有的人一开始就赶着做,结果却越做越忙,主要就是这个原因。
我也曾经犯过这样的错误。
我们做实验不要一成不变和墨守成规,应该有改良创新的精神。
实际上,在弄懂了实验原理的基础上,我们的时间是充分的,做实验应该是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。
在实验的过程中我们要培养自己的独立分析问题,和解决问题的能力。
培养这种能力的前题是你对每次实验的态度。
如果你在实验这方面很随便,抱着等老师教你怎么做,拿同学的报告去抄,尽管你的成绩会很高,但对将来工作是不利的。
最后解决问题,兴奋异常。
在写实验报告,对于思考题,有很多不懂,于是去问老师,老师的启发了我,其实答案早就摆在报告中的公式,电路图中,自己要学会思考。
在这次的实验中,我对一些硬件、软件及其使用有了更深刻的认识。
另外,用文档形式写报告,是我们以前从来没有尝试过的。
可以说,做这次的实训,我们学生自己的能力得到了充分的发挥,跟以往那些充满条条框框的实验是不同的。
最后,通过这次的测试技术实验我不但对理论知识有了更加深的理解,对于实际的操作和也有了质的飞跃。
经过这次的实验,我们整体对各个方面都得到了不少的提高,希望以后学校和系里能够开设更多类似的实验,能够让我们得到更好的锻炼。
6.参考文献
(1)江国强EDA技术与应用(第三版)电子工业出版社2010
(2)江国强新编数字逻辑电路.北京邮电大学出版社2008
(3)江国强新编数字逻辑电路习题、实验与实训.北京邮电大学出版社2008
附录
附录1:
仿真波形图(部分模块)
(1)30秒倒计时模块
(2)抢答模块
附录2:
程序清单(上文已述)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA技术及应用 EDA 技术 应用 报告 抢答