Files
es-praktikum/Milestone2/axis_audio_bitcrusher_tb.vhd
T
2024-10-24 21:25:37 +02:00

82 lines
2.3 KiB
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity axis_audio_bitcrusher_tb is
end;
architecture rtl of axis_audio_bitcrusher_tb is
constant EXT_CLOCK_FREQ : integer := 125000000;
constant SCK_FREQ : integer := 1000000;
constant has_last : boolean := true;
constant bit_reduction : integer := 8;
constant clk_half_period : time := 1 sec / EXT_CLOCK_FREQ / 2;
signal axis_clk : std_logic := '0';
signal axis_reset : std_logic := '1';
signal s_axis_data : std_logic_vector(15 downto 0) := (others=>'0') ;
signal s_axis_valid : std_logic := '0';
signal s_axis_tlast : std_logic := '0';
signal s_axis_ready : std_logic;
signal m_axis_data : std_logic_vector(15 downto 0) := (others=>'0') ;
signal m_axis_valid : std_logic;
signal m_axis_tlast : std_logic;
signal m_axis_ready : std_logic := '0';
begin
clk_proc: process (axis_clk)
begin
axis_clk <= not axis_clk after clk_half_period;
end process;
stim: process
begin
axis_reset <= '0' after 100 * clk_half_period;
wait until axis_reset = '0';
wait until rising_edge(axis_clk);
s_axis_data <= x"1234";
s_axis_valid <= '1';
s_axis_tlast <= '1';
loop
wait until rising_edge(axis_clk);
if s_axis_ready = '1' then
s_axis_valid <= '0';
s_axis_tlast <= '0';
s_axis_data <= (others=>'0');
elsif m_axis_valid = '1' and m_axis_tlast = '1' then
exit;
end if;
end loop;
wait;
end process;
dut: entity work.axis_audio_bitcrusher
generic map (
BIT_REDUCTION => bit_reduction,
HAS_LAST => has_last
)
port map (
AXIS_ACLK => axis_clk,
AXIS_ARESETN => axis_reset,
-- AXI Streaming Target Port
S_AXIS_TVALID => s_axis_valid ,
S_AXIS_TDATA => s_axis_data,
S_AXIS_TLAST => s_axis_tlast,
S_AXIS_TREADY => s_axis_ready,
-- AXI Streaming Initiator Port
M_AXIS_TVALID => m_axis_valid ,
M_AXIS_TDATA => m_axis_data,
M_AXIS_TLAST => m_axis_tlast,
M_AXIS_TREADY => m_axis_ready
);
end architecture;