00001 //File: BocAddresses.h 00002 00003 #ifndef SCTPIXELROD_BOCADDRESSES_H 00004 #define SCTPIXELROD_BOCADDRESSES_H 00005 00006 /*! 00007 * BocAddresses.h is a wrapper around the testBench C code header file 00008 memoryPartitions.h. This wrapper adapts things to appear more like C++ and to 00009 declare things const so the compiler can catch attempts to change them in the 00010 code. Only BOC addresses appear in this file. 00011 00012 Author: J.C.Hill. 8 January 2003. V1.0 00013 * 00014 */ 00015 00016 #include "../CommonWithDsp/processor.h" 00017 #include "../CommonWithDsp/memoryPartitions.h" 00018 00019 namespace SctPixelRod { 00020 00021 00022 // Use only the names in this file in C++ code. 00023 00024 //Get the BOC base address from the testBench definitions. 00025 //CE0_BASE is the start of the window for RRIF registers 00026 //Unfortunately, memoryPartitions.h does not define the BOC 00027 //offset from this base in an available form. 00028 00029 const unsigned long BOC_ADDRESS_BASE = CE0_BASE + 0x8000; 00030 00031 const unsigned long BOC_ADDRESS_WINDOW = 0x1000; 00032 00033 //The following addresses are offsets from BOC_ADDRESS_BASE for BOC1 00034 00035 //Start with the BPM12 chips - base for channel 0 00036 const unsigned long BOC_BPM_BASE = 0x000; 00037 00038 //Offsets within BPM12 for individual channel functions 00039 enum bocBpmRegisters { 00040 BOC_BPM_INHIBIT = 0x0, 00041 BOC_BPM_MARK_SPACE = 0x4, 00042 BOC_BPM_COARSE = 0x8, 00043 BOC_BPM_FINE = 0xC 00044 }; 00045 00046 //Start addresses for other "blocks" 00047 const unsigned long BOC_LASER_DAC = 0x600; 00048 const unsigned long BOC_DATA_DELAY = 0x800; 00049 const unsigned long BOC_STROBE_DELAY = 0xA00; 00050 const unsigned long BOC_THRESHOLD_DAC = 0xC00; 00051 00052 //Channel counts (useful for Pixels??) 00053 const unsigned long BOC_TRANSMIT_CHANNELS = 48; 00054 const unsigned long BOC_RECEIVE_CHANNELS = 96; 00055 const unsigned long BOC_STROBE_CHANNELS = 26; 00056 00057 //The following addresses are for single registers. 00058 const unsigned long BOC_BPM_CLK_PHASE = 0x980; 00059 const unsigned long BOC_BREG_CLK_PHASE = 0x98C; 00060 const unsigned long BOC_VERNIER_CLK0_PHASE = 0x990; 00061 const unsigned long BOC_VERNIER_CLK1_PHASE = 0x994; 00062 00063 const unsigned long BOC_RESET = 0xF00; 00064 const unsigned long BOC_BPM_RESET = 0xF04; 00065 const unsigned long BOC_TXDAC_CLEAR = 0xF08; 00066 const unsigned long BOC_RXDAC_CLEAR = 0xF0C; 00067 const unsigned long BOC_STATUS = 0xF10; 00068 const unsigned long BOC_RX_DATA_MODE = 0xF14; 00069 const unsigned long BOC_VERNIER_FINE_PHASE = 0xF20; 00070 const unsigned long BOC_CLK_CONTROL = 0xF28; 00071 00072 const unsigned long BOC_FW_REV = 0xF40; 00073 const unsigned long BOC_HW_REV = 0xF44; 00074 const unsigned long BOC_MODULE_TYPE = 0xF48; 00075 const unsigned long BOC_MANUFACTURER = 0xF4C; 00076 const unsigned long BOC_SERIAL_NUMBER = 0xF60; 00077 00078 00079 //BOC_BUSY_0 is bit 2 of RRIF_STATUS_1. I can't find the definition of 00080 //this register anywhere, so put it here for now. 00081 00082 const unsigned long RRIF_STATUS_1 = CE0_BASE + 0x4420; 00083 enum rrif_status_1_bits { 00084 BOC_BUSY_0 = 0x4 00085 }; 00086 00087 }; // End namespace SctPixelRod 00088 00089 #endif //SCTPIXELROD_BOCADDRESSES_H