-- Copyright © 1993 by McGraw-Hill, Inc. and Zainalabedin Navabi
-- FIGURE 7.45
-- ENTITY DECLERATION OF SEQUENTIAL COMPARATOR :
USE WORK.basic_utilities.ALL;
ENTITY sequential_comparator IS
PORT (data : IN BIT_VECTOR (7 DOWNTO 0); clk, reset : IN BIT;
matches : OUT BIT_VECTOR (3 DOWNTO 0));
END sequential_comparator;
--
-- THE DATAFLOW DESCRIPTION FORSEQUENTIAL COMPARATOR :
ARCHITECTURE dataflow OF sequential_comparator IS
FUNCTION inc (x : BIT_VECTOR) RETURN BIT_VECTOR IS
VARIABLE i : INTEGER;
VARIABLE t : BIT_VECTOR (x'RANGE);
BEGIN
bin2int (x, i);
i := i + 1; IF i >= 2**x'LENGTH THEN i := 0; END IF;
int2bin (i, t);
RETURN t;
END inc;
SIGNAL buff : BIT_VECTOR (7 DOWNTO 0);
SIGNAL count : BIT_VECTOR (3 DOWNTO 0);
BEGIN
edge: BLOCK (clk = '0' AND NOT clk'STABLE)
BEGIN
buff <= GUARDED data;
count <= GUARDED "0000" WHEN reset = '1' ELSE
inc (count) WHEN data = buff ELSE
count;
END BLOCK;
matches <= count;
END dataflow;
--