36 lines
910 B
VHDL
36 lines
910 B
VHDL
LIBRARY ieee;
|
|
USE ieee.std_logic_1164.ALL;
|
|
USE ieee.numeric_std.ALL;
|
|
|
|
ENTITY compteur is
|
|
PORT (
|
|
clk : IN STD_LOGIC;
|
|
rst_n : IN STD_LOGIC;
|
|
max : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
|
|
enable : IN STD_LOGIC;
|
|
valeur : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
|
|
);
|
|
END compteur;
|
|
|
|
ARCHITECTURE archi OF compteur is
|
|
SIGNAL valeur_interne : STD_LOGIC_VECTOR(3 DOWNTO 0);
|
|
|
|
BEGIN
|
|
PROCESS (clk, rst_n)
|
|
begin
|
|
IF rst_n = '0' THEN
|
|
valeur_interne <= (OTHERS => '0');
|
|
else
|
|
IF rising_edge(clk) AND enable = '1' THEN
|
|
IF valeur_interne = max THEN
|
|
valeur_interne <= (OTHERS => '0');
|
|
else
|
|
valeur_interne <= STD_LOGIC_VECTOR(UNSIGNED(valeur_interne) + 1);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END PROCESS;
|
|
|
|
valeur <= valeur_interne;
|
|
|
|
END archi; |