Skip to content
Snippets Groups Projects
Commit 99042ffd authored by joachim.schmidt's avatar joachim.schmidt
Browse files

Update scalp_aurora_phy_rx_fifo with tlast internal management

parent f32cc0b1
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@
-- Tool version: 2020.2
-- Description: scalp_aurora_phy_rx_fifo
--
-- Last update: 2020-11-18
-- Last update: 2021-09-07
--
---------------------------------------------------------------------------------
......@@ -28,6 +28,9 @@ use work.aurora_status_pkg.all;
entity scalp_aurora_phy_rx_fifo is
generic (
C_CTRL_TLAST : boolean := true);
port (
-- Clocks and Reset
RXClkxCI : in std_ulogic;
......@@ -81,13 +84,13 @@ architecture arch of scalp_aurora_phy_rx_fifo is
s_axis_tvalid : in std_logic;
s_axis_tready : out std_logic;
s_axis_tdata : in std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0);
s_axis_tkeep : in std_logic_vector((C_AXI4_KEEP_SIZE - 1) downto 0);
-- s_axis_tkeep : in std_logic_vector((C_AXI4_KEEP_SIZE - 1) downto 0);
s_axis_tlast : in std_logic;
m_axis_aclk : in std_logic;
m_axis_tvalid : out std_logic;
m_axis_tready : in std_logic;
m_axis_tdata : out std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0);
m_axis_tkeep : out std_logic_vector((C_AXI4_KEEP_SIZE - 1) downto 0);
-- m_axis_tkeep : out std_logic_vector((C_AXI4_KEEP_SIZE - 1) downto 0);
m_axis_tlast : out std_logic;
axis_wr_data_count : out std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0);
axis_rd_data_count : out std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0);
......@@ -122,6 +125,20 @@ architecture arch of scalp_aurora_phy_rx_fifo is
signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S;
signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M;
signal WestFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS;
-- Last Management
-- North
signal NorthTXM2SLastxS : std_ulogic := '0';
-- East
signal EastTXM2SLastxS : std_ulogic := '0';
-- South
signal SouthTXM2SLastxS : std_ulogic := '0';
-- West
signal WestTXM2SLastxS : std_ulogic := '0';
-- Attributes
attribute mark_debug : string;
attribute keep : string;
--
begin
......@@ -161,21 +178,37 @@ begin
end block EntityIOxB;
CtrlTLastxG : if C_CTRL_TLAST = true generate
NorthTXM2SLastCtrlxAS : NorthTXM2SxD.LastxS <= '1' when (NorthTXM2SLastxS = '1') and (NorthTXM2SxD.ValidxS = '1') else '0';
EastTXM2SLastCtrlxAS : EastTXM2SxD.LastxS <= '1' when (EastTXM2SLastxS = '1') and (EastTXM2SxD.ValidxS = '1') else '0';
SouthTXM2SLastCtrlxAS : SouthTXM2SxD.LastxS <= '1' when (SouthTXM2SLastxS = '1') and (SouthTXM2SxD.ValidxS = '1') else '0';
WestTXM2SLastCtrlxAS : WestTXM2SxD.LastxS <= '1' when (WestTXM2SLastxS = '1') and (WestTXM2SxD.ValidxS = '1') else '0';
elsif C_CTRL_TLAST = false generate
NorthTXM2SLastNoCtrlxAS : NorthTXM2SxD.LastxS <= NorthTXM2SLastxS;
EastTXM2SLastNoCtrlxAS : EastTXM2SxD.LastxS <= EastTXM2SLastxS;
SouthTXM2SLastNoCtrlxAS : SouthTXM2SxD.LastxS <= SouthTXM2SLastxS;
WestTXM2SLastNoCtrlxAS : WestTXM2SxD.LastxS <= WestTXM2SLastxS;
end generate CtrlTLastxG;
NorthAxisDataFifoxI : axis_data_fifo
port map (
-- Slave side
s_axis_aresetn => RXRstxRAN.NorthxR,
s_axis_aclk => RXClkxC,
s_axis_tdata => NorthRXM2SxD.DataxD,
s_axis_tkeep => NorthRXM2SxD.KeepxD,
-- s_axis_tkeep => NorthRXM2SxD.KeepxD,
s_axis_tlast => NorthRXM2SxD.LastxS,
s_axis_tvalid => NorthRXM2SxD.ValidxS,
s_axis_tready => NorthRXS2MxD.ReadyxS,
-- Master side
m_axis_aclk => TXClkxC,
m_axis_tdata => NorthTXM2SxD.DataxD,
m_axis_tkeep => NorthTXM2SxD.KeepxD,
m_axis_tlast => NorthTXM2SxD.LastxS,
-- m_axis_tkeep => NorthTXM2SxD.KeepxD,
m_axis_tlast => NorthTXM2SLastxS,
m_axis_tvalid => NorthTXM2SxD.ValidxS,
m_axis_tready => NorthTXS2MxD.ReadyxS,
-- Status
......@@ -190,15 +223,15 @@ begin
s_axis_aresetn => RXRstxRAN.EastxR,
s_axis_aclk => RXClkxC,
s_axis_tdata => EastRXM2SxD.DataxD,
s_axis_tkeep => EastRXM2SxD.KeepxD,
-- s_axis_tkeep => EastRXM2SxD.KeepxD,
s_axis_tlast => EastRXM2SxD.LastxS,
s_axis_tvalid => EastRXM2SxD.ValidxS,
s_axis_tready => EastRXS2MxD.ReadyxS,
-- Master side
m_axis_aclk => TXClkxC,
m_axis_tdata => EastTXM2SxD.DataxD,
m_axis_tkeep => EastTXM2SxD.KeepxD,
m_axis_tlast => EastTXM2SxD.LastxS,
-- m_axis_tkeep => EastTXM2SxD.KeepxD,
m_axis_tlast => EastTXM2SLastxS,
m_axis_tvalid => EastTXM2SxD.ValidxS,
m_axis_tready => EastTXS2MxD.ReadyxS,
-- Status
......@@ -213,15 +246,15 @@ begin
s_axis_aresetn => RXRstxRAN.SouthxR,
s_axis_aclk => RXClkxC,
s_axis_tdata => SouthRXM2SxD.DataxD,
s_axis_tkeep => SouthRXM2SxD.KeepxD,
-- s_axis_tkeep => SouthRXM2SxD.KeepxD,
s_axis_tlast => SouthRXM2SxD.LastxS,
s_axis_tvalid => SouthRXM2SxD.ValidxS,
s_axis_tready => SouthRXS2MxD.ReadyxS,
-- Master side
m_axis_aclk => TXClkxC,
m_axis_tdata => SouthTXM2SxD.DataxD,
m_axis_tkeep => SouthTXM2SxD.KeepxD,
m_axis_tlast => SouthTXM2SxD.LastxS,
-- m_axis_tkeep => SouthTXM2SxD.KeepxD,
m_axis_tlast => SouthTXM2SLastxS,
m_axis_tvalid => SouthTXM2SxD.ValidxS,
m_axis_tready => SouthTXS2MxD.ReadyxS,
-- Status
......@@ -236,15 +269,15 @@ begin
s_axis_aresetn => RXRstxRAN.WestxR,
s_axis_aclk => RXClkxC,
s_axis_tdata => WestRXM2SxD.DataxD,
s_axis_tkeep => WestRXM2SxD.KeepxD,
-- s_axis_tkeep => WestRXM2SxD.KeepxD,
s_axis_tlast => WestRXM2SxD.LastxS,
s_axis_tvalid => WestRXM2SxD.ValidxS,
s_axis_tready => WestRXS2MxD.ReadyxS,
-- Master side
m_axis_aclk => TXClkxC,
m_axis_tdata => WestTXM2SxD.DataxD,
m_axis_tkeep => WestTXM2SxD.KeepxD,
m_axis_tlast => WestTXM2SxD.LastxS,
-- m_axis_tkeep => WestTXM2SxD.KeepxD,
m_axis_tlast => WestTXM2SLastxS,
m_axis_tvalid => WestTXM2SxD.ValidxS,
m_axis_tready => WestTXS2MxD.ReadyxS,
-- Status
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment