EDA课程设计竞赛抢答器.docx
- 文档编号:5223543
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:10
- 大小:258.88KB
EDA课程设计竞赛抢答器.docx
《EDA课程设计竞赛抢答器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计竞赛抢答器.docx(10页珍藏版)》请在冰豆网上搜索。
EDA课程设计竞赛抢答器
课程EDA技术课程设计
题目数字式竞赛抢答器
专业电子信息工程姓
主要内容、基本要求、主要参考资料等
主要内容:
设计一个可容纳6组参赛的数字式抢答器,当第一个人按下抢答按钮时,其他组的按钮不起作用。
当主持人按下“复位”按钮,所有组的按键才可用。
基本要求:
1、设计一个可容纳6组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3、设置一个主持人“复位”按钮。
4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。
5、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2011.3.11
指导教师
专业负责人
2011年3月7日
一、总体设计思想
1.基本原理
根据系统设计要求可知,系统的输入信号有:
各组的抢答按钮ABCDEF,系统清零信号CLR,系统时钟信号CLK,计分复位端rst,加分按钮ADD,减分按钮ACC,系统的输出信号有:
六个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD、LEDE、LEDF,六个组抢答时的抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;抢答计分功能;各组得分的累加和动态显示功能。
根据以上分析,我们可将整个系统分为三个主要模块:
抢答鉴别模块QDJB;抢答计分模块JFQ;显示译码模块YMQ。
系统的工作原理如下:
当主持人按下使能端CLR时,抢答器开始工作,ABCDEF六个抢答者谁先抢答成功则此选手的台号灯(LEDA-LEDF)将点亮,并且主持人前的组别显示数码将显示出抢答成功者的台号,扬声器发出2-3秒的音响。
接下—来主持人提问若回答正确,主持人按加分按钮ADD,若回答错误,按减分按钮ACC,抢答计分模块JFQ将给对应的组加分或者减分,并将组该的总分显示在对应的选手计分数码管上。
完成第一轮抢答后,主持人清零,接着重新开始,步骤如上。
2.设计框图
二、设计步骤和调试过程
1、总体设计电路
2、模块设计和相应模块程序
●抢答鉴别模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityqdjbis
port(rst,clk2:
instd_logic;
s0,s1,s2,s3,s4,s5:
instd_logic;
states:
bufferstd_logic_vector(5downto0);
tmp:
outstd_logic);
endqdjb;
architectureoneofqdjbis
signalst:
std_logic_vector(5downto0);
begin
p1:
process(s0,rst,s1,s2,s3,s4,s5,clk2)
begin
ifrst='0'thentmp<='0';st<="0000";
elsifclk2'eventandclk2='1'then
if(s0='1'orst(0)='1')andnot(st
(1)='1'orst
(2)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst(0)<='1';
endif;
if(s1='1'orst
(1)='1')andnot(st(0)='1'orst
(2)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst
(1)<='1';
endif;
if(s2='1'orst
(2)='1')andnot(st(0)='1'orst
(1)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst
(2)<='1';
endif;
if(s3='1'orst(3)='1')andnot(st(0)='1'orst
(1)='1'orst
(2)='1'orst(4)='1'orst(5)='1')thenst(3)<='1';
if(s4='1'orst(4)='1')andnot(st(0)='1'orst
(1)='1'orst
(2)='1'orst(3)='1'orst(5)='1')thenst(4)<='1';
endif;
if(s5='1'orst(5)='1')andnot(st(0)='1'orst
(1)='1'orst
(2)='1'orst(3)='1'orst(5)='1')thenst(5)<='1';
endif;
tmp<=s0ors1ors2ors3ors4ors5;
endif;
endprocessp1;
p2:
process(states(0),states
(1),states
(2),states(3),states(4),states(5))
begin
if(st="0000")thenstates<="0000";
elsif(st<="0001")thenstates<="0001";
elsif(st<="0010")thenstates<="0010";
elsif(st<="0100")thenstates<="0011";
elsif(st<="0100")thenstates<="0100";
elsif(st<="0101")thenstates<="0101";
elsif(st<="1000")thenstates<="0110";
endif;
endprocessp2;
endone;
抢答鉴别模块用来准确直观地判断A、B、C、D、E、F六组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。
同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。
●计分器模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjsis
port(clk,rst,s,stop:
instd_logic;
warn:
outstd_logic;
ta,tb:
bufferstd_logic_vector(3downto0));
endjs;
architectureoneofjsis
signalco:
std_logic;
begin
p1:
process(clk,rst,s,stop,ta)
begin
ifrst='0'orstop='1'then
ta<="0000";
elsifclk'eventandclk='1'then
co<='0';
ifs='1'then
ifta="0000"then
ta<="1001";co<='1';
elseta<=ta-1;
endif;
endif;
endif;
endprocessp1;
p2:
process(co,rst,s,stop,tb)
begin
ifrst='0'orstop='1'then
tb<="0010";
elsifco'eventandco='1'then
ifs='1'then
iftb="0000"thentb<="0011";
elsetb<=tb-1;
endif;
endif;
endif;
endprocessp2;
endone;
计分模块的运行方式是按照十进制进行加减,即当时钟出现上升沿时就进行加一或者减一的操作。
●译码器模块
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<="1111110";--0
WHEN"0001"=>DOUT7<="0110000";--1
WHEN"0010"=>DOUT7<="1101101";--2
WHEN"0011"=>DOUT7<="1111001";--3
WHEN"0100"=>DOUT7<="0110011";--4
WHEN"0101"=>DOUT7<="1011011";--5
WHEN"0110"=>DOUT7<="1011111";--6
WHEN"0111"=>DOUT7<="1110000";--7
WHEN"1000"=>DOUT7<="1111111";--8
WHEN"1001"=>DOUT7<="1111011";--9
WHENOTHERS=>DOUT7<="0000000";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。
3、仿真及仿真结果分析
●抢答鉴别模块仿真图
●译码模块仿真图
●计分器模块仿真图
3、实验调试结果
抢答鉴别模块:
第一个按下键的小组,抢答信号判定电路LOCK通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他参赛组的锁存器清零,组别显示、计时和计分会保存到主持人对系统进行清零操作时为止。
当INI=1时系统复位,使组别显示信号G=0000,各组的指示灯信号A1=0,B1=0,C1=0,D1=0;当INI=0,即低电平有效,使其进入抢答鉴别状态,到CLK的上升沿到来时,以A组抢答成功为例,当输入信号为A=1,B=0,C=0,D=0,输出信号G=1000,A1=1,即为鉴别出A组抢答成功,同时屏蔽其他组的输入信号,以免发生错误。
同理其他组别抢答成功也是这样的鉴别过程。
记分模块为哪组进行记分取决于鉴别模块的输入信号G,当G=1000时表示A组最先抢答,则在此模块中为A组记分,当G=0100时表示B组最先抢答,则在此模块中为B组记分,当G=0010时表示C组最先抢答,则在此模块中为C组记分,当G=0001时表示D组最先抢答,则在此模块中为D组记分。
以A组为例来说明此模块的设计,当复位信号RST=1时,系统复位且A组的分值显示初始值,为100分。
当RST=0时,如果该组选手答题正确,则主持人按下加分键,即ADD=1,此时对该组进行加分操作;如果该组选手答题错误,则主持人按下减分键,即SUB=1,此时对该组进行减分操作。
三、结论及心得体会
通过这次对抢答器的设计和实践,学到了很多的东西,不仅巩固了以前所学的知识,而且学到了书本上没有的东西,在调试中每修改一个小的错误,自己心中的成就感就徒增。
在这次设计,把理论与实践信结合起来,在老师的指导下和视频学习下,有些关键的问题才得以解决,锻炼了自己的能力,对以后走的路有了更清楚的认识,同时有了更多的信心。
参考资料
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]江国强:
《EDA技术习题与实验》,电子工业出版社
[3]曹昕燕,周风臣,聂春燕:
《EDA技术试验与课程设计》,清华大学出版社
[4]黄仁欣:
《EDA技术实用教程》,清华大学出版社
[5]汉泽西.EDA技术与应用【M】.北京:
北京航空航天大学出版社,2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 竞赛 抢答