trimictrl

Section: USER COMMANDS (1)
Updated: January 2, 2014
Index Return to Main Contents
 

NAME

trimictrl - Setup the TRIMI (TRIVA mimic) connections of a VULOM/TRIDI.  

SYNOPSIS

trimictrl --addr=A [file.rbt[,comment.txt]] [OPTIONS]  

DESCRIPTION

The TRIMI section of a TRLO II-running VULOM/TRIDI requires setup of which front-panel in- and output to use. This program performs that.

 

OPTIONS

--addr=A
Select the VME address A of the module to handle. The address is given in hexadecimal. (The default is 2.)

--help
Display a short help text and exit.

--show
List available in- & outputs. See further under I/O.
--print-config
Print current status and connections.

--link-status
Continuously monitor the status of the serial trigger link. (Abort with Ctrl+C)

sendmsg=[N|0xHEX]
Send a side-band one-byte message with the value given on the serial trigger link.

--send-ident[=MSG]
Continuously send identification side-band messages on the serial trigger link. Useful to identify a source of serial trigger link. Use at the transmitting end.

--recv-ident
Continuously look for identification side-band messages on the serial trigger link. Useful to identify a source of serial trigger link. Use at the receiving end.

 

CONFIGURATION OPTIONS

link_period=N
Set the serial output baud (symbol) length to N clock cycles (usually 10 ns) of the transmitter.

With short electrical cables (low signal dispersion), a value of 8 works. (The receiver has with testing been found to intrinsically not be able to reliably lock on signals with a symbol length shorter than 6.75 clock cycles.)

fast_dt=N
Cover with local deadtime for N clock cycles, to bridge the time until dead-time is seen from slaves.

The deadtime receive circuit will hold a local deadtime until the serial trigger transmitter has sent the trigger. A slave TRIMI will set its deadtime output at the latest when it has fully received the trigger. It will take a certain time for the serial trigger to reach the slave, and an similar for the deadtime signal to reach the master. With signal speeds of 5 ns/m, a minimum choice would be twice that.

The deadtime receive circuit has features to help detect glitches in the deadtimes received. Most often, there will be no deadtime hole, as the master processor has not finished processing until the deadtime from the slaves have appeared. If that is not the case however, the usual effect of a glitch is that the master manage to issue a trigger while a slave is still processing the previous. One trigger will then be missed, and a mismatch will be reported on the following trigger.

 

CONNECTION OPTIONS

The TRIMI can use any front-panel in- or output connector for each signal needed or produced. For signals where several signals are possible, the list of used connection can also be incrementally enlarged or reduced by using += or -= instead of =. Multiple adjecent connectors of the same kind can be specified as CONN(a:b) instead of CONN(a),CONN(a+1),...,CONN(b).

Enclose arguments with connector names in quotation marks, lest your shell thinks the parentheses are to be interpreted.

encoded_in=CONN
Use the specified CONNector (with the three following inputs, i.e. in a bunch of four) as source for the encoded trigger input. (Equivalent to T1-4 (ECL IN 1-4) for a TRIVA). Only indices divisible by four can be used.

When operated together with the TRLO II of the same module as the TRIMI, specify TRLO_ENCODED_TRIG to use the encoded trigger output of the TRLO II trigger box.

serial_out=CONN[,CONN]
Send the serial trigger messages to the given output CONNectors. The serial trigger message must either here or with other electronics be fanned out to all slave modules. When operated as a slave, the TRIMI will pass on the received serial trigger signal unchanged (and unclocked!) to the given outputs.

serial_in=CONN
Receive serial trigger messages from input CONN.

dt_out=CONN[,CONN]
Send deadtime to the given output CONNectors. For a slave module, the signal must be sent to the master TRIMI. (Or a TRIMI which has relayed the serial trigger link signal if itself operating as a slave.) For a master module, the deadtime should be given to the trigger logics.

When interacting directly with the TRLO II of the same module as the TRIMI, the deadtime is available in the internal TRLO II multiplexer, as TRIMI_TDT.

dt_in=CONN[,CONN]
Use the input CONNectors for the deadtime receive circuit. The deadtime from each slave must be included here, either directly or with some other fan-in module. (Otherwise, the slave might loose triggers and become desyncronised with the master TRIMI.) With direct connections, the additional monitoring facilities of the deadtime receive circuit can be used.

 

I/O

Output signals are logically ORed together with the TRLO II output signals. Take care.

The names of the connectors are stored in a RAM block of the module FPGA firmware, and read by trimictrl on startup. They can be listed be the --show option.

ConnectorVULOMTRIDIComment




CTRL_IN1:8Bus connections.
TRIG_BUS_IN1:8Bus connections.
NIM_IN1:8
ECL_IN1:161:8
ECL_IO_IN1:8
LEMO_IN1:2

CTRL_OUT1:8Bus connections.
i.e. in see out.
TRIG_BUS_OUT1:8Bus connections.
NIM_OUT1:8
ECL_OUT1:16
ECL_IO_OUT1:8
LEMO_OUT1:2

 

MULTI-LEVEL OPERATION

The TRIMI serial trigger link can be operated in a tree-like fashion: Connect the serial outputs of a slave module to further slaves, and the returned deadtime from those slaves to the deadtime receive circuit of the first module. To the DAQ software running on all involved processors, the behaviour will be as for a normal (flat) trigger link.

 

EXIT STATUS

0 after successfully operation, 1 on failure.

 

EXAMPLES

Note the necessity to enclose arguments with connector names in quotation marks, to prevent the shell from doing Bad Things (TM) to the parentheses.

Take triggers from TRLO II in a module at VME address 0x02.
trimictrl --addr=2 encoded_in=TRLO_ENCODED_TRIG

Together with the above, set the TRLO II to generate triggers and respect the TRIMI deadtime:
trloctrl --addr=2 --clear-setup \

  "period(1)=10us" "TRIG_PENDING[1]=PULSER(1)" \


  "DEADTIME_IN(1)=TRIMI_TDT"

For a master module with an external trigger logic, encoded triggers from ECL_IO_IN(1):4. With the trigger link on first LEMO out, and deadtime return on first lemo in:
trimictrl "encoded_in=ECL_IO_IN(1)" "serial_out=LEMO_OUT(1)"  \

  "dt_in=LEMO_IN(1)" link_period=8 fast_dt=40

For a corresponding slave module:
trimictrl "serial_in=LEMO_IN(1)" "dt_out=LEMO_OUT(1)"

 

AUTHOR

Håkan T. Johansson <f96hajo@chalmers.se>

 

SEE ALSO

trloctrl(1), vulomflash(1)

 

BUGS

The TRLO II part signal multiplexer setup registers are cleared to 0 value on startup, meaning in particular that all module outputs propagate the signal of the first module input. Fix by doing:
trloctrl --addr=X --clear-setup.

Without a CPLD upgrade, a VOLUM or TRIDI module will not propagate interrupt acknowledge responses. The TRIMI can still be operated in polled mode.


 

Index

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CONFIGURATION OPTIONS
CONNECTION OPTIONS
I/O
MULTI-LEVEL OPERATION
EXIT STATUS
EXAMPLES
AUTHOR
SEE ALSO
BUGS

This document was created by man2html, using the manual pages.
Time: 06:59:51 GMT, November 12, 2023