Decade Counter
Decade Counter
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity DECADE_COUNTER is
Port (RESET: in STD_LOGIC;
CLK: in STD_LOGIC;
Q: inout STD_LOGIC_VECTOR (3 downto 0):="0000" );
end DECADE_COUNTER;
architecture BEHAVIOURAL of DECADE_COUNTER is
begin
PROCESS (CLK, RESET)
BEGIN
IF RESET='0' THEN
Q<="0000";
ELSIF FALLING_EDGE(CLK) THEN
IF Q="1001" THEN
Q<="0000";
ELSE
Q<=Q+"0001";
END IF;
END IF;
END PROCESS;
END BEHAVIOURAL;
DECADE COUNTER STRUCTURAL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity dec_str is
Port (CLK :IN STD_LOGIC;
RESET : IN STD_LOGIC;
Q : INOUT STD_LOGIC_VECTOR (3 DOWNTO 0) );
end dec_str;
COMPONENT INSTANTIATION –
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity JK is
Port ( J,K,C,CLR : IN STD_LOGIC;
Z: OUT STD_LOGIC );
end JK;
architecture Behavioral of JK is
begin
PROCESS (J,K,C,CLR)
VARIABLE A : STD_LOGIC:= '0';
BEGIN
IF CLR ='0' THEN
A:= '0';
ELSE
IF FALLING_EDGE(C) THEN
IF J= '0' AND K= '0' THEN
A := A;
ELSIF J= '0' AND K= '1' THEN
A := '0';
ELSIF J= '1' AND K= '0' THEN
A := '1';
ELSIF J= '1' AND K= '1' THEN
A := NOT A;
END IF;
END IF;
END IF;
Z<= A;
END PROCESS;