-- Modelo de test de un contador basado en tabla de test
- Declaración de la entidad
Entity testXTaula is
end;
Architecture bhr of testXTaula is
type mostra is record --
Paso1: Registro de las señales de la tabla de test
enable, load: bit;
d: natural range 0 to 15;
end record;
type array_test is array (natural range
<>) of mostra; -- Paso 2: Creación
de un array de registros
constant test: array_test:=( -- Paso
3: Inicialización del array
('1','0', 12), --contar
('1','0', 12), --contar
('0','0', 12), --mantener
('1','0', 13), --contar
('1','1', 13), --carga
('1','0', 13), --contar
('1','0', 13) --contar
);
Component compt_x -- Declaración
del DUT, el contador
port (
ck, enable, load: in bit;
d: in natural range 0 to 15;
q: out natural range 0 to 15);
end component;
constant t: time := 2 ns; --
Constante temporal
signal ck, enable, load: bit:='1'; --
Señales de interconexión e inicialización
signal d, q: natural range 0 to
15 := 14;
begin
compt: compt_x port map (ck, enable, load, d, q); -- Instanciación del DUT
ck <= not ck after t; -- Generación del reloj automática
process
beginfor i in test'range loop -- Bucle de aplicación de la tabla de verificación
enable <= test(i).enable; -- Aplicación de la señal de enable
load <= test(i).load; -- Aplicación de la señal de carga
d <= test(i).d; -- Entrada paralela
wait until ck'event and ck='0'; -- Las señales se envian al DUT en el flanco negativoend loop;
end process;
end bhr;