抢答器(-Verilog-HDL实现)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实用文档桂林电子科技大学信息科技学院《EDA技术与应用》实训报告学号0952100110姓名赵万里指导教师:江国强杨艺敏2011年04月20日实用文档实训题目:智能电子抢答器1.系统设计1.1设计要求1.1.1设计任务设计并制作一台智能电子抢答器。1.1.2技术要求①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。③电路具有第一抢答信号的鉴别和锁存功能。在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。1.2方案比较(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。(2)电路具有第一抢答信号的鉴别和锁存功能。在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。此时,电路应具备自锁功能,使别组的抢答开关不起作用。实用文档(3)自锁后,用八段数码管显示抢答者的序号,同时指示灯亮。(4)设置计分电路。每组在开始时预置成100,抢答后由主持人计分,答对一次加10,否则减10分。(5)电路具有淘汰功能,当每组的100分减少到0时,该组被淘汰,以后每次抢答,该组抢答按钮都无效。1.3方案论证1.3.1总体思路总体分为四部分:倒计时模块、计分模块、抢答模块和分屏显示模块。倒计时模块用一个20000000分频。产生一个进位,连接一个30的减法计数器构成。计分模块中分为两部分,一部分用于计分,另一部分用于处理计数器的进制问题,当加到A时自动向前进位,并且把A变为0。当减少到F时,向前借位,并且把F变为9。这就实现了把十六进制变成一般用的十进制。抢答模块分两部分,复位模块和抢答模块,每次抢答都要初始化按键。抢答模块又分为误抢,无人抢答和正确抢答。每次抢答,当有一组按下抢答,立即锁定,亮相应的分数和组号,并且亮起各种抢答所对应的灯信号。(即所要求的蜂鸣器)分屏显示模块中用每次抢答的组号作为输入,当抢答后立即换屏显示其组号分数。1.3.2设计方案(1)根据设计要求需要一个时钟的接入端clk,清除端clrn,使倒实用文档计时复位,count进位端当倒计时到0时进位,进位端返回到j,使倒计时停止。当佣人抢答时,输入一个低电平,在取反输入到i,使倒计时停止。(图1)(2)电路的计分模块,d位组号的输入端,是s1位计数按键,p位加减的控制端,高电平是s1位加分,低电平s1位减分,t1、t2、t3、t4位各组的分数输出端,cnn1、cnn2、cnn3、cnn4分别为第一组、第二组、第三组、第四组的减分进位端,当分数减少到0的时候,产生进位,使该组不能再次抢答,使其淘汰。(图2)(3)抢答模块,clk位时钟的输入端,再程序的开始捕捉时钟的上实用文档升沿,qd是抢答初始化,每次抢答开始首先初始化,使抢答就位,准备开始抢答。qd1、qd2、qd3、qd4为四组的抢答按键,每次有一组抢答后程序立即锁定,使别的组不能再抢答。K为抢答开的的控制键,k高电平时开始抢答,低电平时抢答即为误抢。cnn1、cnn2、cnn3、cnn4位减数进位端,sig、sig1、sig2为各种抢的标志的输出,即亮灯(蜂鸣器)。d位抢答者的组号输出端。(图3)(4)分屏显示模块mux_1,d,t1、t2、t3、t4分别为组号和各组分数的输入端,w换屏信号的输入端,qs位输出。(图4)(5)全局电路实用文档2.各个模块程序的设计(1)倒计时模块,20000000分频产生进位,输入到计数器模块,完成30秒计数。(2)计分模块,用一个按键和一个拨动开关,拨动开关高点平时按键每按一次加十分,低电平时每按一次减十分。(3)抢答模块A、一个复位键,四个抢答键,当按下复位键后,如果有选手抢答,则电路立即锁定,使其他组不能再次抢答。B、在没有开始抢答之前,如果用人抢答即为误抢,显示其组号,分数。C、30秒倒计时开始,抢答者都不抢答,则表示无人抢答,亮起相应的灯。(4)分屏显示模块,此模块完全由输入的组号控制。3.制作与调试过程(1)30秒倒计时的调试,管脚锁定clk,使每秒产生一个进位,送到减数器模块。实用文档(2)计分模块,锁定两组的管脚,进行操作,组号的输入用拨动开关控制。(3)抢答模块,锁定相应的管脚,进行抢答,误抢和无人抢答操作,测试是否能够锁定,以及亮灯,显示正确的组号分数。4.结论本次实训为期三周,确定下题目后,首先就是方案的确定。经过老师的辅导、同学的帮助、翻阅相关资料,综合各方面的考虑。了解EP1C3T144C8芯片的构造,需要查看大量的英文资料,我并没有气馁,一个管脚一个管脚的对比,终于弄清楚了实现功能的大体思路。然后就是再次学习VerilogHDL语言,虽然以前学过,但是差不多都忘了,用了几天时间熟悉了VerilogHDL源程序的编写。最后是硬件的调试,这是个漫长的过程,EP1C3T144C8芯片的接口也非常的繁杂,最后我坚持了下来。5.实训心得体会通过这次实训,我对VerilogHDL有了深入的认识。同时也对EDA产生了更加浓厚的兴趣。本次实训,也检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在quartus软件的应用上还有很多不成熟不理解的地方,但是相信在以后的学习生活中我可以很好的与予改正,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。6.参考文献1江国强EDA技术与应用第三版电子工业出版社2010实用文档2谭会生,张昌凡.EDA技术及应用.第二版.西安电子科技大学出版社,2009附录:①仿真波形图(部分模块)(图130秒倒计时)②程序清单(1)倒计时模块A.20000000分频程序modulecnt60(clk,cout,i,j,m);inputclk,i,j,m;reg[24:0]q;outputregcout;always@(posedgeclk&(~i)&(~j)&(~m))beginif(q20000000-1)q=q+1;elseq=0;if(q==20000000-1)cout=1;elsecout=0;endendmoduleB、30秒倒计时程序实用文档modulecntdj(clrn,clk,q,count);inputclk,clrn;outputreg[7:0]q;outputregcount;always@(posedgeclkornegedgeclrn)if(~clrn)beginq='h30;count='h0;endelsebeginif(q==0)q='h30;elseq=q-1;if(q[3:0]=='hf)beginq[3:0]=9;endif(q=='h0)count=1;elsecount=0;endendmodule(2)计分模块程序modulejiajianjishu(t1,t2,t3,t4,s1,d,count,cnn1,cnn2,cnn3,cnn4,p);inputs1,p;input[3:0]d;outputregcount,cnn1,cnn2,cnn3,cnn4;outputreg[11:0]t1,t2,t3,t4;initialbegint1='h100;t2='h100;t3='h100;t4='h100;endalways@(posedges1)实用文档beginif(p)beginif(d=='h1)begint1=t1+'h10;if(t1[7:4]=='ha)begint1[7:4]=0;t1[11:8]=t1[11:8]+1;endelseif(t1=='h1000)count=1;elsecount=0;endelseif(d=='h2)begint2=t2+'h10;if(t2[7:4]=='ha)begint2[7:4]=0;t2[11:8]=t2[11:8]+1;endelseif(t2=='h1000)count=1;elsecount=0;endelseif(d=='h3)begint3=t3+'h10;if(t3[7:4]=='ha)begint3[7:4]=0;t3[11:8]=t3[11:8]+1;endelseif(t3=='h1000)count=1;elsecount=0;endelseif(d=='h4)begint4=t4+'h10;实用文档if(t4[7:4]=='ha)begint4[7:4]=0;t4[11:8]=t4[11:8]+1;endelseif(t4=='h1000)count=1;elsecount=0;endelsebegint1='h100;t2='h100;t3='h100;t4='h100;endendelseif(~p)beginif(d=='h1)begint1=t1-'h10;if(t1[7:4]=='hf)begint1[7:4]=9;t1[11:8]=t1[11:8]-1;if(t1[11:8]=='hf)begint1[11:8]=0;end/*elset1[11:8]=t1[11:8];*/endelseif(t1[11:4]=='h0)begincnn1=1;t1[11:0]='h0;endelsecnn1=0;endelseif(d=='h2)begint2=t2-'h10;if(t2[7:4]=='hf)begint2[7:4]=9;t2[11:8]=t2[11:8]-1;实用文档if(t2[11:8]=='hf)begint2[11:8]=0;end/*elset2[11:8]=t2[11:8];*/endelseif(t2[11:4]=='h0)begincnn2=1;t2[11:0]='h0;endelsecnn2=0;endelseif(d=='h3)begint3=t3-'h10;if(t3[7:4]=='hf)begint3[7:4]=9;t3[11:8]=t3[11:8]-1;if(t3[11:8]=='hf)begint3[11:8]=0;end/*elset3[11:8]=t3[11:8];*/endelseif(t3[11:4]=='h0)begincnn3=1;t3[11:0]='h0;endelsecnn3=0;endelseif(d=='h4)begint4=t4-'h10;实用文档if(t4[7:4]=='hf)begint4[7:4]=9;t4[11:8]=t4[11:8]-1;if(t4[11:8]=='hf)begint4[11:8]=0;end/*elset4[11:8]=t4[11:8];*/endelseif(t4[11:4]=='h0)begincnn4=1;t4[11:0]='h0;endelsecnn4=0;endelsebegint1=100;t2=100;t3=100;t4=100;endendendendmodule(3)抢答模块程序moduleqdq(clk,qd,qd1,qd2,qd3,qd4,Sig,Sig1,Sig2,d,k,g,cnn1,cnn2,cnn3,cnn4);inputclk,qd,qd1,qd2,qd3,qd4,k,g,cnn1,cnn2,cnn3,cnn4;outputSig,Sig1,Sig2;output[3:0]d;实用文档regSig='h0,Sig1='h0,Sig2='h0;reg[3:0]d;regzd=1'b0;always@(posedgeclk)beginif(qd==1'b0)beginzd=1'b1;Sig='h0;Sig1='h0;Sig2='h0;d='h0;endif(k)beginif(zd==1'b1)beginif((qd1==1'b0)&(~cnn1))beginzd=

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功