You are on page 1of 3

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.

ALL; ENTITY ceas_digital IS PORT (clk,reset: IN STD_LOGIC; display: OUT STD_LOGIC_VECTOR (6 DOWNTO 0); led: OUT STD_LOGIC; ceas: OUT STD_LOGIC_ VECTOR (3 DOWNTO 0); buton_ora: IN STD_LOGIC; buton_min: IN STD_LOGIC; buton: IN STD_LOGIC); END ceas_digital;

ARCHITECTURE Behavioral OF ceas_digital IS BEGIN PROCESS (clk) VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE VARIABLE min_unit: INTEGER RANGE 0 TO 10; min_zeci: INTEGER RANGE 0 TO 10; ora_unit: INTEGER RANGE 0 TO 10; ora_zeci: INTEGER RANGE 0 TO 10; sel: INTEGER RANGE 0 TO 3; temp1: INTEGER RANGE 0 TO 3000000; temp2: INTEGER RANGE 0 TO 2000; temps: INTEGER RANGE 0 TO 10; tempbut: INTEGER RANGE 0 TO 10000; tempbuton: INTEGER RANGE 0 TO 10000;

BEGIN IF (buton = '1') THEN IF(clk' EVENT AND clk = '1') THEN temp2 := temp2 + 1; IF (temp2 = 2000) THEN temp2 := 0; temp1 := temp1 + 1; IF (temp1 = 50000) THEN led := led XOR 1 ; END IF; IF (temp1 = 3000000) THE N min_unit := min_unit + 1 ; temp1 := 0; END IF;

IF (min_unit = 10) THEN min_zeci := min_zeci + 1; min_unit := 0; END IF; IF (min_zeci = 6) THEN min_zeci := 0; ora_unit := ora_unit +1; END IF; IF (ora_unit = 10) THEN ora_unit := 0; ora_zeci := ora_zeci +1; END IF; IF (ora_zeci= 2) THEN IF (ora_unit = 4) THEN ora_zeci := 0; ora_unit := 0; END IF; END IF; IF (sel = 4) THEN sel := 0; END IF; IF (tempbut =0) THEN IF (buton_ora = '1') THEN ora_unit := ora_unit + 1; tempbut := 10000; END IF; ELSE tempbut :=tempbut-1; END IF; IF (tempbuton =0) THEN IF (buton_min = '1') THEN min_unit := min_unit + 1; tempbuton := 10000; END IF; ELSE tempbuton :=tempbuton-1; END IF;

CASE sel IS WHEN 0 => temps := min_unit; WHEN 1 => temps := min_zeci; WHEN 2 => temps := ora_unit;

WHEN 3 => temps := ora_zeci; WHEN OTHERS => NULL; END CASE; ceas <= "1111"; CASE temps IS WHEN 0 => display <= WHEN 1 => display <= WHEN 2 => display <= WHEN 3 => display <= WHEN 4 => display <= WHEN 5 => display <= WHEN 6 => display <= WHEN 7 => display <= WHEN 8 => display <= WHEN 9 => display <= WHEN OTHERS => NULL; END CASE; CASE sel IS WHEN WHEN WHEN WHEN WHEN END CASE; sel := sel + 1; END IF; END IF; ELSE END PROCESS; end Behavioral; 0 => ceas 1 => ceas 2 => ceas 3 => ceas OTHERS => <= "1110"; <= "1101"; <= "1011"; <= "0111"; NULL; "0000001"; "1001111"; "0010010"; "0000110"; "1001100"; "0100100"; "0100000"; "0001111"; "0000000"; "0000100";

You might also like