EDA—八路抢答器.doc_第1页
EDA—八路抢答器.doc_第2页
EDA—八路抢答器.doc_第3页
EDA—八路抢答器.doc_第4页
EDA—八路抢答器.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

八路抢答器设计实验目的:学习编码器、锁存器和译码器的设计、分析和测试方法。实验原理:本系统共由抢答单元、答题单元和报警单元等三部分组成。首次进行时,主持人设置答题时间,再按一次清零开关,报警器发出声音提示抢答开始,同时抢答锁存模块开始工作,抢答定时器开始减计数,并将时间通过译码电路显示在数码管上。当在规定的时间内,有选手抢答时,抢答锁存模块就将该选手的号码锁存,其他的选手的抢答无效,同时报警器发出警报,定时器停止工作,抢答时间和该选手的号码分别通过数码管显示出来。当规定的时间到并且没有人抢答,定时器递减到0,并通过译码器显示出00,同时报警器报警。在选手抢题成功后,立即开始答题,同时答题定时器开始倒计时,并将剩余译码显示。在规定时间内,若选手答题完成,则选手按答题完成键,报警器报警,倒计时停止计时;若选手未答完题,倒计时结束,报警器报警。此外,主持人设置下一次答题时间,按两次清零开关,并开始下一次的抢答。实验内容: 基本功能:1. 设计一个八路智力抢答器,同时供8个选手参赛,编号分别为1到8。每位选手用一个答题按钮。2. 给主持人一个控制开关,实现系统的清零和抢答的开始。3. 具有数据锁存和显示功能。抢答开始后,如果有选手按下了抢答按钮,其编号立即锁存并显示在LED数码管上,同是扬声器报警。此外,禁止其他选手再次抢答。选手的编号一直保存直到主持人清除。 扩展功能:1. 具有定时抢答功能,可由主持人设定抢答时间。当抢答开始后。定时其开始倒计时,并显示在LED上,同时扬声器发声提醒、2. 选手在规定时间内抢答有效,停止倒计时,并讲倒计时时间显示在LED上,同时报警3. 在规定时间内,无人抢答时,电路报警提醒主持人,此后的抢答按键无效。4. 选手抢中后,开始答题。规定答题时间为:10s,在规定的时间内,选手答完题,手动报警。若在规定时间内,未完成答题,报警提示。答题时,显示答题剩余时间。5. 报警时间定为:100ms。程序设计:设置模块:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity myproject is port( clk : in std_logic; -时钟信号 clear : in std_logic; -清零信号 player : in std_logic_vector(7 downto 0);-八个抢答选手输入 settime1 : in std_logic_vector(3 downto 0);-答题时间设置 led_10s : out std_logic_vector(6 downto 0); -10s抢答计时已进行的时间显示 selector : out std_logic_vector(6 downto 0); -抢中选手编码输出 audio : out std_logic; -喇叭响,低有效. endanswer : in std_logic; -答题完成 led_left1 : out std_logic_vector(6 downto 0);end myproject;architecture Behavioral of myproject iscomponent qiangdaport(set_start : in std_logic;a : in std_logic_vector(7 downto 0);clk : in std_logic; led : out std_logic_vector(6 downto 0);selector : out std_logic_vector(6 downto 0);selected : out std_logic;alarm : out std_logic);end component;component dingshiqiport(selected : in std_logic;clk : in std_logic;settime1: in std_logic_vector(3 downto 0); endanswer : in std_logic; alarm : out std_logic;led : out std_logic_vector(6 downto 0);end component;component baojing port(clk : in std_logic;alarm1 : in std_logic;alarm2 : in std_logic;alarm3 : in std_logic; audioer : out std_logic);end component;signal selected1 : std_logic;signal start : std_logic:=0;signal alarm1 : std_logic:=0;signal alarm2 : std_logic;begin startall : process(clear) begin if clearevent and clear=1 then start=not start; end if;end process;u1: qiangda port map(start,player,clk,led_10s,selector,selected1,alarm1);u2: dingshiqi port map(selected1,clk,settime1,endanswer,alarm2,led_left1);u3: baojing port map(clk,start,alarm1,alarm2,audio);end Behavioral;抢答模块:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity qiangda isport( set_start : in std_logic; -开始抢答信号(主持人按)否则一直有效, a : in std_logic_vector(7 downto 0); -八个抢答选手输入 clk : in std_logic; led : out std_logic_vector(6 downto 0); -10s抢答计时已进行的时间显示 selector : out std_logic_vector(6 downto 0); -抢中选手编码输出 selected : out std_logic; alarm : out std_logic);end qiangda;architecture Behavioral of qiangda is signal deny1 : std_logic:=0; -作为选中后标志 signal deny2 : std_logic:=0; -作为抢答计时结束标志signal timeon : integer range 0 to 15 :=0;signal cnt1 : integer range 0 to 32000000;begin alarm=deny1 or deny2; selected=deny1; select1 : process(set_start,deny2,a) begin if set_start=0 then deny1=0; selector selector=1001111; deny1 selector=0010010; deny1 selector=0000110; deny1 selector=1001100; deny1 selector=0100100; deny1 selector=0100000; deny1 selector=0001111; deny1 selector=0000000; deny1 selector=1111111; -all unlaw states! end case; end if; end process; time10s :process(clk,deny1,set_start) begin if (clkevent and clk=1) then if set_start=0 then deny2=0; timeon=10; cnt1=0; elsif deny1=1 then timeon=timeon; elsif timeon/=0 thenif cnt1/=32 000000 then cnt1=cnt1+1;else timeon=timeon-1; cnt1=0; end if; else deny2 led led led led led led led led led led led=1111111; -未选中的状态,不显示 end case; end process;end Behavioral;答题模块:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity dingshiqi is-设置答题时间,并计数,显示剩余时间,并将计数剩余时间转换为LED码输出。 port ( selected : in std_logic; clk : in std_logic; settime1 : in std_logic_vector(3 downto 0); endanswer : in std_logic; alarm : out std_logic; led : out std_logic_vector(6 downto 0); end dingshiqi;architecture Behavioral of dingshiqi issignal cnt1 : integer range 0 to 32000000;signal time1 : std_logic:=0;signal alarm1 : std_logic:=0;signal alarm2 : std_logic:=0;signal num1 : integer range 0 to 15;begin time1s : process(clk,selected) - 一秒定时 begin if selected=1 then if (clkevent and clk=1) then if cnt1=32000000 then time1=not time1; cnt1=0; else cnt1=cnt1+1; end if; end if;end if; end process; settimeNs :process(time1,selected,alarm2) begin if selected=0 then alarm1=0; num1=conv_integer(settime1); else if alarm2/=1 then if (time1event and time1=1) then if num1/=0 then num1=num1-1; alarm1=0; else alarm1=1; end if; end if; else num1=num1; end if; end if; end proce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论