Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef VFTX_DEF_TDC
00014 #define VFTX_DEF_TDC
00015
00016 #ifdef GSI_MBS // N.Kurz, EE, GSI, 4-Sep-2007
00017 #define printf printm
00018 #endif // MBS_MBS
00019
00020
00021
00022 #define TDC_N_CHA 32
00023
00024
00025 #define TDC_CHAN_ENABLE 0x00 // r/w 32b
00026 #define TDC_TRIGGER_ENABLE 0x04 // r/w 32b
00027 #define TDC_POSS_RESET 0x08 // r/w 1b ?+ 8b?
00028 #define TDC_PR_POSSRST 0x00000001 // 1st bit is poss reset
00029 #define TDC_PR_VERSION_MAJOR 0xF0000000 // last hex is X of vX.Y
00030 #define TDC_PR_VERSION_MAJOR_SHIFT 28
00031 #define TDC_PR_VERSION_MINOR 0x0F000000 // prev hex is Y of vX.Y
00032 #define TDC_PR_VERSION_MINOR_SHIFT 24
00033 #define TDC_READY_RESET 0x0C // r/w 1b
00034 #define TDC_RESET 0x10 // r/w 32b
00035 #define TDC_STATUS 0x14 // r 3b + 16b
00036 #define TDC_STATUS_READY 0x00000001
00037 #define TDC_STATUS_POSS 0x00000002
00038 #define TDC_STATUS_POSS_SHIFT 1
00039 #define TDC_STATUS_RESET 0x00000004
00040 #define TDC_STATUS_RESET_SHIFT 2
00041 #define TDC_STATUS_EVT_SIZE 0x00001FF0 // Mask for 16 channels!!!!!
00042 #define TDC_STATUS_EVT_SIZE_SHIFT 4
00043 #define TDC_TRIGGER_WINDOW 0x18 // r/w 11b + (4*'0') + 1b + 12b + (4*'0')
00044 #define TDC_TRIGWIN_STOP 0x000007FF
00045 #define TDC_TRIGWIN_FUTURE_F 0x00008000
00046 #define TDC_TRIGWIN_START 0x0FFF0000
00047 #define TDC_TRIGWIN_START_MASK 0x00000FFF
00048 #define TDC_TRIGWIN_START_SHIFT 16
00049 #define TDC_DATA_FIFO 0x1C // r 32b
00050 #define TDC_FIFO_FINE_CT 0x000007FF
00051 #define TDC_FIFO_COARSE_CT 0x01FFF800 // Coarse counter value
00052 #define TDC_FIFO_COARSE_CT_SHIFT 11
00053 #define TDC_FIFO_FUTURE_BIT 0x02000000 // Flag for hits after trigger
00054 #define TDC_FIFO_FUTURE_BIT_SHIFT 25
00055 #define TDC_FIFO_DATA_CHAN 0x7C000000
00056 #define TDC_FIFO_DATA_CHAN_SHIFT 26
00057
00058 #define TDC_FIFO_HEADER_DATA_CNT 0x000000FF // Data count
00059 #define TDC_FIFO_HEADER_TRIG_TYPE 0x60000000 // Trigger Type
00060 #define TDC_FIFO_HEADER_TRIG_TYPE_SHIFT 29
00061 #define TDC_FIFO_MESSAGE_TYPE 0x80000000 // Message Type
00062 #define TDC_FIFO_MESSAGE_TYPE_SHIFT 31 // (1 = header, 0 = data)
00063
00064 typedef struct
00065 {
00066 char name[20] ;
00067 int moduleIndex ;
00068
00069 long volatile *pl_chan_ena;
00070 long volatile *pl_trg_ena;
00071 long volatile *pl_poss_rst;
00072 long volatile *pl_ready_rst;
00073 long volatile *pl_reset;
00074 long volatile *pl_status;
00075 long volatile *pl_trg_wind;
00076 long volatile *pl_dat_fifo;
00077
00078 long volatile *pl_dat_save;
00079 long volatile *p32_tmp;
00080 }
00081 s_vftx ;
00082
00083 int VFTX_TDC_SetName( s_vftx* ps_vTdc, char* newName, int newModuleIndex );
00084
00085
00086 int VFTX_TDC_GetPointers( s_vftx* ps_vTdc, long vTDC_VME_virt_addr );
00087 int VFTX_TDC_PrintPointersAll( s_vftx* ps_vTdc );
00088
00089
00090 int VFTX_TDC_Reset( s_vftx* ps_vTdc );
00091 int VFTX_TDC_Reset_ChanPattern( s_vftx* ps_vTdc, unsigned channels);
00092 int VFTX_TDC_Reset_Chan( s_vftx* ps_vTdc, unsigned char channel);
00093
00094 int VFTX_TDC_ResetReady( s_vftx* ps_vTdc );
00095
00096 int VFTX_TDC_ResetPoss( s_vftx* ps_vTdc );
00097
00098
00099 int VFTX_TDC_SetTriggerWindow( s_vftx* ps_vTdc, unsigned windowStart,
00100 unsigned windowStop, unsigned char futureFlag);
00101
00102
00103 int VFTX_TDC_SetChanEnablePattern( s_vftx* ps_vTdc, unsigned channels);
00104 int VFTX_TDC_ChannelEnable( s_vftx* ps_vTdc, unsigned char channel );
00105 int VFTX_TDC_ChannelDisable( s_vftx* ps_vTdc, unsigned char channel );
00106
00107
00108
00109 int VFTX_TDC_SetTrigEnablePattern( s_vftx* ps_vTdc, unsigned channel );
00110 int VFTX_TDC_TriggerEnable( s_vftx* ps_vTdc, unsigned char channel );
00111 int VFTX_TDC_TriggerDisable( s_vftx* ps_vTdc, unsigned char channel );
00112
00113 int VFTX_TDC_GetVersion( s_vftx* ps_vTdc, int* major, int* minor );
00114 int VFTX_TDC_GetReady( s_vftx* ps_vTdc );
00115 int VFTX_TDC_GetPoss( s_vftx* ps_vTdc );
00116 int VFTX_TDC_GetEventSize( s_vftx* ps_vTdc );
00117 unsigned VFTX_TDC_GetChanEnablePattern( s_vftx* ps_vTdc );
00118 unsigned VFTX_TDC_GetTrigEnablePattern( s_vftx* ps_vTdc );
00119 unsigned long VFTX_TDC_GetTriggerWindow( s_vftx* ps_vTdc );
00120
00121 int VFTX_TDC_PrintVersion( s_vftx* ps_vTdc );
00122 int VFTX_TDC_PrintResetsReg( s_vftx* ps_vTdc );
00123 int VFTX_TDC_PrintStatus( s_vftx* ps_vTdc );
00124 int VFTX_TDC_PrintChanEnablePattern( s_vftx* ps_vTdc );
00125 int VFTX_TDC_PrintTriggerWindow( s_vftx* ps_vTdc );
00126
00127 int VFTX_TDC_InitTdc(s_vftx* ps_vTdc);
00128
00129 int VFTX_TDC_ReadEvent( s_vftx* ps_vTdc,
00130 long * pl_dat);
00131
00132 #endif // VFTX_DEF_TDC