[an error occurred while processing this directive]
|
ENTITY bit_counter IS
PORT (
input : IN std_logic_vector(7 downto 0); -- шина
output : OUT integer RANGE 0 to 15 -- результат
);
ARCHITECRURE deribas OF bit_counter IS
FUNCTION tetrade_lut (x : std_logic_vector (3 downto 0))
RETURN integer IS
VARIABLE z : integer RANGE 0 to 4;
TUPE LUT IS ARRAY (0 to 15) OF integer;
CONSTANT result : LUT := (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4); -- таблица истинности для одной тетрады, реализованная на LUT.
BEGIN
z := conv_integer(x); -- преобразование "код (в смысле пол-байта) - номер в таблице"
return result(z); -- выборка значения из таблицы
END tetrade_lut;
SIGNAL t0, t1 : integer RANGE 0 to 4;
t0 <= tetrade_lut(input(3 downto 0));
t1 <= tetrade_lut(input(7 downto 4));
output <= t0 = t1;
END deribas;
E-mail: info@telesys.ru