11 #include "epicsTypes.h"
36 #define U32_Status 0x0000
37 #define U8_DBusRxValue 0x0000
38 #define U8_DBusTxValue 0x0001
43 #define U32_Control 0x0004
48 #define U32_IrqFlag 0x0008
49 #define U32_IrqEnable 0x000C
51 #define EVG_IRQ_ENABLE 0x80000000
52 #define EVG_IRQ_PCIIE 0x40000000
53 #define EVG_IRQ_STOP_RAM_BASE 0x00001000
54 #define EVG_IRQ_STOP_RAM(N) (EVG_IRQ_STOP_RAM_BASE<<N)
55 #define EVG_IRQ_START_RAM_BASE 0x00000100
56 #define EVG_IRQ_START_RAM(N) (EVG_IRQ_START_RAM_BASE<<N)
57 #define EVG_IRQ_EXT_INP 0x00000040
58 #define EVG_IRQ_DBUFF 0x00000020
59 #define EVG_IRQ_FIFO 0x00000002
60 #define EVG_IRQ_RXVIO 0x00000001
63 #define U32_PCI_MIE 0x001C
64 #define EVG_MIE_ENABLE 0x40000000
69 #define U32_AcTrigControl 0x0010
71 #define AcTrigControl_Sync_MASK 0x000d0000
72 #define AcTrigControl_Sync_SHIFT 16
73 #define AcTrigControl_Bypass 0x00020000
74 #define AcTrigControl_Divider_MASK 0x0000ff00
75 #define AcTrigControl_Divider_SHIFT 8
76 #define AcTrigControl_Phase_MASK 0x000000ff
77 #define AcTrigControl_Phase_SHIFT 0
79 #define U32_AcTrigMap 0x0014
81 #define AcTrigMap_EvtMASK 0x000000ff
82 #define AcTrigMap_EvtSHIFT 0
87 #define U32_SwEvent 0x0018
89 #define SwEvent_Ena 0x00000100
90 #define SwEvent_Pend 0x00000200
91 #define SwEvent_Code_MASK 0x000000ff
92 #define SwEvent_Code_SHIFT 0
97 #define U32_DataBufferControl 0x0020
98 #define U32_DBusSrc 0x0024
99 #define U32_DBusTSEvt 0x0028
101 #define TSDBusEvt_MASK 0x000000E0
102 #define TSDBusEvt_SHIFT 5
107 #define U32_FPGAVersion 0x002C
109 #define FPGAVersion_TYPE_MASK 0xF0000000
110 #define FPGAVersion_FORM_MASK 0x0F000000
111 #define FPGAVersion_FORM_SHIFT 24
112 #define FPGAVersion_TYPE_SHIFT 28
113 #define FPGAVersion_VER_MASK 0x000000FF
118 #define U32_TSControl 0x0034
119 #define TSGenerator_ena_MASK 0x01
120 #define TSGenerator_ena_SHIFT 0
121 #define TSValuse_load_MASK 0x02
122 #define TSValuse_load_SHIFT 1
123 #define U32_TSValue 0x0038
128 #define U32_uSecDiv 0x004C
130 #define U32_ClockControl 0x0050
132 #define ClockControl_plllock 0x80000000
133 #define ClockControl_Sel_MASK 0x07000000
134 #define ClockControl_Sel_SHIFT 24
135 #define ClockControl_pllbw 0x70000000
136 #define ClockControl_pllbw_SHIFT 28
137 #define ClockControl_Div_MASK 0x003f0000
138 #define ClockControl_Div_SHIFT 16
139 #define ClockControl_EXTRF 0x01000000
140 #define ClockControl_cglock 0x00000200
142 #define PLLBandwidth_MAX 4
144 #define U8_ClockSource 0x0050
145 #define U8_RfDiv 0x0051
146 #define U16_ClockStatus 0x0052
151 #define U32_EvAnControl 0x0060
152 #define U16_EvAnEvent 0x0066
153 #define U32_EvAnTimeHigh 0x0068
154 #define U32_EvAnTimeLow 0x006C
159 #define U32_SeqControl_base 0x0070
160 #define U32_SeqControl(n) (U32_SeqControl_base + (4*n))
162 #define SeqControl_TrigSrc_MASK 0x000000ff
163 #define SeqControl_TrigSrc_SHIFT 0
168 #define U32_FracSynthWord 0x0080
173 #define U32_RxInitPS 0x0088
176 #define U32_SPIDData 0x0A0
177 #define U32_SPIDCtrl 0x0A4
182 #define U32_TrigEventCtrl_base 0x0100
183 #define U32_TrigEventCtrl(n) (U32_TrigEventCtrl_base + (4*(n)))
185 #define TrigEventCtrl_Ena 0x00000100
186 #define TrigEventCtrl_Code_MASK 0x000000ff
187 #define TrigEventCtrl_Code_SHIFT 0
189 #define U8_TrigEventCode(n) (U32_TrigEventCtrl(n) + 3)
191 #define EVG_TRIG_EVT_ENA 0x00000100
196 #define U32_MuxControl_base 0x0180
197 #define U32_MuxPrescaler_base 0x0184
199 #define U32_MuxControl(n) (U32_MuxControl_base + (8*(n)))
201 #define MuxControl_Pol 0x40000000
202 #define MuxControl_Sts 0x80000000
203 #define MuxControl_TrigMap_MASK 0x000000ff
204 #define MuxControl_TrigMap_SHIFT 0
206 #define U32_MuxPrescaler(n) (U32_MuxPrescaler_base + (8*(n)))
211 #define U16_FrontOutMap_base 0x0400
212 #define U16_FrontOutMap(n) (U16_FrontOutMap_base + (2*(n)))
217 #define U16_UnivOutMap_base 0x0440
218 #define U16_UnivOutMap(n) (U16_UnivOutMap_base + (2*(n)))
223 #define U32_FrontInMap_base 0x0500
224 #define U32_FrontInMap(n) (U32_FrontInMap_base + (4*(n)))
229 #define U32_UnivInMap_base 0x0540
230 #define U32_UnivInMap(n) (U32_UnivInMap_base + (4*(n)))
236 #define U32_RearInMap_base 0x0600
237 #define U32_RearInMap(n) (U32_RearInMap_base + (4*(n)))
242 #define U8_DataBuffer_base 0x0800
243 #define U8_DataBuffer(n) (U8_DataBuffer_base + n)
248 #define U32_SeqRamTS_base 0x8000
249 #define U32_SeqRamTS(n,m) (U32_SeqRamTS_base + (0x4000*(n)) + (8*(m)))
251 #define U32_SeqRamEvent_base 0x8004
252 #define U32_SeqRamEvent(n,m) (U32_SeqRamEvent_base + (0x4000*(n)) + (8*(m)))
255 #define SeqRam_Length (0x4000/8)
260 #define EVG_REGMAP_SIZE 0x10000
267 #define EVG_SEQ_RAM_RUNNING 0x02000000
268 #define EVG_SEQ_RAM_ENABLED 0x01000000
270 #define EVG_SEQ_RAM_SW_TRIG 0x00200000
271 #define EVG_SEQ_RAM_RESET 0x00040000
272 #define EVG_SEQ_RAM_DISABLE 0x00020000
273 #define EVG_SEQ_RAM_ARM 0x00010000
275 #define EVG_SEQ_RAM_REPEAT_MASK 0x00180000
276 #define EVG_SEQ_RAM_NORMAL 0x00000000
277 #define EVG_SEQ_RAM_SINGLE 0x00100000
278 #define EVG_SEQ_RAM_RECYCLE 0x00080000
281 #define EVG_SEQ_RAM_SWMASK 0x0000F000
282 #define EVG_SEQ_RAM_SWMASK_shift 12
283 #define EVG_SEQ_RAM_SWENABLE 0x00000F00
284 #define EVG_SEQ_RAM_SWENABLE_shift 8
290 #define EVG_MASTER_ENA 0x80000000
291 #define EVG_DIS_EVT_REC 0x40000000
292 #define EVG_REV_PWD_DOWN 0x20000000
293 #define EVG_MXC_RESET 0x01000000
294 #define EVG_BCGEN 0x00800000
295 #define EVG_DCMST 0x00400000
301 #define EVG_EXT_INP_IRQ_ENA 0x01000000
302 #define EVG_INP_FP_ENA 0x0F000000
303 #define EVG_INP_FP_ENA_shift 24
304 #define EVG_INP_FP_MASK 0xF0000000
305 #define EVG_INP_FP_MASK_shift 28
306 #define EVG_INP_MXCR_ENA 0x00008000
307 #define EVG_INP_MXCR_ENA_shift 15
309 #ifndef EVG_CONSTANTS
310 #define EVG_CONSTANTS
313 #define evgNumEvtTrig 8
314 #define evgNumDbusBit 8
315 #define evgNumFrontOut 6
316 #define evgNumUnivOut 4
317 #define evgNumSeqRam 2
318 #define evgAllowedTsGitter 0.5f
319 #define evgEndOfSeqBuf 5