📄 eda.txt
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ZONG1 IS
PORT(CLR,EN,K,D1,D2,D3,D4:IN STD_LOGIC;
S:OUT STD_LOGIC;
Q1,Q2 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY ZONG1;
ARCHITECTURE ART OF ZONG1 IS
VARIABLE k1:STD_LOGIC:='1'; ---k1=0表示有人抢答,1没有,初始化为1
begin
xinshi:PROCESS(D1,D2,D3,D4)
VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
TMP:=D1&D2&D3&D4;
if TMP="0111" then Q1<="0000110";k1<=0;-----当有人抢答后
else if TMP="1011" then Q1<="1011011";k1<=0;
else if TMP="1101" then Q1<="1001111";k1<=0;
elsif TMP="1110" then Q1<="1100110";k1<=0;
elsif TMP="1111" then Q1<="1111111";k1<=1;
else Q1<="zzzzzzz";k1<=1;
END if;
END if;
END if;
END if;
END if;
END PROCESS;
daojishi:PROCESS(CLK,EN)
VARIABLE L:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK='1' THEN ----10秒倒计时
IF EN='0' THEN
IF L=0 THEN
S<='1'; ---超时连续报警
ELSE
L:=L-1;
S<='0';
END IF;
ELSE
S<='0';
L:="1001";
END IF;
END IF;
CASE L IS
WHEN "0000"=>Q2<="0111111"; --倒计时显示
WHEN "0001"=>Q2<="0000110";
WHEN "0010"=>Q2<="1011011";
WHEN "0011"=>Q2<="1001111";
WHEN "0100"=>Q2<="1100110";
WHEN "0101"=>Q2<="1001111";
WHEN "0110"=>Q2<="1100110";
WHEN "0111"=>Q2<="0100111";
WHEN "1000"=>Q2<="1111111";
WHEN "1001"=>Q2<="1101111";
WHEN OTHERS=>Q2<="0000000";
END CASE;
END PROCESS;
baojing:PROCESS(CLK,k1,EN) -----提前强答报警(由时钟脉冲控制实现间断报警)
begin
if k1='0'AND EN='1' then ----tiqianqda
if CLK='1' THEN
S<='0';
else
S<='1';
end if;
end if;
END PROCESS;
end ART;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -