-- Copyright © 1993 by McGraw-Hill, Inc. and Zainalabedin Navabi
-- FIGURE 8.36
-- ENTITY DECLERATION OF 74LS163 4-BIT SYNCHRONOUS COUNTER :
USE WORK.basic_utilities.ALL;
--
ENTITY ls163_counter IS
GENERIC (prop_delay : TIME := 12 NS);
PORT (clk, clr_bar, ld_bar, enp, ent : IN BIT;
abcd : IN BIT_VECTOR (3 DOWNTO 0);
q_abcd : OUT BIT_VECTOR (3 DOWNTO 0); rco : OUT BIT);
END ls163_counter;
--
-- BEHAVIORAL DESCRIPTION FOR 74LS163 4-BIT SYNCHRONOUS COUNTER :
ARCHITECTURE behavioral OF ls163_counter IS
BEGIN
counting : PROCESS (clk)
VARIABLE internal_count : BIT_VECTOR (3 DOWNTO 0) := "0000";
BEGIN
IF (clk'EVENT AND clk = '1') THEN
IF (clr_bar = '0') THEN
internal_count := "0000";
ELSIF (ld_bar = '0') THEN
internal_count := abcd;
ELSIF (enp = '1' AND ent = '1') THEN
internal_count := inc (internal_count);
IF (internal_count = "1111") THEN
rco <= '1' AFTER prop_delay;
ELSE
rco <= '0';
END IF;
END IF;
q_abcd <= internal_count AFTER prop_delay;
END IF;
END PROCESS counting;
END behavioral;
--