VHDL抢答器

  • 格式:doc
  • 大小:43.50 KB
  • 文档页数:3

VHDL抢答器的设计

一.VHDL抢答器要求:

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

2.设置一个系统“开始复位”开关S,该开关由主持人控制(当主持人按下该开关后以前的状态复位并且开始计时抢答)。

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

4. 抢答器具有定时抢答功能,且一次抢答的时间(0-99S)。当主持人启动“开始复位”键后,定时器进行减计时。

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

二.程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LOCK IS

PORT( CLK,CLEAR:IN STD_LOGIC;

WARN:IN STD_LOGIC;

S0,S1,S2,S3:IN STD_LOGIC;

STATES:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

STOP:OUT STD_LOGIC;

LED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END LOCK;

ARCHITECTURE ONE OF LOCK IS

SIGNAL G:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLEAR,CLK,S0,S1,S2,S3)

BEGIN

IF CLEAR='1' THEN G<="0000";LED<="0000";STOP<='0';

ELSIF CLK'EVENT AND CLK='1' THEN

IF WARN='0' THEN

IF( S3='1')AND NOT(G(0)='1' OR G(1)='1' OR G(2)='1') THEN

G(3)<='1';LED(3)<='1';

ELSIF( S2='1')AND NOT(G(0)='1' OR G(1)='1' OR G(3)='1') THEN

G(2)<='1';LED(2)<='1';

ELSIF( S1='1')AND NOT(G(0)='1' OR G(2)='1' OR G(3)='1') THEN

G(1)<='1';LED(2)<='1';

ELSIF( S0='1')AND NOT(G(1)='1' OR G(2)='1' OR G(3)='1') THEN

G(0)<='1';LED(3)<='1';

END IF;

STOP<=G(0) OR G(1) OR G(2) OR G(3);

END IF;

END IF; CASE G IS

WHEN "0001"=>STATES<="0001";

WHEN "0010"=>STATES<="0010";

WHEN "0100"=>STATES<="0011";

WHEN "1000"=>STATES<="0100";

WHEN OTHERS=>STATES<="0000";

END CASE;

END PROCESS;

END ARCHITECTURE ONE;

VHDL

学 院:水利电力学院

班 级: 08电机

姓 名:王富德

学 号:0803505034