Cat
FePGA.h
Go to the documentation of this file.
1 //$Id: FePGA.h,v 1.3 2006/09/28 13:02:23 fmachefe Exp $
2 //------------------------------------------------------------------------------
3 //
4 // Package : FePGA
5 //
6 // Description:
7 //
8 // Author(s) : F. Machefert - Yasmine Amhis
9 // Date : 10 February 2004 -- Modified 09-2017
10 //
11 //------------------------------------------------------------------------------
12 
13 #ifndef __FEPGA_H_
14 #define __FEPGA_H_
15 
16 #include "Element.h"
17 #include "RAM.h"
18 #include "Register.h"
19 #include "UsbFTMLInterface.h"
20 #include "UsbMLI2cBus.h"
21 #include "UsbMLSpiBus.h"
22 
23 class FePGA : public Element {
24 public:
25  typedef unsigned long U32;
26  typedef unsigned short U16;
27  typedef unsigned char U8;
28 
29  FePGA();
30 
31  virtual ~FePGA() {};
32 
36  void help() { info("FePGA "+name()+". No help.","FePGA::help"); };
37 
43  return StatusCode::SUCCESS;
44  };
45 
54  void reset() {
55  info("FePGA reset.");
56  m_resetReg->io()->setU8(0,1);
57  m_resetReg->io()->setU8(1,0);
58  m_resetReg->write();
59  };
60 
61 
62 
63  void resetUsb(){
64  info("Usb TxRx reset.");
65  m_resetReg->io()->setU8(0,2);
66  m_resetReg->io()->setU8(1,0);
67  m_resetReg->dump();
68  m_resetReg->write();
69 
70  };
71 
72 
73 
75  return m_usb;
76  }
77 
79  return m_usbi2c;
80  }
81 
83  return m_usbspi;
84  }
85 
86  //Register* reg(){
87  // return m_reg;
88  //}
89 
93  void update () {
94  };
95 
96 
97  Register* setupReg() { return m_setupReg; }
98 
101 
103  info("FePGA testSequence.");
104  return m_testSeqReg->write();
105  };
106 
107  // StatusCode setExtTrig( bool ); // QUESTION : DOES THE 3CU need this?
108 
109  //bool extTrig(); // QUESTION : DOES THE 3CU need this ?
110 
111  StatusCode setSpiGBTSCA( bool );
112 
113  bool spiGBTSCA();
114 
115  StatusCode setSpiAdd( unsigned long int );
116 
117  unsigned long int spiAdd();
118 
119  StatusCode setSpiSubAdd( unsigned long int );
120 
121  unsigned long int spiSubAdd();
122 
123 
124  StatusCode spiRead (unsigned int, unsigned int, unsigned int*) ;
125 
126  StatusCode spiWrite (unsigned int, unsigned int, unsigned int*) ;
127 
128  PyObject* spiRead (unsigned int, unsigned int) ;
129 
130  StatusCode spiWrite (unsigned int, unsigned int, PyObject*) ;
131 
132  unsigned int spiRead (unsigned int) ;
133 
134  StatusCode spiWrite (unsigned int, unsigned int);
135 
136  StatusCode setI2cGBTSCA( bool );
137 
138  bool i2cGBTSCA( );
139 
140  StatusCode setI2cBuffer( unsigned long int );
141 
142  unsigned long int i2cBuffer();
143 
144 
145  unsigned long int i2cData();
146 
147  StatusCode setI2cAdd( unsigned long int );
148 
149  unsigned long int i2cAdd();
150 
151  StatusCode setI2cSubAdd( unsigned long int );
152 
153  unsigned long int i2cSubAdd();
154 
155  StatusCode i2cRead( );
156 
158 
159  unsigned long int i2cRead(unsigned long int);
160 
161  StatusCode i2cWrite(unsigned long int , unsigned long int );
162 
164  return m_transmitSpiReg->write();
165  }
166 
167 
168  private:
169 
170  Register* MakeRegister(std::string name, unsigned int add);
171  RAM* MakeRAM(std::string name, unsigned int add);
172 
176 
177  // Currently in firmware (2018-01-12)
178  Register *m_transmitSpiReg; // Start SPI transmission.
179  Register *m_ctrlSpiReg; // Length of the SPI Frame.
180  Register *m_addSpiReg; // Adress to read/write.
181 
182  RAM *m_txSpiFifo; // Frame to write
183  RAM *m_rxSpiFifo; // Frame to read
184 
185  RAM *m_testFifo; // A test FIFO
186 
187 
188  // Not sure if in firmware
189  // Register *m_statusReg; // Not currently used??
190  Register *m_setupReg; // Toggle Spi or I2C
191  Register *m_resetReg; // Reset FPGA or USB
192  Register *m_testSeqReg; // Start test sequence
193 
194  unsigned int m_spiSubAdd;
195 
196  // I2C registers
197 
198  unsigned int m_i2cSubAdd;
199  unsigned int m_i2cBuffer;
200 
203 
204 };
205 
206 #endif
207 
void info(std::string mymsg)
Definition: Object.h:38
UsbMLSpiBus * m_usbspi
Definition: FePGA.h:175
StatusCode setSpiSubAdd(unsigned long int)
Definition: FePGA.cpp:228
Definition: RAM.h:16
unsigned short U16
Definition: FePGA.h:26
StatusCode testSequence()
Definition: FePGA.h:102
Register * m_setupReg
Definition: FePGA.h:190
StatusCode setSpiAdd(unsigned long int)
Definition: FePGA.cpp:77
UsbMLSpiBus * spi()
Definition: FePGA.h:82
unsigned long int i2cData()
Definition: FePGA.cpp:391
void reset()
Definition: FePGA.h:54
RAM * MakeRAM(std::string name, unsigned int add)
Definition: FePGA.cpp:65
virtual ~FePGA()
Definition: FePGA.h:31
unsigned int m_i2cBuffer
Definition: FePGA.h:199
void add(int attribut)
Definition: Attrib.h:67
virtual StatusCode write()
Definition: IOobject.h:80
unsigned long int i2cBuffer()
Definition: FePGA.cpp:384
StatusCode setU8(unsigned long int, U8)
Definition: IOdata.cpp:43
Register * m_addI2cReg
Definition: FePGA.h:202
StatusCode setI2cSubAdd(unsigned long int)
Definition: FePGA.cpp:412
Register * addI2cReg()
Definition: FePGA.h:100
Definition: FePGA.h:23
UsbMLI2cBus * m_usbi2c
Definition: FePGA.h:174
RAM * m_rxSpiFifo
Definition: FePGA.h:183
unsigned long int i2cAdd()
Definition: FePGA.cpp:404
StatusCode setI2cBuffer(unsigned long int)
Definition: FePGA.cpp:379
RAM * m_txSpiFifo
Definition: FePGA.h:182
unsigned long U32
Definition: FePGA.h:25
UsbMLI2cBus * i2c()
Definition: FePGA.h:78
void dump()
Definition: IOobject.h:92
StatusCode i2cRead()
Definition: FePGA.cpp:427
void update()
Definition: FePGA.h:93
Register * MakeRegister(std::string name, unsigned int add)
Definition: FePGA.cpp:52
Register * masterI2cReg()
Definition: FePGA.h:99
StatusCode setI2cAdd(unsigned long int)
Definition: FePGA.cpp:398
RAM * m_testFifo
Definition: FePGA.h:185
Register * m_addSpiReg
Definition: FePGA.h:180
Register * m_masterI2cReg
Definition: FePGA.h:201
unsigned char U8
Definition: FePGA.h:27
bool i2cGBTSCA()
Definition: FePGA.cpp:371
StatusCode spiRead(unsigned int, unsigned int, unsigned int *)
Definition: FePGA.cpp:102
StatusCode setI2cGBTSCA(bool)
Definition: FePGA.cpp:362
void resetUsb()
Definition: FePGA.h:63
Register * m_ctrlSpiReg
Definition: FePGA.h:179
unsigned long int spiSubAdd()
Definition: FePGA.cpp:232
void help()
Destructor.
Definition: FePGA.h:36
std::string name() const
Definition: Object.h:28
unsigned long int spiAdd()
StatusCode i2cWrite()
Definition: FePGA.cpp:451
bool spiGBTSCA()
Definition: FePGA.cpp:220
StatusCode transmitSpi()
Definition: FePGA.h:163
unsigned long int i2cSubAdd()
Definition: FePGA.cpp:417
StatusCode spiWrite(unsigned int, unsigned int, unsigned int *)
Definition: FePGA.cpp:84
UsbFTMLInterface * usb()
Definition: FePGA.h:74
Register * m_testSeqReg
Definition: FePGA.h:192
unsigned int m_spiSubAdd
Definition: FePGA.h:194
Register * m_transmitSpiReg
Definition: FePGA.h:178
UsbFTMLInterface * m_usb
Definition: FePGA.h:173
FePGA()
Definition: FePGA.cpp:29
StatusCode setSpiGBTSCA(bool)
Definition: FePGA.cpp:211
Register * m_resetReg
Definition: FePGA.h:191
IOdata * io()
Definition: IOobject.h:66
StatusCode init()
Definition: FePGA.h:42
Register * setupReg()
Definition: FePGA.h:97
unsigned int m_i2cSubAdd
Definition: FePGA.h:198