EDA技术实用教程课设.docx
- 文档编号:24621234
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:33
- 大小:590.11KB
EDA技术实用教程课设.docx
《EDA技术实用教程课设.docx》由会员分享,可在线阅读,更多相关《EDA技术实用教程课设.docx(33页珍藏版)》请在冰豆网上搜索。
EDA技术实用教程课设
2016~2017学年第1学期
《EDA技术实用教程》
课程设计报告
题目:
数字式竞赛抢答器
专业:
通信工程
班级:
14通信工程
(1)班
姓名:
丁浩伟、万康、郑林、王天硕
指导教师:
周珍艮、王银花
电气工程学院
2016年12月7日
1、任务书
课题名称
数字式竞赛抢答器
指导教师(职称)
周珍艮(副教授)、王银花(讲师)
执行时间
2016~2017学年第1学期第15周
学生姓名
学号
承担任务
丁浩伟
1409131006
万康
14091310
郑林
14091310
王天硕
14091310
设计目的
(1)了解抢答器的设计原理
(2)掌握其外围电路的设计与主要性能参数测试方法
(3)掌握抢答器的设计方法与电子线路系统的装调技术
设计要求
(1)设计一个可容纳6组(或4组)参赛的数字式抢答器,每组设一个按钮,供抢答使用。
(2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
(3)设置一个主持人“复位”按钮。
(4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
(5)设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
数字式竞赛抢答器
摘要
数字抢答器由主体电路与扩展电路组成。
优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
经过布线、焊接、调试等工作后数字抢答器成形。
单片机体积小价格低,应用便,稳定可靠。
单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。
单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。
抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。
选手们都站在同一个起跑线上,体现了公平公正的原则。
关键字:
抢答电路、定时电路、报警电路
第1章电路原理与设计过程
1.1电路的基本功能
(1)抢答器同时8名选手或8个代表队比赛,分别用8个按钮S1-S8表示。
(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。
(3)抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在DPY_7-SEG七段数码管上显示选手号码。
选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。
(4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
当主持人启动"开始"键后,定时器进行减计时。
(5)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
(6)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00其工作原理为:
接通电源后,主持人将开关拨到"清零"状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置;开始"状态,宣布"开始"抢答器工作。
定时器倒计时,扬声器给出声响提示。
选手在定时时间内抢答时,抢答器完成:
优先判断、编号锁存、编号显示、扬声器提示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作"清除"和"开始"状态开关。
1.2、抢答器系统框图设计
主电路扩展控制电路
图1-1系统框图
1.3、分支电路分析
此方案是由主体电路和扩展电路两部分构成,整个系统包括这样几个主要模块:
抢答鉴别模块、抢答计时模块、抢答计分模块、译码显示模块、报警模块。
主体电路完成基本的抢答功能,接通电源时,主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯;抢答开始时,主持人将控制开关拨到“开始”位置,扬声器给出声响提示,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。
然后由译码显示电路显示编号,扬声器发出短暂声响,提醒主持人注意。
扩展电路完成各选手的得分显示以及报警功能。
选手回答问题完毕,主持人操作计分开关,计分电路采用十进制加/减计数器、数码管显示。
本轮抢答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。
系统的输入信号有:
各组的抢答按钮s0、s1、s2、s3。
系统清零信号CLR,系统时钟信号CLK,复位信号RST,加分按钮端ADD,计时中止信号stop;计时十位和个位信号tb,ta。
系统的输出信号有:
四个组抢答状态的显示LEDx(x表示参赛者的编号),四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
第2章系统单元模块设计
2.1、计时模块
2.1.1、计时模块原理与框图
在这个模块中主要实现抢答过程中的计时功能,在有组别抢答后开始倒计时,若在规定时间没人回答,则超时报警。
其中有系统复位信号rst;抢答使能信号s;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。
图2-1计时模块框图
图2-2计时模块内部电路
2.1.2、计时器程序
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;
architectureoneofjsissignalco:
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;
2.2、抢答器模块
2.2.1、抢答器原理与框图
在这个模块中主要实现抢答过程中的抢答鉴别功能。
其电路框图如下。
其中,rst为复位信号,当该信号高电平有效时,电路无论处于何种状态都恢复为初始状态,即所有的输出信号都为0;EN为抢答使能信号,该信号高电平有效;s0、s1、s2、s3为抢答按钮,高电平时有效。
当使能信号EN为低电平时,如果有参赛者按下按钮,则提前抢答报警信号FALSE[3..0]的对应位输出高电平,以示警告;当EN为高电平时,首先将提前抢答报警信号FALSE[3..0]复位清0,然后根据选手按下抢答按钮的先后顺序选择最先抢答的信号,其对应的抢答状态显示信号LEDA~LEDD输出高电平,抢答成功组别编号由信号states输出,并锁存抢答器此时的状态,直到清0信号有效为止。
在每一轮新的抢答之前,都要使用复位清零信号rst,清除上一轮抢答对判断电路留下的使用痕迹,使电路恢复初始状态。
图2-3抢答器框图
图2-4抢答器内部电路
2.2.2、抢答器程序
libraryieee;
useieee.std_logic_1164.all;
entityqdjbis
port(rst:
instd_logic;
EN:
instd_logic;
s0,s1,s2,s3:
instd_logic;
LEDA:
outstd_logic;
LEDB:
outstd_logic;
LEDC:
outstd_logic;
LEDD:
outstd_logic;
false:
outstd_logic_vector(3downto0);
states:
outstd_logic_vector(3downto0));
endqdjb;
architectureoneofqdjbis
signaltmp:
std_logic_vector(3downto0);
signaltag:
std_logic;
begin
tmp<=s0&s1&s2&s3;
process(rst,EN,s0,s1,s2,s3,tmp)
begin
ifrst='1'THEN
states<="0000";
LEDA<='0';
LEDB<='0';
LEDC<='0';
LEDD<='0';
false<="0000";
tag<='0';
elsifEN='0'then
ifs0='1'thenfalse(3)<='1';endif;
ifs1='1'thenfalse
(2)<='1';endif;
ifs2='1'thenfalse
(1)<='1';endif;
ifs3='1'thenfalse(0)<='1';endif;
else
false<="0000";
iftag='0'then
iftmp="1000"then
LEDA<='1';
LEDB<='0';
LEDC<='0';
LEDD<='0';
states<="1000";
tag<='1';
elsiftmp="0100"then
LEDA<='0';
LEDB<='1';
LEDC<='0';
LEDD<='0';
states<="0100";
tag<='1';
elsiftmp="0010"then
LEDA<='0';
LEDB<='0';
LEDC<='1';
LEDD<='0';
states<="0010";
tag<='1';
elsiftmp="0001"then
LEDA<='0';
LEDB<='0';
LEDC<='0';
LEDD<='1';
states<="0001";
tag<='1';
endif;
endif;
endif;
endprocess;
endone;
2.3、译码显示
2.3.1译码原理与框图
译码显示模块用于显示每组选手的分数,计时的时间等信息。
显示电路的实质就是一个简单的LED共阴极显示模块的译码器。
7段数码管LED常用的一般8字型为a,b,c,d,e,f,g,P,其中P为小数点,共阴LED低电平有效。
在这里我们不需要用到小数点位,因此用位宽为7的矢量表示7段数码管即可。
7段LED共阴极显示模块的框图如图所示。
其中,IN4[3„0]为输入信号,以4位2进制数表示;OUT7[6„0]为输出信号,将输入的二进制数译码显示为十进制数字的0~9。
图2-5译码电路框图
图2-6译码模块内部电路
2.3.2译码器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityymxsis
port(in4:
instd_logic_vector(3downto0);
out7:
outstd_logic_vector(6downto0));
endymxs;
architectureartofymxsis
begin
process(in4)
begin
casein4is
when"0000"=>out7<="0111111";
when"0001"=>out7<="0000110";
when"0010"=>out7<="1011011";
when"0011"=>out7<="1001111";
when"0100"=>out7<="1100110";
when"0101"=>out7<="1101101";
when"0110"=>out7<="1111101";
when"0111"=>out7<="0000111";
when"1000"=>out7<="1111111";
when"1001"=>out7<="1101111";
whenothers=>out7<="0000000";
endcase;
endprocess;
endarchitecture;
2.4、记分模块
2.4.1记分模块与框图
抢答计分电路的设计一般按照一定数制进行加减即可,但随着计数数目的增加,要将计数数目分解成十进制并进行译码显示会变得较为复杂。
为了避免该种情况,通常是将一个大的进制数分解为数个十进制以内的进制数,并将计数器级连。
但随着数位的增加,电路的接口也会相应增加。
因此,本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,既减少了接口,又简化了设计。
其电路框图如下,该模块输入信号为加分选择信号add和组别选择信号chose[3..0],其中,加分选择信号add高电平有效,有效时对组别选择信号chose[3..0]选择的参赛组进行加分;组别选择输入信号chose[3..0]即抢答鉴别模块的输出信号states[3..0]。
输出信号分别对应四组竞赛者的得分。
图2-7记分模块框图
图2-8记分模块内部电路
2.4.2记分器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjfis
port(rst:
instd_logic;
add:
instd_logic;
chose:
instd_logic_vector(3downto0);
aa2,aa1,aa0,bb2,bb1,bb0:
outstd_logic_vector(3downto0);
cc2,cc1,cc0,dd2,dd1,dd0:
outstd_logic_vector(3downto0));
endentityjf;
architectureartofjfisbegin
process(rst,add,chose)is
variablea2,a1:
std_logic_vector(3downto0);
variableb2,b1:
std_logic_vector(3downto0);
variablec2,c1:
std_logic_vector(3downto0);
variabled2,d1:
std_logic_vector(3downto0);
begin
if(rst='1')then
a2:
="0001";a1:
="0000";
b2:
="0001";b1:
="0000";
c2:
="0001";c1:
="0000";
d2:
="0001";d1:
="0000";
elsif(add'eventandadd='1')then
ifchose="0001"then
ifa1="1001"then
a1:
="0000";
ifa2="1001"then
a2:
="0000";
else
a2:
=a2+'1';
endif;
else
a1:
=a1+'1';
endif;
elsifchose="0010"then
ifb1="1001"then
b1:
="0000";
ifb2="1001"then
b2:
="0000";
else
b2:
=b2+'1';
endif;
else
b1:
=b1+'1';
endif;
elsifchose="0100"then
ifc1="1001"then
c1:
="0000";
ifc2="1001"then
c2:
="0000";
else
c2:
=c2+'1';
endif;
else
c1:
=c1+'1';
endif;
elsifchose="1000"then
ifd1="1001"then
d1:
="0000";
ifd2="1001"then
d2:
="0000";
else
d2:
=d2+'1';
endif;
else
d1:
=d1+'1';
endif;
endif;
endif;
aa2<=a2;aa1<=a1;aa0<="0000";
bb2<=b2;bb1<=b1;bb0<="0000";
cc2<=c2;cc1<=c1;cc0<="0000";
dd2<=d2;dd1<=d1;dd0<="0000";
endprocess;
endarchitectureart;
2.5、报警模块
2.5.1、报警模块与框图
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,指示灯显示抢答组别,扬声器发出2~3秒的音响。
即有效电平输入信号i;状态输出信号q。
图2-9报警模块框图
图2-10报警模块内部电路
2.5.2、报警器程序
libraryieee;
useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalarmis
port(clk,i:
instd_logic;
q:
outstd_logic);endalarm;
architecturebehaveofalarmis
signalwarn:
std_logic;
signaln:
integerrange0to20;begin
q<=warn;
process(clk)
begin
ifclk'eventandclk='1'then
ifi='0'then
warn<='0';
elsif(i='1'andn<=19)then
warn<=notwarn;
n<=n+1;
else
warn<='0';
endif;
endif;
endprocess;
endbehave;
2.6、电路整体框图与程序
(1)从上述设计方案中我们可以大致得到数字竞赛抢答器的系统框图,如下图所示,其中抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。
图2-11总体电路框图
(2)程序
libraryieee;
useieee.std_logic_1164.all;
entitytopis
port(rst,en,ADD,s0,s1,s2,s3:
instd_logic;
LEDA,LEDB,LEDC,LEDD:
outstd_logic;
false:
outstd_logic_vector(3downto0);
zbxs:
outstd_logic_vector(6downto0);
JF2A,JF1A,JF0A,JF2B,JF1B,JF0B,JF2C,JF1C,JF0C,JF2D,JF1D,JF0D:
outstd_logic_vector(3downto0));
endtop;
architecturertloftopiscomponentqdjbis
port(en,rst:
instd_logic;
s0,s1,s2,s3:
instd_logic;
LEDA,LEDB,LEDC,LEDD:
outstd_logic;
false:
outstd_logic_vector(3downto0);
states:
outstd_logic_vector(3downto0));
endcomponentqdjb;
componentjsis
port(clk,rst,s,stop:
instd_logic;
warn:
outstd_logic;
ta,tb:
bufferstd_logic_vector(3downto0));
endcomponentjs;
componentjfis
port(add:
instd_logic;
chose:
instd_logic_vector(3downto0);
aa2,aa1,aa0,bb2,bb1,bb0,cc2,cc1,cc0,dd2,dd1,dd0:
out
std_logic_vector(3downto0));
endcomponentjf;
componentymxsis
port(in4:
instd_logic_vector(3downto0);
out7:
outstd_logic_vector(6downto0));
endcomponentymxs;
componentalarmis
port(clk,i:
instd_logic;
q:
outstd_logic);
endcomponentalarm;
signalstates,ta,tb:
std_logic_vector(3downto0);
signaljfxs1,jfxs2:
std_logic_vector(6downto0);
begin
u1:
qdjbportmap(en,rs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 技术 实用教程