1 ------------------------------------------------------------------------------- 2 -- File : EthMacTxBypass.vhd 3 -- Company : SLAC National Accelerator Laboratory 4 -- Created : 2016-01-04 5 -- Last update: 2016-09-14 6 ------------------------------------------------------------------------------- 8 -- Mux stage to allow high priority bypass traffic to override primary path 10 ------------------------------------------------------------------------------- 11 -- This file is part of 'SLAC Firmware Standard Library'. 12 -- It is subject to the license terms in the LICENSE.txt file found in the 13 -- top-level directory of this distribution and at: 14 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. 15 -- No part of 'SLAC Firmware Standard Library', including this file, 16 -- may be copied, modified, propagated, or distributed except according to 17 -- the terms contained in the LICENSE.txt file. 18 ------------------------------------------------------------------------------- 21 use ieee.std_logic_1164.
all;
22 use ieee.std_logic_arith.
all;
23 use ieee.std_logic_unsigned.
all;
30 --! @ingroup ethernet_EthMacCore 39 -- Incoming primary traffic 42 -- Incoming bypass traffic 45 -- Outgoing data to MAC 57 type RegType is record 64 constant REG_INIT_C : RegType := ( 70 signal r : RegType := REG_INIT_C;
73 -- attribute dont_touch : string; 74 -- attribute dont_touch of r : signal is "true"; 78 U_BypTxEnGen : if (BYP_EN_G = true) generate 83 -- Latch the current value 86 -- Clear tValid on ready assertion 97 ---------------------------------------------------------------------- 99 -- Check if ready to move data 101 -- Check for Bypass frame request 112 -- Check for Primary frame request 125 ---------------------------------------------------------------------- 127 -- Check if ready to move data 139 ---------------------------------------------------------------------- 141 -- Check if ready to move data 153 ---------------------------------------------------------------------- 161 -- Register the variable for next clock cycle 173 if rising_edge(ethClk) then 174 r <= rin after TPD_G;
180 U_BypTxDisGen : if (BYP_EN_G = false) generate
in sBypMasterAxiStreamMasterType
AxiStreamMasterType :=(tValid => '0',tData =>( others => '0'),tStrb =>( others => '1'),tKeep =>( others => '1'),tLast => '0',tDest =>( others => '0'),tId =>( others => '0'),tUser =>( others => '0')) AXI_STREAM_MASTER_INIT_C
in sPrimMasterAxiStreamMasterType
out mAxisMasterAxiStreamMasterType
AxiStreamSlaveType :=(tReady => '0') AXI_STREAM_SLAVE_INIT_C
in mAxisSlaveAxiStreamSlaveType
out sPrimSlaveAxiStreamSlaveType
AxiStreamSlaveType :=(tReady => '1') AXI_STREAM_SLAVE_FORCE_C
out sBypSlaveAxiStreamSlaveType