智力抢答器的设计112.docx
- 文档编号:16703368
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:12
- 大小:114.14KB
智力抢答器的设计112.docx
《智力抢答器的设计112.docx》由会员分享,可在线阅读,更多相关《智力抢答器的设计112.docx(12页珍藏版)》请在冰点文库上搜索。
智力抢答器的设计112
EDA技术课程大作业
设计题目:
智力抢答器的设计
院系:
电气工程与电子信息系
学生姓名:
学号:
200902070019
专业班级:
09电子信息专升本
2010年12月09日
智能抢答器的设计
1.设计背景和设计方案
在许多比赛活动中,为了正确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。
同时,还可以设置计分、犯规及奖惩记录等多种功能。
1.1抢答器的设计要求
(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
(2)电路具有第一抢答信号的鉴别和锁存功能。
在主持人将系统复位并发出抢答者指令后,若抢答者按抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别。
此时,电路具备自锁功能,使别组的抢答开关不起作用。
(3)设置计分电路。
每组在开始时预置成100分,抢答后主持人计分,答对一次加10分。
(4)设置犯规电路。
对提前抢答和超时抢答的组别鸣喇叭示警,并由组别显示电路显示出犯规组别。
1.2抢答器的设计方案
根据系统要求可知,系统的输入信号有:
各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB。
系统的输出信号有:
四个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别现实的控制信号若干,各组计分动态显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能,抢答计时功能,各组得分的累加和动态显示功能,抢答犯规记录功能。
2.方案实施抢答器各模块的设计与实现
2.1抢答鉴别模块的设计与实现
各组的抢答输入信号A、B、C、D的排列组合在理论上应该有16种可能,但实际上由于芯片的反应速度快到一定程度时,两组以上同时抢答成功的可能性很小,所以设计时可只考虑A、B、C、D分别抢答成功的四种情况。
其VHDL源程序如下:
libraryieee;
useieee.std_logic_1164.all;
entityQDJBis
port(CLR:
instd_logic;
A,B,C,D:
instd_logic;
A1,B1,C1,D1:
outstd_logic;
STATES:
outstd_logic_vector(3downto0));
endentityQDJB;
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)
begin
ifCLR='1'thenSTATES<="0000";
elsif(A='1'andB='0'andC='0'andD='0')then
A1<='1';B1<='0';C1<='0';D1<='0';STATES<=W1;
elsif(A='0'andB='1'andC='0'andD='0')then
A1<='0';B1<='1';C1<='0';D1<='0';STATES<=W2;
elsif(A='0'andB='0'andC='1'andD='0')then
A1<='0';B1<='0';C1<='1';D1<='0';STATES<=W3;
elsif(A='0'andB='0'andC='0'andD='1')then
A1<='0';B1<='0';C1<='0';D1<='1';STATES<=W4;
endif;
endprocess;
endART;
抢答鉴别电路的仿真波形如图1所示:
图1
2.2抢答计分模块的设计与实现
强大积分电路的设计一般按一定数制进行加减即可,但随着计数数目的增加,要将计数数目分解成十进制并进行译码显示会变得较为复杂。
为了避免该种情况,通常是将一个大的进制数分解为数个十进制以内的进制数,并将计数器级联。
但随着数位的增加,电路的接口也会相应增加。
因此,本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,既减少了接口,又简化了设计。
其VHDL源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityJFQis
port(RST:
instd_logic;
ADD:
instd_logic;
CHOS:
instd_logic_vector(3downto0);
AA2,AA1,AA0,BB2,BB1,BB0:
outstd_logic_vector(3downto0);
CC2,CC1,CC0,DD2,DD1,DD0:
outstd_logic_vector(3downto0));
endentityJFQ;
architectureARTofJFQis
begin
process(RST,ADD,CHOS)
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);
begin
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";
endprocess;
endART;
抢答计分电路的仿真波形如图2所示:
图2
2.3抢答计时模块的计时与实现
本系统的计时器电路既有计时初始值的预置功能,又有减计数功能。
其中,初始值的预置功能是将两位数分解成两个数分别进行预置。
其VHDL源程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityJSQis
port(CLR,LDN,EN,CLK:
instd_logic;
TA,TB:
instd_logic;
QA,QB:
outstd_logic_vector(3downto0));
endentityJSQ;
architectureARTofJSQis
signalDB,DA:
std_logic_vector(3downto0);
begin
process(TA,TB,CLR)
begin
ifCLR='1'then
DA<="0000";
DB<="0000";
else
ifTA='1'then
DA<=DA+'1';
endif;
ifTB='1'then
DB<=DB+'1';
endif;
endif;
endprocess;
process(CLK)
variableTMPA,TMPB:
std_logic_vector(3downto0);
begin
ifCLR='1'thenTMPA:
="0000";TMPB:
="0110";
elsifCLK'EVENTandCLK='1'then
ifLDN='1'thenTMPA:
=DA;TMPB:
=DB;
elsifEN='1'then
ifTMPA="0000"then
TMPA:
="1001";
ifTMPB="0000"thenTMPB:
="0110";
elseTMPB:
=TMPB-1;
endif;
elseTMPA:
=TMPA-1;
endif;
endif;
endif;
QA<=TMPA;QB<=TMPB;
endprocess;
endART;
抢答计时电路的仿真波形如图3所示:
图3
2.4译码显示模块的计时与实现
译码器的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;
architectureARTofYMQis
begin
process(AIN4)
begin
caseAIN4is
when"0000"=>DOUT7<="0111111";
when"0001"=>DOUT7<="0000110";
when"0010"=>DOUT7<="1011011";
when"0011"=>DOUT7<="1001111";
when"0100"=>DOUT7<="1100110";
when"0101"=>DOUT7<="1101101";
when"0110"=>DOUT7<="1111101";
when"0111"=>DOUT7<="0000111";
when"1000"=>DOUT7<="1111111";
when"1001"=>DOUT7<="1101111";
whenothers=>DOUT7<="0000000";
endcase;
endprocess;
endART;
2.5智力抢答器的顶层文件
智力抢答器的系统组成框图如图4所示:
图4
3.结果和结论
该设计实现了智能抢答的功能,在抢答过程中,主持人可采用计时手段,打开计时器使计时预置控制端LDN有效,输入限制时间,使计时使能端EN有效,开始计时。
完成一轮抢答后,主持人清零,重新开始抢答。
4.参考文献
[1]阎石,数字电子技术基础【M】·第4版·北京:
高等教育出版社,1998。
[2]潘松,黄继业编著·EDA技术与VHDL语言【M】·第2版·北京:
清华大学出版社,2007。
[3]齐红喜,陆颖·VHDL电路设计实用教程【M】·北京:
清华大学出版社,2004。
[4]王振红,张斯伟·电子电路综合设计实例集萃【M】·北京:
化学工业出版社,2008。
[5]权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004。
[6]刘小洪,邹鹏.商业银行客户关系价值管理模型研究[J].管理科学,2005。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智力 抢答 设计 112