31 lines
648 B
VHDL
31 lines
648 B
VHDL
|
library IEEE;
|
||
|
use IEEE.STD_LOGIC_1164.all;
|
||
|
use IEEE.NUMERIC_STD.all;
|
||
|
|
||
|
entity CounterUpDown4 is
|
||
|
port
|
||
|
(
|
||
|
clock : in std_logic;
|
||
|
reset : in std_logic;
|
||
|
upDown : in std_logic;
|
||
|
count : out std_logic_vector(3 downto 0)
|
||
|
);
|
||
|
end CounterUpDown4;
|
||
|
|
||
|
architecture Behavioral of CounterUpDown4 is
|
||
|
signal s_count : unsigned(3 downto 0);
|
||
|
begin
|
||
|
process(clock, reset, upDown)
|
||
|
begin
|
||
|
if (reset = '1') then
|
||
|
s_count <= to_unsigned(0, 4);
|
||
|
elsif (rising_edge(clock)) then
|
||
|
if (upDown = '1') then
|
||
|
s_count <= s_count - 1;
|
||
|
else
|
||
|
s_count <= s_count + 1;
|
||
|
end if;
|
||
|
end if;
|
||
|
end process;
|
||
|
count <= std_logic_vector(s_count);
|
||
|
end Behavioral;
|