📄 7、计时器源程序clock:.txt
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE P_ALARM IS
SUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9;
SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 65536;
TYPE T_CLOCK_TIME IS ARRAY(5 DOWNTO 0)OF T_DIGITAL;
TYPE T_DISPLAY IS ARRAY(5 DOWNTO 0)OF T_DIGITAL;
END PACKAGE P_ALARM;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY CLOCK IS
PORT(
KEYPAD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
SET:IN STD_LOGIC;
KEY:IN STD_LOGIC;
YES:IN STD_LOGIC;
ALARM_BUTTON:IN STD_LOGIC;
TIME_BUTTON:IN STD_LOGIC;
CLK1:IN STD_LOGIC;
CLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
LEDW:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
SEG7:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
SOUND_ALARM:OUT STD_LOGIC);
END;
ARCHITECTURE ART OF CLOCK IS
COMPONENT KEY_BUFFER
PORT(KEY:IN STD_LOGIC;
CLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
KEYNUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
NEW_TIME:OUT T_CLOCK_TIME);
END COMPONENT;
COMPONENT ALARM_COUNTER
PORT(NEW_CURRENT_TIME:IN T_CLOCK_TIME;
LOAD_NEW_C:IN STD_LOGIC;
CLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
CURRENT_TIME:OUT T_CLOCK_TIME);
END COMPONENT;
COMPONENT ALARM_REG
PORT(NEW_ALARM_TIME:IN T_CLOCK_TIME;
LOAD_NEW_A:IN STD_LOGIC;
CLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
ALARM_TIME:OUT T_CLOCK_TIME);
END COMPONENT;
COMPONENT ALARM_CONTROLLER
PORT(KEY:IN STD_LOGIC;
ALARM_BUTTON:IN STD_LOGIC;
TIME_BUTTON:IN STD_LOGIC;
CLK:IN STD_LOGIC;
RESET:IN STD_LOGIC;
LOAD_NEW_A:OUT STD_LOGIC;
LOAD_NEW_C:OUT STD_LOGIC;
SHOW_NEW_TIME:OUT STD_LOGIC;
SHOW_A:OUT STD_LOGIC);
END COMPONENT;
COMPONENT DIVIDER
PORT(CLK_IN:IN STD_LOGIC;
RESET:IN STD_LOGIC;
CLK_OUT:OUT STD_LOGIC);
END COMPONENT;
COMPONENT DRIVER
PORT(KEYNUM:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
CLK:IN STD_LOGIC;
ALARM_TIME:IN T_CLOCK_TIME;
CURRENT_TIME:IN T_CLOCK_TIME;
NEW_TIME:IN T_CLOCK_TIME;
SHOW_NEW_TIME:IN STD_LOGIC;
SHOW_A:IN STD_LOGIC;
SOUND_ALARM:OUT STD_LOGIC;
LEDW:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
SEG7:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
SIGNAL INNER_KEY:T_DIGITAL;
SIGNAL INNER_TIME:T_CLOCK_TIME;
SIGNAL INNER_TIME_C:T_CLOCK_TIME;
SIGNAL INNER_TIME_A:T_CLOCK_TIME;
SIGNAL INNER_L_C:STD_LOGIC;
SIGNAL INNER_L_A:STD_LOGIC;
SIGNAL INNER_S_N:STD_LOGIC;
SIGNAL INNER_S_A:STD_LOGIC;
SIGNAL INNER_SEG_CLK:STD_LOGIC;
SIGNAL KEYNUM:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
U1:DIVIDER PORT MAP(CLK,RESET,INNER_SEG_CLK);
U2:KEY_BUFFER PORT
MAP(KEY=>KEY,CLK=>CLK1,RESET=>RESET,KEYNUM=>KEYNUM,INNER_TIME);
U3:ALARM_CONTROLLER PORT
MAP(KEY,ALARM_BUTTON,TIME_BUTTON,CLK,RESET,INNER_L_A,INNER_L_C,INNER_S_N,INNER_S_A);
U4:ALARM_COUNTER PORT
MAP(INNER_TIME,INNER_L_C,INNER_SEG_CLK,RESET,INNER_TIME_C);
U5:ALARM_REG PORT MAP(INNER_TIME,INNER_L_A,CLK,RESET,INNER_TIME_A);
U6:DRIVER PORT
MAP(KEYNUM=>KEYNUM,CLK=>CLK,ALARM_TIME=>INNER_TIME_A,
CURRENT_TIME=>INNER_TIME_C,NEW_TIME=>INNER_TIME,SHOW_NEW_TIME=>INNER_S_N,
SHOW_A=>INNER_S_A,SOUND_ALARM=>SOUND_ALARM,LEDW=>LEDW,SEG7=>SEG7);
END ARCHITECTURE ART;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -