--******************************************************************************
--* @short   VME Address Map of Input FPGA
--*
--*          all addresses are in bytes (not words)
--******************************************************************************
--* @author  SAKULIN Hannes  <hsakulin@dsy-srv3.cern.ch>
--* @date    $Date: 2005/01/19 15:34:56 $
--* @version $Revision: 1.11 $
--******************************************************************************
--/

package IFVMEAddrMap is

type TBaseArray is array (integer range<>) of integer;

-------------------------------------------------------------------------------
-- Registers
-------------------------------------------------------------------------------

constant IF_chip_id0_raddr           : integer := 16#00#;  -- CHIP ID 0 r
constant IF_chip_id1_raddr           : integer := 16#02#;  -- CHIP ID 1 r
constant IF_chip_rev0_raddr          : integer := 16#04#;  -- CHIP rev 0 r
constant IF_chip_rev1_raddr          : integer := 16#06#;  -- CHIP rev 1 r

constant IF_SyncConfigReg_addr : TBaseArray (0 to 3) := (
  16#20#,                                -- muon 0
  16#22#,                                -- muon 1
  16#24#,                                -- muon 2
  16#26#                                 -- muon 3
  );

constant IF_ReadoutSyncReg_addr : integer := 16#28#;
constant IF_LATDelayReg_addr    : integer := 16#30#;

constant IF_SimuSpyConfig_addr  : integer := 16#32#;
constant IF_SpyDepth_addr       : integer := 16#34#;
constant IF_SpyArmPulse_waddr    : integer := 16#36#;
constant IF_SpyDone_raddr        : integer := 16#38#;

constant IF_dummy_raddr          : integer := 16#40#;

constant IF_PhaseMonitorStatusReg_raddr : integer := 16#42#;
constant IF_ErrorMonitorStatusReg_raddr : integer := 16#44#;
constant IF_CompareCounterReset_waddr : integer := 16#46#;

constant IF_PhaseMonitorCounter_raddr : TBaseArray (0 to 3) := (
  16#50#,                                -- muon 0
  16#60#,                                -- muon 1
  16#70#,                                -- muon 2
  16#80#                                 -- muon 3
  );

constant IF_ErrorMonitorCounter_raddr : TBaseArray (0 to 3) := (
  16#90#,                                -- muon 0
  16#A0#,                                -- muon 1
  16#B0#,                                -- muon 2
  16#C0#                                 -- muon 3
  );

constant IF_CompareCounterVec_raddr : integer := 16#100#;

-------------------------------------------------------------------------------
-- Distributed RAM blocks
-------------------------------------------------------------------------------
constant IF_DistrRam_base : integer := 16#00400#;  -- start distributed RAM
                                                   -- at 1k


-------------------------------------------------------------------------------
-- Block RAM blocks
-------------------------------------------------------------------------------
constant IF_BlockRam_base : integer := 16#10000#;  -- start block RAM blocks
--                                                     -- at 64k

constant IF_SimuSpyRAM_base : integer := IF_BlockRam_base;

end package IFVMEAddrMap;


package body IFVMEAddrMap is

  

end package body IFVMEAddrMap;