logo资料库

数字逻辑课程设计.docx

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
一:实验目的
二:实验方案设计原理及分析
2.1、方案原理
2.2、方案设计框图
2.3、方案各路功能分析
三:原理连线图
四:主要模块设计
4.1、抢答鉴别模块
4.2、计时模块
4.3、计分模块
4.4、译码显示模块
4.5、报警模块
4.6、整体框图
五:仿真结果
5.1、抢答鉴别模块仿真
5.2计时模块
5.3计分模块仿真
5.4 译码模块仿真
5.5、报警模块仿真
5.6整体仿真
数字逻辑课程设计报告 数字式抢答器 学院:计算机科学与技术 班级:网 姓名: 学号: 时间:2017.10.16 指导老师:张辉宜 2
一:实验目的 1、设计一个可容纳 4 组参赛的数字式抢答器,每组设一个按钮,供抢答使 2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作 用。 用。 3、设置一个主持人“复位”按钮。 4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示 灯显示抢答组别,扬声器发出 2~3 秒的音响。 5、设置一个计分电路,每组开始预置 100 分,由主持人记分,答对一次加 10 分,答错一次减 10 分。 二:实验方案设计原理及分析 2.1、方案原理 1.按照设计要求,设计一个 4 组参赛的抢答器,所以这种抢答器要求有四路 不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数码显示和蜂 鸣报警等方式提示主持人并显示出组别; 2.该系统应有复位功能。主持人按下系统复位键(RST),系统进入抢答状态, 计分模块输出初始信号给数码显示模块并显示出初始值。 3.当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬 声器发出 2-3 秒的声音提示,组别显示模块送出信号给数码显示模块,从而显示 出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。 4.主持人对抢答结果进行确认,计时至 0 时,停止计时,扬声器发出超时报 警信号,以中止未回答完问题。当主持人给出倒计时停止信号时,扬声器停止鸣 叫。若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以 免扬声器鸣叫。主持人按下复位键,即 RST 为高电平有效状态,清除前一次的抢 答组别,又可开始新的一轮的抢答。 3
2.2、方案设计框图 主持人控制开关 抢答按钮 控制电路 优先编码 报警电路 锁存器 译码电路 显示电路 预制 计分电路 译码电路 显示电路 主电路 扩展功能电路 2.3、方案各路功能分析 此方案是由主体电路和扩展电路两部分构成,整个系统包括这样几个主要模 块:抢答鉴别模块、抢答计时模块、抢答计分模块、译码显示模块、报警模块。 主体电路完成基本的抢答功能,扩展电路完成各选手的得分显示以及报警功 能。选手回答问题完毕,主持人操作计分开关,计分电路采用十进制加/减计数 器、数码管显示。本轮抢答完毕,主持人操作控制开关,使系统回复到禁止工作 状态,以便进行下一轮抢答。 系统的输入信号有:各组的抢答按钮 s0、s1、s2、s3。系统清零信号 CLR, 系统时钟信号 CLK,复位信号 RST,加分按钮端 ADD,计时中止信号 stop;计时 十位和个位信号 tb,ta。;系统的输出信号有:四个组抢答状态的显示 LEDx(x 表示参赛者的编号),四个组抢答时的计时数码显示控制信号若干,抢答成功组 别显示的控制信号若干,各组计分动态显示的控制信号若干。 4
三:原理连线图 根据系统设计要求,将各模块连线得到如下系统框图。主持人按下使能端 EN,抢答器开始工作。四位抢答者谁先按下抢答按钮,则抢答成功,对应的显示 灯亮起,并通过显示电路模块显示参赛编号。抢答成功的选手进入答题阶段,如 果正确回答问题,则加分信号 add 有效,给相应的参赛组加分。如果复位信号 rst 有效,使得抢答器在下一轮抢答前,其抢答成功的组别判断恢复为初始状态, 开始新一轮抢答。 5
四:主要模块设计 4.1、抢答鉴别模块 在这个模块中主要实现抢答过程中的抢答鉴别功能。其电路框图如下。其中, rst 为复位信号,当该信号高电平有效时,电路无论处于何种状态都恢复为初始 状态,即所有的输出信号都为 0;EN 为抢答使能信号,该信号高电平有效;s0、 s1、s2、s3 为抢答按钮,高电平时有效。当使能信号 EN 为低电平时,如果有参 赛者按下按钮,则提前抢答报警信号 FALSE[3..0]的对应位输出高电平,以示警 告;当 EN 为高电平时,首先将提前抢答报警信号 FALSE[3..0]复位清 0,然后根 据选手按下抢答按钮的先后顺序选择最先抢答的信号,其对应的抢答状态显示信 号 LEDA~LEDD 输出高电平,抢答成功组别编号由信号 states 输出,并锁存抢答 器此时的状态,直到清 0 信号有效为止。在每一轮新的抢答之前,都要使用复位 清零信号 rst,清除上一轮抢答对判断电路留下的使用痕迹,使电路恢复初始状 态。 VHDL 程序 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; 6
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'; 7
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; 4.2、计时模块 在这个模块中主要实现抢答过程中的计时功能,在有组别抢答后开始倒计时, 若在规定时间没人回答,则超时报警。其中有系统复位信号 rst;抢答使能信号 s;无人抢答警报信号 warn;计时中止信号 stop;计时十位和个位信号 tb,ta。 VHDL 程序: 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; 8
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; 9
分享到:
收藏