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
Branches
Tags
No related merge requests found
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
-- Tool version: 2020.2 -- Tool version: 2020.2
-- Description: scalp_aurora_phy_rx_fifo -- 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; ...@@ -28,6 +28,9 @@ use work.aurora_status_pkg.all;
entity scalp_aurora_phy_rx_fifo is entity scalp_aurora_phy_rx_fifo is
generic (
C_CTRL_TLAST : boolean := true);
port ( port (
-- Clocks and Reset -- Clocks and Reset
RXClkxCI : in std_ulogic; RXClkxCI : in std_ulogic;
...@@ -81,13 +84,13 @@ architecture arch of scalp_aurora_phy_rx_fifo is ...@@ -81,13 +84,13 @@ architecture arch of scalp_aurora_phy_rx_fifo is
s_axis_tvalid : in std_logic; s_axis_tvalid : in std_logic;
s_axis_tready : out std_logic; s_axis_tready : out std_logic;
s_axis_tdata : in std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0); 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; s_axis_tlast : in std_logic;
m_axis_aclk : in std_logic; m_axis_aclk : in std_logic;
m_axis_tvalid : out std_logic; m_axis_tvalid : out std_logic;
m_axis_tready : in std_logic; m_axis_tready : in std_logic;
m_axis_tdata : out std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0); 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; m_axis_tlast : out std_logic;
axis_wr_data_count : out std_logic_vector((C_AXI4_DATA_SIZE - 1) downto 0); 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); 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 ...@@ -122,6 +125,20 @@ architecture arch of scalp_aurora_phy_rx_fifo is
signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S; signal WestTXM2SxD : t_axi4m2s := C_NO_AXI4_M2S;
signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M; signal WestTXS2MxD : t_axi4s2m := C_NO_AXI4_S2M;
signal WestFifoStatusxD : t_axi4fifo_status := C_NO_AXI4_FIFO_STATUS; 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 begin
...@@ -161,21 +178,37 @@ begin ...@@ -161,21 +178,37 @@ begin
end block EntityIOxB; 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 NorthAxisDataFifoxI : axis_data_fifo
port map ( port map (
-- Slave side -- Slave side
s_axis_aresetn => RXRstxRAN.NorthxR, s_axis_aresetn => RXRstxRAN.NorthxR,
s_axis_aclk => RXClkxC, s_axis_aclk => RXClkxC,
s_axis_tdata => NorthRXM2SxD.DataxD, s_axis_tdata => NorthRXM2SxD.DataxD,
s_axis_tkeep => NorthRXM2SxD.KeepxD, -- s_axis_tkeep => NorthRXM2SxD.KeepxD,
s_axis_tlast => NorthRXM2SxD.LastxS, s_axis_tlast => NorthRXM2SxD.LastxS,
s_axis_tvalid => NorthRXM2SxD.ValidxS, s_axis_tvalid => NorthRXM2SxD.ValidxS,
s_axis_tready => NorthRXS2MxD.ReadyxS, s_axis_tready => NorthRXS2MxD.ReadyxS,
-- Master side -- Master side
m_axis_aclk => TXClkxC, m_axis_aclk => TXClkxC,
m_axis_tdata => NorthTXM2SxD.DataxD, m_axis_tdata => NorthTXM2SxD.DataxD,
m_axis_tkeep => NorthTXM2SxD.KeepxD, -- m_axis_tkeep => NorthTXM2SxD.KeepxD,
m_axis_tlast => NorthTXM2SxD.LastxS, m_axis_tlast => NorthTXM2SLastxS,
m_axis_tvalid => NorthTXM2SxD.ValidxS, m_axis_tvalid => NorthTXM2SxD.ValidxS,
m_axis_tready => NorthTXS2MxD.ReadyxS, m_axis_tready => NorthTXS2MxD.ReadyxS,
-- Status -- Status
...@@ -190,15 +223,15 @@ begin ...@@ -190,15 +223,15 @@ begin
s_axis_aresetn => RXRstxRAN.EastxR, s_axis_aresetn => RXRstxRAN.EastxR,
s_axis_aclk => RXClkxC, s_axis_aclk => RXClkxC,
s_axis_tdata => EastRXM2SxD.DataxD, s_axis_tdata => EastRXM2SxD.DataxD,
s_axis_tkeep => EastRXM2SxD.KeepxD, -- s_axis_tkeep => EastRXM2SxD.KeepxD,
s_axis_tlast => EastRXM2SxD.LastxS, s_axis_tlast => EastRXM2SxD.LastxS,
s_axis_tvalid => EastRXM2SxD.ValidxS, s_axis_tvalid => EastRXM2SxD.ValidxS,
s_axis_tready => EastRXS2MxD.ReadyxS, s_axis_tready => EastRXS2MxD.ReadyxS,
-- Master side -- Master side
m_axis_aclk => TXClkxC, m_axis_aclk => TXClkxC,
m_axis_tdata => EastTXM2SxD.DataxD, m_axis_tdata => EastTXM2SxD.DataxD,
m_axis_tkeep => EastTXM2SxD.KeepxD, -- m_axis_tkeep => EastTXM2SxD.KeepxD,
m_axis_tlast => EastTXM2SxD.LastxS, m_axis_tlast => EastTXM2SLastxS,
m_axis_tvalid => EastTXM2SxD.ValidxS, m_axis_tvalid => EastTXM2SxD.ValidxS,
m_axis_tready => EastTXS2MxD.ReadyxS, m_axis_tready => EastTXS2MxD.ReadyxS,
-- Status -- Status
...@@ -213,15 +246,15 @@ begin ...@@ -213,15 +246,15 @@ begin
s_axis_aresetn => RXRstxRAN.SouthxR, s_axis_aresetn => RXRstxRAN.SouthxR,
s_axis_aclk => RXClkxC, s_axis_aclk => RXClkxC,
s_axis_tdata => SouthRXM2SxD.DataxD, s_axis_tdata => SouthRXM2SxD.DataxD,
s_axis_tkeep => SouthRXM2SxD.KeepxD, -- s_axis_tkeep => SouthRXM2SxD.KeepxD,
s_axis_tlast => SouthRXM2SxD.LastxS, s_axis_tlast => SouthRXM2SxD.LastxS,
s_axis_tvalid => SouthRXM2SxD.ValidxS, s_axis_tvalid => SouthRXM2SxD.ValidxS,
s_axis_tready => SouthRXS2MxD.ReadyxS, s_axis_tready => SouthRXS2MxD.ReadyxS,
-- Master side -- Master side
m_axis_aclk => TXClkxC, m_axis_aclk => TXClkxC,
m_axis_tdata => SouthTXM2SxD.DataxD, m_axis_tdata => SouthTXM2SxD.DataxD,
m_axis_tkeep => SouthTXM2SxD.KeepxD, -- m_axis_tkeep => SouthTXM2SxD.KeepxD,
m_axis_tlast => SouthTXM2SxD.LastxS, m_axis_tlast => SouthTXM2SLastxS,
m_axis_tvalid => SouthTXM2SxD.ValidxS, m_axis_tvalid => SouthTXM2SxD.ValidxS,
m_axis_tready => SouthTXS2MxD.ReadyxS, m_axis_tready => SouthTXS2MxD.ReadyxS,
-- Status -- Status
...@@ -236,15 +269,15 @@ begin ...@@ -236,15 +269,15 @@ begin
s_axis_aresetn => RXRstxRAN.WestxR, s_axis_aresetn => RXRstxRAN.WestxR,
s_axis_aclk => RXClkxC, s_axis_aclk => RXClkxC,
s_axis_tdata => WestRXM2SxD.DataxD, s_axis_tdata => WestRXM2SxD.DataxD,
s_axis_tkeep => WestRXM2SxD.KeepxD, -- s_axis_tkeep => WestRXM2SxD.KeepxD,
s_axis_tlast => WestRXM2SxD.LastxS, s_axis_tlast => WestRXM2SxD.LastxS,
s_axis_tvalid => WestRXM2SxD.ValidxS, s_axis_tvalid => WestRXM2SxD.ValidxS,
s_axis_tready => WestRXS2MxD.ReadyxS, s_axis_tready => WestRXS2MxD.ReadyxS,
-- Master side -- Master side
m_axis_aclk => TXClkxC, m_axis_aclk => TXClkxC,
m_axis_tdata => WestTXM2SxD.DataxD, m_axis_tdata => WestTXM2SxD.DataxD,
m_axis_tkeep => WestTXM2SxD.KeepxD, -- m_axis_tkeep => WestTXM2SxD.KeepxD,
m_axis_tlast => WestTXM2SxD.LastxS, m_axis_tlast => WestTXM2SLastxS,
m_axis_tvalid => WestTXM2SxD.ValidxS, m_axis_tvalid => WestTXM2SxD.ValidxS,
m_axis_tready => WestTXS2MxD.ReadyxS, m_axis_tready => WestTXS2MxD.ReadyxS,
-- Status -- Status
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment