《EDA技术及应用》实训报告抢答器.docx

上传人:b****2 文档编号:17978967 上传时间:2023-08-05 格式:DOCX 页数:19 大小:186.04KB
下载 相关 举报
《EDA技术及应用》实训报告抢答器.docx_第1页
第1页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第2页
第2页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第3页
第3页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第4页
第4页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第5页
第5页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第6页
第6页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第7页
第7页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第8页
第8页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第9页
第9页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第10页
第10页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第11页
第11页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第12页
第12页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第13页
第13页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第14页
第14页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第15页
第15页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第16页
第16页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第17页
第17页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第18页
第18页 / 共19页
《EDA技术及应用》实训报告抢答器.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《EDA技术及应用》实训报告抢答器.docx

《《EDA技术及应用》实训报告抢答器.docx》由会员分享,可在线阅读,更多相关《《EDA技术及应用》实训报告抢答器.docx(19页珍藏版)》请在冰点文库上搜索。

《EDA技术及应用》实训报告抢答器.docx

《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:

程序清单(上文已述)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2