TU-VHDL/15_FSM_Mealy_Example/testbench.vhd
2025-02-10 20:28:13 +01:00

60 lines
1.5 KiB
VHDL

-- Code your testbench here
library IEEE;
use IEEE.std_logic_1164.all;
entity testbench is
end testbench;
architecture tb of testbench is
component FSM is
port ( clk : in STD_LOGIC;
data_in : in STD_LOGIC;
direct : in STD_LOGIC;
invert : in STD_LOGIC;
data_out : out STD_LOGIC);
end component;
component FSM_sync is
port ( clk : in STD_LOGIC;
data_in : in STD_LOGIC;
direct : in STD_LOGIC;
invert : in STD_LOGIC;
data_out_sync : out STD_LOGIC);
end component;
component clkGen is
port (clk : out std_logic);
end component;
signal sig_clk, sig_din,sig_dout, sig_dout_sync, sig_direct, sig_invert : std_logic;
begin
DUT: FSM port map(
clk => sig_clk,
direct => sig_direct,
invert => sig_invert,
data_in => sig_din,
data_out => sig_dout
);
DUT_sync: FSM_sync port map(
clk => sig_clk,
direct => sig_direct,
invert => sig_invert,
data_in => sig_din,
data_out_sync => sig_dout_sync
);
mClkGen : clkGen port map(
clk => sig_clk
);
sig_din <='0', '1' after 22 ns, '0' after 40 ns, '1' after 100 ns, '0' after 140 ns, '1' after 142 ns, '0' after 150 ns, '1' after 170 ns, '0' after 200 ns, '1' after 282 ns, '0' after 482 ns, '1' after 500 ns, '0' after 525 ns, '1' after 570 ns, '0' after 632ns, '1' after 750 ns;
sig_direct<= '0', '1' after 100 ns, '0' after 400 ns, '1' after 600 ns;
sig_invert<= '0', '1' after 350 ns, '0' after 650 ns, '1' after 700 ns;
end tb;