智力竞赛抢答器设计.docx
- 文档编号:9686105
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:21
- 大小:206.51KB
智力竞赛抢答器设计.docx
《智力竞赛抢答器设计.docx》由会员分享,可在线阅读,更多相关《智力竞赛抢答器设计.docx(21页珍藏版)》请在冰豆网上搜索。
智力竞赛抢答器设计
1前言
人类社会进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。
现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;后者的核心就是EDA技术。
没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,但是面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集体化设计,改变传统的设计思路,将精力集中到设计构想、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。
传统的EDA设计方法采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试,由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便,所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA)是自顶向下且先进高效的。
在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有一定的优势。
所以本次设计的抢答器抛弃了传统的设计方法,选择了采用主流的EDA技术进行设计。
智力竞赛是“快乐学习”这一教育模式的典范,它采用在规定的一段时间内抢答和必答等方式,在给人们的生活带来乐趣的同时,也使参与者和观众在愉悦的氛围中学到一些科学知识和生活知识,因此很受大家的喜欢。
但是,在这类比赛中,对于谁先谁后抢答,在何时抢答,如何计算答题时间等等问题,若是仅凭主持人的主观判断,就很容易出现误判。
所以,我们就需要一种具备自动锁存,置位,清零等功能智能抢答器来解决这些问题。
智能竞赛抢答器是一种应用十分广泛的设备,在各种竞赛、抢答场合中,它都能客观、迅速地判断出最先获得发言权的选手。
早期的抢答器只是由三个三极管、可控硅、发光管等器件组成的,能通过发光管的指示辨认出选手号码。
现在大多数智能抢答器都是由单片机或数字集成电路构成的,并且新增了许多功能,如选手号码显示,抢按前或抢按后的计时,选手得分显示等功能。
2方案设计与论证
一般来说,设计一台智能抢答器,必须能够准确判断出第一位抢答者,并且通过数显、蜂鸣这些途径能让人们很容易得知谁是抢答成功者,并设置一定的回答限制时间,让抢答者在规定时间内答题,主持人根据答题结果评出最终赢家。
所以我们在设计智能抢答器的模块需要满足鉴别、计时、数显、报警等功能,具体设计要求如下:
(1)抢答器可容纳四组选手,并为每组选手设置一个按钮供抢答者使用;为主持人设置一个控制按钮,用来控制系统清零(组别显示数码管灭灯)和抢答开始。
(2)电路具有对第一抢答信号的锁存、鉴别和显示等功能。
在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,计时显示器显示初始时间并开始倒计时,若参赛选手按下抢答按钮,则该组别的信号立即被锁存,并在组别显示器上显示该组别,同时扬声器也给出音响提示,此时,电路具备自锁功能,使其他抢答按钮不起作用。
(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答无效提示,主持人可以按复位键,开始新一轮的抢答。
(4)抢答器具有限时抢答的功能,且一次抢答的时间由主持人设定,当主持人启动开始键后,要求计时器采用倒计时,同时倒计时到0秒时扬声器会发出声响提示。
(5)参赛选手在设定的时间内抢答,则抢答有效,定时器停止工作,根据抢答结果由数码管显示选手的组别,并一直保持到主持人将系统清零为止。
本设计为四路智能抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,抢答器共有三个输出显示,选手代号、计数器的个位和十位,它们输出全部为BCD码输出,这样便于和显示译码器连接。
当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器短暂响起。
对回答问题所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、倒计时启动功能。
依据系统的设计要求可知,系统的输入信号有:
四组的抢答按钮A、B、C、D。
系统清零信号QDJB,系统时钟信号CLK,计分复位端JFRST,计时预置数控制端LDN,计时使能端EN,计时预置数调整按钮TA、TB。
系统的输入信号有:
四个组抢答成功与否的指示控制信号输出口LEDA,LEDB,LEDC,LEDD,四组抢答时的计时控制显示信号若干,抢答成功组别显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;抢答计时功能;组别显示功能;蜂鸣器提示功能。
对于需要显示的信息,需要增加或外接译码器,进行显示译码。
抢答开始时主持人按下抢答复位键(RST),系统进入抢答状态,计时模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时。
计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。
当主持人给出倒计时停止信号时,扬声器停止鸣叫。
3软件介绍
3.1QuartusII简介
Max+plusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对Max+plusII的更新支持。
QuartusII是Altera公司继Max+plusII之后开发的一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件,它的版本不断升级,从4.0版到10.0版,这里介绍的是QuartusII8.0版,该软件有如下几个显著的特点:
该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera公司的MAX3000A系列、MAX7000系列、ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列,支持MAX7000/MAX3000等乘积项器件。
支持MAXIICPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。
支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
3.2QuartusII数字系统开发流程
(1)设计输入:
包括原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种方式。
(2)编译:
先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。
(3)仿真与定时分析:
仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。
仿真包括功能仿真和时序仿真。
定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立/保持时间进行分析。
(4)编程与验证:
用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。
在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。
4单元模块电路的设计和实现
根据对抢答器的功能要求,把要设计的系统划分为三个功能模块:
抢答信号鉴别模块、计时模块和扬声器控制电路。
但是由于实际情况的限制,数码显示模块和计分模块没有放在总程序中。
4.1抢答鉴别模块的设计与实现
本模块主要是对参与抢答的四组谁先抢答做出判断,将抢答成功者的组别号进行显示,同时,与选手对应的LED灯会亮起,蜂鸣器发出2-3秒鸣叫,表明抢答成功。
用A、B、C、D分别代表参赛的四组,A1、B1、C1、D1则代表与之对应的各组的抢答按钮显示端,系统清零信号CLR,组别显示端G[3..0]。
抢答开始后,当有小组按下抢答键,抢答信号判定电路QDJB通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他参赛组的锁存器清零,组别显示和计时会保存到主持人对系统进行清零操作时为止。
A、B、C、D四组抢答从理论上来说,应该有16种可能情况,但是由于时钟信号的频率很高而且是在时钟信号上升沿的状况下才做出的鉴别,所以在这里四组同时抢答成功的可能性非常小,因此可以只设计四种情况,即A、B、C、D分别为0001、0010、0100、1000,这样使电路的设计得以简化。
VHDL部分源程序如下:
IF(CLR='1')THENG<="0000";LOCK:
='1';A1<='1';B1<='1';C1<='1';D1<='1';
ELSIF(LOCK='1')THEN
IF(A='1'ANDB='0'ANDC='0'ANDD='0')THEN
A1<='0';B1<='1';C1<='1';D1<='1';G<=W1;LOCK:
='0';
ELSIF(A='0'ANDB='1'ANDC='0'ANDD='0')THEN
A1<='1';B1<='0';C1<='1';D1<='1';G<=W2;LOCK:
='0';
ELSIF(A='0'ANDB='0'ANDC='1'ANDD='0')THEN
A1<='1';B1<='1';C1<='0';D1<='1';G<=W3;LOCK:
='0';
ELSIF(A='0'ANDB='0'ANDC='0'ANDD='1')THEN
A1<='1';B1<='1';C1<='1';D1<='0';G<=W4;LOCK:
='0';
图4-1抢答鉴别模块仿真图QDJB
CLR低电平有效,当其为高电平时,输出无效。
当其为低电平时,A,B,C,D哪一个为高电平则输出哪个,对应的LED灯亮。
4.2计时模块的设计与实现
在计时模块的设计中设置了固定和可调的两个时间,可调时间通过预置键SET来调节,计数时两个数码管QA,QB显示剩余时间,分别表示两位倒计时的个位和十位。
当抢答鉴别模块成功判别出最先按下抢答按钮的参赛组后,在成功鉴别出哪组最先抢答后,主持人按下计时信号,则进入计时状态。
计时模块开始工作从规定值开始以秒计时,计时至0秒时停止,此时蜂鸣器发出报警信号,提醒答题已终止。
该系统输入信号有:
系统清零信号CLR,计时预置控制端LDN,计时使能端EN,系统时钟信号CLK,计时预置数据调整按钮TA、TB。
系统输出信号有:
倒计时输出端QA[3..0]、QB[3..0]、蜂鸣器BELL。
VHDL部分源程序如下:
IFCLR='1'THENTMPA:
="1001";TMPB:
="1001";SWYUZHI<="0000";GWYUZHI<="0000";DA<="1001";DB<="1001";
ELSIFCLK'EVENTANDCLK='1'THEN
IFLDN='1'THEN
IFTA='1'THEN
GWYUZHI<=GWYUZHI+"0001";BELL<='0';
IFGWYUZHI="1010"THEN
GWYUZHI<="0000";
ENDIF;
ENDIF;
IFTB='1'THEN
SWYUZHI<=SWYUZHI+"0001";BELL<='0';
IFSWYUZHI="1010"THEN
SWYUZHI<="0000";
ENDIF;
ENDIF;
TMPA:
=GWYUZHI;TMPB:
=SWYUZHI;BELL<='0';STAY:
='0';
ELSIFEN='1'ANDSTAY='0'THEN
IFFLAG='1'THEN
TMPA:
="0000";TMPB:
="0000";
ENDIF;
IFTMPA="0000"THEN
TMPA:
="1001";
IFTMPB="0000"THEN
STAY:
='1';FINISH:
='1';N<=N+1;
IFSWYUZHI="0000"THEN
TMPB:
="1001";BELL<='1';
ELSETMPB:
=SWYUZHI;
TMPA:
=GWYUZHI;BELL<='1';
ENDIF;
ELSETMPB:
=TMPB-"0001";BELL<='0';
ENDIF;
ELSETMPA:
=TMPA-"0001";BELL<='0';
ENDIF;
ELSIFSTAY='1'ANDFINISH='1'THEN
N<=N+1;
IFN=4THEN
BELL<='0';N<=0;FINISH:
='0';
ENDIF;
ELSIFEN='0'THEN
STAY:
='0';
ENDIF;
ENDIF;
QA<=TMPA;QB<=TMPB;
图4-2计时模块仿真图JSQ
CLR低电平有效,当CLR为高电平时,电路不工作。
当CLR为低电平时开始计时。
如没人抢答,时间到后发出提示音。
如有人抢答,答题时间到后,发出提示音。
输入:
QA个位,QB十位,输出:
TA个位,TB十位。
如仿真图所示,当计时复位信号CLR=1时,模块输出信号QA=0000,QB=0000。
当预置数控制信号LDN=1可通过TA来调整QA,TA来一次高电平,则QA的数值就加1;用TB来调整QB,通过这两个调整信号可调整参赛者答题所需要的时间。
在CLR=0,LDN=0,EN=1时,通过时钟信号CLK的上升沿来进行到计时。
通过分析,仿真完全符合预期所要达到的结果。
4.3报警模块的设计与实现
报警器的设计主要是来提醒观众倒计时的开始和结束,哪位选手进行了抢答,在这几种情况下蜂鸣器会发出2-3秒的鸣叫,便于更好的判别比赛的情况。
此模块和抢答鉴别模块、计时模块、蜂鸣器相连,用以实现其功能。
该系统输入信号有系统时钟信号CLK,组别输入信号CHOS,输出信号SPEAK,用以连接蜂鸣器来进行报警。
如仿真图所示,当CHOS=0001即A组抢答时,蜂鸣器SPEAK=1进行2-3秒的鸣叫,通过分析,仿真完全符合预期所要达到的结果。
VHDL部分源程序如下:
IFCHOS="0000"THEN
N<=0;SAVE<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
IFN<5THEN
CASECHOSIS
WHEN"1000"=>SAVE<='1';N<=N+1;
WHEN"0100"=>SAVE<='1';N<=N+1;
WHEN"0010"=>SAVE<='1';N<=N+1;
WHEN"0001"=>SAVE<='1';N<=N+1;
WHENOTHERS=>NULL;
ENDCASE;
ELSE
SAVE<='0';
ENDIF;
ENDIF;
SPEAK<=SAVE;
图4-3报警模块仿真图BELL
4.4译码显示模块的设计与实现
译码器的设计主要任务是显示组别和时间的工作状态,其主要原理是四位二进制BCD编码转换成七段二进制数字输出在数码管上,使观众能够更直观的看到比赛进程。
译码器的设计主要任务是将组别和时间的工作状态,翻译成3个信号数码管的工作状态。
译码器的输入是由16进制数显示的。
如仿真图所示,AIN4为数字0-9时,DOUT7输出对应于译码对照表,AIN4为数字10-15时,DOUT7输出1111111,通过分析,仿真完全符合预期所要达到的结果。
VHDL部分源程序如下:
CASEAIN4IS
WHEN"0000"=>DOUT7<="1000000";--0
WHEN"0001"=>DOUT7<="1111001";--1
WHEN"0010"=>DOUT7<="0100100";--2
WHEN"0011"=>DOUT7<="1111001";--3
WHEN"0100"=>DOUT7<="0110000";--4
WHEN"0101"=>DOUT7<="0011001";--5
WHEN"0110"=>DOUT7<="0000010";--6
WHEN"0111"=>DOUT7<="1111000";--7
WHEN"1000"=>DOUT7<="0000000";--8
WHEN"1001"=>DOUT7<="0010000";--9
WHENOTHERS=>DOUT7<="1111111";
图4-4译码显示模块仿真图YMQ
4.5计分模块的设计与实现
在计分器电路的设计中,按照一般的设计原则,按一定数进制进行加减即可,但是随着计数数目的增加,要将计数数目分解成十进制并进行译码显示分变得越来越麻烦。
因此为了减少译码显示的麻烦,一般是将一个大的进制数分解成数个十进制以内的时制数,计数器串级连接。
但随着位数的增加,电路的接口增加因此本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,而且由于设计要求加减分均为10的倍数故而可以将个位一直设为0,这样既减少了接口,又大大地简化了设计。
VHDL部分源程序如下:
IF(ADD'EVENTANDADD='1')THEN
IFRST='1'THEN
POINTS_A2:
="0001";POINTS_A1:
="0000";
POINTS_B2:
="0001";POINTS_B1:
="0000";
POINTS_C2:
="0001";POINTS_C1:
="0000";
POINTS_D2:
="0001";POINTS_D1:
="0000";
ELSIFCHOS="0001"THEN
IFPOINTS_A1="1001"THEN
POINTS_A1:
="0000";
IFPOINTS_A2="1001"THEN
POINTS_A2:
="0000";
ELSE
POINTS_A2:
=POINTS_A2+'1';
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+'1';
ENDIF;
ELSIFCHOS="0010"THEN
IFPOINTS_B1="1001"THEN
POINTS_B1:
="0000";
IFPOINTS_B2="1001"THEN
POINTS_B2:
="0000";
ELSE
POINTS_B2:
=POINTS_B2+'1';
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+'1';
ENDIF;
ELSIFCHOS="0100"THEN
IFPOINTS_C1="1001"THEN
POINTS_C1:
="0000";
IFPOINTS_C2="1001"THEN
POINTS_C2:
="0000";
ELSE
POINTS_C2:
=POINTS_C2+'1';
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+'1';
ENDIF;
ELSIFCHOS="1000"THEN
IFPOINTS_D1="1001"THEN
POINTS_D1:
="0000";
IFPOINTS_D2="1001"THEN
POINTS_D2:
="0000";
ELSE
POINTS_D2:
=POINTS_D2+'1';
ENDIF;
ELSE
POINTS_D1:
=POINTS_D1+'1';
ENDIF;
ENDIF;
ENDIF;
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";
图4-5记分模块仿真图JFQ
初始分数为100分,当ADD经过第一个上升沿时,CHOS【3】输出高电平,则对应的给D加上10分。
5硬件调试
5.1总模块仿真结果
在quartusII上对总的源程序进行仿真如下图所示:
图5-1总模块仿真结果图
5.2引脚锁定
进行引脚锁定如下图所示:
图5-2引脚锁定图
5.3程序下载
引脚锁定完以后,就可以进行程序下载了,程序下载完就可以进行硬件仿真,仿真结果如下:
当按下RET时,按下一个开关确定是几组抢答成功,抢答成功后,蜂鸣器报警,此时主持人可以按下倒计时开关,倒计时时间到后,蜂鸣器会报警,如果提前回答完毕,可以按下STOP开关,停止倒计时。
6总结
按照任务要求,我们设计出的抢答器具备抢答鉴别、倒计时、数码管显示、报警提示等多种功能。
本抢答器能够准确判断出第一位抢答者,并且通过数显、蜂鸣这些途径能让人们很容易得知谁是抢答成功者。
根据不同比赛的需要,主持人可以预设一定的回答限制时间,让抢答者在规定时间内答题,主持人根据答题结果评出最终赢家。
设计制作过程中遇到的问题及解决方案:
1.VHDL语法使用不规范:
当我们编写软件程序的时,遇到了编译错误。
细心阅读max+plus2错误提示和所编写的程序后发现是因为VHDL语法使用错误。
最后经过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智力 竞赛 抢答 设计