数字式竞赛抢答器说明书_第1页
数字式竞赛抢答器说明书_第2页
数字式竞赛抢答器说明书_第3页
数字式竞赛抢答器说明书_第4页
数字式竞赛抢答器说明书_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..《EDA技术》课程设计说明书数字式竞赛抢答器学院:电气与信息工程学院学生__程波指导王晓丽职称/学位硕士专业:电气工程及其自动化班级:电气本1202班学号:1230140210完成时间:2015年6月28日..摘要当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,那摩就必然离不开抢答器。抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,则报警灯亮。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。此次课程设计的内容是设计一个可容纳四组参赛者同时抢答的数字抢答器。主要模块有抢答鉴别模块、计时模块、犯规模块、计分模块以及显示模块,这些模块的组合构成了抢答器系统框图。通过编写相应的VHDL程序实现即功能仿真,顶层文件及整体仿真。关键词:抢答器;VHDL..目录1绪论 12抢答器的设计要求 23抢答器的功能模块 33.1抢答器的抢答鉴别模块设计 33.1.1抢答鉴别的功能 33.1.2抢答鉴别模块的时序仿真图 33.2抢答器的计时模块设计 43.2.1计时模块的功能 43.2.2计时模块的时序仿真图 43.3抢答器的计分模块设计 53.3.1计分模块的功能 53.3.2计分模块的时序仿真图 53.4抢答器的译码显示模块设计 63.4.1译码显示模块的功能 63.4.2译码显示模块的时序仿真图 63.5抢答器的犯规模块设计 73.5.1犯规模块的功能 73.5.2犯规模块的时序仿真图 74抢答器的顶层原理图设计 84.1顶层原理图的源文件 84.2顶层设计的时序仿真图 8结束语 10参考文献 11致谢 12附录 13附录A抢答鉴别模块VHDL源程序 13附录B计时模块VHDL源程序 15附录C计分模块VHDL源程序 18附录D译码显示模块VHDL源程序 21附录E犯规模块VHDL源程序 22..1绪论EDA是电子设计自动化〔ElectronicDesignAutomation的缩写,在20世纪90年代初从计算机辅助设计〔CAD、计算机辅助制造〔CAM、计算机辅助测试〔CAT和计算机辅助工程〔CAE的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。为了克服上述困难,加拿大InteractiveImageTechnologies公司推出的基于Windows95/98/NT操作系统的EDA软件〔ElectronicsWorkbench"电子工作台",EWB。他可以将不同类型的电路组合成混合电路进行仿真。EWB是用在计算机上作为电子线路设计模拟和仿真的新的软件包,是一个具有很高实用价值的计算机辅助设计工具。目前已在电子工程设计等领域得到了广泛地应用。与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。2抢答器的设计要求在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。同时,还可以设置计分、犯规及奖惩计录等多种功能。本设计的具体要求是:设计一个课容纳四组参赛者同时抢答的数字抢答器,可判断第一抢答者并报警指示抢答成功,其他组再抢答均无效。若提前抢答则对相应的抢答组发出警报。同时,要求给出系统总体组成框图,设计思路,完成以上模块的VHDL文件并进行仿真验证。3抢答器的功能模块3.1抢答器的抢答鉴别模块设计3.1.1抢答鉴别模块的功能该模块主要实现抢答过程中的抢答功能,并能对超前抢答进行警告。同时,抢答鉴别模块还用来准确直观地判断A、B、C、D四组抢答者谁最先按下按钮,并为显示端送出信号,通过译码显示和报警等途径使观众能够清楚地知道是哪一组抢答成功,能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路的抢答信号会将其余信号封锁。它是整个系统的核心部分。同时组别显示端为下一模块输入信号,以便主持人为该组抢答成功者进行加分的操作。抢答鉴别模块设计图如图1所示,其VHDL源程序见附录A。图1抢答鉴别模块设计图3.1.2抢答鉴别模块的时序仿真图如图2,为抢答鉴别模块的时序仿真图。抢答时设置时钟信号CLK,在抢答时需要一个允许开始抢答信号,设置为states,该信号输入后,指示灯亮,信号为LED,提示选手开始抢答,为了鉴别抢答者,设置A、B、C、D为了使系统重新进入抢答状态,还需要一个复位信号,设置为CLR。从仿真图中可以看出,A的速度最快,但明显有一点抢先,紧随其后的是B,C,D,这三人均没有抢先,而且可以看出,抢答开始后,灯LED[0]亮。图2抢答鉴别模块的时序仿真图3.2抢答器的计时模块设计3.2.1计时模块的功能该模块主要实现抢答过程中的计时功能,在有抢答开始后进行所设时间的倒计时,并且在倒计时后无人抢答显示超时并报警。设置抢答时钟信号为clk,计时预置控制端ldn,系统复位清零信号为clr,抢答使能信号为en,计时预置数据调整按钮个位为ta,十位为tb。计时输出信号端qa[3..0]和qb[3..0]。计时模块设计图如图3所示,其VHDL源程序见附录B。图3计时模块设计图3.2.2计时模块的时序仿真图如图4,为抢答器的计时模块的时序仿真图。当清零信号clr=1时,模块输出信号qa=0000,qb=0000。当预置控制信号ldn=1可以通过ta来调整qa,ta来一次高电平,则qa的数值就加1;用tb来调整qb,通过这两个调整信号可调整参赛者答题所需要的时间。在clr=0,ldn=0,en=1时,通过时钟信号clk的上升沿来进行倒计时。图4计时模块的时序仿真图3.3抢答器的计分模块设计3.3.1计分模块的功能系统的输入信号为:加分按钮端ADD,选择组别号输入端CHOSE[3..0];系统的输出信号为:A组分数输出端A2[3..0]、A1[3..0]、A0[3..0]B组分数输出端B2[3..0]、B1[3..0]、B0[3..0],C组分数输出端C2[3..0]、C1[3..0]、C0[3..0]。计分模块设计图如图5所示,其VHDL源程序见附录C。图5计分模块设计图3.3.2计分模块的时序仿真图如图6,为抢答器的计分模块的时序仿真图。计分模块的运行方式是按照十进制进行加法,即当时钟出现上升沿时就进行加一的操作。计分模块为哪组进行计分取决于鉴别模块的输入信号CHOSE,当CHOSE=0001时表示A组最先抢答,则在此模块中为A组计分;当CHOSE=0010时表示B组最先抢答,则在此模块中为B组计分;当CHOSE=0100时表示C组最先抢答,则在此模块中为C组计分;当CHOSE=1000时表示D组最先抢答,则在此模块中为D组计分。图6计分模块的时序仿真图3.4抢答器的译码显示模块设计3.4.1译码显示模块的功能该模块实际上是一个译码器,译码器是组合逻辑电路的一个重要的器件,该模块中主要实现抢答过程中将BCD码转化成7段数码管的功能。in4[3..0]为输入信号,out7[6..0]为输出信号。译码显示模块设计图如图7所示,其VHDL源程序见附录D。图7译码显示模块设计图3.4.2译码显示模块的时序仿真图如图8,为抢答器的译码显示模块的时序仿真图。当输入0001,输出0000110,即在共阴极数码管上显示1;即显示A组抢答成功。当输入0010,输出1011011,即在共阴极数码管上显示2;即显示B组抢答成功。当输入0011,输出1001111,即在共阴极数码管上显示3;即显示C组抢答成功。当输入0100,输出1100110,即在共阴极数码管上显示4;即显示D组抢答成功。图8译码显示模块的时序仿真图3.5抢答器的犯规模块设计3.5.1犯规模块的功能该模块主要实现抢答过程中的报警功能,当主持人按下控制键,在有限的时间内,没有人抢答或是主持人未按下控制按钮就抢答时开始报警,计数开始状态start,计数输入信号a、b、c、d以及状态输出信号y。犯规模块设计图如图9所示,其VHDL源程序见附录E。图9犯规模块设计图3.5.2犯规模块的时序仿真图如图10,为抢答器的犯规模块的时序仿真图。如图,当B组有人在未允许抢答之前抢答,其输出报警信号y为高电平。图10犯规模块的时序仿真图4抢答器的顶层原理图设计4.1顶层原理图的源文件单独模块只有彼此联系起来构成一个完整的系统,才能实现其功能,这个过程有两种实现方法:元件例化和元器件图示连线。为了能直观的表示各模块之间的连接关系。我采用元器件图示连线,这种连线方法思路清晰可见,而且用的时候很简单方便,即使出现错误也很好检查。按照要求,我们可以将整个系统分为五个主要模块:抢答鉴别模块;抢答计时模块;抢答计分模块;译码显示模块和犯规模块。对于需显示的信息,需要增加或外接译码器,进行显示译码。考虑到实验开发平台提供的输出显示资源的限制,我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。整个系统的总的顶层设计图如图11所示。图11抢答器总的顶层设计图4.2顶层设计的时序仿真图如图12,为抢答器的顶层设计的时序仿真图。从仿真图中可以看出,当允许答题后,四组〔A、B、C、D任意一组抢答时,在规定的时间抢答成功,即该组就加分。图中A组,抢答成功加分一次,LED[0]被点亮,其SCOREA加1。译码显示模块〔YMSC显示对应组号〔0000110,即为1。B组抢答成功两次,LED[1]被点亮,其SCOREA加2。译码显示模块〔YMSC显示对应组号〔1011011,即为2。D组抢答成功三次,LED[3]被点亮,其SCOREA加3。译码显示模块〔YMSC显示对应组号〔1111111,即为8。图12顶层设计的时序仿真图结束语本次的EDA课程设计虽然只有短暂的一周时间,但是通过实践,使我对EDA技术有了更进一步的了解。同时,大致懂得了一个课题制作的具体流程和实施方法。另外,课程设计对QuartusⅡ软件的使用要求较高,从而使我能较为熟练的运用此软件。在设计时,采用模块化的设计思路使得问题变的简单明了,大大缩短了时间,降低了发生错误的机侓,也便于修改和更新。课程设计中,需要找很多资料,在当今的信息化环境中,虽然资料很多,但需要仔细斟酌才能找到所要的。这次的课程设计很好的锻炼了这种能力。此外,与同学和老师的交流必不可少,我从中也学到了不少东西。课程设计是一次很好的锻炼机会,我从中学的很多知识对将来的学习和工作都有很大的帮助,十分感谢学校能提供这样一个机会。参考文献[1]潘松,黄继业.EDA技术与VHDL[M]〔第2版.北京:清华大学出版社,2007[2]曹昕燕,周凤臣,聂春燕,EDA技术实验与课程设计[M].北京:清华大学出版社,2006[3]潘松,黄继业.EDA技术实用教程-VHDL版[M]〔第四版.北京:科学出版社,2010[4]XX康芯电子GW48-PK3实验系统说明书.XX康芯电子,2006[5]姜雪松,吴钰淳.VHDL设计实例与仿真[M].机械工业出版社,2007[6]李伟英,谢完成.基于EDA技术的抢答器的设计与实现[J].科学技术与实现,2008.8〔11致谢在这次设计中,我花了不少的时间,其中有苦也有乐。苦的是我付出了不少的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。因为一个人的能力毕竟有限,在设计方面难免会出现这样或那样的错误,但正是这些促进了我的进步。根据对整体结构的分析,我采用层次结构化的设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这就培养了我对层次化设计的概念。在此次课程设计中,我真正体会到了知识地重要性。在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了就向老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到文档的书写,其间每一个过程都凝集着大家对我的支持。最后,在设计的过程中我进一步养成了软件设计的方法,完成了一个项目的程序编写,进一步了解了设计的步骤,也进一步加深了对课程的理解,增强了对本课程的兴趣,为以后的工作积累了一定的经验,在这次课程设计中,非常感谢王晓丽老师为我疑难解惑,也感谢同学们对我的帮助。附录附录A抢答鉴别模块VHDL源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityQIANGDAisport<CLR,CLK:instd_logic;A,B,C,D:instd_logic;states:bufferstd_logic_vector<3downto0>;LED:bufferstd_logic_vector<3downto0>;warm:outstd_logic>;endentityQIANGDA;architectureartofQIANGDAissignalQ:std_logic_vector<3downto0>;beginp1:process<A,B,C,D,CLR,CLK>beginifCLR='1'thenwarm<='0';Q<="0000";elsifCLK'eventandCLK='1'thenif<A='1'orQ<0>='1'>andnot<Q<1>='1'orQ<2>='1'orQ<3>='1'>thenQ<0><='1';endif;if<B='1'orQ<1>='1'>andnot<Q<0>='1'orQ<2>='1'orQ<3>='1'>thenQ<1><='1';endif;if<C='1'orQ<2>='1'>andnot<Q<0>='1'orQ<1>='1'orQ<3>='1'>thenQ<2><='1';endif;if<D='1'orQ<3>='1'>andnot<Q<0>='1'orQ<1>='1'orQ<2>='1'>thenQ<3><='1';endif;warm<=Q<0>orQ<1>orQ<2>orQ<3>;endif;endprocessp1;p2:process<states<0>,states<1>,states<2>,states<3>,LED>beginif<Q="0000">thenstates<="0000";elsif<Q="0001">thenstates<="0001";elsif<Q="0010">thenstates<="0010";elsif<Q="0100">thenstates<="0100";elsif<Q="1000">thenstates<="1000";endif;LED<=Q;endprocessp2;endart;附录B计时模块VHDL源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityJISHIisport<clr,ldn,en,clk:instd_logic;ta,tb:instd_logic;qa:outstd_logic_vector<3downto0>;qb:outstd_logic_vector<3downto0>>;endentityJISHI;architectureartofJISHIissignalda:std_logic_vector<3downto0>;signaldb:std_logic_vector<3downto0>;beginprocess<ta,clr>isbeginif<clr='1'>thenda<="1001";elsif<ta'eventandta='1'>thenif<ldn='1'>thenif<da="0000">thenda<="1001";elseda<=da-1;endif;endif;endif;endprocess;process<tb,clr>isbeginif<clr='1'>thendb<="0101";elsif<tb'eventandtb='1'>thenif<ldn='1'>thenifdb="0000"thendb<="1001";elsedb<=db-1;endif;endif;endif;endprocess;process<clk>isvariabletmpa:std_logic_vector<3downto0>;variabletmpb:std_logic_vector<3downto0>;beginif<clr='1'>thentmpa:="0000";tmpb:="0000";elsifclk'eventandclk='1'thenifen='1'thentmpa:=da;tmpb:=db;elsiftmpa="0000"theniftmpb="0000"thentmpa:="0000";elsetmpa:="1001";endif;iftmpb="0000"thentmpb:="0000";elsetmpb:=tmpb-1;endif;elsetmpa:=tmpa-1;endif;endif;qa<=tmpa;qb<=tmpb;endprocess;endarchitectureart;附录C计分模块VHDL源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityJIFENisport<ADD:instd_logic;CHOSE:instd_logic_vector<3downto0>;A2,A1,A0:OUTstd_logic_vector<3downto0>;B2,B1,B0:OUTstd_logic_vector<3downto0>;C2,C1,C0:OUTstd_logic_vector<3downto0>;D2,D1,D0:OUTstd_logic_vector<3downto0>>;ENDJIFEN;ARCHITECTURErtlOFJIFENISBEGINPROCESS<ADD,CHOSE>VARIABLEPOINTS_A2,POINTS_A1:STD_LOGIC_VECTOR<3DOWNTO0>;VARIABLEPOINTS_B2,POINTS_B1:STD_LOGIC_VECTOR<3DOWNTO0>;VARIABLEPOINTS_C2,POINTS_C1:STD_LOGIC_VECTOR<3DOWNTO0>;VARIABLEPOINTS_D2,POINTS_D1:STD_LOGIC_VECTOR<3DOWNTO0>;BEGINIFADD'EVENTANDADD='1'THENIFCHOSE="0001"THENIFPOINTS_A1="1001"THENPOINTS_A1:="0000";IFPOINTS_A2="1001"THENPOINTS_A2:="0000";ELSEPOINTS_A2:=POINTS_A2+'1';ENDIF;ELSEPOINTS_A1:=POINTS_A1+'1';ENDIF;ELSIFCHOSE="0010"THENIFPOINTS_B1="1001"THENPOINTS_B1:="0000";IFPOINTS_B2="1001"THENPOINTS_B2:="0000";ELSEPOINTS_B2:=POINTS_B2+'1';ENDIF;ELSEPOINTS_B1:=POINTS_B1+'1';ENDIF;ELSIFCHOSE="0100"THENIFPOINTS_C1="1001"THENPOINTS_C1:="0000";IFPOINTS_C2="1001"THENPOINTS_C2:="0000";ELSEPOINTS_C2:=POINTS_C2+'1';ENDIF;ELSEPOINTS_C1:=POINTS_C1+'1';ENDIF;ELSIFCHOSE="1000"THENIFPOINTS_D1="1001"THENPOINTS_D1:="0000";IFPOINTS_D2="1001"THENPOINTS_D2:="0000";ELSEPOINTS_D2:=POINTS_D2+'1';ENDIF;ELSEPOINTS_D1:=POINTS_D1+'1';ENDIF;ENDIF;ENDIF;A2<=POINTS_A2;A1<=POINTS_A1;A0<="0000";B2<=POINTS_B2;B1<=POINTS_B1;B0<="0000";C2<=POINTS_C2;C1<=POINTS_C1;C0<="0000";D2<=POI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论