📄 clock5.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY clock5 IS
PORT(clk: IN STD_LOGIC; --system clock,1hz
settime: IN STD_LOGIC; --recivedfrom "control" module
hourhset: IN INTEGER RANGE 0 TO 2; --time from "control" module
hourlset: IN INTEGER RANGE 0 TO 9;
minhset: IN INTEGER RANGE 0 TO 5;
minlset: IN INTEGER RANGE 0 TO 9;
sechset: IN INTEGER RANGE 0 TO 5;
seclset: IN INTEGER RANGE 0 TO 9;
weekset: IN INTEGER RANGE 1 TO 7;
hourhdis: OUT INTEGER RANGE 0 TO 2;--time to be sent to "display" module
hourldis: OUT INTEGER RANGE 0 TO 9;--time from "control" module
minhdis: OUT INTEGER RANGE 0 TO 5;
minldis: OUT INTEGER RANGE 0 TO 9;
sechdis: OUT INTEGER RANGE 0 TO 5;
secldis: OUT INTEGER RANGE 0 TO 9;
weekdis: OUT INTEGER RANGE 1 TO 7);
END clock5;
ARCHITECTURE archi OF clock5 IS
SIGNAL seclow,minlow,hourlow: INTEGER RANGE 0 TO 9;
SIGNAL sechigh,minhigh: INTEGER RANGE 0 TO 5;
SIGNAL hourhigh: INTEGER RANGE 0 TO 2;
SIGNAL week: INTEGER RANGE 1 TO 7;
BEGIN
secldis<=seclow;
sechdis<=sechigh;
minldis<=minlow;
minhdis<=minhigh;
hourldis<=hourlow;
hourhdis<=hourhigh;
weekdis<=week;
normal_run: --this process finishes normal time running
PROCESS(clk,settime)
BEGIN
IF settime='1' THEN
seclow<=seclset;
sechigh<=sechset;
minlow<=minlset;
minhigh<=minhset;
hourlow<=hourlset;
hourhigh<=hourhset;
week<=weekset;
ELSE
IF clk='1' AND clk'event THEN
IF seclow=9 THEN
seclow<=0;
IF sechigh=5 THEN
sechigh<=0;
IF minlow=9 THEN
minlow<=0;
IF minhigh=5 THEN
minhigh<=0;
IF hourlow=9 THEN
hourlow<=0;
hourhigh<=hourhigh+1;
elsIF hourlow=3 and hourhigh=2 THEN
hourhigh<=0;
hourlow<=0;
IF week=7 THEN
week<=1;
ELSE
week<=week+1;
END IF;
ELSE
hourlow<=hourlow+1;
END IF;
ELSE
minhigh<=minhigh+1;
END IF;
ELSE
minlow<=minlow+1;
END IF;
ELSE
sechigh<=sechigh+1;
END IF;
ELSE
seclow<=seclow+1;
END IF;
END IF;
--IF week=7 AND hourlow=0 AND hourhigh=0 AND minhigh=0 AND minlow=0 AND sechigh=0 AND seclow=0 THEN
--week<=1;
--ELSif hourlow=0 AND hourhigh=0 AND minhigh=0 AND minlow=0 AND sechigh=0 AND seclow=0 THEN
--week<=week+1;
--END IF;
END IF;
END PROCESS;
END archi;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -