您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电子线路CAD课程设计论文-抢答器
电子线路CAD课程设计论文抢答器(verilog+Ise)学号:U200713959院系:控制科学与工程系专业班级:自动化0707班姓名:王志伟一、概述在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。通过抢答者的指示灯显示、数码显示和警示显示等手段指示出第一抢答者。一般抢答器由单片机以及外围电路组成,分为八路十路等不同,八路和十路的差别是,抢答器背面的接口有几组,和外形没有关系。二、课题要求1.设计一个可容纳6组参赛的数字式抢答器,每组设一个按钮,供抢答使用。2.抢答器具有第一信号鉴别与锁存功能,除第一个抢答者外,其余不起作用。3.设置一个主持人“复位”按钮。4.主持人复位后,开始抢答,第一信号鉴别与锁存电路得到信号后,有指示器显示抢答组别,扬声器发出2~3秒的音响。5.设置一个记分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。6.其它创新功能。三、测试工具平台编写语言:Verilog编译调试工具:XilinxISE9.2i运行板子:XilinxBasys_1.1四、实现功能a.基本功能1.抢答器可以容纳6组参赛的数字式抢答器,每组都设置由一个抢答按钮,供参赛者抢答。2.抢答器具有第一信号鉴别与锁存功能,除第一个抢答者外,其余不起作用。3.设置一个主持人“复位”按钮,每次抢答之后按此按钮之后才能进行下一轮抢答。4.主持人复位后,开始抢答,第一信号鉴别与锁存电路得到信号后,有指示器显示抢答组别,扬声器发出2~3秒的音响。5.设置一个记分电路,由主持人记分,答对一次加1分,答错一次减1分。b.创新功能1.初始分数可以在每次抢答比赛开始前进行设置,由于考虑到现实的方便性,设置范围为1至9分2.当某位参赛人员的积分减少至为0分时,则该人员被彻底淘汰,在下一轮抢答中抢答按钮无效。3.在每次才赛人员抢答完之后,由主持人或相关人员通过两个按钮来判断答题是否正确,以确定其加分还是减分,程序会检测该按钮并且不允许进行第二次被按下,以免造成分数的计数错误。4.当时间到最后3秒是会发出滴滴滴的提示音,在参赛人员按下抢答按钮也会发出长1s的提示音。5.程序设置了一个抢答器的倒计时,每轮抢答为10s倒计时,并且时间倒计为0之后发出提示音,强大之后,时间重新复位,便于下一轮计时。6.在支持人判断抢答者答题正误之前或之后,可以通过两个按钮切换当前状态,从而可以查看所有选手的积分。7.使用的状态机思想,设置了8种状态:状态意义数码管显示0设置初始分数当前状态和设置的初试分数1~6当前抢答过程被相应编号的选手抢答到当前状态和该选手的目前分数7正在抢答中数码管显示当前状态和正在倒计的时间五、设计思路a.总体电路1.Display原理图2.总原理图该电路是在Ise中将所写的各个模块用导线连接之后的效果,从这个图可以很清晰的看到程序的结构和思路。b.详细设计在对问题进行分析之后将该程序分成一下模块,如表所示:模块名作用和意义Restart抢答器的重新开始信号的输入,用以改变当前的状态至0,在该模式下进行初始分数设置,即进行新一轮抢答。Mode_latch_change每当强大之后,所存当前状态,并在此基础上通过按键调整状态,然后通过display模块显示,由此可以查看各个选手的当前积分。Set_score在0状态时,利用两个按钮设置初始分数,提供加数设置和减数设置。Time_count每次支持人按下reset按钮进行新一轮抢答时,该模块立即启动,开始倒计时10s,并通过display显示,同时发出时间到最后3s和时间完的信号,以便控制提示音。Score_count主持人通过两个按键对抢答者回答对错进行判断,同时改变其积分。Display将需要数码管输出显示的信号输入,通过当前状态来判断输出那路信号。BcdToSeg将display模块中被选择的4位bcd码转化成数码管相应的8位信号Seg_driver数码管的选通信号,利用时钟循环扫描。Sound_alarm将Time_count中的信号输入,和1000hz信号取并,得到输出到喇叭,得到相应的提示音。Control控制模块,采集6位选手的按键情况,由此得到当前的状态,作为其他模块的状态参照,同时发出相应的一些控制信号。六、模块仿真1.restart模块仿真波形如下:分析:可以看到,cp1024hz的时钟每个上升沿检测start_clk信号下降沿,并且在其每个下降沿对start信号翻转,而抢答器在start=0是表示设置初始分数,start=1是表示抢答正常进行,所以利用start_clk可以控制抢答器重新开始。2.Mode_latch_change模块仿真波形如下:分析:可以看出,该模块在start=1是开始工作,当flag_pressed(表示选手抢答)信号置为1时,模块锁存当前的状态mode_in,即相应的强大选手的编号,在flag_pressed=1的过程中,可以通过按up_clk和down_clk两个按钮设置mode_out,由此输入到display,从而显示各个选手的分数信息。模块中提供1024hz的时钟对up_clk和down_clk扫描,一旦有脉冲,则在下降沿做相应动作,可以消除按键的抖动影响。3.Set_score模块仿真波形如下:分析:可以看出该模块在start=0是工作,通过1024hz时钟对两个按键扫描,对初始分数进行加计数和减计数,即一个0~9的计数器,同时消除按键抖动的影响。4.Time_count模块仿真波形如下:分析:可以看出该模块在start=1是正常工作,当flag_pressed信号为0时,时间从9s开始倒计时,当有选手抢答,flag_pressed有0变为1时,时间停止计数,在支持人按下reset按键之后,计数值恢复为9s,并开始倒计数,当时间倒计至3时,time_less_alarm信号由0变成1,当时间倒计至0时,time_out信号由0变成1,这两个信号都送至sound_alarm并经过变换之后驱动喇叭得到提示音。5.Score_count模块仿真波形如下:分析:有图可以看出,该模块在start=1时正常工作,利用1024hz的时钟对right_key和wrong_key扫描,消除抖动之后,做相应的分数设置操作,给谁加减分通过当前的mode判断,并且当某选手分数减至0分时,该选手的一个标志位zero被置为1,表示该选手已被淘汰,下一轮抢答将没有资格抢答,相应的按键也将无效。6.Display模块仿真波形如下:分析:该模块在start=1时工作,用1024hz信号扫描mode变化,并以此作为依据输出相应的信号到数码管中显示,这种对应关系在前面的表格中已经详细说明,不再赘述。7.Sound_alarm模块仿真波形如下:分析:该模块在start=1时正常工作,输入有sound_en信号time_less_alarm,sound_en=1表示有选手抢答或者时间倒计至0,此时alarm输出1s钟的1024hz信号,驱动喇叭得到提示音;time_less_alarm=1信号表示时间只剩下3s,此时alarm输出0.5s钟的1024hz信号,驱动喇叭得到提示音。8.Control模块仿真波形如下:分析:该模块在start=1时正常工作,当相应的key按键按下时,mode变成相应选手的编号状态,并且flag_pressed变成1,此时sound_en被置为1,驱动喇叭得到1s的1khz的提示音。并且只有当支持人按下reset键之后才恢复至0,;当time_out信号为1时,表示时间倒计至0,此时sound_en被置为1,驱动喇叭得到提示音。七、实验感想1.通过这次课程设计,加强了我们动手、思考和解决问题的能力。在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。2.做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。3.平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映象深刻。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个课程设计对我的作用是非常大的。4.通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。5.此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。最后衷心感谢老师的悉心授课和同学门的热心帮助!八、源代码1.restart.vmodulerestart(cp1024hz,start_clk,started);//started==0设置初始分数,started==1开始工作inputcp1024hz,start_clk;outputstarted;regstarted;reg[1:0]init_temp=0;regstart_clk1;always@(posedgecp1024hz)beginstart_clk1=start_clk;endwirestart_clk2;assignstart_clk2=start_clk1&(~start_clk);//变换start_clk信号,防止抖动以及便于cp1024hz扫描always@(posedgecp1024hz)//start正常工作抢??_clkstarted翻转,为0时设置分数,为1时beginif(init_temp==2)beginstarted=0;init_temp=init_temp+1;endelseif(init_temp==3)begininit_temp=init_temp;if(start_clk2)beginstarted=~started;endendelsebegininit_temp=init_temp+1;endendendmodule2.mode_latch_change.vmodulemode_latch_change(cp1024hz,started,flag_pressed,latch_clk,up_clk,down_clk,mode_in,mode_out);inputcp1024hz,started,flag_pressed;//时钟信号,抢答开始信号,抢答中已经有按下键信号inputlatch_clk;//锁存mode的脉冲信号inputup_clk,down_clk;//设置mode的两个按键,上调键和下调键input[3:0]mode_in;//从control的mode输出引进outputmode_out;//抢答按键之后由modein变modeoutreg[3:0]mode_out;regup_clk1,down_clk1,latch_clk1;always@(posedgecp1024hz)beginup_clk1=up_clk;down_clk1=down_clk;latch_clk1=latch_clk;endwireup_clk2,down_clk2,latch_clk2;//对输入的信号??变化???阌赾p1024hz的脉冲捕获,并且可以防止设置mode的两个按键的抖动assignup_clk2=up_clk1&(~up_clk);assigndown_clk2=down_clk1&(~down_clk);assignlatch_clk2=latch_clk1&(~latch_clk);al
本文标题:电子线路CAD课程设计论文-抢答器
链接地址:https://www.777doc.com/doc-76593 .html