班路抢答器方案方案.docx
《班路抢答器方案方案.docx》由会员分享,可在线阅读,更多相关《班路抢答器方案方案.docx(25页珍藏版)》请在冰豆网上搜索。
![班路抢答器方案方案.docx](https://file1.bdocx.com/fileroot1/2022-10/26/fe55d44b-8c1d-43cf-8995-3810dfc899aa/fe55d44b-8c1d-43cf-8995-3810dfc899aa1.gif)
班路抢答器方案方案
一、实验目的
1.学习智力竞赛抢答器电路的工作原理。
2.学习综合数字电子电路的设计、实现和调试方法。
二、实验内容和要求
<1)抢答器可容纳四组选手,并为每组选手设置一个按钮供抢答者使用;为主持人设置一个控制按钮,用来控制系统清零<组别显示数码管灭灯)和抢答开始。
<2)电路具有对第一抢答信号的锁存、鉴别和显示等功能。
在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,计时显示器显示初始时间并开始倒计时,若参赛选手按下抢答按钮,则该组别的信号立即被锁存,并在组别显示器上显示该组别,同时扬声器也给出音响提示,此时,电路具备自锁功能,使其他抢答按钮不起作用。
<3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答无效提示,主持人可以按复位键,开始新一轮的抢答。
<4)抢答器具有限时抢答的功能,且一次抢答的时间由主持人设定,本抢答时间设定为30秒。
当主持人启动开始键后,要求计时器采用倒计时,同时倒计时到0秒时扬声器会发出声响提示。
<5)参赛选手在设定的时间内抢答,则抢答有效,定时器停止工作,根据抢答结果由数码管显示选手的组别,并一直保持到主持人将系统清零为止。
2.2.2设计方案二
本工程也可以用EDA技术来实现其功能。
在芯片选型方面可以考虑选择CPLD芯片作为微控制器。
EDA自顶向下的设计方法比较先进;实验室有齐全的开发套件;组员们均系统学习过EDA基础课程,都有VHDL编程和实验经验,团队之间交流将会比较方便;芯片容量大,处理速度极快,管脚数目多达84个,IO口数目充足,适合本设计的规模。
缺点在于设备相对昂贵,使用不当容易烧毁微处理器。
三、设计思路
可将整个系统分为三个主要模块:
抢答鉴别模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ。
整个系统的组成框图如图5-5-8所示。
图--1智力竞赛抢答器系统框图
四、电路设计
图--2
1.电路设计指标
.本抢答器最多可提供4名参赛选手使用,编号为1~4号,各队分别用一个按钮.抢答器具有数据锁存功能,并将锁存数据用发光二极管指示灯显示出来,同时蜂鸣器发出间歇式声响,主持人清零后,声音提示停止。
.抢答先后的分辨率为1ms。
.开关S5作为清零及抢答控制开关<有主持人控制),当开关S5被按下时,抢答电路清零,松开后则允许抢答,输入抢答信号由抢答按钮的S1~S4实现。
.有抢答信号输入时,有数码管显示出相应组别的号码。
此时再按其他任何一个抢答开关均无效,指示灯依旧保持第一个开关按下时所对应的状态不变。
.能完成由主持人控制的30秒倒计时,有抢答信号输入后计时器停止。
.能完成定时器复位,启动,暂停/继续计数。
.能完成对每个选手抢答次数的记录,并可复位。
2.仿真电路组成
<1)四路抢答器原理
见图--3
图--3
该电路由四个D触发器、与非门及脉冲触发电路等组成。
其中S1,S2,S3、S4为抢答人按钮,S5为主持人复位。
74LS175为四D触发器。
无人抢答时,S1~S4均未被按下,1D~4D均为低电平,在555定时器电路产生时钟脉冲作用下,1Q立即变为高电平,对应指示灯X1发光,同时数码管显示为1,将555定时脉冲封锁,此时送给74ls175的CLK端不再有脉冲信号,所以74LS175输出不再变化,其他抢答者再按下按钮也不起作用,从而实现了抢答。
若要清除,则由主持人按S5按钮完成,并为下一次抢答做好准备。
<2)定时器实现
秒脉冲发生器由555定时器和外接元件R1、R2、C构成多谐振荡器。
F=1Hz
定时器电路见图--4
图--4
计数器由两片74LS192同步十进制计数器构成
利用错位输出端BO于下一级DOWN相连
30循环设置为,十位片DCBA=0011个位片DCBA=0000
译码及显示电路有译码驱动器74LS48和7段数码管组成
控制电路
与非门U20A和U21A组成RS触发器,实现计数器复位、计数和保持30
电路如图--5所示
图--5
<3)计数电路
计数器由74LS192构成
置数输入端接地,up端接选手输入信号,当有信号输入是加一,load端接电源和复位开关用于复位,down加开关控制计数器的减法,电路如图--6
图--7
<4)完整电路
见图--8
图--8
VHDL的程序设计
1、抢答鉴别模块VHDL源程序LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
ENTITYQDJBIS
PORT(CLR:
INSTD_LOGIC。
A,B,C,D:
INSTD_LOGIC。
A1,B1,C1,D1:
OUTSTD_LOGIC。
G:
OUTSTD_LOGIC_VECTOR(3DOWNTO0>>。
ENDQDJB。
ARCHITECTUREARTOFQDJBIS
CONSTANTW1:
STD_LOGIC_VECTOR:
="0001"。
CONSTANTW2:
STD_LOGIC_VECTOR:
="0010"。
CONSTANTW3:
STD_LOGIC_VECTOR:
="0100"。
CONSTANTW4:
STD_LOGIC_VECTOR:
="1000"。
BEGIN
PROCESS(CLR,A,B,C,D>
VARIABLELOCK:
STD_LOGIC。
BEGIN
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'。
ENDIF。
ENDIF。
ENDPROCESS。
ENDART。
2、抢答计时模块VHDL源程序LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
USEIEEE.STD_LOGIC_UNSIGNED.ALL。
ENTITYJSQIS
PORT(CLR,LDN,EN,CLK:
INSTD_LOGIC。
TA,TB:
INSTD_LOGIC。
FLAG:
INSTD_LOGIC。
BELL:
OUTSTD_LOGIC。
QA:
OUTSTD_LOGIC_VECTOR(3DOWNTO0>。
QB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0>>。
ENDJSQ。
ARCHITECTUREARTOFJSQIS
SIGNALDA:
STD_LOGIC_VECTOR(3DOWNTO0>。
SIGNALDB:
STD_LOGIC_VECTOR(3DOWNTO0>。
SIGNALGWYUZHI:
STD_LOGIC_VECTOR(3DOWNTO0>。
SIGNALSWYUZHI:
STD_LOGIC_VECTOR(3DOWNTO0>。
SIGNALN:
INTEGERRANGE0TO10。
BEGIN
PROCESS(CLK,LDN,EN,CLR,TA,TB,FLAG>
VARIABLETMPA:
STD_LOGIC_VECTOR(3DOWNTO0>。
VARIABLETMPB:
STD_LOGIC_VECTOR(3DOWNTO0>。
VARIABLESTAY,FINISH:
STD_LOGIC。
--倒计时停止标志
BEGIN
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。
ENDPROCESS。
ENDART。
3、译码器VHDL源程序LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
USEIEEE.STD_LOGIC_UNSIGNED.ALL。
ENTITYYMQIS
PORT(AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0>。
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0>>。
ENDYMQ。
A