00001 /************************************************************************************ 00002 * bocStructure.h 00003 * 00004 * synopsis: Collects together all the BOC settings for a given set of command & 00005 * data links. This structure is intended to be incorporated into the 00006 * ABCDModule & PixelModule structures. 00007 * 00008 * Douglas Ferguson, UW Madison dpferguson@lbl.gov 00009 * Peter W Phillips, Oxford University P.W.Phillips@rl.ac.uk 00010 * John Richardson, Lawrence Berkeley Laboratory john.richardson@cern.ch 00011 * Joseph Virzi, University of California jsvirzi@lbl.gov 00012 ************************************************************************************/ 00013 #ifndef BOC_STRUCTURE_H 00014 #define BOC_STRUCTURE_H 00015 /* register definitions for the BOC setting routines' case statements; note that some 00016 of these closely match the RRIF register definitions in registerIndices.h they are 00017 abbreviated here. (Some of the indices in rI.h are for register sets and so do not 00018 work well in the case statement). */ 00019 /* #define BOC_TXFINE 0x00 */ 00020 /* #define BOC_TXCOARSE 0x01 */ 00021 /* #define BOC_TXMARKSPACE 0x02 */ 00022 /* #define BOC_TXINHIBIT 0x03 */ 00023 /* #define BOC_TXCURRENT 0x04 */ 00024 00025 /* #define BOC_RXTHRESHOLD 0x10 */ 00026 /* #define BOC_RXDELAY 0x11 */ 00027 00028 /* #define BOC_BPM_CLOCK_PHASE 0x20 */ 00029 /* #define BOC_BREG_CLOCK_PHASE 0x21 */ 00030 /* #define BOC_VERNIER_CLOCK_STEPPHASE0 0x22 */ 00031 /* #define BOC_VERNIER_CLOCK_STEPPHASE1 0x23 */ 00032 /* #define BOC_VERNIER_CLOCK_FINEPHASE 0x24 */ 00033 00034 /* #define BOC_BOCRESET 0x30 */ 00035 /* #define BOC_BPMRESET 0x31 */ 00036 /* #define BOC_TXDAC_CLEAR 0x32 */ 00037 /* #define BOC_RXDAC_CLEAR 0x33 */ 00038 00039 /* #define BOC_STAT 0x40 */ 00040 /* #define BOC_RXDATAMODE 0x41 */ 00041 /* #define BOC_CLOCKCTRLBITS 0x42 */ 00042 00043 /* #define BOC_FIRMWARE_REV 0x50 */ 00044 /* #define BOC_HARDWARE_REV 0x51 */ 00045 /* #define BOC_MODULETYPE 0x52 */ 00046 /* #define BOC_MNFT 0x53 */ 00047 /* #define BOC_SERIALNO 0x54 */ 00048 00049 typedef struct { 00050 UINT8 txFineDelay; //transmitter fine delay. 00051 UINT8 txCoarseDelay; //transmitter coarse delay. 00052 UINT8 txMarkSpace; //transmitter markSpace ratio. 00053 UINT8 txStreamInhibit; //0 ==> inhibit channel. 00054 00055 UINT8 txCurrent; //Laser current. 00056 UINT8 unused[3]; 00057 } BOCTxParams; 00058 00059 typedef struct { 00060 UINT8 rxThreshold; //receiver threshold. 00061 UINT8 rxDelay; //receiver delay. 00062 } BOCRxParams; 00063 00064 typedef struct { 00065 UINT8 bpmClockPhase; 00066 UINT8 bRegClockPhase; 00067 UINT8 vernierClockStepPhase[2]; 00068 UINT8 vernierClockFinePhase; 00069 00070 UINT8 bocReset; //needed? 00071 UINT8 bpmReset; // " 00072 UINT8 txDacClear; // " 00073 UINT8 rxDacClear; // " 00074 00075 UINT8 status; 00076 UINT8 rxDataMode; 00077 UINT8 clockCtrlBits; 00078 00079 UINT8 firmwareRev; 00080 UINT8 hardwareRev; 00081 UINT8 moduleType; 00082 UINT8 manufacturer; 00083 UINT8 serialNumber; 00084 00085 UINT8 unused[3]; //data alignment. 00086 UINT32 unused1[3]; 00087 } BOCGlobalParams; 00088 00089 typedef struct { 00090 BOCTxParams bocTxParams[48]; 00091 BOCRxParams bocRxParams[96]; 00092 BOCGlobalParams bocGlobalParams; 00093 } BOCConfig; 00094 00095 #endif 00096