一、课题简介在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。
同时,还可以设置计分、犯规及奖惩记录等各种功能。
本设计的具体要求是:设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
(2) 电路具有第一抢答信号的鉴别和锁存功能。
(3)系统具有计时功能(4)系统具有计分电路。
二、课题背景数字电路产品在生活中有着极其广泛的应用,包括计算机、数字通信、智能仪器仪表、自动控制及航天等领域中。
这些给人们生活,工作等方面带来了极大的方便。
数字电路设备实现简单,速度和可靠性好。
智力竞赛是一种能锻炼人的头脑开发人的IQ的一种大众化游戏,也起到娱乐的作用。
现在智力竞赛越来越被多数人喜爱和娱乐,而且国内外各地电视台、工厂、学校等单位也会常常举办类似的智力竞赛活动,然而智力竞赛抢答器是必要设备。
在有些地方举行的各种智力竞赛游戏中我们经常看到有抢答的环节,举办方大多数采用让选手通过举答题板的方法或者是举手的方式判断选手的答题权,这在某种程度上会因为主持人的主观误断造成比赛的不公平性。
所以,我们就需要一种具备自动锁存,置位,清零等功能智能抢答器来解决这些问题。
三、课题在国内外的研究现状抢答器一般分为电子抢答器和电脑抢答器。
电子抢答器的中心构造一般都是由抢答器由数字电子集成电路组成,其搭配的配件不同又分为,非语音非记分抢答器和语音记分抢答器。
非语音记分抢答器构造很简单,就是一个抢答器的主机和一个抢答按钮组成,在抢答过程中选手是没有记分的显示屏。
语音记分抢答器是由一个抢答器的主机、主机的显示屏以及选手的记分显示屏等构成,具有记分等功能。
电子抢答器多适用于学校和企事业单位举行的简单的抢答活动。
电脑抢答器又分为无线电脑抢答器和有线电脑抢答器。
无线电脑抢答器的构成是由:主机和抢答器专用的软件和无线按钮。
无线电脑抢答器利用电脑和投影仪,可以把抢答气氛活跃起来,一般多使用于电台等大型的活动。
有线电脑抢答器也是由主机和电脑配合起来,电脑再和投影仪配合起来,利用专门研发的配套的抢答器软件,可以十分完美的表现抢答的气氛。
抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块 ,而专用集成块的购买又很困难。
四、课题设计意义在这个竞争激烈的社会中,知识竞赛,评选优胜,选拔人才之类的活动俞动愈加频繁。
在竞赛中,都是多个选手一起参加,如果采用举手回答问题的这个方式来进行竞赛已不适应社会的需要。
并且在主持人提出问题时候,如果让选手用举手的方式来抢答,这在某种程度上会因主持人的主观误断造成比赛的不公平性。
而在当今社会里,比赛要追求准确、公正、直观地判断第一抢答者,这时候抢答器就派上用场了。
随着科技的发展,现在的抢答器向着数字化、智能化的方向发展,这是必然提高了智能抢答器的制造成本,鉴于现在小规模的知识竞赛越来越多,操作简单,经济适用的小型抢答器肯定很有市场。
五、设计内容1、课题阐述根据系统设计要求可知,系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA、LESB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
电路有三个主要模块:抢答鉴别模块QDJB;计时模块JSQ;记分模块JFQ。
可用静态显示,使用4个数码管,两个显示计时,一个显示组别,一个显示分数本系统应具有的功能有:第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能。
2、顶层原理图文件3、模块的介绍3.1抢答鉴别模块QDJB在抢答鉴别电路设计中,A、B、C、D四组抢答,理论上应该有16种可能情况,但实际上由于芯片反应速度快到一定程度时,两组以上同时抢答成功的可能性非常小,因此我们可设计成只有四种情况,这大大简化了电路的设计复杂性。
图2.2 QDJB3.2计时模块JSQ本系统中的计时器电路既有计时初始值的预置功能,又有减计数功能,功能比较齐全。
其中初始值的预置功能是将时间的两位数(单位为秒)分解成两个数分别进行预置,默认时间为60秒倒计时。
TA、TB端分别预置两位数值,再经过LDN端确认所置时间,EN端为高电平后开始计时。
每个数的预置则采用高电平计数的方式进行,CLK接时钟信号,操作简洁。
图2.3 JSQ3.3记分模块JFQ在计分器电路的设计中,按照一般的设计原则,按一定数进制进行加减即可,但是随着计数数目的增加,要将计数数目分解成十进制并进行译码显示分变得越来越麻烦。
因此为了减少译码显示的麻烦,一般是将一个大的进制数分解成数个十进制以内的时制数,计数器串级连接。
但随着位数的增加,电路的接口增加因此本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,而且由于设计要求加减分均为10的倍数故而可以将个位一直设为0,这样既减少了接口,又大大地简化了设计。
图2.4 JFQ3.4译码器显示模块YMQ本译码器用于将抢答鉴别模块抢答成功的组别和计时器的时间进行显示,AIN4[3..0]端输入需显示的二进制数组,DOUT7[6..0]端输出显示在数码管,显示显示范围为0~9。
图2.5 YMQ4、 VHDL源程序4.1抢答鉴别模块QDJBLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY QDJB ISPORT(CLR: IN STD_LOGIC;A, B, C, D: IN STD_LOGIC; --4个组A1,B1,C1,D1: OUT STD_LOGIC;STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY QDJB;ARCHITECTURE ART OF QDJB ISsignal a_1,b_1,c_1,d_1: STD_LOGIC;BEGINPROCESS(CLR,A,B,C,D) ISBEGINIF CLR='1' THEN STATES<="0000";a_1<='0';b_1<='0';c_1<='0';d_1<='0';--清零ELSIF a_1='1' or b_1='1' or c_1='1' or d_1='1' then null;--锁存,当有一组选中时其他组再抢答没作用ELSIF a='1' then a_1<='1';STATES <="0001";ELSIF b='1' then b_1<='1';STATES <="0010";ELSIF c='1' then c_1<='1';STATES <="0011";ELSIF d='1' then d_1<='1';STATES <="0100";END IF;a1<=a_1;b1<=b_1;c1<=c_1;d1<=d_1;END PROCESS;END ARCHITECTURE ART;4.2计时模块JSQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JSQ ISPORT(CLR,LDN,EN,CLK: IN STD_LOGIC;TA,TB: IN STD_LOGIC;QA: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);QB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY JSQ;ARCHITECTURE ART OF JSQ ISSIGNAL DA: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DB: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(TA,TB,CLR) ISBEGINIF CLR='1' THENDA<="0000";DB<="0000";ELSEIF TA='1' THENDA<=DA+'1' ;END IF;IF TB='1' THENDB<=DB+'1';END IF;END IF;END PROCESS;PROCESS(CLK)VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF CLR='1' THEN TMPA:="0000"; TMPB:="0110"; ELSIF CLK'EVENT AND CLK='1' THENIF LDN='1' THEN TMPA:=DA; TMPB:=DB;ELSIF EN='1' THENIF TMPA="0000" THENTMPA:="1001";IF TMPB="0000" THEN TMPB:="0110";ELSE TMPB:=TMPB-1;END IF;ELSE TMPA:=TMPA-1;END IF;END IF;END IF;QA<=TMPA; QB<=TMPB;END PROCESS;END ART;4.3记分模块JFQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JFQ ISPORT(RST: IN STD_LOGIC;ADD: IN STD_LOGIC;CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0);AA2,AA1,AA0,BB2,BB1,BB0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CC2,CC1,CC0,DD2,DD1,DD0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY JFQ ;ARCHITECTURE ART OF JFQ ISBEGINPROCESS(RST,ADD,CHOS)VARIABLE POINTS_A2,POINTS_A1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B2,POINTS_B1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C2,POINTS_C1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D2,POINTS_D1: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF (ADD'EVENT AND ADD='1') THENIF RST='1' THENPOINTS_A2:="0001"; POINTS_A1:="0000"; POINTS_B2:="0001"; POINTS_B1:="0000"; POINTS_C2:="0001"; POINTS_C1:="0000"; POINTS_D2:="0001"; POINTS_D1:="0000"; ELSIF CHOS="0001" THENIF POINTS_A1="1001" THENPOINTS_A1:="0000";IF POINTS_A2="1001" THENPOINTS_A2:="0000";ELSEPOINTS_A2:=POINTS_A2+'1';END IF;ELSEPOINTS_A1:=POINTS_A1+'1';END IF;ELSIF CHOS="0010" THENIF POINTS_B1="1001" THENPOINTS_B1:="0000";IF POINTS_B2="1001" THENPOINTS_B2:="0000";ELSEPOINTS_B2:=POINTS_B2+'1';END IF;ELSEPOINTS_B1:=POINTS_B1+'1';END IF;ELSIF CHOS="0100" THENIF POINTS_C1="1001" THENPOINTS_C1:="0000";IF POINTS_C2="1001" THENPOINTS_C2:="0000";ELSEPOINTS_C2:=POINTS_C2+'1';END IF;ELSEPOINTS_C1:=POINTS_C1+'1';END IF;ELSIF CHOS="1000" THENIF POINTS_D1="1001" THENPOINTS_D1:="0000";IF POINTS_D2="1001" THENPOINTS_D2:="0000";ELSEPOINTS_D2:=POINTS_D2+'1';END IF;ELSEPOINTS_D1:=POINTS_D1+'1';END IF;END IF;END IF;AA2<=POINTS_A2; AA1<=POINTS_A1; AA0<="0000"; BB2<=POINTS_B2; BB1<=POINTS_B1; BB0<="0000"; CC2<=POINTS_C2; CC1<=POINTS_C1; CC0<="0000"; DD2<=POINTS_D2; DD1<=POINTS_D1; DD0<="0000"; END PROCESS;END ART;4.4译码器显示模块YMQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ ISPORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YMQ;ARCHITECTURE ART OF YMQ ISBEGINPROCESS(AIN4)BEGINCASE AIN4 ISWHEN "0000"=>DOUT7<="0111111"; --0 WHEN "0001"=>DOUT7<="0000110"; --1 WHEN "0010"=>DOUT7<="1011011"; --2 WHEN "0011"=>DOUT7<="1001111"; --3 WHEN "0100"=>DOUT7<="1100110"; --4 WHEN "0101"=>DOUT7<="1101101"; --5 WHEN "0110"=>DOUT7<="1111101"; --6 WHEN "0111"=>DOUT7<="0000111"; --7 WHEN "1000"=>DOUT7<="1111111"; --8 WHEN "1001"=>DOUT7<="1101111"; --9 WHEN OTHERS=>DOUT7<="0000000";END CASE;END PROCESS;END ART;5、仿真波形5.1抢答鉴别模块QDJB 5.2计时模块JSQ5.3记分模块JFQ5.4 译码显示模块YMQ5.5仿真波形图释对于抢答鉴别模块,CLR低电平有效,当其为高电平时,输出无效。