1 -------------------------------------------------------------------------------     2 -- File       : AxiReadPathMux.vhd     3 -- Company    : SLAC National Accelerator Laboratory     4 -- Created    : 2014-04-25     5 -- Last update: 2014-04-29     6 -------------------------------------------------------------------------------     7 -- Description: Block to connect multiple incoming AXI write path interfaces.     8 -------------------------------------------------------------------------------     9 -- This file is part of 'SLAC Firmware Standard Library'.    10 -- It is subject to the license terms in the LICENSE.txt file found in the     11 -- top-level directory of this distribution and at:     12 --    https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.     13 -- No part of 'SLAC Firmware Standard Library', including this file,     14 -- may be copied, modified, propagated, or distributed except according to     15 -- the terms contained in the LICENSE.txt file.    16 -------------------------------------------------------------------------------    19 use ieee.std_logic_1164.
all;
    20 use ieee.std_logic_arith.
all;
    21 use ieee.std_logic_unsigned.
all;
    55    --------------------------    57    --------------------------    91       ----------------------------    93       ----------------------------   100       -- Select address source   102       selAddr.arid  := (others => '0');
   107       addrRequests := (others=>'0');
   112       -- Addr State machine   119             -- Aribrate between requesters   156       ----------------------------   158       ----------------------------   160       -- Clear existing valids   167       -- Pass response to destination   187       -- Bypass if single slave   197          -- Readies are direct   207       if (rising_edge(axiClk)) then (S_IDLE_C,S_MOVE_C,S_LAST_C) StateType
AxiReadMasterType  :=(arvalid  => '0',araddr  =>( others => '0'),arid  =>( others => '0'),arlen  =>( others => '0'),arsize  =>( others => '0'),arburst  =>( others => '0'),arlock  =>( others => '0'),arprot  =>( others => '0'),arcache  =>( others => '0'),arqos  =>( others => '0'),arregion  =>( others => '0'),rready  => '0') AXI_READ_MASTER_INIT_C
slv( 1023 downto  0)   rdata
array(natural range <> ) of AxiReadSlaveType   AxiReadSlaveArray
AxiReadSlaveArray(   NUM_SLAVES_G- 1 downto  0)   slaves
in mAxiReadSlaveAxiReadSlaveType  
NUM_SLAVES_Ginteger   range  1 to  32:= 4
slv(   ARB_BITS_C- 1 downto  0)   addrAcks
slv(   DEST_SIZE_C- 1 downto  0)   addrAckNum
out mAxiReadMasterAxiReadMasterType  
array(natural range <> ) of AxiReadMasterType   AxiReadMasterArray
RegType  :=(addrState  =>   S_IDLE_C,addrAcks  =>( others => '0'),addrAckNum  =>( others => '0'),addrValid  => '0',slaves  =>( others =>   AXI_READ_SLAVE_INIT_C),master  =>   AXI_READ_MASTER_INIT_C) REG_INIT_C
integer  :=   bitSize(   NUM_SLAVES_G- 1) DEST_SIZE_C
out sAxiReadSlavesAxiReadSlaveArray(   NUM_SLAVES_G- 1 downto  0)  
in sAxiReadMastersAxiReadMasterArray(   NUM_SLAVES_G- 1 downto  0)  
integer  := 2**   DEST_SIZE_C ARB_BITS_C
AxiReadSlaveType  :=(arready  => '0',rdata  =>( others => '0'),rlast  => '0',rvalid  => '0',rid  =>( others => '0'),rresp  =>( others => '0')) AXI_READ_SLAVE_INIT_C