104 lines
1.8 KiB
VHDL
104 lines
1.8 KiB
VHDL
-- Code your testbench here
|
|
library IEEE;
|
|
use IEEE.std_logic_1164.all;
|
|
use ieee.numeric_std.all;
|
|
|
|
entity testbench is
|
|
end testbench;
|
|
|
|
architecture tb of testbench is
|
|
|
|
component single_port_ram is
|
|
port
|
|
(
|
|
data : inout std_logic_vector(7 downto 0);
|
|
addr : in std_logic_vector(15 downto 0);
|
|
cs : in std_logic;
|
|
we : in std_logic;
|
|
oe : in std_logic;
|
|
clk : in std_logic
|
|
);
|
|
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_data : std_logic_vector(7 downto 0);
|
|
signal sig_we : std_logic;
|
|
signal sig_cs : std_logic;
|
|
signal sig_oe : std_logic;
|
|
|
|
|
|
|
|
begin
|
|
DUT: single_port_ram port map(
|
|
clk => sig_clk,
|
|
addr => sig_addr,
|
|
data => sig_data,
|
|
we => sig_we,
|
|
cs => sig_cs,
|
|
oe => sig_oe
|
|
);
|
|
|
|
mClkGen : clkGen port map(
|
|
clk => sig_clk
|
|
);
|
|
|
|
stim: process
|
|
|
|
procedure ReadRAM(read_addr : in integer) is
|
|
begin
|
|
sig_data <= (others => 'Z');
|
|
sig_we <= '0';
|
|
sig_oe <= '1';
|
|
sig_cs <= '1';
|
|
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_oe <= '0';
|
|
sig_cs <= '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 20 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; |