Timing Receiver: Event-Condition-Action Unit
A Timing Receiver embedded in a Front-End Computer. The core component is the Event-Condition-Action unit (orange).
The figure above shows the Event-Condition-Action unit (ECA) inside a Timing Receiver (TR). The Data Master
sends Timing Messages
to all TRs in network via broadcast which is received at the input of the ECA. This event
at the ECA input is followed by a comparison of the index of the timing message with a condition
the has been configured previously by a user program
at the host system. Upon a matching condition, the timing message is forwarded to one of the ECAs channels. The channels compare the due-time of the stored messages with the actual White Rabbit time. On-time, the channels forward the timing message to a receiving component
, that are pre-configured to execute an action
. Examples of actions are pulse generation on a Lemo output or issuing a Message Signalled Interrupt (MSI) towards the host system.
The ECA is able to
- trigger actions with 1ns granularity
- handle incoming messages at Ethernet line speed
- handle back-pressure from receiving components (subsequent actions are marked 'delayed')
- maintain order of timing messages according to their due time
- detect messages arriving at the input too late (if arriving later than their 'due time', actions are marked 'late')
- detect messages arriving at the input significantly too early
- detect messages with identical due time in the same channel (conflicting messages are delayed and marked 'conflict')
As the ECA VHDL has no public interface for configuration, the saftlib
API is available for userland application in the host system. The saftlib API also manages concurrent access (it also takes care of dispatching timing messages (as signals) from the ECA towards applications).
- 12 Nov 2018