竞赛抢答器的设计.docx

上传人:b****6 文档编号:16561984 上传时间:2023-07-14 格式:DOCX 页数:23 大小:166.09KB
下载 相关 举报
竞赛抢答器的设计.docx_第1页
第1页 / 共23页
竞赛抢答器的设计.docx_第2页
第2页 / 共23页
竞赛抢答器的设计.docx_第3页
第3页 / 共23页
竞赛抢答器的设计.docx_第4页
第4页 / 共23页
竞赛抢答器的设计.docx_第5页
第5页 / 共23页
竞赛抢答器的设计.docx_第6页
第6页 / 共23页
竞赛抢答器的设计.docx_第7页
第7页 / 共23页
竞赛抢答器的设计.docx_第8页
第8页 / 共23页
竞赛抢答器的设计.docx_第9页
第9页 / 共23页
竞赛抢答器的设计.docx_第10页
第10页 / 共23页
竞赛抢答器的设计.docx_第11页
第11页 / 共23页
竞赛抢答器的设计.docx_第12页
第12页 / 共23页
竞赛抢答器的设计.docx_第13页
第13页 / 共23页
竞赛抢答器的设计.docx_第14页
第14页 / 共23页
竞赛抢答器的设计.docx_第15页
第15页 / 共23页
竞赛抢答器的设计.docx_第16页
第16页 / 共23页
竞赛抢答器的设计.docx_第17页
第17页 / 共23页
竞赛抢答器的设计.docx_第18页
第18页 / 共23页
竞赛抢答器的设计.docx_第19页
第19页 / 共23页
竞赛抢答器的设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

竞赛抢答器的设计.docx

《竞赛抢答器的设计.docx》由会员分享,可在线阅读,更多相关《竞赛抢答器的设计.docx(23页珍藏版)》请在冰点文库上搜索。

竞赛抢答器的设计.docx

竞赛抢答器的设计

 

东北石油大学

课程设计

课程EDA技术课程设计

题目数字式竞赛抢答器

院系电子科学学院

专业班级电子信息工程

学生姓名丛绍州

学生学号100901140517

指导教师

 

 

2014年3月7日

 

东北石油大学课程设计任务书

课程EDA技术课程设计

题目数字式竞赛抢答器

专业电子信息工程姓名丛绍州学号100901140517

主要内容、基本要求、主要参考资料等

主要内容:

设计一个可容纳6组参赛的数字式抢答器,当第一个人按下抢答按钮时,其他组的按钮不起作用。

当主持人按下“复位”按钮,所有组的按键才可用。

基本要求:

1、设计一个可容纳6组参赛的数字式抢答器,每组设一个按钮,供抢答使用。

2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。

3、设置一个主持人“复位”按钮。

4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。

5、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。

主要参考资料:

[1]潘松著.EDA技术实用教程(第二版).北京:

科学出版社,2005.

[2]康华光主编.电子技术基础模拟部分.北京:

高教出版社,2006.

[3]阎石主编.数字电子技术基础.北京:

高教出版社,2003.

完成期限2014.3.7

指导教师

专业负责人

2014年3月3日

一、设计思想

1.基本原理

抢答能引起参赛者和观众的极大兴趣,并且能在极短的时间内,使人们迅速增加一些科学知识和生活常识。

但是,在这类比赛中,对于谁先谁后抢答,在何时抢答,如何计算答题时间等等问题,若是仅凭主持人的主观判断,就很容易出现误判。

所以,我们就需要一种具备自动锁存,置位,清零等功能智能抢答器来解决这些问题。

本设计为六路数字式竞赛抢答器,抢答过程:

主持人按下系统复位键(RST),系统进入抢答状态,计时模块和计分模块输出初始信号给数码显示模块并显示出初始值。

当某参赛组抢先将抢答键按下时,系统将其余五路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。

主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。

当主持人给出倒计时停止信号时,扬声器停止鸣叫。

若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。

主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。

此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。

2.设计框图

 

 

图一抢答器总体框图

二、设计步骤和调试过程

1、模块设计和相应模块代码

根据图一抢答器总体框图,本设计可分为以下几个模块:

(1)抢答判别模块:

它的功能是鉴别六组中是哪组抢答成功并且把抢答成功的组别信号输出给锁存模块。

(2)抢答器计分模块:

由主持人控制,针对选手的答题情况,进行加分或减分。

(3)数据选择模块:

主要实现抢答过程中的数据输入功能。

(4)显示报警模块:

就是把各个模块的输入的不同信号经过译码成BCD码然后直接在数码管上显示,还可以加上蜂鸣器的声音,更能给观众一个准确、简明的数字。

(5)译码模块:

主要原理是四位二进制BCD编码转换成七段二进制数字。

(6)顶层模块:

在这个模块中是对前面模块的综合编写的顶层文件。

1、抢答器鉴别模块:

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余过滤抢答封锁的功能。

其中有六个抢答信号S1、S2、S3、S4、S5、S6;抢答使能信号EN;抢答状态显示信号STATES;抢答与警报时钟信号CLK2;系统复位信号RST;警报信号TMP。

图二抢答器鉴别模块图

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYQDJBISPORT(RST,EN,CLK2:

INSTD_LOGIC;

S1,S2,S3,S4,S5,S6:

INSTD_LOGIC;

STATES:

BUFFERSTD_LOGIC_VECTOR(3DOWNTO0);

TMP:

INOUTSTD_LOGIC;

LED:

INOUTSTD_LOGIC_VECTOR(6DOWNTO1));

ENDQDJB;

ARCHITECTUREONEOFQDJBIS

SIGNALCNT:

STD_LOGIC_VECTOR(11DOWNTO0);

SIGNALG:

STD_LOGIC_VECTOR(6DOWNTO1);

BEGIN

P1:

PROCESS(S1,S2,S3,S4,S5,S6,EN,RST,CLK2)

BEGIN

IFRST='1'THEN

G<="000000";TMP<='0';LED<="000000";

ELSIFCLK2'EVENTANDCLK2='1'THEN

IFEN='1'OREN='0'THEN

IF(S5='1')ANDNOT(G(6)='1'ORG

(1)='1'ORG

(2)='1'ORG(3)='1'ORG(4)='1')THEN

G(5)<='1';LED(5)<='1';

ELSIF(S4='1')ANDNOT(G(6)='1'ORG

(1)='1'ORG

(2)='1'ORG(3)='1'ORG(5)='1')THEN

G(4)<='1';LED(4)<='1';

ELSIF(S3='1')ANDNOT(G(6)='1'ORG

(1)='1'ORG

(2)='1'ORG(4)='1'ORG(5)='1')THEN

G(3)<='1';LED(3)<='1';

ELSIF(S2='1')ANDNOT(G(6)='1'ORG

(1)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN

G

(2)<='1';LED

(2)<='1';

ELSIF(S1='1')ANDNOT(G(6)='1'ORG

(2)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN

G

(1)<='1';LED

(1)<='1';

ELSIF(S6='1')ANDNOT(G

(1)='1'ORG

(2)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN

G(6)<='1';LED(6)<='1';

ENDIF;

ENDIF;

ENDIF;

TMP<=G(6)ORG

(1)ORG

(2)ORG(3)ORG(4)ORG(5);

CASELEDIS

WHEN"000001"=>STATES<="0001";

WHEN"000010"=>STATES<="0010";

WHEN"000100"=>STATES<="0011";

WHEN"001000"=>STATES<="0100";

WHEN"010000"=>STATES<="0101";

WHEN"100000"=>STATES<="0110";

WHENOTHERS=>STATES<="0000";

ENDCASE;

ENDPROCESSP1;

ENDONE;

2、抢答器记分模块:

在这个模块中主要是给六个抢答信号记分,并给每个抢答信号预置100分,当抢答并答对时加10分,答错减10分,没有获得抢答保持不变。

其中有抢答使能信号START;抢答状态显示信号STATES;记分加减信号ADD,SUB;六个信号的得分输出信号AA2,AA1,AA0,BB2,BB1,BB0,CC2,CC1,CC0,DD2,DD1,DD0,EE2,EE1,EE0,FF2,FF1,FF0。

计分模块用VHDL语言进行编程的流程图如下:

 

YN

 

SUB=1

ADD=1

 

图三计分模块的设计状态图

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYJFQIS

PORT(START:

INSTD_LOGIC;

ADD,SUB:

INSTD_LOGIC;

NUM:

INSTD_LOGIC_VECTOR(3DOWNTO0);

AA2,AA1,AA0,BB2,BB1,BB0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CC2,CC1,CC0,DD2,DD1,DD0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

EE2,EE1,EE0,FF2,FF1,FF0:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITYJFQ;

ARCHITECTUREARTOFJFQIS

BEGIN

P1:

PROCESS(START,ADD,NUM)IS

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);

VARIABLEPOINTS_E2,POINTS_E1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_F2,POINTS_F1:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IF(ADD'EVENTANDADD='1')THEN

IFSTART='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";

POINTS_E2:

="0001";POINTS_E1:

="0000";

POINTS_F2:

="0001";POINTS_F1:

="0000";

ELSIFNUM="0001"THEN

IFPOINTS_A1="1001"THENPOINTS_A1:

="0000";

IFPOINTS_A2="1001"THENPOINTS_A2:

="0000";

ELSEPOINTS_A2:

=POINTS_A2+'1';

ENDIF;

ELSEPOINTS_A1:

=POINTS_A1+'1';

ENDIF;

ELSIFNUM="0010"THEN

IFPOINTS_B1="1001"THENPOINTS_B1:

="0000";

IFPOINTS_B2="1001"THENPOINTS_B2:

="0000";

ELSEPOINTS_B2:

=POINTS_B2+'1';

ENDIF;

ELSEPOINTS_B1:

=POINTS_B1+'1';

ENDIF;

ELSIFNUM="0011"THEN

IFPOINTS_C1="1001"THENPOINTS_C1:

="0000";

IFPOINTS_C2="1001"THENPOINTS_C2:

="0000";

ELSEPOINTS_C2:

=POINTS_C2+'1';

ENDIF;

ELSEPOINTS_C1:

=POINTS_C1+'1';

ENDIF;

ELSIFNUM="0100"THEN

IFPOINTS_D1="1001"THENPOINTS_D1:

="0000";

IFPOINTS_D2="1001"THENPOINTS_D2:

="0000";

ELSEPOINTS_D2:

=POINTS_D2+'1';

ENDIF;

ELSEPOINTS_D1:

=POINTS_D1+'1';

ENDIF;

ELSIFNUM="0101"THEN

IFPOINTS_E1="1001"THENPOINTS_E1:

="0000";

IFPOINTS_E2="1001"THENPOINTS_E2:

="0000";

ELSEPOINTS_E2:

=POINTS_E2+'1';

ENDIF;

ELSEPOINTS_E1:

=POINTS_E1+'1';

ENDIF;

ELSIFNUM="0110"THEN

IFPOINTS_F1="1001"THENPOINTS_F1:

="0000";

IFPOINTS_F2="1001"THENPOINTS_F2:

="0000";

ELSEPOINTS_F2:

=POINTS_F2+'1';

ENDIF;

ELSEPOINTS_F1:

=POINTS_F1+'1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESSP1;

P2:

PROCESS(START,DEC,NUM)IS

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);

VARIABLEPOINTS_E2,POINTS_E1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_F2,POINTS_F1:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IF(SUB'EVENTANDSUB='1')THEN

IFSTART='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";

POINTS_E2:

="0001";POINTS_E1:

="0000";

POINTS_F2:

="0001";POINTS_F1:

="0000";

ELSIFNUM="0001"THEN

IFPOINTS_A1="0000"THENPOINTS_A1:

="1001";

IFPOINTS_A2="0000"THENPOINTS_A2:

="1001";

ELSEPOINTS_A2:

=POINTS_A2-'1';

ENDIF;

ELSEPOINTS_A1:

=POINTS_A1-'1';

ENDIF;

ELSIFNUM="0010"THEN

IFPOINTS_B1="0000"THENPOINTS_B1:

="1001";

IFPOINTS_B2="0000"THENPOINTS_B2:

="1001";

ELSEPOINTS_B2:

=POINTS_B2-'1';

ENDIF;

ELSEPOINTS_B1:

=POINTS_B1-'1';

ENDIF;

ELSIFNUM="0011"THEN

IFPOINTS_C1="0000"THENPOINTS_C1:

="1001";

IFPOINTS_C2="0000"THENPOINTS_C2:

="1001";

ELSEPOINTS_C2:

=POINTS_C2-'1';

ENDIF;

ELSEPOINTS_C1:

=POINTS_C1-'1';

ENDIF;

ELSIFNUM="0100"THEN

IFPOINTS_D1="0000"THENPOINTS_D1:

="1001";

IFPOINTS_D2="0000"THENPOINTS_D2:

="1001";

ELSEPOINTS_D2:

=POINTS_D2-'1';

ENDIF;

ELSEPOINTS_D1:

=POINTS_D1-'1';

ENDIF;

ELSIFNUM="0101"THEN

IFPOINTS_E1="0000"THENPOINTS_E1:

="1001";

IFPOINTS_E2="0000"THENPOINTS_E2:

="1001";

ELSEPOINTS_E2:

=POINTS_E2-'1';

ENDIF;

ELSEPOINTS_E1:

=POINTS_E1-'1';

ENDIF;

ELSIFNUM="0110"THEN

IFPOINTS_F1="0000"THENPOINTS_F1:

="1001";

IFPOINTS_F2="0000"THENPOINTS_F2:

="1001";

ELSEPOINTS_F2:

=POINTS_F2-'1';

ENDIF;

ELSEPOINTS_F1:

=POINTS_F1-'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";

EE2<=POINTS_E2;EE1<=POINTS_E1;EE0<="0000";

FF2<=POINTS_F2;FF1<=POINTS_F1;FF0<="0000";

ENDPROCESSP2;

ENDARCHITECTUREART;

3、数据选择模块:

在这个模块中主要实现抢答过程中的数据输入功能,输入信号A[3..0]、B[3..0]、C[3..0]、D[3..0]、E[3..0]、F[3..0];计数输出信号S;数据输出信号Y;使能端EN;计数脉冲CLK2,实现A、B、C、D、E、F按脉冲轮流选通,在数码管上显示。

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYSJXZIS

PORT(A,B,C,D,E,F:

INSTD_LOGIC_VECTOR(3DOWNTO0);

CLK2,RST,EN:

INSTD_LOGIC;

S:

OUTSTD_LOGIC_VECTOR(2DOWNTO0);

Y:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDSJXZ;

ARCHITECTUREXZSJOFSJXZIS

SIGNALCOUNT:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

PROCESS(CLK2,RST)

BEGIN

IF(RST='1')THEN

COUNT<="000";

ELSIF(CLK2'EVENTANDCLK2='1')THEN

IFEN='1'THEN

IF(COUNT>="101")THEN

COUNT<="000";

ELSECOUNT<=COUNT+1;

ENDIF;

ENDIF;

CASECOUNTIS

WHEN"000"=>Y<=E;

WHEN"001"=>Y<=B;

WHEN"010"=>Y<=C;

WHEN"011"=>Y<=F;

WHEN"100"=>Y<=A;

WHEN"101"=>Y<=D;

WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

ENDPROCESS;

S<=COUNT;

ENDXZSJ;

4、报警模块:

当某组的选手抢答成功之后,为了让主持人第一时间反应到抢答的成功,系统需要设置一个声响报警装置,来提示主持人对其他选手的抢答信号进行屏蔽。

该模块在系统中是十分必要的,声音响起,可以节约不少时间,为比赛的顺利进行争取时间。

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,有效电平输入信号WARN;状态输出信号SOUND;复位端RST。

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYALARMIS

PORT(RST,WARN:

INSTD_LOGIC;

SOUND:

OUTSTD_LOGIC);

ENDALARM;

ARCHITECTUREFOUROFALARMIS

BEGIN

PROCESS(WARN,RST)

BEGIN

IFRST='1'THEN

SOUND<='0';

ELSIFWARN='1'THEN

SOUND<='1';

ELSE

SOUND<='0';

ENDIF;

ENDPROCESS;

ENDFOUR;

5、译码模块:

该模块实际上是一个译码器,作用是用来显示组别,时间和成绩,其主要原理是四位二进制BCD编码转换成七段二进制数字,以阿拉伯数字的形式输出在数码管上,使观众能够更直观的看到结果。

译码器的译码对照表1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2