Cat
A3PE.h
Go to the documentation of this file.
1 //$Id: A3PE.h,v 1.3 2006/09/28 13:02:23 fmachefe Exp $
2 //------------------------------------------------------------------------------
3 //
4 // Package : A3PE
5 //
6 // Description:
7 //
8 // Author(s) : F. Machefert -
9 // Date : 10 February 2004
10 //
11 //------------------------------------------------------------------------------
12 
13 #ifndef __A3PE_H_
14 #define __A3PE_H_
15 
16 #include "Element.h"
17 #include "RAM.h"
18 #include "Register.h"
19 
20 class A3PE : public Element {
21 public:
22  typedef unsigned long U32;
23  typedef unsigned short U16;
24  typedef unsigned char U8;
25  A3PE(){
26  setType("A3PE");
27  setId(0);
29  debug("A3PE built.","A3PE::A3PE");
30 
33  m_globalUsbReset->setName("GlobalUsbReset");
36 
37  m_ctrlReg=new Register();
39  m_ctrlReg->setName("CtrlRegister");
40  m_ctrlReg->io()->defDataU32(1);
41  m_ctrlReg->setAddress(20);
42 
43  m_resetReg=new Register();
45  m_resetReg->setName("ResetRegister");
46  m_resetReg->io()->defDataU16(1);
48 
49  m_statusReg=new Register();
51  m_statusReg->setName("StatusRegister");
52  m_statusReg->io()->defDataU16(1);
54 
55  m_setupReg=new Register();
57  m_setupReg->setName("SetupRegister");
58  m_setupReg->io()->defDataU16(1);
60 
61  m_acqReg=new Register();
63  m_acqReg->setName("AcqRegister");
64  m_acqReg->io()->defDataU16(1);
65  m_acqReg->setAddress(4);
66 
67  m_latencyReg=new Register();
69  m_latencyReg->setName("LatencyRegister");
70  m_latencyReg->io()->defDataU16(1);
72 
75  m_writeLengthFifoReg->setName("WriteLengthFifoRegister");
78 
79  //ICECAL Analog Mezzanine Relays:
82  m_ctrlAnaMezzReg->setName("CtrlAnaMezzReg");
85 
88  m_clockDivisionReg->setName("ClockDivisionReg");
91 
92  m_triggerReg=new Register();
94  m_triggerReg->setName("TriggerReg");
95  m_triggerReg->io()->defDataU32(1);
97 
98  m_toAXReg=new Register();
100  m_toAXReg->setName("ToAXReg");
101  m_toAXReg->io()->defDataU32(1);
102  m_toAXReg->setAddress(26);
103 
104  m_fromAXReg=new Register();
106  m_fromAXReg->setName("FromAXReg");
107  m_fromAXReg->io()->defDataU32(1);
108  m_fromAXReg->setAddress(27);
109 
110  m_spare3Reg=new Register();
112  m_spare3Reg->setName("Spare3Reg");
113  m_spare3Reg->io()->defDataU32(1);
114  m_spare3Reg->setAddress(19);
115 
116  m_storageRam=new RAM();
118  m_storageRam->setName("StorageRam");
119  m_storageRam->setSize(96,512);
121 
122  m_patternRam=new RAM();
124  m_patternRam->setName("PatternRam");
125  m_patternRam->setSize(96,512);
127 
128  m_triggerRam=new RAM();
130  m_triggerRam->setName("TriggerRam");
131  m_triggerRam->setSize(8,512);
133 
134  m_toAXRamPtr=new Register();
136  m_toAXRamPtr->setName("ToAXRamPtr");
137  m_toAXRamPtr->io()->defDataU16(1);
139 
140  m_toAXRam=new RAM();
142  m_toAXRam->setName("ToAXRam");
143  m_toAXRam->setSize(32,512);
144  m_toAXRam->setAddress(29);
145 
146  m_fromAXRamPtr=new Register();
148  m_fromAXRamPtr->setName("FromAXRamPtr");
151 
152  m_fromAXRam=new RAM();
154  m_fromAXRam->setName("FromAXRam");
155  m_fromAXRam->setSize(32,512);
156  m_fromAXRam->setAddress(30);
157 
158  m_latencyAX=new Register();
160  m_latencyAX->setName("LatencyAX");
161  m_latencyAX->io()->defDataU32(1);
162  m_latencyAX->setAddress(32);
163 
164  m_lengthAX=new Register();
166  m_lengthAX->setName("LengthAX");
167  m_lengthAX->io()->defDataU16(1);
168  m_lengthAX->setAddress(34);
169 
170  m_testRam=new RAM();
172  m_testRam->setName("TestRam");
173  m_testRam->setSize(32,50);
174  m_testRam->setAddress(27);
175  }
176 
177  ~A3PE(){
178  /*
179  delete m_globalUsbReset;
180  delete m_ctrlReg;
181  delete m_resetReg;
182  delete m_setupReg;
183  delete m_statusReg;
184  delete m_acqReg;
185  delete m_latencyReg;
186  delete m_writeLengthFifoReg;
187  delete m_clockDivisionReg;
188  delete m_triggerReg;
189  delete m_toAXReg;
190  delete m_fromAXReg;
191  delete m_spare3Reg;
192  delete m_storageRam;
193  delete m_patternRam;
194  delete m_triggerRam;
195  delete m_toAXRam;
196  delete m_fromAXRam;
197  delete m_toAXRamPtr;
198  delete m_fromAXRamPtr;
199  delete m_lengthAX;
200  delete m_latencyAX;
201  delete m_testRam;
202  */
203  }
204 
208  void help() { info("A3PE "+name()+". No help.","A3PE::help"); };
209 
215  return StatusCode::SUCCESS;
216  };
217 
225  void reset() {
226  info("A3PE reset procedure.");
227  info("A3PE global usb reset.","A3PE::reset");
228  if (m_globalUsbReset->write().isFailure()){
229  error("Cannot trigger a Global Usb reset on A3PE "+name(),"A3PE::reset");
230  }
231  info("A3PE global reset.","A3PE::reset");
232  m_resetReg->io()->setU16(0,0xFFFF);
233  if (m_resetReg->write().isFailure()){
234  error("Cannot trigger a Global reset on A3PE "+name(),"A3PE::reset");
235  }
236  };
237 
242 
247 
252 
257 
262 
267 
272 
277 
282 
287 
292 
296  StatusCode setEnableADC(unsigned int,bool);
297 
302 
306  bool enableADC(unsigned int);
307 
311  bool writeStorageFifoUsb();
312 
317 
321  bool readPatternFifoUsb();
322 
327 
331  bool readTriggerFifoUsb();
332 
337 
341  bool readToAXRamUsb();
342 
347 
351  bool writeFromAXRamUsb();
352 
356  StatusCode setAXRamUsb(bool);
357 
362 
367 
371  bool softwareTrigger();
372 
376  StatusCode setClockDivision(unsigned int);
377 
381  StatusCode setTriggerDelay(unsigned int);
382 
386  StatusCode setSeqPulseDelay(unsigned int);
387 
391  StatusCode setTriggerRate(unsigned int);
392 
396  StatusCode setNTrigger(unsigned int);
397 
401  StatusCode setFifoLatency(unsigned short);
402 
406  StatusCode setFifoDepth(unsigned int);
407 
411  unsigned int clockDivision();
412 
416  unsigned int triggerDelay();
417 
421  unsigned int seqPulseDelay();
422 
426  unsigned int triggerRate();
427 
431  unsigned int nTrigger();
432 
436  unsigned int fifoLatency();
440  unsigned int fifoDepth();
441 
446 
451 
456 
460  bool dataReady();
461 
465  void update () {
466  };
467 
469 
470  bool internalAXSequence();
471 
472  StatusCode setLengthAX(unsigned int);
473 
474  unsigned int lengthAX();
475 
476  StatusCode setLatencyAX(unsigned int);
477 
478  unsigned int latencyAX();
479 
480  StatusCode setPipeline(unsigned int);
481 
482  unsigned int pipeline();
483 
485  return m_ctrlReg;
486  }
487 
489  return m_setupReg;
490  }
491 
493  return m_resetReg;
494  }
495 
497  return m_statusReg;
498  }
499 
501  return m_acqReg;
502  }
503 
505  return m_latencyReg;
506  }
507 
509  return m_writeLengthFifoReg;
510  }
511 
513  return m_ctrlAnaMezzReg;
514  }
515 
517  return m_clockDivisionReg;
518  }
519 
521  return m_triggerReg;
522  }
523 
525  return m_toAXReg;
526  }
527 
529  return m_fromAXReg;
530  }
531 
533  return m_spare3Reg;
534  }
535 
537  return m_storageRam;
538  }
539 
541  return m_patternRam;
542  }
543 
545  return m_triggerRam;
546  }
547 
549  return m_toAXRam;
550  }
551 
553  return m_fromAXRam;
554  }
555 
557  return m_testRam;
558  }
559 
561  return m_fromAXRamPtr;
562  }
563 
565  return m_toAXRamPtr;
566  }
567 
568  void dumpStorage();
569  void loadStorage(std::string);
570 
571  void dumpPattern();
572  void loadPattern(std::string);
573 
574  void dumpTrigger();
575  void loadTrigger(std::string);
576 
577  void dumpToAX();
578  void loadToAX(std::string);
579 
580  void dumpFromAX();
581  void loadFromAX(std::string);
582 
585 
586 private:
611 };
612 
613 #endif
void info(std::string mymsg)
Definition: Object.h:38
Register * m_triggerReg
Definition: A3PE.h:597
Register * setupReg()
Definition: A3PE.h:488
bool isFailure() const
Definition: StatusCode.h:68
void dumpFromAX()
Definition: A3PE.cpp:896
Definition: RAM.h:16
RAM * m_testRam
Definition: A3PE.h:610
unsigned int latencyAX()
Definition: A3PE.cpp:348
void defDataU32(unsigned long size)
Definition: IOdata.h:193
Register * ctrlAnaMezzReg()
Definition: A3PE.h:512
StatusCode setNTrigger(unsigned int)
Definition: A3PE.cpp:549
A3PE()
Definition: A3PE.h:25
bool readTriggerFifoUsb()
Definition: A3PE.cpp:258
StatusCode setTriggerRate(unsigned int)
Definition: A3PE.cpp:520
bool readPatternFifoUsb()
Definition: A3PE.cpp:253
StatusCode setReadToAXRamUsb(bool)
Definition: A3PE.cpp:201
RAM * fromAXRam()
Definition: A3PE.h:552
bool readToAXRamUsb()
Definition: A3PE.cpp:272
unsigned int triggerRate()
Definition: A3PE.cpp:539
RAM * m_triggerRam
Definition: A3PE.h:603
StatusCode setSize(unsigned int, unsigned int)
Definition: RAM.cpp:29
StatusCode setSoftwareTrigger(bool)
Definition: A3PE.cpp:368
StatusCode setReadPatternFifoUsb(bool)
Definition: A3PE.cpp:124
unsigned int clockDivision()
Definition: A3PE.cpp:448
Register * toAXReg()
Definition: A3PE.h:524
void add(int attribut)
Definition: Attrib.h:67
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setAddToAXRam(int)
Definition: A3PE.cpp:179
StatusCode resetLatencyCounter()
Definition: A3PE.cpp:37
void setName(std::string name)
Definition: Object.h:51
Register * m_toAXReg
Definition: A3PE.h:598
Register * m_fromAXRamPtr
Definition: A3PE.h:605
Register * m_statusReg
Definition: A3PE.h:591
Register * toAXRamPtrReg()
Definition: A3PE.h:564
Register * m_lengthAX
Definition: A3PE.h:609
StatusCode setSeqPulseDelay(unsigned int)
void defDataU16(unsigned long size)
Definition: IOdata.h:186
StatusCode resetUsbPhasers()
Definition: A3PE.cpp:32
StatusCode setFifoDepth(unsigned int)
Definition: A3PE.cpp:612
StatusCode resetSequenceFromToAX()
Definition: A3PE.cpp:67
Register * m_writeLengthFifoReg
Definition: A3PE.h:594
void loadToAX(std::string)
Definition: A3PE.cpp:858
RAM * patternRam()
Definition: A3PE.h:540
Register * m_fromAXReg
Definition: A3PE.h:599
void loadTrigger(std::string)
Definition: A3PE.cpp:809
StatusCode setU16(unsigned long int, U16)
Definition: IOdata.cpp:60
RAM * storageRam()
Definition: A3PE.h:536
bool writeStorageFifoUsb()
Definition: A3PE.cpp:248
bool softwareTrigger()
Definition: A3PE.cpp:379
void dumpStorage()
Definition: A3PE.cpp:641
StatusCode resetSPI()
Definition: A3PE.cpp:77
void dumpPattern()
Definition: A3PE.cpp:716
StatusCode startSequenceAX()
Definition: A3PE.cpp:949
void reset()
Definition: A3PE.h:225
Definition: A3PE.h:20
Register * m_setupReg
Definition: A3PE.h:590
RAM * triggerRam()
Definition: A3PE.h:544
Register * m_ctrlAnaMezzReg
Definition: A3PE.h:595
void setType(std::string type)
Definition: Object.h:52
Register * acqReg()
Definition: A3PE.h:500
bool dataReady()
Definition: A3PE.cpp:406
void error(std::string mymsg)
Definition: Object.h:40
void setId(unsigned char id)
Definition: Object.h:53
void debug(std::string mymsg)
Definition: Object.h:37
unsigned short U16
Definition: A3PE.h:23
RAM * m_patternRam
Definition: A3PE.h:602
Register * m_ctrlReg
Definition: A3PE.h:588
Register * m_resetReg
Definition: A3PE.h:589
unsigned int triggerDelay()
Definition: A3PE.cpp:480
StatusCode setLatencyAX(unsigned int)
Definition: A3PE.cpp:327
RAM * m_storageRam
Definition: A3PE.h:601
Register * fromAXReg()
Definition: A3PE.h:528
StatusCode trigger()
Definition: A3PE.cpp:363
unsigned long U32
Definition: A3PE.h:22
StatusCode setTriggerDelay(unsigned int)
Definition: A3PE.cpp:461
StatusCode setPipeline(unsigned int)
Definition: A3PE.cpp:290
Register * spare3Reg()
Definition: A3PE.h:532
StatusCode resetStorageFifo()
Definition: A3PE.cpp:27
Register * m_clockDivisionReg
Definition: A3PE.h:596
Register * statusReg()
Definition: A3PE.h:496
StatusCode resetPatternFifo()
Definition: A3PE.cpp:47
StatusCode setFifoLatency(unsigned short)
Definition: A3PE.cpp:581
~A3PE()
Definition: A3PE.h:177
unsigned int nTrigger()
Definition: A3PE.cpp:568
Register * triggerReg()
Definition: A3PE.h:520
void loadStorage(std::string)
Definition: A3PE.cpp:670
StatusCode setAddFromAXRam(int)
Definition: A3PE.cpp:190
StatusCode setReadTriggerFifoUsb(bool)
Definition: A3PE.cpp:152
void loadFromAX(std::string)
Definition: A3PE.cpp:911
void setAddress(U32 address)
Definition: IOobject.h:84
Register * m_latencyReg
Definition: A3PE.h:593
Register * m_spare3Reg
Definition: A3PE.h:600
unsigned int lengthAX()
Definition: A3PE.cpp:338
StatusCode enableStorage()
Definition: A3PE.cpp:383
Register * latencyReg()
Definition: A3PE.h:504
Register * m_acqReg
Definition: A3PE.h:592
unsigned int seqPulseDelay()
Register * m_latencyAX
Definition: A3PE.h:608
RAM * toAXRam()
Definition: A3PE.h:548
bool writeFromAXRamUsb()
Definition: A3PE.cpp:276
Register * fromAXRamPtrReg()
Definition: A3PE.h:560
std::string name() const
Definition: Object.h:28
Register * ctrlReg()
Definition: A3PE.h:484
Register * m_globalUsbReset
Definition: A3PE.h:587
StatusCode init()
Definition: A3PE.h:214
virtual void addChild(Hierarchy *element)
Definition: Hierarchy.cpp:83
unsigned char U8
Definition: A3PE.h:24
StatusCode setWriteStorageFifoUsb(bool)
Definition: A3PE.cpp:99
RAM * testRam()
Definition: A3PE.h:556
StatusCode acquisition()
Definition: A3PE.cpp:417
Register * m_toAXRamPtr
Definition: A3PE.h:604
StatusCode resetTriggerFifo()
Definition: A3PE.cpp:52
void help()
Definition: A3PE.h:208
StatusCode resetAcquisitionWriteCounter()
Definition: A3PE.cpp:42
unsigned int fifoDepth()
Definition: A3PE.cpp:631
StatusCode resetToAXRam()
Definition: A3PE.cpp:57
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225
unsigned int pipeline()
Definition: A3PE.cpp:307
StatusCode resetFromAXRam()
Definition: A3PE.cpp:62
StatusCode setInternalAXSequence(bool)
Definition: A3PE.cpp:280
StatusCode setClockDivision(unsigned int)
Definition: A3PE.cpp:429
StatusCode setEnableADC(unsigned int, bool)
Definition: A3PE.cpp:87
bool internalAXSequence()
Definition: A3PE.cpp:285
unsigned int fifoLatency()
Definition: A3PE.cpp:599
Register * writeLengthFifoReg()
Definition: A3PE.h:508
void dumpToAX()
Definition: A3PE.cpp:844
StatusCode resetFE()
Definition: A3PE.cpp:72
void update()
Definition: A3PE.h:465
void dumpTrigger()
Definition: A3PE.cpp:791
IOdata * io()
Definition: IOobject.h:66
RAM * m_toAXRam
Definition: A3PE.h:606
StatusCode setLengthAX(unsigned int)
Definition: A3PE.cpp:316
Register * resetReg()
Definition: A3PE.h:492
StatusCode setWriteFromAXRamUsb(bool)
Definition: A3PE.cpp:213
void loadPattern(std::string)
Definition: A3PE.cpp:747
RAM * m_fromAXRam
Definition: A3PE.h:607
Register * clockDivisionReg()
Definition: A3PE.h:516
bool enableADC(unsigned int)
Definition: A3PE.cpp:265