--******************************************************************************
--* @author  SAKULIN Hannes  <hsakulin@dsy-srv3.cern.ch>
--* @date    $Date: 2005/01/21 10:15:35 $
--* @version $Revision: 1.5 $
--******************************************************************************
--* @short   VME Address Map of ROP Chip.
--*
--* All addresses are in bytes (not words)!
--******************************************************************************
--/


package ROPVMEAddrMap is

-------------------------------------------------------------------------------
-- Chip Base Addresses on GMT Board
-------------------------------------------------------------------------------
constant ROP_base : integer := 16#000000#;
constant INF_base : integer := 16#100000#;
constant INC_base : integer := 16#200000#;
constant IND_base : integer := 16#300000#;
constant INB_base : integer := 16#400000#;
constant AUF_base : integer := 16#500000#;
constant LFF_base : integer := 16#600000#;
constant LFB_base : integer := 16#700000#;
constant AUB_base : integer := 16#800000#;
constant SRT_base : integer := 16#900000#;
constant ALL_base : integer := 16#A00000#;  ---writing simultaneously to all chips
constant MEM_end  : integer := 16#9FFFFE#;  -- top address


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

constant ROP_chip_id0_raddr          : integer := 16#00#;  -- CHIP ID 0 r
constant ROP_chip_id1_raddr          : integer := 16#02#;  -- CHIP ID 1 r
constant ROP_chip_rev0_raddr         : integer := 16#04#;  -- CHIP rev 0 r
constant ROP_chip_rev1_raddr         : integer := 16#06#;  -- CHIP rev 1 r

constant ROP_JTAG_base               : integer := 16#20#;  -- base address of JTAG controller

constant ROP_reset_addr              : integer := 16#30#;  -- reset command reg r/w
constant ROP_reset_dcm_addr          : integer := 16#32#;  -- reset dcm command reg r/w
constant ROP_command_addr            : integer := 16#34#;  -- set busy, ready r/w
constant ROP_JTAG_enable_addr        : integer := 16#36#;  -- bit 0 for Xilinx
                                                           -- bit 1 for Altera

constant ROP_prog_enable_addr        : integer := 16#40#;  -- enable programming reg r/w
constant ROP_nprog_addr              : integer := 16#42#;  -- nprog reg r/w
constant ROP_init_cmd_addr           : integer := 16#44#;  -- init command reg r/w
constant ROP_init_status_raddr       : integer := 16#46#;  -- init status reg r
constant ROP_done_raddr              : integer := 16#48#;  -- done status reg r
constant ROP_din_INF_addr            : integer := 16#4A#;  -- din reg INF w
constant ROP_din_INC_addr            : integer := 16#4C#;  -- din reg INC w
constant ROP_din_IND_addr            : integer := 16#4E#;  -- din reg IND w
constant ROP_din_INB_addr            : integer := 16#50#;  -- din reg INB w
constant ROP_din_AUF_addr            : integer := 16#52#;  -- din reg AUF w
constant ROP_din_LFF_addr            : integer := 16#54#;  -- din reg LFF w
constant ROP_din_LFB_addr            : integer := 16#56#;  -- din reg LFB w
constant ROP_din_AUB_addr            : integer := 16#58#;  -- din reg AUB w
constant ROP_din_SRT_addr            : integer := 16#5A#;  -- din reg SRT w

constant ROP_dcm_locked_raddr        : integer := 16#60#;  -- dcm locked status reg r
constant ROP_status0_raddr           : integer := 16#62#;  -- status0 reg r
constant ROP_status1_raddr           : integer := 16#64#;  -- status1 reg r
constant ROP_dummy_cmd_addr          : integer := 16#66#;  -- dummy command reg
constant ROP_dummy_raddr             : integer := 16#68#;  -- dummy status 
                                                           

constant ROP_LATDelayReg_addr        : integer := 16#70#;  -- latency 

constant ROP_VMEWriteAllMask_addr    : integer := 16#72#;  -- dummy status 
-------------------------------------------------------------------------------
-- Distributed RAM blocks
-------------------------------------------------------------------------------
constant ROP_DistrRam_base : integer := 16#00400#;  -- start distributed RAM at
                                                   -- 1k

-------------------------------------------------------------------------------

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

  
end package ROPVMEAddrMap;


package body ROPVMEAddrMap is

  

end package body ROPVMEAddrMap;