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

95 lines
1.7 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 single_port_ram is
port
(
data : in std_logic_vector(7 downto 0);
addr : in std_logic_vector(15 downto 0);
we : in std_logic;
clk : in std_logic;
q : out std_logic_vector(7 downto 0)
);
end component;
component clkGen is
port (clk : out std_logic);
end component;
signal sig_clk : std_logic;
signal sig_addr : std_logic_vector(15 downto 0);
signal sig_q : std_logic_vector(7 downto 0);
signal sig_data : std_logic_vector(7 downto 0);
signal sig_we : std_logic;
use ieee.numeric_std.all;
begin
DUT: single_port_ram port map(
clk => sig_clk,
addr => sig_addr,
data => sig_data,
we => sig_we,
q => sig_q
);
mClkGen : clkGen port map(
clk => sig_clk
);
stim: process
procedure ReadRAM(read_addr : in integer) is
begin
sig_we <= '0';
sig_addr <= std_logic_vector(to_unsigned(read_addr,16));
end procedure ReadRAM;
procedure WriteRAM(write_addr : in integer; write_data : in std_logic_vector(7 downto 0)) is
begin
sig_we <= '1';
sig_addr <= std_logic_vector(to_unsigned(write_addr,16));
sig_data <= write_data;
end procedure WriteRAM;
begin
wait for 7 ns;
WriteRAM(2,"00000001");
wait for 20 ns;
WriteRAM(4,"00000010");
wait for 20 ns;
WriteRAM(6,"00000011");
wait for 20 ns;
WriteRAM(8,"00000100");
wait for 20 ns;
WriteRAM(10,"11111111");
wait for 30 ns;
ReadRAM(2);
wait for 20 ns;
ReadRAM(4);
wait for 20 ns;
ReadRAM(6);
wait for 20 ns;
ReadRAM(8);
wait for 20 ns;
ReadRAM(10);
wait for 20 ns;
ReadRAM(11);
wait for 20 ns;
wait;
end process stim;
end tb;