dring.vhd
来自「应用MaxplusII平台的数字时钟的VHDL源程序」· VHDL 代码 · 共 74 行
VHD
74 行
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY dring IS
PORT(RESET: IN STD_LOGIC;
WHOLE: IN STD_LOGIC;
ALARM: OUT STD_LOGIC;
rtin:IN INTEGER RANGE 0 TO 7;
stopin:IN INTEGER RANGE 0 TO 7;
hourhdis: IN INTEGER RANGE 0 TO 2;
hourldis: IN INTEGER RANGE 0 TO 9;
minhdis: IN INTEGER RANGE 0 TO 5;
minldis: IN INTEGER RANGE 0 TO 9;
sechdis: IN INTEGER RANGE 0 TO 5;
secldis: IN INTEGER RANGE 0 TO 9;
hourhmat: IN INTEGER RANGE 0 TO 2;
hourlmat: IN INTEGER RANGE 0 TO 9;
minhmat: IN INTEGER RANGE 0 TO 5;
minlmat: IN INTEGER RANGE 0 TO 9);
END dring;
ARCHITECTURE archi OF dring IS
CONSTANT RT:INTEGER:=5;
BEGIN
PROCESS(secldis)
VARIABLE CNT:INTEGER;
VARIABLE RTN:INTEGER;
VARIABLE STOPN:INTEGER;
BEGIN
cnt:=sechdis*10+secldis;
rtn:=rtin;
stopn:=stopin;
IF reset='1'THEN
ALARM<='0';
ELSIF(hourhdis=0 AND hourldis=6 AND minhdis =0 AND minldis=0 AND sechdis<2)OR
(hourhdis=2 AND hourldis=2 AND minhdis=3 AND minldis=0 AND sechdis<2)OR
(hourhdis=hourhmat AND hourldis=hourlmat AND minhdis=minhmat AND minldis=minlmat AND sechdis<3)then
IF cnt<rtn THEN
ALARM<='1';
ELSIF cnt>=rtn AND cnt<rtn+stopn THEN
ALARM<='0';
ELSIF cnt<2*rtn+stopn THEN
ALARM<='1';
ELSE
ALARM<='0';
END IF;
ELSIF(hourhdis=0 AND hourldis=7 AND minhdis=3 AND minldis=0 AND sechdis=0)OR
(hourhdis=0 AND hourldis=8 AND minhdis=2 AND minldis=0 AND sechdis=0)OR
(hourhdis=0 AND hourldis=8 AND minhdis=3 AND minldis=0 AND sechdis=0)OR
(hourhdis=0 AND hourldis=9 AND minhdis=2 AND minldis=0 AND sechdis=0)OR
(hourhdis=0 AND hourldis=9 AND minhdis=4 AND minldis=0 AND sechdis=0)OR
(hourhdis=1 AND hourldis=0 AND minhdis=3 AND minldis=0 AND sechdis=0)OR
(hourhdis=1 AND hourldis=0 AND minhdis=4 AND minldis=0 AND sechdis=0)OR
(hourhdis=1 AND hourldis=1 AND minhdis=3 AND minldis=0 AND sechdis=0)then
IF secldis<RT THEN
ALARM<='1';
ELSE ALARM<='0';
END IF;
ELSIF(minhdis=0 AND minldis=0 AND sechdis=0)then
IF whole='1' THEN
IF secldis<RT THEN
ALARM<='1';
ELSE ALARM<='0';
END IF;
ELSE ALARM<='0';
END IF;
ELSE ALARM<='0';
END IF;
END PROCESS;
END archi;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?