EDA中用VHDL语言设计五人抢答器

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:23:23
要求:1、五人参赛每人一个按钮,主持人一个按钮,按下就复位重新开始;
2、每人一个发光二极管,抢中者灯亮;
3、抢答开始时,抢答时间为10秒,十秒内有人抢答,则自己的发光二极管亮,同时喇叭发出两秒声响,若10秒内无人抢答,则答题无效,重新开始;
4、有人抢答时,答题时限为10秒钟,从有人抢答开始,用一个数码管倒计时间,0、9、8、7、6、5、4、3、2、1、0,倒计到0时,喇叭发出两秒声响。
(请大家自己回答,不要摘录别人的,是五人抢答器,不是四人,也不是八人。)

五人抢答器:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY QDQ5 IS
PORT(CLK,CLR:IN STD_LOGIC; --时钟(1HZ)和复位(开始)信号--
A,B,C,D,E:IN STD_LOGIC; --抢答的五个人--
LB:OUT STD_LOGIC; --喇叭--
LCD,LCD1,LCD2,LCD3,LCD4,LCD5:OUT STD_LOGIC; --LCD灯--
SG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); --输出到数码管显示--
END;

ARCHITECTURE ONE OF QDQ5 IS
BEGIN
PROCESS(CLR,CLK,A,B,C,D,E)
VARIABLE CNT_LB:STD_LOGIC_VECTOR(1 DOWNTO 0);
VARIABLE CNT:STD_LOGIC_VECTOR(9 DOWNTO 0);
BEGIN
IF CLR='1' THEN
CNT:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1' THEN
IF CNT<9 THEN CNT:=CNT+1;CNT_LB:=CNT_LB+1;
END IF;
END IF; --时钟升沿到达时加1--

IF CNT<9 THEN
IF A='1' THEN