您好,欢迎来到九壹网。
搜索
您的当前位置:首页EDA四人抢答器实验设计报告

EDA四人抢答器实验设计报告

来源:九壹网


EDA实训—抢答器设计报告

课题名称:EDA实训——抢答器

专业班级:2017级电子二班

姓 名:

指导老师:贺涛

2019年11月22日

目录

一:EDA抢答器设计逻辑与方案………………3二:设计整体思路……………………………….3

2.1设计要求……………………………………………………… 3

三:单元模块设计部分

3.1 概述……………………………………………………………4

- 1 -

3.2 鉴别模块的设计………………………………………………4

3.3 计时模块的设计………………………………………………6

3.4 报警模块的设计………………………………………………7

3.5 译码模块的设计………………………………………………8

3.6 分频模块的设计………………………………………………9

3.7 顶层文件………………………………………………………10

一:EDA抢答器设计逻辑与方案

- 2 -

抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块。答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。若抢答时间内无人抢答,则报警灯亮。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。因此要完成抢答器

二:设计逻辑思路

(1) 设计一个可以让四组参赛队进行比赛的电子抢答器。

(2) 具有第一抢答信号的鉴别和锁存功能

(3) 具有计时功能

(4) 具有计分功能

(5) 具有报警功能

2.1设计要求

1. 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~ S3表示。

2. 设置一个系统清除和抢答控制开关rst,该开关由主持人控制。

3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED和数码管上显示,同时提示灯亮。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

- 3 -

4. 抢答器具有定时抢答功能,且一次抢答的时间为20秒。

5. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示20。

三:单元模块设计部分

1、概述

将该任务分成五个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、报警

模块、分频模块、译码模块

2、鉴别模块的设计:

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk0;系统复位信号rst;警报信号warm。

1.VHDL源程序

library ieee;

- 4 -

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity jianbie is

port(rst,clk2:in std_logic;

s0,s1,s2,s3:in std_logic;

states:buffer std_logic_vector(3 downto 0);

light:buffer std_logic_vector(3 downto 0);

warm:out std_logic);

end jianbie ;

architecture one of jianbie is

signal st:std_logic_vector(3 downto 0);

begin

p1:process(s0,rst,s1,s2,s3,clk2)

begin

if rst='0' then

warm<='0';st<=\"0000\";

elsif clk2'event and clk2='1' then

if (s0='1' or st(0)='1')and not( st(1)='1' or st(2)='1' or st(3)='1' ) then st(0)<='1';

end if ;

- 5 -

if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' or st(3)='1' )

then st(1)<='1';

end if ;

if (s2='1' or st(2)='1')and not( st(0)='1' or st(1)='1' or st(3)='1' )

then st(2)<='1';

end if ;

if (s3='1' or st(3)='1')and not( st(0)='1' or st(1)='1' or st(2)='1' )

then st(3)<='1';

end if ;

warm<=st(0) or st(1) or st(2) or st(3);

end if ;

end process p1;

p2:process(states(0),states(1),states(2),states(3),light)

- 6 -

begin

if (st=\"0000\") then states<=\"0000\";

elsif (st<=\"0001\") then states<=\"0001\";

elsif (st<=\"0010\") then states<=\"0010\";

elsif (st<=\"0100\") then states<=\"0011\";

elsif (st<=\"1000\") then states<=\"0100\";

end if;

light<=st;

end process p2;

end one;

2.鉴别模块仿真图

- 7 -

图1

3.鉴别模块元件图

图2

3.2计数模块的设计

- 8 -

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

1.VHDL源程序

library ieee;

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity jishu is

port(clk1,rst,start,stop:in std_logic;

ta,tb:buffer std_logic_vector(3 downto 0));

end jishu;

architecture one of jishu is

signal co:std_logic;

begin

p1:process(clk1,rst,start,stop,ta)

begin

if rst='0' or stop='1' then

ta<=\"0000\";

elsif clk1'event and clk1='1' then

co<='0';

- 9 -

if start='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,start,stop,tb)

begin

if rst='0' or stop='1' then

tb<=\"0010\";

elsif co'event and co='1' then

- 10 -

if start='1' then

if tb=\"0000\" then tb<=\"0011\";

else tb<=tb-1;

end if;

end if;

end if;

end process p2;

end one ;

2.计时模块的仿真图

图3

3.计时元件图

- 11 -

图4

3.4报警模块设计

在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内 人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk。

1. VHDL源程序

- 12 -

library ieee;

use ieee.std_logic_11.all;

entity baojing is

port(rst:in std_logic;

warn:in std_logic;

clk:in std_logic;

ta,tb:in integer range 0 to 9;

stop:in std_logic;

alm:out std_logic );

end;

architecture bhv of baojing is

begin

process(warn,ta,tb,stop,clk)

begin

if rst='0'then

alm<='0';

elsif stop='1'then

alm<='0';

elsif ta=0 and tb=0 then

- 13 -

alm<=clk;

elsif warn='1'then

alm<=clk;

else alm<='0';

end if;

end process;

end;

2.报警模块仿真图

图5

3.报警模块元件图

- 14 -

图6

3.5译码器模块设计

在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。1. VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

ENTITY yima IS

PORT(bcd:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

dout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END yima ;

- 15 -

ARCHITECTURE rtl OF yima IS

BEGIN

PROCESS(bcd)

BEGIN

CASE bcd IS

WHEN \"0000\"=>dout<=\"1000000\";

WHEN \"0001\"=>dout<=\"1111001\";

WHEN \"0010\"=>dout<=\"0100100\";

WHEN \"0011\"=>dout<=\"0110000\";

WHEN \"0100\"=>dout<=\"0011001\";

WHEN \"0101\"=>dout<=\"0010010\";

WHEN \"0110\"=>dout<=\"0000010\";

WHEN \"0111\"=>dout<=\"1111000\";

- 16 -

WHEN \"1000\"=>dout<=\"0000000\";

WHEN \"1001\"=>dout<=\"0010000\";

WHEN OTHERS=>dout<=\"1111111\";

END CASE;

END PROCESS;

END rtl;

2.译码器模块仿真图

图7

3.译码元件图

- 17 -

图8

3.6分频模块设计

在这个模块中主要实现抢答过程中所需的时钟信号。

1. VHDL源程序

这是一个50M分频,将50MHZ的信号分为1HZ

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY fenpin IS

PORT(clk : IN STD_LOGIC;

- 18 -

clk50 : OUT STD_LOGIC);

END fenpin;

ARCHITECTURE rtl OF fenpin IS

SIGNAL count : STD_LOGIC_VECTOR(25 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

IF (clk'event AND clk='1') THEN

IF(count=\"10111110101111000010000000\") THEN

Count <=\"00000000000000000000000000\";

ELSE

Count <= count +1;

END IF ;

- 19 -

END IF ;

END PROCESS;

PROCESS(clk)

BEGIN

IF (clk'event AND clk='1') THEN

IF(count=\"10111110101111000010000000\") THEN

clk50 <= '1';

ELSE

clk50 <= '0';

END IF ;

END IF ;

END PROCESS;

END;

- 20 -

2. 分频模块仿真图

3. 分频模块元件图

3.7顶层文件

顶层原理图:

图9

图10

- 21 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务