...
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
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.
The IOC is housed by the masterSource App. The intended released tag in Production is R2.2.3.
...
IOC App Name
...
App Version
...
The configuration used in Production is seen below.
...
IOC Name
...
CPU Name
...
The configuration used in Dev is seen below. As of now, there is no designated test stand in Dev.
...
IOC Name
...
CPU Name (Intended)
...
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
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
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.
(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.
(PCIe TPR Firmware and Software - Borrowed from PCIe TPR peer review slide deck, see Reference section below)
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.
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.
The IOC is housed by the masterSource App. The intended released tag in Production is R2.2.3.
IOC App Name | App Version |
---|---|
masterSource | R2.2.3 |
The configuration used in Production is seen below.
IOC Name | CPU Name |
---|---|
sioc-sys0-ms09 | cpu-sys0-sp01 |
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-ms09 | cpu-b084-sp12 |
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 |
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 |
In this section, a detailed description of the IOC bootup process is laid out.
First, define the usual environment variables in the startup script.
Code Block | ||
---|---|---|
| ||
# === |
In this section, a detailed description of the IOC bootup process is laid out.
First, define the usual environment variables in the startup script.
Code Block | ||
---|---|---|
| ||
# =========================================== # ================ # 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 | ||
---|---|---|
| ||
(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")
}
|
To set the triggers and corresponding channels in Production, follow the instructions below.
Code Block | ||
---|---|---|
| ||
[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 needed channel and trigger screens for setup. See an example of those scenes below.
To access and launch the display in Production, follow the steps outlined below.
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.
See software release details below.
...
Repository
...
Version
...
IOC Name
...
")
}
|
Displays in both Dev and Production exist for the control of the triggers.
To set the triggers and corresponding channels in Production, follow the instructions below.
Code Block | ||
---|---|---|
| ||
[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.
To set the triggers and corresponding channels in Dev, see the steps below.
Code Block | ||
---|---|---|
| ||
[softegr@lcls-srv01 skoufis]$ cd $EPICS_IOCS/sioc-b084-ms09/iocSpecificRelease/masterSourceApp/srcDisplay/
[softegr@lcls-srv01 srcDisplay]$ ./sioc-b084-ms09_gui.sh |
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.
See software release details below.
Repository | Version | IOC Name |
---|---|---|
masterSource | R2.2.3 | sioc-sys0-ms09 |
See firmware release details below.
Repository | URL | Version |
---|---|---|
slaclab / EvrCardG2 | https://github.com/slaclab/evr-card-g2/releases/tag/v2.2.0 | v2.2.0 |
TPR Documentation
View file | ||||
---|---|---|---|---|
|
PCIe TPR Peer Review
View file | ||||
---|---|---|---|---|
|
See firmware release details below.
...
Repository
...
Version
...