复杂数字电路设计实验报告
——数字式竞赛抢答器
一.实验题目名称:
数字式竞赛抢答器
二.实验目的、任务和要求:
设计—个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答者使用。抢答器具有 第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设置一个主持人“复位”按钮,主持人复位后,开始抡答,第一信号鉴别锁存电路得到信号后,用指示灯显示抡答 组别,扬声器发出2—3s的音响。
设置犯规电路,对提前抢答和超时答题(例如3min)的组别鸣笛示警,并由组别显示电路显示出犯规组别。
设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。
三.实验系统结构设计分析
1.模块划分思想和方法;
本试验系统分为第一信号鉴别、锁存模块、答题计时电路模块、计分电路模块和扫描显示模块四部分。
第—信号鉴别锁存模块的关键是准确判断出第一枪答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。设置抢答按 钮K1、K2、K3、K4,主持人复位信号reset,扬声器驱动信号out。
Reset=0时,第—信号鉴别、锁存电路、答题计时电路复位,在此状态下,若有枪答按钮按下,鸣笛示警并显示犯规组别;reset=1时,开始枪答,由第—信号鉴别锁存电路形成第一枪答信号,进行组别显示,控制扬声器发出音响,并启动答题计时电路,若计时时间 到,主持人复位信号还没有按下则由扬声器发出犯规示警声。
计分电路是一个相对独立的模块,采用十进制加/减计数器、数码管数码扫描显示, 设置复位信号reset1、加分信号up、减分信号down,reset1=0时,所有得分回到起始分(10 分),且加分、减分信号无效;reset1=1时,由第一信号鉴别、锁存电路的输出信号选择进行加减分的组别,每按一次up,第一抢答组加—分;每按—次down,第一抢答组减一分。
硬件系统示意图如下图所示:
2.模块框图和作用;
抢答器模块框图
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;主持人“复位” 按钮,主持人复位后,开始抡答,第一信号鉴别锁存电路得到信号后,用指示灯显示抡答组别,扬声器发出2—3s的音响。 犯规电路,对提前抢答和超时答题(例如3min)的组别鸣笛示警,并由组别显示电路显示出犯规组别。 计分电路对每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。扫描显示模块用于实时显示各组选手的得分。
3.各模块引脚定义和作用.
时钟:NET \ LOC = \ 加分:NET \ LOC = \ | PULLUP ; 扣分:NET \ LOC = \ | PULLUP ;
A组抢答按钮:NET \ LOC = \ | PULLDOWN ; B组抢答按钮:NET \ LOC = \ | PULLDOWN ; C组抢答按钮:NET \ LOC = \ | PULLDOWN ; D组抢答按钮:NET \ LOC = \ | PULLDOWN ;
LED提示灯:NET \ LOC = \ | SLEW = slow | DRIVE = 8 ; 抢答重置:NET \ LOC = \ | PULLUP ; 得分重置:NET \ LOC = \ | PULLUP ; LCD各使能端与数据线:
NET \NET \NET \NET \ NET \ NET \ NET \
四.实验代码设计以及分析:
1.给出模块层次图;
2.按模块完成的代码及注释.
Justify模块(第一信号鉴别及锁存模块):
entity justify is
Port ( K1 : in STD_LOGIC; K2 : in STD_LOGIC; K3 : in STD_LOGIC; K4 : in STD_LOGIC;
reset : in STD_LOGIC;--不弹起的开关
clr : in STD_LOGIC;
output : buffer STD_LOGIC_VECTOR (3 downto 0) := \
outalarm : out STD_LOGIC := '0') ;
end justify;
architecture Behavioral of justify is
signal K11, K22, K33, K44: STD_LOGIC:= '0'; signal alarm: STD_LOGIC:= '0';
signal tempoutput: STD_LOGIC_VECTOR (3 downto 0):= \
begin 了
K11 <= K1 AND NOT(output(1) OR output(2) OR output(3));--禁止别人再抢答 K22 <= K2 AND NOT(output(0) OR output(2) OR output(3)); K33 <= K3 AND NOT(output(0) OR output(1) OR output(3)); K44 <= K4 AND NOT(output(0) OR output(1) OR output(2));
alarm <= output(0) or output(1) or output(2) or output(3);--有人抢到题,该答
FindFirst: PROCESS(clr, reset, K11, K22, K33, K44) IS begin
if (reset = '0' or clr = '0') then—清零
tempoutput(3 downto 0) <= \
elsif (K11 = '1') then
tempoutput(3 downto 0) <= \
elsif (K22 = '1') then
tempoutput(3 downto 0) <= \
elsif (K33 = '1') then
tempoutput(3 downto 0) <= \
elsif (K44 = '1') then
tempoutput(3 downto 0) <= \
end if;
end PROCESS FindFirst;
KeepValue: PROCESS(alarm, tempoutput, reset, clr) IS—锁存 begin
if (reset = '0' or clr = '0') then—清零
output(3 downto 0) <= \
elsif(alarm = '0') then
output(3 downto 0) <= tempoutput(3 downto 0);
end if;
end PROCESS KeepValue;
outalarm <= alarm;
end Behavioral;
Violation模块(抢答鉴别及锁存模块):
entity violationjustify is Port ( clk500 : in STD_LOGIC;
K1 : in STD_LOGIC;
K2 : in STD_LOGIC; K3 : in STD_LOGIC; K4 : in STD_LOGIC;
百度搜索“yundocx”或“云文档网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,云文档网,提供经典综合文库复杂数字电路设计实验报告_数字抢答器在线全文阅读。
最新更新: