87 lines
2.5 KiB
VHDL
87 lines
2.5 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_tdata : std_logic_vector(15 downto 0) := (others=>'0') ;
|
|
signal s_axis_tvalid : std_logic := '0';
|
|
signal s_axis_tlast : std_logic := '0';
|
|
signal s_axis_tready : std_logic;
|
|
|
|
signal m_axis_tdata : std_logic_vector(15 downto 0) := (others=>'0') ;
|
|
signal m_axis_tvalid : std_logic;
|
|
signal m_axis_tlast : std_logic;
|
|
signal m_axis_tready : 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_tdata <= x"1234";
|
|
s_axis_tvalid <= '1';
|
|
s_axis_tlast <= '0';
|
|
|
|
loop
|
|
wait until rising_edge(axis_clk);
|
|
if s_axis_tready = '1' then
|
|
s_axis_tvalid <= '0';
|
|
s_axis_tlast <= '0';
|
|
elsif m_axis_tvalid = '1' and m_axis_tlast = '1' then
|
|
exit;
|
|
elsif m_axis_tvalid = '1' and m_axis_tlast = '0' then
|
|
m_axis_tready <= '1';
|
|
s_axis_tdata <= x"5678";
|
|
s_axis_tvalid <= '1';
|
|
s_axis_tlast <= '1';
|
|
|
|
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_tvalid ,
|
|
S_AXIS_TDATA => s_axis_tdata,
|
|
S_AXIS_TLAST => s_axis_tlast,
|
|
S_AXIS_TREADY => s_axis_tready,
|
|
-- AXI Streaming Initiator Port
|
|
M_AXIS_TVALID => m_axis_tvalid ,
|
|
M_AXIS_TDATA => m_axis_tdata,
|
|
M_AXIS_TLAST => m_axis_tlast,
|
|
M_AXIS_TREADY => m_axis_tready
|
|
);
|
|
end architecture; |