Just starting on this!
TTC Simulator
The AMC13 has the ability to generate simulated TTC signals and distribute them to AMC cards in the crate.
This allows operation of a stand-alone test setup with only an AMC13 and AMC cards in a single crate without
requiring any external TTC hardware. The simulated TTC signal will include a BC0 sent once per LHC orbit.
In addition, ECR (event count reset) and OCR (orbit count reset) TTC commands may be sent by writing
to the
ACTION.LOCAL_TRIG.SEND_ECR and
ACTION.LOCAL_TRIG.SEND_OCR registers, respectively.
Locally-generated triggers may be sent in a rather flexible way. See the next section for details.
The simulated TTC signal is transmitted on the output side of the TTC
SFP optical transceiver and must be received on the input side, so a short loop-back cable must be plugged
between the input and output sides of the bottom SFP.
This feature is enabled by setting
CONF.DIAG.FAKE_TTC_ENABLE to 1. The local L1A generator
must also be enabled (
CONF.TTC.ENABLE_INTERNAL_L1A set to 1).
Local L1A Generator
This feature allows the AMC13 to generate L1A and transmit them over the TTC backplane signals to AMC cards.
It may be used in conjunction with the TTC Simulator described above, or with an external TTC input.
There are 4 modes of operation available:
- Individual triggers under software control
- Burst with count and spacing in BX or orbits specified
- Continuous triggers equally spaced by BX or orbits
- Random triggers from 2Hz to about 130kHz rate with CMS trigger rules respected
Various registers are used to control the local
L1A generator. The easiest way to control this feature
is using the method
AMC13::configureLocalL1A() in the
AMC13 class. Brief documentation is included below.
AMC13::configureLocalL1A( bool ena, int mode, uint32_t burst, uint32_t rate, int rules)
ena true to enable the L1A generator
mode 0 - periodic triggers spaced by rate orbits at BX=500
1 - periodic triggers spaced by rate bx
2 - random trigger at 2*rate Hz
burst number of triggers in a burst (1-4096)
rate sets the rate based on mode (1-65536)
rules set to 0 normally to enforce the "standard" CMS trigger rules
Brief register-level documentation follows. Register at offset 0x1c
controls the local L1A generation through the following bit fields:
- CONF.LOCAL_TRIG.RATE sets the rate or spacing (0 means spacing=1)
- CONF.LOCAL_TRIG.NUM_TRIG sets the burst count (0 means count=1)
- CONF.LOCAL_TRIG.TYPE is the mode (0 for orbit, 2 for BX, 3 for random)
- CONF.LOCAL_TRIG.RULES specifies which trigger rules are followed
The standard CMS trigger rules are given below for reference:
- Rule 1: No more than 1 L1A per 3 BX (75ns)
- Rule 2: No more than 2 L1A per 25 BX (625ns)
- Rule 3: No more than 3 L1A per 100 BX (2.5us)
- Rule 4: No more than 4 L1A per 240 BX (6us)
Rule 1 is always enforced. The
rules parameter to
AMC13::configureLocalL1A or
the
CONF.LOCAL_TRIG.RULES item may be set as follows to suppress other rules:
- 0 means enforce all rules (1-4)
- 1 means all except rule 4
- 2 means enforce rules 1 and 2
- 3 means enforce only rule 1
--
EricHazen - 20 Aug 2014