This commit is contained in:
2025-05-11 23:43:59 +02:00
parent 9c20fe7e7c
commit 079d1ab0d5
21 changed files with 3372 additions and 0 deletions

View File

@@ -0,0 +1,103 @@
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity ipi_axis_lw_spi_master is
generic (
c_clkfreq : integer := 100_000_000;
c_sclkfreq : integer := 1_000_000;
c_cpol : integer range 0 to 1 := 0;
c_cpha : integer range 0 to 1 := 0
);
Port (
aclk : in STD_LOGIC;
aresetn : in STD_LOGIC;
s_axis_tvalid : in STD_LOGIC;
s_axis_tdata : in STD_LOGIC_VECTOR(7 downto 0);
s_axis_tready : out STD_LOGIC;
m_axis_tvalid : out STD_LOGIC;
m_axis_tdata : out STD_LOGIC_VECTOR(7 downto 0);
cs_i : in STD_LOGIC;
cs_o : out STD_LOGIC;
cs_t : out STD_LOGIC;
sclk_i : in STD_LOGIC;
sclk_o : out STD_LOGIC;
sclk_t : out STD_LOGIC;
mosi_i : in STD_LOGIC;
mosi_o : out STD_LOGIC;
mosi_t : out STD_LOGIC;
miso_i : in STD_LOGIC;
miso_o : out STD_LOGIC;
miso_t : out STD_LOGIC
);
end ipi_axis_lw_spi_master;
architecture Behavioral of ipi_axis_lw_spi_master is
component axis_lw_spi_master is
generic (
c_clkfreq : integer := 100_000_000;
c_sclkfreq : integer := 1_000_000;
c_cpol : std_logic := '0';
c_cpha : std_logic := '0'
);
Port (
aclk : in STD_LOGIC;
aresetn : in STD_LOGIC;
s_axis_tvalid : in STD_LOGIC;
s_axis_tdata : in STD_LOGIC_VECTOR(7 downto 0);
s_axis_tready : out STD_LOGIC;
m_axis_tvalid : out STD_LOGIC;
m_axis_tdata : out STD_LOGIC_VECTOR(7 downto 0);
cs : out STD_LOGIC;
sclk : out STD_LOGIC;
mosi : out STD_LOGIC;
miso : in STD_LOGIC
);
end component;
constant C_CPOL_SLV : std_logic_vector := std_logic_vector(to_unsigned(c_cpol, 1));
constant C_CPHA_SLV : std_logic_vector := std_logic_vector(to_unsigned(c_cpha, 1));
begin
inst_axis_lw_spi_master : axis_lw_spi_master
generic map (
c_clkfreq => c_clkfreq,
c_sclkfreq => c_sclkfreq,
c_cpol => C_CPOL_SLV(0),
c_cpha => C_CPHA_SLV(0)
)
Port map (
aclk => aclk,
aresetn => aresetn,
s_axis_tvalid => s_axis_tvalid,
s_axis_tdata => s_axis_tdata,
s_axis_tready => s_axis_tready,
m_axis_tvalid => m_axis_tvalid,
m_axis_tdata => m_axis_tdata,
cs => cs_o,
sclk => sclk_o,
mosi => mosi_o,
miso => miso_i
);
cs_t <= '0';
sclk_t <= '0';
mosi_t <= '0';
miso_t <= '1';
miso_o <= '0';
end Behavioral;