28 info(
"Reset Storage Fifo",
"A3PE::resetStorageFifo");
33 info(
"Reset USB Phasers",
"A3PE::resetUsbPhasers");
38 info(
"Reset Latency counter",
"A3PE::resetLatencyCounter");
43 info(
"Reset acquisition write counter",
"A3PE::resetAcquisitionWriteCounter");
48 info(
"Reset Pattern Fifo",
"A3PE::resetPatternFifo");
53 info(
"Reset Trigger Fifo",
"A3PE::resetTriggerFifo");
58 info(
"Reset ToAx Ram",
"A3PE::resetToAXRam");
63 info(
"Reset FromAX Ram",
"A3PE::resetFromAXRam");
68 info(
"Reset Sequence From-To AX",
"A3PE::resetSequenceFromToAX");
73 info(
"Reset FE triggered.",
"A3PE::resetFE");
78 info(
"Reset SPI triggered.",
"A3PE::resetSPI");
89 info(
"Configuring ADC "+
itos(adc)+
" input enable to "+
itos(enable));
94 ". No action.",
"A3PE::setEnableADC");
103 error(
"Cannot set usb storage fifo write bit",
"A3PE::setWriteStorageFifoUsb");
107 info(
"Storage Fifo Usb Write mode set.",
"A3PE::setWriteStorageFifoUsb");
114 error(
"Cannot set fifo storage ADC write bit",
"A3PE::setWriteStorageFifoUsb");
118 info(
"Storage Fifo ADC Write mode set.",
"A3PE::setWriteStorageFifoUsb");
127 error(
"Cannot set pattern fifo read bit",
128 "A3PE::setReadPatternFifoUsb");
132 info(
"Pattern Fifo Usb read mode set.",
133 "A3PE::setReadPatternFifoUsb");
139 error(
"Cannot set pattern fifo read bit",
140 "A3PE::setReadPatternFifoUsb");
144 info(
"Pattern Fifo 40MHz read mode set.",
145 "A3PE::setWritePatternFifoUsb");
155 error(
"Cannot set trigger fifo read bit",
156 "A3PE::setReadtriggerFifoUsb");
160 info(
"Trigger Fifo Usb read mode set.",
161 "A3PE::setReadTriggerFifoUsb");
167 error(
"Cannot set trigger fifo read bit",
168 "A3PE::setReadTriggerFifoUsb");
172 info(
"Trigger Fifo 40MHz read mode set.",
173 "A3PE::setReadTriggerFifoUsb");
183 "A3PE::setAddToAXRam");
186 debug(
"toAXRamPtr register set to "+
itos(add)+
".",
"A3PE::setAddToAXRam");
194 "A3PE::setAddFromAXRam");
197 debug(
"fromAXRamPtr register set to "+
itos(add)+
".",
"A3PE::setAddFromAXRam");
204 error(
"Cannot set ToAXfifo read bit",
"A3PE::setReadToAXRamUsb");
208 debug(
"ToAXRam read mode set.",
"A3PE::setReadToAXRamUsb");
216 error(
"Cannot set usb FromAXfifo write bit",
"A3PE::writeFromAXFifoUsb");
220 debug(
"write FromAXFifo USB Write mode set.",
"A3PE::writeFromAXFifoUsb");
231 error(
"Cannot set AXRam USB clock mode",
"A3PE::setAXRamUsb");
240 error(
"Cannot set AXRam acquisition clock mode",
"A3PE::setAXRamUsb");
244 debug(
"AXRam USB clock mode set to "+
itos(enable),
"A3PE::setAXRamUsb");
281 info(
"Switch AX internal loop mode to "+
itos(mode),
"A3PE::setInternalAXSequence");
286 debug(
"Get fpga loop mode",
"A3PE::internalAXSequence");
292 warning(
"Cannot set pipeline to coded value "+
itos(val),
"A3PE::setPipeline");
300 "A3PE::setPipeline");
303 info(
"Acquisition register bits set to "+
itos(val),
"A3PE::setPipeline");
320 "Register::setLengthAX");
323 debug(
"LengthAX register set to "+
itos(val),
"A3PE::setLengthAX");
331 "Register::setLatencyAX");
334 debug(
"LatencyAX register set to "+
itos(val),
"A3PE::setLatencyAX");
345 return (data&0xffff);
355 return (data&0xffffff);
364 debug(
"Trigger sequence started",
"A3PE::trigger");
370 error(
"Cannot set software trigger bit",
"A3PE::setSoftwareTrigger");
374 info(
"Software trigger mode set to "+
itos(enable),
"A3PE::setSoftwareTrigger");
386 error(
"Cannot read acquisition register "+
name(),
"A3P3::enableStorage");
394 error(
"Cannot write acquisition register ",
"A3P3::enableStorage");
400 error(
"Cannot reset Busy line"+
name(),
"A3P3::enableStorage");
409 debug(
"Spying EnableStorage bit - Data Ready: NO ",
"A3PE::dataReady");
412 debug(
"Spying EnableStorage bit - Data Ready: YES",
"A3PE::dataReady");
418 debug(
"Acquisition sequence started",
"A3PE::acquisition");
419 warning(
"This acquisition trigger does not release the busy bit !",
420 "A3PE::acquisition");
432 "Register::setClockDivision");
437 data |= ( val & 16777215 );
441 "Register::setClockDivision");
444 info(
"Clock Division set to "+
itos(val),
"A3PE::setClockDivision");
451 "Register::setClockDivision");
455 return (data&(16777215));
464 "Register::setTriggerDelay");
469 data |= ( val & 255);
473 "Register::setTriggerDelay");
476 info(
"Trigger delay set to "+
itos(val),
"A3PE::setTriggerDelay");
483 "Register::triggerDelay");
523 "Register::setTriggerRate");
528 data |= ( (val & 65535)<<8);
532 "Register::setTriggerRate");
535 info(
"Trigger rate set to "+
itos(val),
"A3PE::setTriggerRate");
542 "Register::setTriggerRate");
546 return (data>>8) & (65535) ;
552 "Register::setNTrigger");
557 data |= (( val & 255)<<24);
561 "Register::setNTrigger");
564 info(
"Trigger counter set to "+
itos(val),
"A3PE::setNTrigger");
571 "Register::setNTrigger");
575 return ((data>>24)&255);
584 "Register::setFifoLatency");
588 data = (val & 65535);
592 "Register::setFifoLatency");
595 info(
"Trigger Fifo Latency set to "+
itos(val),
"Register::setFifoLatency");
602 "Register::setFifoLatency");
615 "Register::setFifoDepth");
624 "Register::setFifoDepth");
627 info(
"Fifo Depth set to "+
itos(val),
"Register::setFifoDepth");
634 "Register::setFifoDepth");
646 for (
unsigned int d=0; d<
fifoDepth(); ++d){
647 val[0] =fifo->
io()->
dataU8( 0+12*d);
648 val[1] =fifo->
io()->
dataU8( 1+12*d);
649 val[2] =fifo->
io()->
dataU8( 2+12*d);
650 val[3] =fifo->
io()->
dataU8( 3+12*d);
651 val[4] =fifo->
io()->
dataU8( 4+12*d);
652 val[5] =fifo->
io()->
dataU8( 5+12*d);
653 val[6] =fifo->
io()->
dataU8( 6+12*d);
654 val[7] =fifo->
io()->
dataU8( 7+12*d);
655 val[8] =fifo->
io()->
dataU8( 8+12*d);
656 val[9] =fifo->
io()->
dataU8( 9+12*d);
657 val[10]=fifo->
io()->
dataU8(10+12*d);
658 val[11]=fifo->
io()->
dataU8(11+12*d);
659 sprintf(line,
"%3d -> %4d %4d %4d %4d %4d %4d %4d %4d",
661 val[0]+((val[1]&0xf)<<8),(val[1]>>4)+(val[2]<<4),
662 val[3]+((val[4]&0xf)<<8),(val[4]>>4)+(val[5]<<4),
663 val[6]+((val[7]&0xf)<<8),(val[7]>>4)+(val[8]<<4),
664 val[9]+((val[10]&0xf)<<8),(val[10]>>4)+(val[11]<<4)
671 std::ifstream ifs(filename.c_str(),std::ifstream::in);
674 std::istringstream instream;
678 int c0, c1, c2, c3, c4, c5, c6, c7;
679 while (getline(ifs, s) && d<depth) {
683 if (!instream.eof()) {
685 if (comment==std::string(
"#")) {
691 instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
694 data[ 12*d]=(c0&0xff);
695 data[ 1+12*d]=((c0>>8)&0xf)+((c1<<4)&0xf0);
696 data[ 2+12*d]=((c1>>4)&0xff);
697 data[ 3+12*d]=(c2&0xff);
698 data[ 4+12*d]=((c2>>8)&0xf)+((c3<<4)&0xf0);
699 data[ 5+12*d]=((c3>>4)&0xff);
700 data[ 6+12*d]=(c4&0xff);
701 data[ 7+12*d]=((c4>>8)&0xf)+((c5<<4)&0xf0);
702 data[ 8+12*d]=((c5>>4)&0xff);
703 data[ 9+12*d]=(c6&0xff);
704 data[10+12*d]=((c6>>8)&0xf)+((c7<<4)&0xf0);
705 data[11+12*d]=((c7>>4)&0xff);
723 for (
unsigned int d=0; d<fifo->
depth(); ++d){
724 val[0] =fifo->
io()->
dataU8( 0+12*d);
725 val[1] =fifo->
io()->
dataU8( 1+12*d);
726 val[2] =fifo->
io()->
dataU8( 2+12*d);
727 val[3] =fifo->
io()->
dataU8( 3+12*d);
728 val[4] =fifo->
io()->
dataU8( 4+12*d);
729 val[5] =fifo->
io()->
dataU8( 5+12*d);
730 val[6] =fifo->
io()->
dataU8( 6+12*d);
731 val[7] =fifo->
io()->
dataU8( 7+12*d);
732 val[8] =fifo->
io()->
dataU8( 8+12*d);
733 val[9] =fifo->
io()->
dataU8( 9+12*d);
734 val[10]=fifo->
io()->
dataU8(10+12*d);
735 val[11]=fifo->
io()->
dataU8(11+12*d);
736 sprintf(line,
"%3d -> %4d %4d %4d %4d %4d %4d %4d %4d",
738 val[0]+((val[1]&0xf)<<8),(val[1]>>4)+(val[2]<<4),
739 val[3]+((val[4]&0xf)<<8),(val[4]>>4)+(val[5]<<4),
740 val[6]+((val[7]&0xf)<<8),(val[7]>>4)+(val[8]<<4),
741 val[9]+((val[10]&0xf)<<8),(val[10]>>4)+(val[11]<<4)
748 std::ifstream ifs(filename.c_str(),std::ifstream::in);
751 std::istringstream instream;
755 int c0, c1, c2, c3, c4, c5, c6, c7;
756 while (getline(ifs, s) && d<depth) {
760 if (!instream.eof()) {
762 if (comment==std::string(
"#")) {
768 instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
771 data[ 12*d]=(c0&0xff);
772 data[ 1+12*d]=((c0>>8)&0xf)+((c1<<4)&0xf0);
773 data[ 2+12*d]=((c1>>4)&0xff);
774 data[ 3+12*d]=(c2&0xff);
775 data[ 4+12*d]=((c2>>8)&0xf)+((c3<<4)&0xf0);
776 data[ 5+12*d]=((c3>>4)&0xff);
777 data[ 6+12*d]=(c4&0xff);
778 data[ 7+12*d]=((c4>>8)&0xf)+((c5<<4)&0xf0);
779 data[ 8+12*d]=((c5>>4)&0xff);
780 data[ 9+12*d]=(c6&0xff);
781 data[10+12*d]=((c6>>8)&0xf)+((c7<<4)&0xf0);
782 data[11+12*d]=((c7>>4)&0xff);
798 for (
int d=0; d<fifo->
depth(); ++d){
800 sprintf(line,
"%3d -> %1d %1d %1d %1d %1d %1d %1d %1d",
802 val&0x1,(val>>1)&0x1,(val>>2)&0x1,(val>>3)&0x1,
803 (val>>4)&0x1,(val>>5)&0x1,(val>>6)&0x1,(val>>7)&0x1);
810 std::ifstream ifs(filename.c_str(),std::ifstream::in);
813 std::istringstream instream;
817 int c0, c1, c2, c3, c4, c5, c6, c7;
818 while (getline(ifs, s) && d<depth) {
822 if (!instream.eof()) {
824 if (comment==std::string(
"#")) {
830 instream>>c0>>c1>>c2>>c3>>c4>>c5>>c6>>c7;
833 data[d]=c0+((c1&0x1)<<1)+((c2&0x1)<<2)+((c3&0x1)<<3)+
834 ((c4&0x1)<<4)+((c5&0x1)<<5)+((c6&0x1)<<6)+((c7&0x1)<<7);
852 sprintf(line,
"%3d -> %1d %1d %1d %1d",
853 d,val[4*d],val[1+4*d],val[2+4*d],val[3+4*d]);
861 info(
"loadtoax="+filename);
862 std::ifstream ifs(filename.c_str(),std::ifstream::in);
865 std::istringstream instream;
870 while (getline(ifs, s) && d<depth) {
874 if (!instream.eof()) {
876 if (comment==std::string(
"#")) {
882 instream>>c0>>c1>>c2>>c3;
904 for (
int d=0; d<l+2; ++d){
905 sprintf(line,
"%3d -> %1d %1d %1d %1d",
906 d,val[4*d],val[1+4*d],val[2+4*d],val[3+4*d]);
913 std::ifstream ifs(filename.c_str(),std::ifstream::in);
916 std::istringstream instream;
921 while (getline(ifs, s) && d<depth) {
925 if (!instream.eof()) {
927 if (comment==std::string(
"#")) {
933 instream>>c0>>c1>>c2>>c3;
954 error(
"Cannot set AX sequence start bit bit",
"A3PE::startAXSequence");
void info(std::string mymsg)
bool getBit(unsigned int)
StatusCode setNTrigger(unsigned int)
bool readTriggerFifoUsb()
StatusCode setTriggerRate(unsigned int)
bool readPatternFifoUsb()
StatusCode setReadToAXRamUsb(bool)
unsigned int triggerRate()
StatusCode setSize(unsigned int, unsigned int)
StatusCode setSoftwareTrigger(bool)
StatusCode setReadPatternFifoUsb(bool)
unsigned int clockDivision()
virtual StatusCode write()
StatusCode setAddToAXRam(int)
StatusCode resetLatencyCounter()
Register * m_fromAXRamPtr
StatusCode resetUsbPhasers()
StatusCode setFifoDepth(unsigned int)
StatusCode resetSequenceFromToAX()
Register * m_writeLengthFifoReg
void loadToAX(std::string)
void loadTrigger(std::string)
StatusCode setU16(unsigned long int, U16)
bool writeStorageFifoUsb()
StatusCode startSequenceAX()
virtual StatusCode read()
StatusCode setU32(unsigned long int, U32)
void error(std::string mymsg)
void debug(std::string mymsg)
def data(object, stream=None)
StatusCode setBit(unsigned int, bool)
unsigned int triggerDelay()
StatusCode setLatencyAX(unsigned int)
StatusCode setTriggerDelay(unsigned int)
StatusCode setPipeline(unsigned int)
StatusCode resetStorageFifo()
Register * m_clockDivisionReg
StatusCode resetPatternFifo()
StatusCode setFifoLatency(unsigned short)
void loadStorage(std::string)
StatusCode setAddFromAXRam(int)
StatusCode setReadTriggerFifoUsb(bool)
void loadFromAX(std::string)
StatusCode enableStorage()
StatusCode setWriteStorageFifoUsb(bool)
StatusCode resetTriggerFifo()
StatusCode resetAcquisitionWriteCounter()
void warning(std::string mymsg)
StatusCode resetToAXRam()
StatusCode setAXRamUsb(bool)
StatusCode resetFromAXRam()
StatusCode setInternalAXSequence(bool)
StatusCode setClockDivision(unsigned int)
StatusCode setEnableADC(unsigned int, bool)
bool internalAXSequence()
unsigned int fifoLatency()
StatusCode setLengthAX(unsigned int)
StatusCode setWriteFromAXRamUsb(bool)
void loadPattern(std::string)
bool enableADC(unsigned int)