Skip to content

Trigger Link from HcalBackplane on ZCU

Tom Eichlersmith edited this page May 21, 2026 · 14 revisions

Set Up

Hardware

The DAQ link from the HcalBackplane is connected to SFP0 and the output from the TRG (trigger) link from the HcalBackplane is connected to the input of SFP1 (below SFP0).

Image of Hcal Backplane with optical fibers connected properly Image of ZCU Quad-SFP-Cage with the optical fibers connected properly

Firmware

A small patch was necessary to the "dualtarget" ZCU firmware necessary in order to confirm that the trigger optical link clock was correctly shared with the daq optical link clock and in order to capture words from the trigger path.

Check Word Rates

Connecting via Link 0 with pflpgbt, you can see the "word rate" for the DAQ and TRIG links are the same (as well as the clocks).

$ ./build/pflpgbt --do 0
> OPTO
> FULLSTATUS
Olink: DAQ
Polarity -- TX: 0  RX: 0
Optical status:
  BUFFBYPASS_DONE      : 0x0001
  BUFFBYPASS_ERROR     : 0x0000
  CDR_LOCK             : 0x0deb
  CDR_STABLE           : 0x0000
  LINK_ERRORS          : 0x0003
  NOT_IN_RESET         : 0x0001
  READY                : 0x0001
  RX_RESETDONE         : 0x0001
  TX_RESETDONE         : 0x0001
Optical rates:
  AXIS_clk             : 297.148 MHz (0x488bc)
  CLOCK_40             : 37.144 MHz (0x9118)
  DAQ_LINK_CLOCK       : 297.148 MHz (0x488bc)
  DAQ_LINK_ERROR       : 0.000 MHz (0x0000)
  DAQ_LINK_WORD        : 37.143 MHz (0x9117)
  EXT_REFCLK           : 0.000 MHz (0x0000)
  GTH_REFCLK           : 297.148 MHz (0x488bc)
  RX-LINK              : 297.148 MHz (0x488bc)
  S_AXI_ACLK           : 100.000 MHz (0x186a0)
  TRIG_LINK_CLOCK      : 297.148 MHz (0x488bc)
  TRIG_LINK_ERROR      : 0.000 MHz (0x0000)
  TRIG_LINK_WORD       : 37.144 MHz (0x9118)

This is after using OPTO.RESET and OPTO.LINKTRICK in order to get the DAQ link READY 1 and then applying GENERAL.STANDARD_HCAL to configure the lpGBTs appropriately.

You may also need to do OPTO.RESET on the TRG Olink which can be done by OPTO.CHOOSE the TRG link before running OPTO.RESET.

Align ECON-T/ROC

The alignment block that handles tuning the connection between ECON-T and ROCs is the same as the ECON-D, so the task in software only needed to update the mapping.

$ ./build/pftool config/pftool/hcal-backplane-zcu.yaml
> TASKS
> SETUP
> ALIGN_PHASE_WORD
# choose IECON=1 or IECON=2 for which ECON-T has ROCs connected

Align ECON-T/lpGBT

Note

The pflib developments are being prepared for merge in https://github.com/LDMX-Software/pflib/pull/415

The configurations stored in pflib are examples that show necessary parts.

  • config/pftool/hcal-backplane-zcu.yaml: define the target (HcalBackplane on ZCU) and which ROCs are active
  • config/econ/econt_hcal_stc.yaml: configure algorithm, formatter buffer, and invert eTx data
    • will need to update with active eRx due to which ROCs are active
$ ./build/pftool config/pftool/hcal-backplane-zcu.yaml
> ECON
> IECON 1 # switch to ECON-T that has a ROC connected
> LOAD config/econ/econt_hcal_stc.yaml
> RUNMODE
> EXIT
> TASKS
> SETUP
> ALIGN_ECON_LPGBT
# make sure to do the same IECON!
> EXIT
> TRIG
> ALIGN_READ
# view eTx streams output by ECON-T

Clone this wiki locally