Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Term

Description

ATCA

Advanced Telecommunications Computing Architecture

BSA

Beam Synchronous Acquisition

CPU

Central Processing Unit

EPICS

Experimental Physics and Industrial Control System

EVR

Event Receiver

FPGA

Field Programmable Gate Array

IOC

Input Output Controller

RF

Radio Frequency

SHM

Shelf Manager

TPR

Timing Pattern Receiver

VCO

Voltage Controlled Oscillator

...

Linac Locking - A System Level Overview

IOC Description

Firmware Description

IOC Deployment

In this section, IOC deployment details are provided pertaining to the App hosting the phase locker IOC, as well as the IOC name and the assigned CPUs in both Dev and Production. 

IOC Repository

The IOC is housed by the masterSource App.  The intended released tag in Production is R2.2.3.

...

IOC App Name

...

App Version

...

Deployment In Production

The configuration used in Production is seen below.

...

IOC Name

...

CPU Name

...

Deployment In Dev

The configuration used in Dev is seen below.  As of now, there is no designated test stand in Dev.

...

IOC Name

...

CPU Name (Intended)

...

IOC Packages

List of required packages and associated versions.

...

Package Name

...

Package Version

...

cpsw/framework

...

R4.4.1

...

yaml-cpp

...

yaml-cpp-0.5.3_boost-1.64.0

...

boost

...

1.64.0

...

pcre

...

mrllrf/llrfLib

...

R1.1.0

...

timing/hpsTpr

...

R2.3.0

...

atca/commonATCA

...

R1.3.1

IOC Modules

List of required modules and associated versions.

...

Module Name

...

Module Version

...

Module Name

...

Module Version

...

ATCACommon

...

R7.0.3.1-1.0

...

agilent53220A

...

R1.0.6

...

asyn

...

R4.39-1.0.1

...

autosave

...

R5.10-1.1.0

...

bkhAsyn

...

R0.4.6

...

caPutLog

...

R4.0-1.0.0

...

iocAdmin

...

R3.1.16-1.3.2

...

miscUtils

...

R2.2.5

...

modbus

...

R3.2-1.0.1

...

seq

...

R2.2.4-1.2

...

std

...

R3.2-1.0.5

...

streamdevice

...

R2.8.9-1.2.1

...

timingApi

...

R0.9

...

tprTrigger

...

R2.5.3-4.0-2

...

yamlLoader

...

R2.3.5

...

ycpswasyn

...

R3.3.6-1.0

TPR Subsystem Description

The Timing Pattern Receiver (TPR) is an application that replaced the Event Receiver (EVR) for LCLS-II and its purpose is to generate triggers for control, data acquisition and other purposes.  There are two main flavors in which this application is deployed: (i) as a PCIe board and (ii) as an ATCA board.  The IOC described here is for a PCIe card.  The TPR operates at a faster rate than the EVR (i.e. higher bandwidth), has a more compact frame and also has an LCLS-I timing fiber input, thus allowing it to switch to an LCLS-I operating mode if needed.


Image Added

(PCIe TPR - Borrowed from PCIe TPR peer review slide deck, see Reference section below)


The PCIe TPR can provide up to 12 hardware triggers and/or channels.  A channel is a source for a trigger and can be AND-ed or OR-ed with its adjacent channel.  The user is also able to control --besides rate-- polarity, delay and width.  Below, one can find a comprehensive view of the functionality of the TPR that spans firmware, middleware and software.  For more details, please refer to the attached slide deck at the bottom of this page.


Image Added

(PCIe TPR Firmware and Software - Borrowed from PCIe TPR peer review slide deck, see Reference section below)

IOC Description

The IOC is used in conjunction with the TPR displays to not only read diagnostics from the firmware, but also set up triggers, assign channels to triggers and timestamp Beam Synchronous Acquisition (BSA) data.

IOC Deployment

In this section, IOC deployment details are provided pertaining to the App hosting the phase locker IOC, as well as the IOC name and the assigned CPUs in both Dev and Production. 

IOC Repository

The IOC is housed by the masterSource App.  The intended released tag in Production is R2.2.3.

IOC App Name

App Version

masterSourceR2.2.3

Deployment In Production

The configuration used in Production is seen below.

IOC Name

CPU Name

sioc-sys0-ms09cpu-sys0-sp01

Deployment In Dev

The configuration used in Dev is seen below.  As of now, there is no designated test stand in Dev.

IOC Name

CPU Name (Intended)

sioc-b084-ms09cpu-b084-sp12

IOC Packages

List of required packages and associated versions.

Package Name

Package Version

cpsw/framework

R4.4.1

yaml-cpp

yaml-cpp-0.5.3_boost-1.64.0

boost

1.64.0

pcre

8.37

mrllrf/llrfLib

R1.1.0

timing/hpsTpr

R2.3.0

atca/commonATCA

R1.3.1

IOC Modules

List of required modules and associated versions.

Module Name

Module Version

Module Name

Module Version

ATCACommon

R7.0.3.1-1.0

agilent53220A

R1.0.6

asyn

R4.39-1.0.1

autosave

R5.10-1.1.0

bkhAsyn

R0.4.6

caPutLog

R4.0-1.0.0

iocAdmin

R3.1.16-1.3.2

miscUtils

R2.2.5

modbus

R3.2-1.0.1

seq

R2.2.4-1.2

std

R3.2-1.0.5

streamdevice

R2.8.9-1.2.1

timingApi

R0.9

tprTrigger

R2.5.3-4.0-2

yamlLoader

R2.3.5

ycpswasyn

R3.3.6-1.0

IOC Bootup

In this section, a detailed description of the IOC bootup process is laid out.

Generic variable definition

First, define the usual environment variables in the startup script.

Code Block
languagebash
# ===

IOC Bootup

In this section, a detailed description of the IOC bootup process is laid out.

Generic variable definition

First, define the usual environment variables in the startup script.

Code Block
languagebash
# ===========================================
#    ================
#            ENVIRONMENT VARIABLES
# ===========================================
epicsEnvSet("AREA",          "SYS0"                              )   
epicsEnvSet("UNIT",          "MS09"                              )   
epicsEnvSet("LOCATION",      ""                                  )   
epicsEnvSet("IOC_PV",        "SIOC:$(AREA):$(UNIT)"              )   
epicsEnvSet("TPR_PV",        "TPR:$(AREA):$(UNIT)"               )   
epicsEnvSet("IOC",           "sioc-sys0-ms09"                    )   
epicsEnvSet("HASH",          "58070ee"                           )   
epicsEnvSet("YAML_DIR",      "${TOP}/yaml/EvrCardG2-$(HASH).yaml")
epicsEnvSet("YAML_TOP_FILE", "${YAML_DIR}/000TopLevel.yaml"      )   

# Support Large Arrays/Waveforms; Number in Bytes
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "2000000")

...

Code Block
languagebash
(base) skoufis@aird-b50-srv01  (master) $ cat db/pcie_tprTrig.db
record(longin, "TPR:$(LOCA):$(IOC_UNIT):$(INST):FPGAVER")
{
    field(DESC, "TimingCore FPGA version")
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),0) fpgaVersion")
    field(SCAN, "I/O Intr")
}
record(longin, "TPR:$(LOCA):$(IOC_UNIT):$(INST):UPTIME")
{
    field(DESC, "TimingCore Uptime")
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),0) uptime")
    field(SCAN, "I/O Intr")
}
...
record(bo, "TPR:$(LOCA):$(IOC_UNIT):$(INST):EVSOFT07_TCTL")
{
    field(DESC, "Soft Event 07 Enable/Disable")
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),0) softEvEnable_07")
    field(OMSL, "supervisory")
    field(ZNAM, "Disabled")
    field(ONAM, "Enabled")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}
record(longout, "TPR:$(LOCA):$(IOC_UNIT):$(INST):EVSOFT07") {
   field(DESC, "Soft Event 07")
   field(DTYP, "asynInt32")
   field(OUT,  "@asyn($(PORT),0) softEv_07")
   field(OMSL, "supervisory")
   field(PINI, "YES")
   info(autosaveFields, "VAL")
}

Displays

To set the triggers and corresponding channels in Production, follow the instructions below.

Code Block
languagebash
[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-sys0-ms09/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 srcDisplay]$ ./sioc-sys0-ms09_gui.sh

This should launch the main display, from which we can invoke the appropriate channel and trigger screens for setup.  See an example of those scenes below.

Image Removed

Production

To access and launch the display in Production, follow the steps outlined below. 

Deliverables

The released software will be made available in the main IOC release area post-deployment (Dev: /afs/slac/g/lcls/epics/iocTop/masterSource/, Production:/usr/local/lcls/epics/iocTop/masterSource/).  See below for the specific repositories and tags.

Software Release

See software release details below.

...

Repository

...

Version

...

IOC Name

...

")
}

Displays

Displays in both Dev and Production exist for the control of the triggers.

Production

To set the triggers and corresponding channels in Production, follow the instructions below.

Code Block
languagebash
[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-sys0-ms09/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 srcDisplay]$ ./sioc-sys0-ms09_gui.sh


This should launch the main display, from which we can invoke the appropriate channel and trigger screens for setup.  See an example of those scenes below.

Image Added


Dev

To set the triggers and corresponding channels in Dev, see the steps below.

Code Block
languagebash
[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-b084-ms09/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 srcDisplay]$ ./sioc-b084-ms09_gui.sh

Deliverables

The released software will be made available in the main IOC release area post-deployment (Dev: /afs/slac/g/lcls/epics/iocTop/masterSource/, Production:/usr/local/lcls/epics/iocTop/masterSource/).  See below for the specific repositories and tags.

Software Release

See software release details below.

Repository

Version

IOC Name

masterSourceR2.2.3sioc-sys0-ms09

Firmware Release

See firmware release details below.

Repository

URL

Version

slaclab / EvrCardG2https://github.com/slaclab/evr-card-g2/releases/tag/v2.2.0v2.2.0

References 

TPR Documentation

View file
nameTPR Documentation.pdf
height250

PCIe TPR Peer Review

View file
name2021_0504 PCIe TPR peer review.pptx
height250

Firmware Release

See firmware release details below.

...

Repository

...

Version

...