Table of Contents
List of Tables

****************************************************************************
Purpose:
This library contains the Matlab parts recognized by the CDS front end software generator.
Only parts contained in this library are supported.
**********************************************************************************************
Release Notes *******************************************************************************
**********************************************************************************************
At this time, the code is in Beta release. Not all documentation, such as block descriptions, are yet complete.
Also, the CDS parts may or may not function as expected when run in Matlab. Some, in fact, may not work
at all in Matlab itself. The work to make the parts run in Matlab is in progress. The user should check
the individual block properties to determine their Matlab operation.
*****************************************************************************
References:
*****************************************************************************************
Overview:
*****************************************************************************************
The parts in this library are those supported by CDS software to create Front End (FE) controllers.
Parts are grouped into subcategories within the simLink subsystems shown. These subpart libraries are:
- IO_PARTS: ADC, DAC and Digital I/O PCI modules supported by this CDS software.
- simLinkParts: Standard simulink parts supported.
- EpicsParts: Parts which make links between EPICS and the FE software.
- Filters: Standard CDS filter modules.
- Osc/Phase: Oscillators and phase rotation parts.
- Watchdogs: Watchdog routines for equipment protection.
- Matrix parts: CDS standard matrix element, plus switches, etc. that operate with multiple inputs/
multiple outputs.
There are also a few example models available at the CDS Wiki.
As support for more parts is developed, the new parts will show up in this library. Checking the 'Block
Properties' of each part will give a description, including the parts purpose, description of what the part
does, and how to use the part.
**********************************************************************************************
Building a model file
**********************************************************************************************
FE specific code is developed by creating a new .mdl model file. The file name must be 3 characters in length,
no more, no less. All three characters must be lower case. The name of the file will later be used by the FE
code generator to develop the system name for all of the parts and EPICS channels. For example, if the filename
is sus.mdl, all parts in the file will later be prepended with IFO:SUS-.
Parts are now added to the new .mdl file by copy/pasting or drag/dropping parts from the CDS_PARTS library
file.
MINIMUM REQUIREMENTS
The top level of the new .mdl file must contain:
- A cdsParameters part: The cdsParameters part is required in all simlink drawings at the top level. This part
is annotated with general information about the system which the CDS code generator requires to properly build
the code Makefile and EPICS databases.
- At least one ADC part.
- At least one DAC part.
SIGNAL NAMING CONSIDERATIONS
When building the FE .mdl file, it is important to properly name all of the parts. All parts must have a unique name
within a FE file and all FE files to be run at a site must have unique names. All FE code must follow the
standard LIGO naming convention of IFO:SYS-SUBSYS_PART_SUBPART. The entire name may not
be more than 28 characters in length.
The first part of signal names for a FE .mdl file are taken from the filename and the site= parameter of the
cdsParameters part. This will be of the form site:filename. For example, if the filename is sus.mdl and the
site=H1, all part names will be prepended as H1:SUS-.
By convention, all parts are to be named using upper case and contain a single string, using underscores, as
necessary, to complete the desired description.
A part at the top level of the FE model will simply have the ifo and fe name string prepended. For example, if a part at the top
level is named QPD_DC, its final name will be H1:SUS-QPD_SUS. If the user creates a Matlab subsystem part, the
name of the subsystem will be prepended to the name of all parts within the subsystem. For example,
if a subsystem is created, with the subsystem name ASC, and a part is in the subsystem with a name of
DC_READOUT, the entire part name in the FE will be H1:SUS-ASC_DC_READOUT.
SUBSYSTEM CONSIDERATIONS
Matlab allows parts to be grouped and built into subsystems. At the present time, the CDS FE code generator
only allows subsystems to be created at the top level of the model. That is to say, a subsystem part may not
contain a subsystem part. There will be support for further nesting of subsystems in the future.
*******************************************************
Software installation on new computer
*******************************************************
1. Install network and PCIe cards.
- Remove top cover and I/O cage.
- Install NIC in PCI-X slot.
- Install PCIe card for I/O chassis in PCIe slot.
- Reinstall I/O cage.
- Close cover.
2. Connect Infiniband cables to I/O chassis and power up I/O chassis.
3. Power up computer.
4. Change root password.
5. Modify network startup.
- Hostname of machine running Framebuilder code must be 'fb'.
- edit /etc/sysconfig/network-scripts (can remove all except eth0)
- Change hostname in /etc/sysconfig/network file
- Modify /etc/hosts
6. Add users
7. Make rtLinux
- cd to kernel directory
- Type 'make modules-install install
- Edit /etc/grub_conf and change default to 0 to boot rtLinux on powerup.
8. Get rid of unnecessary tasks using ntsysv command.
- cpuspeed
- bluetooth
- avahi daemon
- cups
- cups config
- httpd
- haldaemon
- hidd
- iptables
- isdn
- kudsu
- sendmail
- smartd
- xfs
9. reboot
10. Use del key to bring up boot configuration and get rid of all unnecessary support, such as:
- parallel, serial ports
- USB
11. Install CDS EPICS files
- cd to /opt
- load CDS CD (mount /dev/cdrom /mnt)
- Run 'tar zxf /mnt/epics.tar.gz'
12. Edit /etc/rc.local file and add:
- /opt/rtlinux_dir/rtlinuxpro/mdoules/rtcore&
- /opt/epics-3.14.7-linux/base/bin/linux-x86/caRepeater&
- sleep 5
- /etc/setup_shmem.rtl&
13. Add EPICS libraries to all paths
- cd to /etc/ld.so.conf.d
- edit epics.conf
- Add the following lines to this file:
- /opt/epics-3.14.7-linux/base/lib/linux-x86
- /opt/epics-3.14.7-linux/seq/lib/linux-x86
14. Add CDS source code.
- cd to /home/user
- tar zxf /mnt/cds.tar.gz
15. Build the shmem module.
- cd to /home/user/cds/advLigo/src/fe/shmem
- Type 'make'
- cp shmem.rtl file to /etc
16. Run the rc local file.
- /etc/rc.local
17. Create the gm files.
- untar gm files in root home directory.
- Type make.
- Go to gm binary directory.
- mkdir /opt/gm
- ./GM_INSTALL
- chkconfig --add gm
- chkconfig gm on
- service gm start
18. Need to get rid of possible errors in running sequences looking for caRepeater.
- ln -s /bin/true /bin/caRepeater
19. Reboot
***********
Setup the NTP Services
***********
The computer should get its time from the GPS NTP server.
- add ntpserver and IP address in /etc/hosts
- echo 'server\ ntpserver > /etc/ntp.conf
- echo ntpserver > /etc/ntp/step-tickers
- echo ntpserver > /etc/ntp/ntpservers
- service ntpd start
- ntpstat to get status
***********
Load the FB/GDS Software
***********
1. Load FB/GDS from CD using instructions in readme.txt file included on the CD.
*************************************************************************
Instructions for building FE code
*************************************************************************
1. Copy .mdl file into cds/advLigo/src/epics/simLink directory.
2. Go to the cds/advLigo directory.
3. Type 'make system', where system is the three letter name of the .mdl file.
*** For the remainder of these instructions, the example system name will be dbb.
For example, make dbb will have the following results:
a) The cds/advLigo/src/epics/simLink/dbb.mdl file will be parsed, resulting in:
- A dbb file in cds/advLigo/src/epics/fmseq directory, for use in building EPICS
- A dbb.h file in cds/advLigo/src/include
- A dbb.c file in cds/advLigo/src/fe/dbb directory.
b) the dbb file in cds/advLigo/src/epics/fmseq will be parsed and EPICS generated.
This includes:
- Sequencer code, databases, autoburt file and startup commands in the
cds/advLigo/target/dbbepics directory.
- A base set of MEDM screens in the cds/advLigo/src/epics/util/dbb directory.
- A dbb.par file is generated in the cds/advLigo/build/dbbepics directory, for later
use with GDS tools.
c) The dbb.c realtime source code is compiled into dbbfe.rtl.
d) An example .ini file is built for use with data acquisition.
e) A filter file is produced for use with foton.
4. Type 'make install-dbb.
5. Go to the cds/advLigo/build/dbbepics
6. Copy the dbb.par file to /opt/cds/param directory using sed to replace %IFO%
in this file. For example:
- sed s/%IFO%/M1/g dbb.par > /opt/gds/param/tpchn_M1.par
- NOTE: FOR NOW, FILE NAME MUST BE M1, M2, OR M3.
7. Add testpoint.par file in /opt/gds/param
- [M-node0] (Only M supported, node 0,1,2)
- hostname=local_ip_address
8. If the target computer is to also run FrameBuilder code:
- Modify the /opt/fb/daqdrc file
- Check all file settings and make necessary directories.
- Add the .par and .ini files to the /opt/fb/master file.
***************************************************************************
Running the Code
***************************************************************************
Still using dbb as 'system' for this example:
1. cd to cds/advLigo/target/dbbepics
2. Run the startup file. This will start all of the epics tasks.
3. Sample MEDM screens were built during the compile process. These are located
in cds/advLigo/src/epics/util/dbb. Using MEDM, bring up the DBB_GDS_TP screen.
There is a BURT RESTORE field in the lower left. This must be set to '1' (one) before
the realtime FE code will run.
4. cd to cds/advLigo/src/fe/dbb
5. Run dbbfe.rtl (Must have root priviledges to do this). The FE diagnostic fields on the
MEDM screen should now fill in with values and there should be an indication on the
CPU meter.
6. Start GDS services from the /opt/gds directory.
- awgtpman -speed, where:
- No speed setting = 16KHz
- 2 = 32KHz
- 4 = 64KHz
7. If this machine is also the FrameBuilder, start the FrameBuilder code:
- daqd -c daqdrc
Description.
| Purpose: |
| Create an EPICS input channel connection to the FE realtime controls. |
| Operation: |
| Outputs value from an EPICS ai record. Value is floating point with a precision of 3.. |
| Usage: |
| Name the part with the desired EPICS channel name. |

Description.
| Purpose: |
| Output a FE signal to an EPICS channel. |
| Operation: |
| Takes input value and passes it to EPICS record. |
| Usage: |
| Name the part with the desired EPICS rrecord name. |

Description.
| Purpose: |
| Used to turn off a switch in another subsystem using EPICS channel access. Typically, this is used as a remote interlock function. |
| Operation: |
| If input is zero, sends a zero to the specified EPICS channel name. Any other input value results in a NOOP. Input must be an integer. |
| Usage: Give the name of the EPICS channel to be written to, including the subsystem. For example: SEI-HMY_ACT_SW. This function will also produce a local EPICS variable for monitoring. For example, the above would result in a local EPICS variable of IFO:SUBSYS-SEI_HMY_ACT_SW. |

Description.
| Purpose: |
| Standard CDS IIR filter module. |
| Operation: |
| Consists of 10 second order section IIR filters, plus a ramped gain stage. In FE code, also provides pre-defined test points and excitation channel inputs. The filter coefficients are defined in the LIGO system using the 'foton' tool. |
| Usage: |
| Name the part with the desired filter module name. |

Table 1. Digital Filter Block Properties
Description.
| Purpose: |
| Provide a Polyphase FIR filter algorithm. This part is typically only used in HEPI or other seismic systems. |

Table 1. Digital Filter Block Properties

Table 1. BusCreator Block Properties
Table 2. BusSelector Block Properties
Description. DAC

Table 1. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| In1 | 1 | Unconnected |
| In10 | 10 | Unconnected |
| In11 | 11 | Unconnected |
| In12 | 12 | Unconnected |
| In13 | 13 | Unconnected |
| In14 | 14 | Unconnected |
| In15 | 15 | Unconnected |
| In16 | 16 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
| In5 | 5 | Unconnected |
| In6 | 6 | Unconnected |
| In7 | 7 | Unconnected |
| In8 | 8 | Unconnected |
| In9 | 9 | Unconnected |
Table 2. Outport Block Properties
| Name | Port | Icon Display | Bus Object | Output When Disabled | Initial Output | Used By Blk |
|---|---|---|---|---|---|---|
| Out1 | 1 | Port number | BusObject | held | [] | Unconnected |
| Out10 | 10 | Port number | BusObject | held | [] | Unconnected |
| Out11 | 11 | Port number | BusObject | held | [] | Unconnected |
| Out12 | 12 | Port number | BusObject | held | [] | Unconnected |
| Out13 | 13 | Port number | BusObject | held | [] | Unconnected |
| Out14 | 14 | Port number | BusObject | held | [] | Unconnected |
| Out15 | 15 | Port number | BusObject | held | [] | Unconnected |
| Out16 | 16 | Port number | BusObject | held | [] | Unconnected |
| Out2 | 2 | Port number | BusObject | held | [] | Unconnected |
| Out3 | 3 | Port number | BusObject | held | [] | Unconnected |
| Out4 | 4 | Port number | BusObject | held | [] | Unconnected |
| Out5 | 5 | Port number | BusObject | held | [] | Unconnected |
| Out6 | 6 | Port number | BusObject | held | [] | Unconnected |
| Out7 | 7 | Port number | BusObject | held | [] | Unconnected |
| Out8 | 8 | Port number | BusObject | held | [] | Unconnected |
| Out9 | 9 | Port number | BusObject | held | [] | Unconnected |
Description.
| support for 8 bit input 8 bit output DIO PCI card |
| ACCESS I/O Products model DIO-24D |

Description.
| Purpose: |
| Provide a matrix multiplication function for up to 8 input and 8 outputs. |

Table 1. Gain Block Properties
| Name | Gain | Multiplication | Out Data Type Mode |
|---|---|---|---|
| Gain | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain1 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain10 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain11 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain12 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain13 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain14 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain15 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain16 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain17 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain18 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain19 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain2 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain20 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain21 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain22 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain23 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain24 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain25 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain26 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain27 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain28 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain29 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain3 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain30 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain31 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain32 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain33 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain34 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain35 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain36 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain37 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain38 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain39 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain4 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain40 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain41 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain42 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain43 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain44 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain45 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain46 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain47 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain48 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain49 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain5 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain50 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain51 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain52 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain53 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain54 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain55 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain56 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain57 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain58 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain59 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain6 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain60 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain61 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain62 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain63 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain7 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain8 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain9 | 1 | Element-wise(K.*u) | Inherit via internal rule |
Table 2. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| In1 | 1 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
| In5 | 5 | Unconnected |
| In6 | 6 | Unconnected |
| In7 | 7 | Unconnected |
| In8 | 8 | Unconnected |
Table 3. Outport Block Properties
| Name | Port | Icon Display | Bus Object | Output When Disabled | Initial Output | Used By Blk |
|---|---|---|---|---|---|---|
| Out1 | 1 | Port number | BusObject | held | [] | Unconnected |
| Out2 | 2 | Port number | BusObject | held | [] | Unconnected |
| Out3 | 3 | Port number | BusObject | held | [] | Unconnected |
| Out4 | 4 | Port number | BusObject | held | [] | Unconnected |
| Out5 | 5 | Port number | BusObject | held | [] | Unconnected |
| Out6 | 6 | Port number | BusObject | held | [] | Unconnected |
| Out7 | 7 | Port number | BusObject | held | [] | Unconnected |
| Out8 | 8 | Port number | BusObject | held | [] | Unconnected |
Table 4. Sum Block Properties
| Name | Icon Shape | Inputs | Input Same DT | Out Data Type Mode |
|---|---|---|---|---|
| Sum | round | |++ | off | Inherit via internal rule |
| Sum1 | round | |++ | off | Inherit via internal rule |
| Sum10 | round | |++ | off | Inherit via internal rule |
| Sum11 | round | |++ | off | Inherit via internal rule |
| Sum12 | round | |++ | off | Inherit via internal rule |
| Sum13 | round | |++ | off | Inherit via internal rule |
| Sum14 | round | |++ | off | Inherit via internal rule |
| Sum15 | round | |++ | off | Inherit via internal rule |
| Sum16 | round | |++ | off | Inherit via internal rule |
| Sum17 | round | |++ | off | Inherit via internal rule |
| Sum18 | round | |++ | off | Inherit via internal rule |
| Sum19 | round | |++ | off | Inherit via internal rule |
| Sum2 | round | |++ | off | Inherit via internal rule |
| Sum20 | round | |++ | off | Inherit via internal rule |
| Sum21 | round | |++ | off | Inherit via internal rule |
| Sum22 | round | |++ | off | Inherit via internal rule |
| Sum23 | round | |++ | off | Inherit via internal rule |
| Sum24 | round | |++ | off | Inherit via internal rule |
| Sum25 | round | |++ | off | Inherit via internal rule |
| Sum26 | round | |++ | off | Inherit via internal rule |
| Sum27 | round | |++ | off | Inherit via internal rule |
| Sum28 | round | |++ | off | Inherit via internal rule |
| Sum29 | round | |++ | off | Inherit via internal rule |
| Sum3 | round | |++ | off | Inherit via internal rule |
| Sum30 | round | |++ | off | Inherit via internal rule |
| Sum31 | round | |++ | off | Inherit via internal rule |
| Sum32 | round | |++ | off | Inherit via internal rule |
| Sum33 | round | |++ | off | Inherit via internal rule |
| Sum34 | round | |++ | off | Inherit via internal rule |
| Sum35 | round | |++ | off | Inherit via internal rule |
| Sum36 | round | |++ | off | Inherit via internal rule |
| Sum37 | round | |++ | off | Inherit via internal rule |
| Sum38 | round | |++ | off | Inherit via internal rule |
| Sum39 | round | |++ | off | Inherit via internal rule |
| Sum4 | round | |++ | off | Inherit via internal rule |
| Sum40 | round | |++ | off | Inherit via internal rule |
| Sum41 | round | |++ | off | Inherit via internal rule |
| Sum42 | round | |++ | off | Inherit via internal rule |
| Sum43 | round | |++ | off | Inherit via internal rule |
| Sum44 | round | |++ | off | Inherit via internal rule |
| Sum45 | round | |++ | off | Inherit via internal rule |
| Sum46 | round | |++ | off | Inherit via internal rule |
| Sum47 | round | |++ | off | Inherit via internal rule |
| Sum48 | round | |++ | off | Inherit via internal rule |
| Sum49 | round | |++ | off | Inherit via internal rule |
| Sum5 | round | |++ | off | Inherit via internal rule |
| Sum50 | round | |++ | off | Inherit via internal rule |
| Sum51 | round | |++ | off | Inherit via internal rule |
| Sum52 | round | |++ | off | Inherit via internal rule |
| Sum53 | round | |++ | off | Inherit via internal rule |
| Sum54 | round | |++ | off | Inherit via internal rule |
| Sum55 | round | |++ | off | Inherit via internal rule |
| Sum6 | round | |++ | off | Inherit via internal rule |
| Sum7 | round | |++ | off | Inherit via internal rule |
| Sum8 | round | |++ | off | Inherit via internal rule |
| Sum9 | round | |++ | off | Inherit via internal rule |
Description.
| Purpose: |
| Multiply 8 inputs by a common gain factor. |
| Operation: |
| Generates two epics records: partName and partName_TRAMP. All eight inputs are multiplied by the EPICS partName input, ramped over a duration (in seconds) of the TRAMP input. |

Table 1. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| GAIN | 9 | Unconnected |
| In1 | 1 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
| In5 | 5 | Unconnected |
| In6 | 6 | Unconnected |
| In7 | 7 | Unconnected |
| In9 | 8 | Unconnected |
Table 2. Outport Block Properties
| Name | Port | Icon Display | Bus Object | Output When Disabled | Initial Output | Used By Blk |
|---|---|---|---|---|---|---|
| Out1 | 1 | Port number | BusObject | held | [] | Unconnected |
| Out2 | 2 | Port number | BusObject | held | [] | Unconnected |
| Out3 | 3 | Port number | BusObject | held | [] | Unconnected |
| Out4 | 4 | Port number | BusObject | held | [] | Unconnected |
| Out5 | 5 | Port number | BusObject | held | [] | Unconnected |
| Out6 | 6 | Port number | BusObject | held | [] | Unconnected |
| Out7 | 7 | Port number | BusObject | held | [] | Unconnected |
| Out8 | 8 | Port number | BusObject | held | [] | Unconnected |
Table 3. Product Block Properties
| Name | Inputs | Multiplication | Input Same DT | Out Data Type Mode |
|---|---|---|---|---|
| Product | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product1 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product2 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product3 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product4 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product5 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product6 | 2 | Element-wise(.*) | off | Inherit via internal rule |
| Product7 | 2 | Element-wise(.*) | off | Inherit via internal rule |
Description.
| Purpose: |
| Subtract pairs of 16 inputs. |

Table 1. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| In1 | 1 | Unconnected |
| In10 | 10 | Unconnected |
| In11 | 11 | Unconnected |
| In12 | 12 | Unconnected |
| In13 | 13 | Unconnected |
| In14 | 14 | Unconnected |
| In15 | 15 | Unconnected |
| In16 | 16 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
| In5 | 5 | Unconnected |
| In6 | 6 | Unconnected |
| In7 | 7 | Unconnected |
| In8 | 8 | Unconnected |
| In9 | 9 | Unconnected |
Table 2. Outport Block Properties
| Name | Port | Icon Display | Bus Object | Output When Disabled | Initial Output | Used By Blk |
|---|---|---|---|---|---|---|
| Out1 | 1 | Port number | BusObject | held | [] | Unconnected |
| Out2 | 2 | Port number | BusObject | held | [] | Unconnected |
| Out3 | 3 | Port number | BusObject | held | [] | Unconnected |
| Out4 | 4 | Port number | BusObject | held | [] | Unconnected |
| Out5 | 5 | Port number | BusObject | held | [] | Unconnected |
| Out6 | 6 | Port number | BusObject | held | [] | Unconnected |
| Out7 | 7 | Port number | BusObject | held | [] | Unconnected |
| Out8 | 8 | Port number | BusObject | held | [] | Unconnected |
Table 3. Sum Block Properties
| Name | Icon Shape | Inputs | Input Same DT | Out Data Type Mode |
|---|---|---|---|---|
| Sum | round | -+ | off | Inherit via internal rule |
| Sum1 | round | -+ | off | Inherit via internal rule |
| Sum2 | round | -+ | off | Inherit via internal rule |
| Sum3 | round | -+ | off | Inherit via internal rule |
| Sum4 | round | -+ | off | Inherit via internal rule |
| Sum5 | round | -+ | off | Inherit via internal rule |
| Sum6 | round | -+ | off | Inherit via internal rule |
| Sum7 | round | -+ | off | Inherit via internal rule |
Description. Switch

Table 1. Ground Block Properties
| Name |
|---|
| Ground |
| Ground1 |
| Ground10 |
| Ground11 |
| Ground12 |
| Ground13 |
| Ground14 |
| Ground15 |
| Ground2 |
| Ground3 |
| Ground4 |
| Ground5 |
| Ground6 |
| Ground7 |
| Ground8 |
| Ground9 |
Table 2. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| In1 | 1 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
| In5 | 5 | Unconnected |
| In6 | 6 | Unconnected |
| In7 | 7 | Unconnected |
| In8 | 8 | Unconnected |
Table 3. Outport Block Properties
| Name | Port | Icon Display | Bus Object | Output When Disabled | Initial Output | Used By Blk |
|---|---|---|---|---|---|---|
| Out1 | 1 | Port number | BusObject | held | [] | Unconnected |
| Out2 | 2 | Port number | BusObject | held | [] | Unconnected |
| Out3 | 3 | Port number | BusObject | held | [] | Unconnected |
| Out4 | 4 | Port number | BusObject | held | [] | Unconnected |
| Out5 | 5 | Port number | BusObject | held | [] | Unconnected |
| Out6 | 6 | Port number | BusObject | held | [] | Unconnected |
| Out7 | 7 | Port number | BusObject | held | [] | Unconnected |
| Out8 | 8 | Port number | BusObject | held | [] | Unconnected |
Table 4. Switch Block Properties
| Name | Criteria | Threshold | Input Same DT | Out Data Type Mode | Zero Cross |
|---|---|---|---|---|---|
| Switch | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch1 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch2 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch3 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch4 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch5 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch6 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
| Switch7 | u2 >= Threshold | 0 | off | Inherit via internal rule | on |
Description. Ramp Switch

Table 1. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| I1 | 1 | Unconnected |
| In2 | 2 | Unconnected |
| In3 | 3 | Unconnected |
| In4 | 4 | Unconnected |
Description. Phase Rotator

Description. WFS Phase Rotator

Description. cdsWD

Table 1. Gain Block Properties
| Name | Gain | Multiplication | Out Data Type Mode |
|---|---|---|---|
| Gain | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain1 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain2 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain3 | 1 | Element-wise(K.*u) | Inherit via internal rule |
| Gain4 | 1 | Element-wise(K.*u) | Inherit via internal rule |
Table 2. Inport Block Properties
| Name | Port | Defined In Blk |
|---|---|---|
| LL | 2 | Unconnected |
| LR | 4 | Unconnected |
| SD | 5 | Unconnected |
| UL | 1 | Unconnected |
| UR | 3 | Unconnected |

Table 2. Logic Block Properties
| Name | Operator | Inputs | Icon Shape | All Ports Same DT | Out Data Type Mode | Logic Data Type |
|---|---|---|---|---|---|---|
| Logical Operator | AND | 2 | rectangular | off | Boolean | uint(8) |
Table 3. Product Block Properties
| Name | Inputs | Multiplication | Input Same DT | Out Data Type Mode |
|---|---|---|---|---|
| Divide | */ | Element-wise(.*) | off | Inherit via internal rule |
| Product | 2 | Element-wise(.*) | off | Inherit via internal rule |
Description.
| Purpose: |
| Provide system parameters to the FE code generator to properly configure the generated EPICS names, rep rate of the FE controller, and the Data Acquisition node ID for proper storage of data from this FE controller. |
| Useage: |
| The part NAME field is used to identify the FE parameters. It must be of the form: |
| site= |
| rate= |
| dcuid= |
| Where: |
| site= argument may be H1, H2, L1, M1, G1, either as a single argument or multiple, for example site=H1,H2. These are the only names allowed. These will become the first two characters of all EPICS and signal names (for example G1:). |
| rate= may be 2K, 16K, 32K, or 64K |
| dcuid= is site specific ie it must be unique at each site. |

Table 1. Block Type Count
| BlockType | Count | Block Names |
|---|---|---|
| Inport | 80 | In1, In1, In1, In1, In1, in, In1, In10, In11, In12, In13, In14, In15, In16, In2, In3, In4, In5, In6, In7, In8, In9, In1, In1, In2, In3, In4, In5, In6, In7, In8, GAIN, In1, In2, In3, In4, In5, In6, In7, In9, In1, In10, In11, In12, In13, In14, In15, In16, In2, In3, In4, In5, In6, In7, In8, In9, In1, In2, In3, In4, In5, In6, In7, In8, I1, In2, In3, In4, In1, In1, In2, In1, In2, In1, LL, LR, SD, UL, UR, In1 |
| Gain | 73 | Gain, Gain, Gain, Gain1, Gain10, Gain11, Gain12, Gain13, Gain14, Gain15, Gain16, Gain17, Gain18, Gain19, Gain2, Gain20, Gain21, Gain22, Gain23, Gain24, Gain25, Gain26, Gain27, Gain28, Gain29, Gain3, Gain30, Gain31, Gain32, Gain33, Gain34, Gain35, Gain36, Gain37, Gain38, Gain39, Gain4, Gain40, Gain41, Gain42, Gain43, Gain44, Gain45, Gain46, Gain47, Gain48, Gain49, Gain5, Gain50, Gain51, Gain52, Gain53, Gain54, Gain55, Gain56, Gain57, Gain58, Gain59, Gain6, Gain60, Gain61, Gain62, Gain63, Gain7, Gain8, Gain9, Gain, Gain1, Gain, Gain1, Gain2, Gain3, Gain4 |
| Sum | 68 | Sum, Sum, Sum1, Sum10, Sum11, Sum12, Sum13, Sum14, Sum15, Sum16, Sum17, Sum18, Sum19, Sum2, Sum20, Sum21, Sum22, Sum23, Sum24, Sum25, Sum26, Sum27, Sum28, Sum29, Sum3, Sum30, Sum31, Sum32, Sum33, Sum34, Sum35, Sum36, Sum37, Sum38, Sum39, Sum4, Sum40, Sum41, Sum42, Sum43, Sum44, Sum45, Sum46, Sum47, Sum48, Sum49, Sum5, Sum50, Sum51, Sum52, Sum53, Sum54, Sum55, Sum6, Sum7, Sum8, Sum9, Sum, Sum1, Sum2, Sum3, Sum4, Sum5, Sum6, Sum7, Sum, Sum1, Sum |
| Outport | 66 | Out1, Out1, Out1, Out1, out, Out1, Out10, Out11, Out12, Out13, Out14, Out15, Out16, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out9, Out1, Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out1, Out2, Out3, Out4, Out5, Out6, Out7, Out8, Out1, Out2, CLK, COS, SIN, Out1, Out2, Out1, Out2, Out1, Out1, Out1 |
| SubSystem | 26 | EpicsParts, EpicsInput, EpicsOutput, EpicsRemoteIntlk, Filters, IIR Filter Module, PolyPhase FIR Filter, RMS, IO_PARTS, DAC_0, DigitalIO, MatrixParts, Matrix, MultiProduct, MultiSubtract, MultiSwitch, RampSwitch, Osc/Phase, Oscillator Name, Phase Rotator Name, Rotator Name, WatchDogs, Ssismic Watchdog, Watchdog, simLinkParts, site=M1 rate=32K dcuid=10 |
| Ground | 17 | Ground, Ground1, Ground10, Ground11, Ground12, Ground13, Ground14, Ground15, Ground2, Ground3, Ground4, Ground5, Ground6, Ground7, Ground8, Ground9, Ground |
| Digital Filter (m) | 13 | Digital Filter0, Digital Filter1, Digital Filter2, Digital Filter3, Digital Filter4, Digital Filter5, Digital Filter6, Digital Filter7, Digital Filter8, Digital Filter9, DS, compFilt, usFilt |
| Switch | 10 | Switch, Switch1, Switch2, Switch3, Switch4, Switch5, Switch6, Switch7, Switch, Switch1 |
| Product | 10 | Product, Product1, Product2, Product3, Product4, Product5, Product6, Product7, Divide, Product |
| Terminator | 6 | Terminator, Terminator, Terminator1, Terminator2, Terminator3, Terminator |
| DocBlock (m) | 3 | DocBlock, DocBlock1, DocBlock2 |
| BusCreator | 2 | Bus Creator, Bus Creator1 |
| UnitDelay | 1 | Unit Delay |
| Logic | 1 | Logical Operator |
| Digital Filter Design (m) | 1 | Digital Filter Design |
| BusSelector | 1 | Bus Selector6 |
Table 2. Model Functions
| Function Name | Parent Blocks | Calling string | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dfilt |
|
|