顶层文件设计:
1、抢答器:锁存抢答者信号,并控制相应的LED灯点亮
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--抢答器,确定抢答选手编号,并控制相应的LED灯点亮
ENTITY QAI IS
PORT(CLR:IN STD_LOGIC;--开始键
A,B:IN STD_LOGIC;
A1,B1:BUFFER STD_LOGIC;
G:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
RST:IN STD_LOGIC);
END QAI;
--CLR 开始\停止按键;RST 复位键
A、B抢答者按键
ARCHITECTURE BEHAV OF QAI IS
BEGIN
PROCESS(CLR,A,B)
BEGIN
IF (CLR='0' OR RST='0') THEN
A1<='0';B1<='0';G<="0000";
ELSIF (A1='1'OR B1='1') THEN NULL;--锁存抢答者编号
ELSIF(A='0' AND B='1') THEN
A1<='1';B1<='0';G<="0001";
ELSIF(A='1' AND B='0') THEN
A1<='0';B1<='1';G<="0010";
END IF;
END PROCESS;
END BEHAV;
2、数据处理器:
①抢答犯规或者倒计时五秒时蜂鸣器以一秒响一次的频率报警
②按下按键,蜂鸣器响应
③1秒时钟分频
④30秒倒计时+倒计时5秒报警(这部分为队友负责)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
--抢答30s倒计时
ENTITY RAT IS
PORT(RST,CLR:IN STD_LOGIC;
CLK,A,B:IN STD_LOGIC;
QA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--个位
QB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--十位
BEEP:OUT STD_LOGIC);
END RAT;
ARCHITECTURE BEHAV OF RAT IS
SIGNAL clk1:std_logic;
SIGNAL flag:std_logic:= '0';
SIGNAL flag1:std_logic:= '1';
SIGNAL TMPA:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL TMPB:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(CLK)--时钟分频--1s
VARIABLE num1:INTEGER RANGE 1 TO 25000000;
BEGIN
IF rising_edge(CLK)then
IF num1 = 25000000
THEN num1:= 1;clk1<= not clk1;
ELSE num1:= num1+1;
END