竞赛抢答器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北石油大学课程设计
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、S
2、S
3、S
4、S
5、S6;抢答使能信号EN;抢答状态显示信号 STATES;抢答与警报时钟信号 CLK2;系统复位信号 RST;警报信号 TMP。
图二抢答器鉴别模块图
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY QDJB IS PORT(RST,EN,CLK2:IN STD_LOGIC;
S1,S2,S3,S4,S5,S6:IN STD_LOGIC;
STATES:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);
TMP:INOUT STD_LOGIC;
LED:INOUT STD_LOGIC_VECTOR(6 DOWNTO 1));
END QDJB;
ARCHITECTURE ONE OF QDJB IS
SIGNAL CNT:STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL G:STD_LOGIC_VECTOR(6 DOWNTO 1);
BEGIN
P1:PROCESS(S1,S2,S3,S4,S5,S6,EN,RST,CLK2)
BEGIN
IF RST='1' THEN
G<="000000";TMP<='0'; LED<="000000";
ELSIF CLK2'EVENT AND CLK2='1' THEN
IF EN='1' OR EN='0' THEN
IF( S5='1')AND NOT(G(6)='1' OR G(1)='1' OR G(2)='1'OR G(3)='1' OR G(4)='1') THEN
G(5)<='1';LED(5)<='1';
ELSIF( S4='1')AND NOT(G(6)='1' OR G(1)='1' OR G(2)='1'OR G(3)='1' OR G(5)='1') THEN
G(4)<='1';LED(4)<='1';
ELSIF( S3='1')AND NOT(G(6)='1' OR G(1)='1' OR G(2)='1' OR G(4)='1' OR G(5)='1') THEN
G(3)<='1';LED(3)<='1';
ELSIF( S2='1')AND NOT(G(6)='1' OR G(1)='1' OR G(3)='1' OR G(4)='1' OR G(5)='1') THEN
G(2)<='1';LED(2)<='1';
ELSIF (S1='1')AND NOT(G(6)='1' OR G(2)='1' OR G(3)='1' OR G(4)='1' OR G(5)='1') THEN
G(1)<='1';LED(1)<='1';
ELSIF(S6='1')AND NOT(G(1)='1' OR G(2)='1' OR G(3)='1' OR G(4)='1' OR G(5)='1') THEN
G(6)<='1';LED(6)<='1';
END IF;