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