fdhwlib  2.0.25
FEbaseTiming Class Reference

#include <febasetiming.h>

Inheritance diagram for FEbaseTiming:
FE4timing FEtiming

List of all members.

Public Member Functions


Detailed Description

It is necessary to synchronize all subsystems of the Auger experiment with a resolution in time of 100ns.

The time base of the FD system is defined by two long words with a resolution of one second and 50ns.

Every Second a strobe signal is trigged. Possible sources are

  • the second strobe signal from the GPS clock (source 0)
  • the external trigger signal (source 1)
  • the carry of the SubSecond counter (source 3)

The methods forceStrobe() immediately triggers the second strobe.

The electronic will automatically count the number of time atoms, where no normal operation was possible. This will allow to determine the exact observation period.

Changes:

  • Added functions to read veto and dead time (30.1.03 ak)
  • The name "SecondStrobe" has been changed to "Sync" (26.7.00, ak).
Todo:
Add a function to read the "GPS clock" from the mirrorPC
See also:
FE

Definition at line 48 of file febasetiming.h.


Constructor & Destructor Documentation

FEbaseTiming::FEbaseTiming ( ) [inline]

Definition at line 50 of file febasetiming.h.

{ }
virtual FEbaseTiming::~FEbaseTiming ( ) [virtual]

Member Function Documentation

virtual void FEbaseTiming::disableDeadTimeCounter ( ) [pure virtual]

Disable the counters for veto- and dead-time.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::disableSyncErr ( ) [inline, virtual]

Reimplemented in FE4timing, and FEtiming.

Definition at line 118 of file febasetiming.h.

{ }
virtual void FEbaseTiming::enableDeadTimeCounter ( ) [pure virtual]

Enable the counters for veto- and dead-time.

Before starting the data aquisition the veto- and and dead-time counters should be disabled and a reset should be performed. The value of the counters will be set to zero with the reset command. Directly after starting the data aquisition the inhibit is released and the counters should be enabled.

Note: If the dead-time counters are enabled before the inhibit is released the time between this two commands will be counted as dead-time.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::enableSyncErr ( ) [inline, virtual]

Reimplemented in FE4timing, and FEtiming.

Definition at line 116 of file febasetiming.h.

{ }
virtual void FEbaseTiming::forceStrobe ( ) [pure virtual]

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getActualTime ( FEtimeStamp ) [inline, virtual]

Get the actual time from the FD Electronics.

Parameters:
tTimestamp containing second and subsecond values

Reimplemented in FEtiming.

Definition at line 92 of file febasetiming.h.

{ }
virtual void FEbaseTiming::getActualTime ( unsigned long *  second,
unsigned long *  subSecond 
) [pure virtual]

Get the actual time from the FD Electronics.

Parameters:
secondValue of the second counter
subSecondValue of the subsecond counter

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getDeadTime ( unsigned long *  high,
unsigned long *  low 
) [pure virtual]

Read the dead time counter.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getDeadTime ( unsigned long long *  time) [pure virtual]

Read the dead time counter.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getRunTime ( unsigned long *  high,
unsigned long *  low 
) [inline, virtual]

Read the run time counter.

Reimplemented in FE4timing.

Definition at line 155 of file febasetiming.h.

   { if ( high ) *high = 0; if ( low ) *low = 0; }
virtual void FEbaseTiming::getRunTime ( unsigned long long *  time) [inline, virtual]

Read the run time counter.

Reimplemented in FE4timing.

Definition at line 165 of file febasetiming.h.

   { if ( time ) *time = 0; }
virtual unsigned long FEbaseTiming::getSecond ( ) [pure virtual]

Read the second counter.

Note: This command can be used only in conjunction with getSubSecond. Every call of getSubSecond will copy both second and subsecond counter.

Implemented in FE4timing, and FEtiming.

virtual int FEbaseTiming::getStrobeSource ( ) [pure virtual]

Implemented in FE4timing, and FEtiming.

virtual unsigned long FEbaseTiming::getSubSecond ( ) [pure virtual]

The SubSecond field is divided in SubSecond1 (bit 24-11) and.

SubSecond2 (bit 10-0). SubSecond2 counts from 0..1999 with a resolution equal to 50ns. SubSecond1 counts from 0..9999 and has a resolution equal to 100us.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getVetoTime ( unsigned long *  high,
unsigned long *  low 
) [pure virtual]

Read the veto time counter.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::getVetoTime ( unsigned long long *  time) [pure virtual]

Read the veto time counter.

Implemented in FE4timing, and FEtiming.

virtual bool FEbaseTiming::isEnabledDeadTimeCounter ( ) [pure virtual]

Request the status of the veto- and dead-time counters.

Implemented in FE4timing, and FEtiming.

virtual bool FEbaseTiming::isEnabledSyncErr ( ) [inline, virtual]

Reimplemented in FE4timing, and FEtiming.

Definition at line 120 of file febasetiming.h.

   { return false; }
virtual void FEbaseTiming::resetDeadTimeCounter ( ) [pure virtual]

Reset veto and dead time counter.

Implemented in FE4timing, and FEtiming.

virtual unsigned long FEbaseTiming::setActualTime ( ) [pure virtual]

Write the actual time to the second counter.

From the PC Clock the appropriate number of GPS seconds is calulated and writen in the "midle" of the (PC) second to the hardware register. The command returns the GPS second writen to the hardware.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::setSecond ( unsigned long  sec) [pure virtual]

Write a certain value to the second counter register.

The functions takes into account, that the new value will be set with the next second strobe and always writes sec + 1 to the second counter.

Implemented in FE4timing, and FEtiming.

virtual void FEbaseTiming::setStrobeSource ( int  source) [pure virtual]

Implemented in FE4timing, and FEtiming.

virtual int FEbaseTiming::waitForSyncErr ( ) [inline, virtual]

A synchronization error may occur in every FPGA.

All interrupt are collected in this function

Returns:
The ID of the FPGA causing the interrupt

Reimplemented in FE4timing, and FEtiming.

Definition at line 113 of file febasetiming.h.

  { return(0); }

The documentation for this class was generated from the following file: