Altera_Forum
Honored Contributor
9 years agodigital watch
hello every one i have design digital watch second , minute , hour after i execute the code the counter second and minute counter ok work . for 0 to 59 but hour counter form 0 to 99 ?
i have question hour about how make counter to 0 to 24 or 0 to 12 ?
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SEQ_COUNTER IS
PORT
(
CLK_1, RST : IN STD_LOGIC;
CLK_2 : BUFFER STD_LOGIC;
SEC_1, SEC_2 : BUFFER INTEGER RANGE 0 TO 9;
MIN_1, MIN_2 : BUFFER INTEGER RANGE 0 TO 9;
HR_1, HR_2 : BUFFER INTEGER RANGE 0 TO 9;
Q : BUFFER INTEGER RANGE 0 TO 9
);
END SEQ_COUNTER;
ARCHITECTURE SEQ_COUNTER OF SEQ_COUNTER IS
BEGIN
PROCESS (CLK_1,RST)
VARIABLE S1, S2, M1, M2, H1, H2 :INTEGER RANGE 0 TO 10;
BEGIN
IF ( RST ='0' ) THEN
S1 :=0;
S2 :=0;
M1 :=0;
M2 :=0;
H1 :=0;
H2 :=0;
SEC_1 <=0;
SEC_2 <=0;
MIN_1 <=0;
MIN_2 <=0;
HR_1 <=0;
HR_2 <=0;
Q <=0;
ELSIF ( CLK_1'EVENT AND CLK_1 ='1') THEN
S1 := S1 +1;
IF ( S1 = 10) THEN
S1 :=0;
SEC_1 <=0;
S2 := S2 +1;
IF ( S2 = 6) THEN
S2 :=0;
SEC_2 <=0;
M1 := M1 +1;
IF ( M1 = 10) THEN
M1 :=0;
MIN_1 <=0;
M2 := M2 +1;
IF ( M2 = 6) THEN
M2 :=0;
MIN_2 <=0;
H1 := H1 +1;
IF ( H1 = 10) THEN
H1 :=0;
HR_1 <=0;
H2 := H2 +1;
IF ( H2 = 1 OR H1= 3 ) THEN
H2 :=0;
HR_2 <=0;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
SEC_1 <= S1;
SEC_2 <= S2;
MIN_1 <= M1;
MIN_2 <= M2;
HR_1 <= H1;
HR_2 <= H2;
END PROCESS;
END SEQ_COUNTER;