Apple1Display/tests/dm74161_tb.vhd

89 lines
1.5 KiB
VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dm74161_tb is
end dm74161_tb;
architecture behavior OF dm74161_tb is
type test_state is (init, counting, load, cet_inhibit, cep_inhibit, finished);
signal clk, clr_l, load_l, cet, cep: std_logic;
signal d:std_logic_vector(3 downto 0);
signal q:std_logic_vector(3 downto 0);
signal carry: std_logic;
signal state: test_state;
begin
dut: entity work.dm74161
port map(
clk => clk, clr_l => clr_l, load_l => load_l, cet => cet, cep => cep,
d3=>d(3), d2=>d(2), d1=>d(1), d0=>d(0),
q3=>q(3), q2=>q(2), q1=>q(1), q0=>q(0),
carry => carry
);
process
begin
-- init
state <= init;
clk <= '0';
clr_l <= '1';
load_l <= '1';
cet <= '1';
cep <= '1';
d <= "0000";
wait for 1ns;
-- count to 16
state <= counting;
for ii in 1 to 3 loop
clk <= '1';
wait for 1ns;
clk <= '0';
wait for 1ns;
end loop;
-- load
state <= load;
d <= "1110";
load_l <= '0';
clk <= '1';
wait for 1ns;
load_l <= '1';
clk <= '0';
wait for 1ns;
-- cet inhibit
state <= cet_inhibit;
cet <= '0';
for ii in 1 to 3 loop
clk <= '1';
wait for 1ns;
clk <= '1';
wait for 1ns;
end loop;
cet <= '1';
-- cep inhibit
state <= cep_inhibit;
cep <= '0';
for ii in 1 to 3 loop
clk <= '1';
wait for 1ns;
clk <= '0';
wait for 1ns;
end loop;
cep <= '1';
-- all done
state <= finished;
wait;
end process;
end architecture;