资源描述
2016 ~ 2017学年 第 1 学期
《数字系统设计》
课 程 设 计 报 告
题 目: 数字式竞赛抢答器
专 业: 通信工程
班 级: 14通信(1)班
姓 名: 丁浩伟、万康、郑林、王天硕
指导教师: 周珍艮、 王银花
电气工程学院
2016 年 12月7日
任务书
课题名称
数字式竞赛抢答器
指导教师(职称)
周珍艮(副教授)、王银花(讲师)
执行时间
2016~2017学年第1学期 第15周
学生姓名
学号
承担任务
丁浩伟
1409131006
电路设计
万康
1409131026
电路设计
郑林
1409131043
查找资料、绘制原理图
王天硕
1409131029
编写设计报告
设计目的
(1)了解抢答器的设计原理
(2)掌握其外围电路的设计与主要性能参数测试方法
(3)掌握抢答器的设计方法与电子线路系统的装调技术
设计要求
(1)设计一个可容纳6组(或4组)参赛的数字式抢答器,每组设一个按钮,供抢答使用。
(2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
(3)设置一个主持人“复位”按钮。
(4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。
(5)设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
数字式竞赛抢答器
摘 要
数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。单片机体积小价格低,应用便,稳定可靠。单片机将很多任务交给了软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便。单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。
关键字:抢答电路、定时电路、报警电路
目录
第1章 电路原理与设计过程 5
1.1电路的基本功能 5
1.2、抢答器系统框图设计 6
1.3、分支电路分析 6
第2章 系统单元模块设计 7
2.1、计时模块 7
2.1.1、计时模块原理图与分析 7
2.1.2、计时器程序 8
2.2、抢答器模块 9
2.2.1、抢答器原理图与分析 9
2.2.2、抢答器程序 10
2.3、译码显示 12
2.3.1译码原理图与分析 12
2.3.2译码器程序 13
2.4、记分模块 13
2.4.1记分模块图与分析 13
2.4.2记分器程序 14
2.5、报警模块 16
2.5.1、报警模块图与分析 16
2.5.2、报警器程序 17
2.6、电路整体图与程序 18
2.6.1、整体电路图 18
2.6.2、头程序 18
第3章 抢答电路的模拟仿真 20
3.1、计时模块仿真 20
3.2、抢答模块仿真 20
3.3、译码模块仿真 21
3.4、记分模块仿真 22
3.5、报警模块仿真 22
3.6、整体抢答电路仿真 23
3.7、抢答系统电路分析及总图 23
第4章 课程设计总结 25
附录 26
第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、计时器程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity js is
port(clk,rst,s,stop:in std_logic;
warn:out std_logic;
ta,tb:buffer std_logic_vector(3 downto 0));
end js;
architecture one of js is signal co:std_logic;
begin
p1:process(clk,rst,s,stop,ta)
begin
if rst='0' or stop='1' then
ta<="0000";
elsif clk'event and clk='1' then
co<='0';
if s='1' then
if ta="0000" then
ta<="1001";
co<='1';
else ta<=ta-1;
end if;
end if;
end if;
end process p1;
p2:process(co,rst,s,stop,tb)
begin
if rst='0' or stop='1' then
tb<="0010";
elsif co'event and co='1' then
if s='1' then
if tb="0000" then tb<="0011";
else tb<=tb-1;
end if;
end if;
end if;
end process p2;
end one;
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、抢答器程序
library ieee;
use ieee.std_logic_1164.all;
entity qdjb is
port(rst:in std_logic;
EN:in std_logic;
s0,s1,s2,s3:in std_logic;
LEDA:out std_logic;
LEDB:out std_logic;
LEDC:out std_logic;
LEDD:out std_logic;
false:out std_logic_vector(3 downto 0);
states:out std_logic_vector(3 downto 0));
end qdjb;
architecture one of qdjb is
signal tmp: std_logic_vector(3 downto 0);
signal tag: std_logic;
begin
tmp<=s0&s1&s2&s3;
process(rst,EN,s0,s1,s2,s3,tmp)
begin
if rst='1'THEN
states<="0000";
LEDA<='0';
LEDB<='0';
LEDC<='0';
LEDD<='0';
false<="0000";
tag<='0';
elsif EN='0'then
if s0='1'then false(3)<='1'; end if;
if s1='1'then false(2)<='1'; end if;
if s2='1'then false(1)<='1'; end if;
if s3='1'then false(0)<='1';end if;
else
false<="0000";
if tag='0'then
if tmp="1000"then
LEDA<='1';
LEDB<='0';
LEDC<='0';
LEDD<='0';
states<="1000";
tag<='1';
elsif tmp="0100"then
LEDA<='0';
LEDB<='1';
LEDC<='0';
LEDD<='0';
states<="0100";
tag<='1';
elsif tmp="0010"then
LEDA<='0';
LEDB<='0';
LEDC<='1';
LEDD<='0';
states<="0010";
tag<='1';
elsif tmp="0001"then
LEDA<='0';
LEDB<='0';
LEDC<='0';
LEDD<='1';
states<="0001";
tag<='1';
end if;
end if;
end if;
end process;
end one;
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译码器程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ymxs is
port(in4: in std_logic_vector(3 downto 0);
out7:out std_logic_vector(6 downto 0));
end ymxs;
architecture art of ymxs is
begin
process(in4)
begin
case in4 is
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";
when others=>out7<="0000000";
end case;
end process;
end architecture;
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记分器程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jf is
port(rst: in std_logic;
add: in std_logic;
chose: in std_logic_vector(3 downto 0);
aa2,aa1,aa0,bb2,bb1,bb0: out std_logic_vector(3 downto 0);
cc2,cc1,cc0,dd2,dd1,dd0: out std_logic_vector(3 downto 0));
end entity jf;
architecture art of jf is begin
process(rst,add,chose) is
variable a2,a1:std_logic_vector(3 downto 0);
variable b2,b1:std_logic_vector(3 downto 0);
variable c2,c1:std_logic_vector(3 downto 0);
variable d2,d1:std_logic_vector(3 downto 0);
begin
if(rst='1')then
a2:="0001";a1:="0000";
b2:="0001";b1:="0000";
c2:="0001";c1:="0000";
d2:="0001";d1:="0000";
elsif(add'event and add='1')then
if chose="0001"then
if a1="1001"then
a1:="0000";
if a2="1001"then
a2:="0000";
else
a2:=a2+'1';
end if;
else
a1:=a1+'1';
end if;
elsif chose="0010"then
if b1="1001"then
b1:="0000";
if b2="1001"then
b2:="0000";
else
b2:=b2+'1';
end if;
else
b1:=b1+'1';
end if;
elsif chose="0100"then
if c1="1001"then
c1:="0000";
if c2="1001"then
c2:="0000";
else
c2:=c2+'1';
end if;
else
c1:=c1+'1';
end if;
elsif chose="1000"then
if d1="1001"then
d1:="0000";
if d2="1001"then
d2:="0000";
else
d2:=d2+'1';
end if;
else
d1:=d1+'1';
end if;
end if;
end if;
aa2<=a2;aa1<=a1;aa0<="0000";
bb2<=b2;bb1<=b1;bb0<="0000";
cc2<=c2;cc1<=c1;cc0<="0000";
dd2<=d2;dd1<=d1;dd0<="0000";
end process;
end architecture art;
2.5、报警模块
2.5.1、报警模块图与分析
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,指示灯显示抢答组别,扬声器发出 2~3 秒的音响。即有效电平输入信号i;状态输出信号q。
图2-9报警模块图
图2-10报警模块内部电路
2.5.2、报警器程序
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity alarm is
port(clk,i:in std_logic;
q:out std_logic); end alarm;
architecture behave of alarm is
signal warn:std_logic;
signal n:integer range 0 to 20; begin
q<= warn;
process(clk)
begin
if clk'event and clk='1' then
if i='0' then
warn <='0';
elsif(i='1'and n<=19)then
warn <=not warn;
n<=n+1;
else
warn <='0';
end if;
end if;
end process;
end behave;
2.6、电路整体图与程序
2.6.1、整体电路图
从上述设计方案中我们可以大致得到数字竞赛抢答器的系统框图,如下图所示,其中抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。
图2-11总体电路图
2.6.2、头程序
library ieee;
use ieee.std_logic_1164.all;
entity top is
port(rst,en,ADD,s0,s1,s2,s3:in std_logic;
LEDA,LEDB,LEDC,LEDD:out std_logic;
false:out std_logic_vector(3 downto 0);
zbxs:out std_logic_vector(6 downto 0);
JF2A,JF1A,JF0A,JF2B,JF1B,JF0B,JF2C,JF1C,JF0C,JF2D,JF1D,JF0D:out std_logic_vector(3 downto 0));
end top;
architecture rtl of top is component qdjb is
port(en,rst:in std_logic;
s0,s1,s2,s3:in std_logic;
LEDA,LEDB,LEDC,LEDD:out std_logic;
false:out std_logic_vector(3 downto 0);
states:out std_logic_vector(3 downto 0));
end component qdjb;
component js is
port(clk,rst,s,stop:in std_logic;
warn:out std_logic;
ta,tb:buffer std_logic_vector(3 downto 0));
end component js;
component jf is
port(add:in std_logic;
chose:in std_logic_vector(3 downto 0);
aa2,aa1,aa0,bb2,bb1,bb0,cc2,cc1,cc0,dd2,dd1,dd0:out
std_logic_vector(3 downto 0));
end component jf;
component ymxs is
port(in4: in std_logic_vector (3 downto 0);
out7: out std_logic_vector (6 downto 0));
end component ymxs;
component alarm is
port(clk,i:in std_logic;
q:out std_logic);
end component alarm;
signal states,ta,tb:std_logic_vector(3 downto 0);
signal jfxs1,jfxs2:std_logic_vector(6 downto 0);
begin
u1:qdjb port map(en,rst,s0,s1,s2,s3,LEDA,LEDB,LEDC,LEDD,states,false);
u2:js port map(clk,rst,s,stop,warm,ta,tb);
u3:jf port map(add,chose,aa2,aa1,aa0,bb2,bb1,bb0,cc2,cc1,cc0,dd2,dd1,dd0);
u4:ymxs port map(in4,OUT7=>zbxs);
u5:alarm port map(clk,i,q);
end rtl;
第3章 抢答电路的模拟仿真
3.1、计时模块仿真
计时模块的仿真波形如图所示。实现了抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。
图3-1计时模块仿真波形图
3.2、抢答模块仿真
抢答鉴别模块的仿真波形图如图所示。当鉴别模块的清零复位信号rst为高电平时,无论四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端输出信号也显示为零;当清零信号rst为低电平时,s0、s1、s2、s3四组参赛者谁先按下抢答按钮,其对应的显示灯LEDx亮起,states[3..0]输出抢答成功的选手编号。
图3-2抢答模块仿真波形图
3.3、译码模块仿真
当in4= "0000" ,out7输出"0111111",此时数码管显示0;
当in4= "0001" ,out7输出"0000110",此时数码管显示1;
当in4= "0010" ,out7输出"1011011",此时数码管显示2;
当in4= "0011" ,out7输出"1001111",此时数码管显示3;
当in4= "0100" ,out7输出"1100110",此时数码管显示4;
当in4= "0101" ,out7输出"1101101",此时数码管显示5;
当in4= "0110" ,out7输出"1111101",此时数码管显示6;
当in4= "0111" ,out7输出"0000111",此时数码管显示7;
当in4= "1000" ,out7输出"1111111",此时数码管显示8;
当in4= "1001" ,out7输出"1101111",此时数码管显示9;
图3-3译码模块仿真波形图
3.4、记分模块仿真
系统设计过程中,当计分复位端RST=1时,并且组别输入信号CHOSE=0000,其中的组别输入信号是抢答鉴别模块的输出信号,计分器复位,此时以上四组都不会产生加减分操作。然而当计分复位端RST=0时,此时计分器可以计分。当CHOS=0001时,组别显示为A组,此时主持人利用计分器对A组进行加减分操作;当CHOS=0010时,组别显示为B组,此时主持人则利用计分器对B组进行加减分操作,以此类推。下图仿真为A组回答正确,加分。
图3-4记分模块仿真波形图
3.5、报警模块仿真
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内如果人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q。
图3-5报警模块仿真波形图
3.6、整体抢答电路仿真
对电路整体进行仿真,当复位信号rst为高电平时,系统所有信号都清零;当主持人按下开始键,抢答器开始工作。
图3-6整体抢答电路仿真波形图
3.7、抢答系统电路分析及总图
根据系统设计要求,将各模块连线得到如下系统框图。主持人按下使能端EN,抢答器开始工作。四位抢答者谁先按下抢答按钮,则抢答成功,对应的显示灯亮起,并通过显示电路模块显示参赛编号。抢答成功的选手进入答题阶段,如果正确回答问题,则加分信号add有效,给相应的参赛组加分。如果复位信号rst有效,使得抢答器在下一轮抢答前,其抢答成功的组别判断恢复为初始状态,开始新一轮抢答。
图3-7抢答器电路总图
第4章 课程设计总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,软件方面的应用已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握各种软件的应用是十分重要的。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
主要有以下几点:
根据指导教师布置的课题,学会了找参考书籍、查阅手册、图表和文献资料等。通过独立思考,深入钻研有关问题,学会了自己分析解决问题的方法。
培养了严肃认真的工作作风和科学态度。
数字系统设计课程设计的主要任务是通过解决一两个实际问题,巩固和加深此课程中所学的理论知识和试验技能,基本掌握常用电子电路的一般设计方法,提高电子电路的设计和试验能力,为以后从事生产和科研工作打下一定的基础。
其主要内容包括理论设计、安装与调试及写出设计总结报告等。其中理论设计又包括选择总体方案、设计单元电路、选择元器件及计算参数等步骤,是课程设计的关键环节。安装与调试是把理论付诸实践的过程,通过安装与调试,进一步完善电路,使之达到课题所要求的性能指标,使理论设计可以转变为实际产品。课程设计的最后要求写出设计总结报告,把理论设计的内容、组装调试的过程及性能指标的测试结果进行全面的总结,把实践内容上升到理论的高度。
通过这次设计,对电子系统的自顶向下、自底向上以及自顶向下与自底向上相结合的设计方法都有了一定的了解,并基本掌握了自顶向下的设计方法。知道了运用该方法是应该遵循的正确性和完备性原则、模块化结构化原则、问题不下放原则、以及高层主导原则等等。 虽然此次设计不需要仿真,但是我还是对Xilinx ISE仿真软件有了一定的了解和掌握。其次,对硬件电路的设计,调试和分析有了一定的了解和能力。同时也认识到设计者必须有广泛的知识基础,缜密的思路以及认真地工作态度,这对我今后的学习和工作都将起到不可忽视的作用。
把理论和实践相结合,通过理论指导实践,在实践中理解理论,这是我们每个大学生都应该做到的一点。
附录
答辩记录及评分表
课题名称
数字式竞赛抢答器
答辩教师(职称)
周珍艮(副教授)、王银花(讲师)
答辩时间
2016-2017学年第1学期 第 15周
答
辩
记
录
问:请简述EDA的设计流程。
答:设计输入(原理图/HDL文本编辑)、
展开阅读全文