82 lines
2.3 KiB
VHDL
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; |