1目录第一章EDA技术简介.......................................2第二章抢答器的设计要求...................................2第三章抢答器的设计分析...................................3第四章抢答器的抢答鉴别模块...............................44.1抢答鉴别的功能.....................................44.2抢答鉴别模块的源程序...............................44.3抢答鉴别模块的时序仿真图...........................7第五章抢答器的计时模块......................................................................85.1计时模块的功能.....................................85.2计时模块的源程序...................................85.3计时模块的时序仿真图...............................11第六章抢答器的计分模块...................................126.1计分模块的功能.....................................126.2计分模块的源程序...................................126.3计分模块的时序仿真图...............................15第七章抢答器的译码显示模块...............................167.1译码显示模块的功能.................................167.2译码显示模块的源程序...............................167.3译码显示模块的时序仿真图...........................17第八章抢答器的其他功能模块...............................188.1其他功能模块的具体信息.............................18第九章抢答器的顶层原理图设计.............................199.1顶层原理图的源文件.................................209.2顶层设计的时序仿真图...............................21第十章抢答器的硬件测试...................................2210.1抢答器的引脚绑定..................................2210.2抢答器的测试结果..................................22第十一章课程设计的总结...................................23参考文献...............................................232第一章EDA技术简介第二章抢答器的设计要求在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。同时,还可以设置计分、犯规及奖惩计录等多种功能。本设计的具体要求是:(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。(2)电路具有第一抢答信号的鉴别和锁存功能。(3)系统具有计分电路。(4)系统具有犯规电路。系统设计方案:系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮可以用如TA、TB表示;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口可用如LEDA、LEDB、LEDC、LEDD表示,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。整个系统至少有三个主要模块:抢答鉴别模块;抢答计时模块;抢答计分模块,其他功能模块(犯规警告模块,输出显示模块)。第三章抢答器的设计分析按照要求,我们可以将整个系统分为四个主要模块:抢答鉴别模块;抢答计时模块;抢答计分模块;译码显示模块。对于需显示的信息,需要增加或外接译码器,进行显示译码。考虑到实验开发平台提供的输出显示资源的限制,我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。整个系统的大致组成框图如图2.1所示。LEDALEDBLEDCLEDD3图2.1第四章抢答器的抢答鉴别模块4.1抢答鉴别模块的功能抢答队伍共分为四组A,B,C,D。当主持人按下START键后,四组队伍才可以按抢答键抢答。抢答成功后表示该组的指示灯见亮起,但在主持人未按下START键之前,所有的抢答键按下均是无效的。当任意一个组抢答成功后,其余的组按抢答键无效。抢答键为A,B,C,D四个键。4.2抢答鉴别模块的源程序libraryieee;useieee.std_logic_1164.all;entityjbisport(sta:instd_logic;rst:instd_logic;4a,b,c,d:instd_logic;a1,b1,c1,d1:outstd_logic;states:outstd_logic_vector(3downto0);start:outstd_logic);endentityjb;architectureartofjbisconstantw1:std_logic_vector:=0001;constantw2:std_logic_vector:=0010;constantw3:std_logic_vector:=0100;constantw4:std_logic_vector:=1000;signalsinor:std_logic;signalnsinor:std_logic;signals_start:std_logic;beginsinor=aorborcord;nsinor=not(aorborcord);start=s_start;process(sta,nsinor)isbeginif(sta='1')thens_start='1';elsif(nsinor'eventandnsinor='1')thens_start='0';endif;endprocess;process(rst,sta,sinor,nsinor)isbeginif(rst='1'orsta='1'ornsinor='1')thena1='0';b1='0';c1='0';d1='0';elsif(sinor'eventandsinor='1')thenif(s_start='1')thenif(a='1')thena1='1';b1='0';c1='0';d1='0';elsif(b='1')then5a1='0';b1='1';c1='0';d1='0';elsif(c='1')thena1='0';b1='0';c1='1';d1='0';elsif(d='1')thena1='0';b1='0';c1='0';d1='1';endif;endif;endif;endprocess;process(sinor)isbeginif(rst='1')thenstates=0000;elsif(sinor'eventandsinor='1')thenif(s_start='1')thenif(a='1')thenstates=w1;elsif(b='1')thenstates=w2;elsif(c='1')thenstates=w3;elsif(d='1')thenstates=w4;endif;endif;endif;endprocess;endarchitectureart;64.3抢答鉴别模块的时序仿真图7图4.1抢答开始后,A组按下抢答键,抢答成功第五章抢答器的抢答计时模块85.1抢答计时模块的功能主持人宣布抢答成功后,按下EN键,选手开始回答,系统开始计时。TA和TB键选择计时的时间(TA:9秒,TB:7秒)5.2抢答计时模块的源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjsisport(clr,ldn,en,clk:instd_logic;ta,tb:instd_logic;qa:outstd_logic_vector(3downto0);qb:outstd_logic_vector(3downto0));endentityjs;architectureartofjsissignalda: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;9endif;endprocess;process(tb,clr)isbeginif(clr='1')thendb=0101;elsif(tb'eventandtb='1')thenif(ldn='1')thenifdb=0000thendb=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=0000theniftmpb=0000thentmpa:=0000;elsetmpa:=1001;endif;iftmpb=0000then10tmpb:=0000;elsetmpb:=tmpb-1;endif;elsetmpa:=tmpa-1;endif;endif;qa=tmpa;qb=tmpb;endprocess;endarchitectureart;5.3抢答计时模块的时序仿真图11图5.1按下EN开始答题,回答问题时,选择TA模式计时第六章抢答器的计分模块126.1抢答计分模块的功能主持人确认选手回答正确后,按下ADD键为选手加分。6.2抢答计分模块的源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjfisport(rst:instd_logic;add:instd_logic;chose:instd_logic_vector(3downto0);aa2,aa1,aa0,bb2,bb1,bb0:outstd_logic_vector(3downto0);cc2,cc1,cc0,dd2,dd1,dd0:outstd_logic_vector(3downto0));endentityjf;archite