Source code for basil.HL.tlu

#
# ------------------------------------------------------------
# Copyright (c) All rights reserved
# SiLab, Institute of Physics, University of Bonn
# ------------------------------------------------------------
#

from basil.HL.RegisterHardwareLayer import RegisterHardwareLayer

trigger_modes = {
    "EXTERNAL": 0,  # external trigger
    "NO_HANDSHAKE": 1,  # TLU no handshake
    "SIMPLE_HANDSHALKE": 2,  # TLU simple handshake
    "DATA_HANDSHAKE": 3,  # TLU trigger data handshake
}


trigger_data_format = {
    "TRIGGER_COUNTER": 0,  # trigger number according to TRIGGER_MODE
    "TIMESTAMP": 1,  # time stamp only
    "COMBINED": 2,  # combined, 15bit time stamp + 16bit trigger number
}


[docs] class tlu(RegisterHardwareLayer): """TLU controller interface""" _registers = { "RESET": {"descr": {"addr": 0, "size": 8, "properties": ["writeonly"]}}, "VERSION": {"descr": {"addr": 0, "size": 8, "properties": ["ro"]}}, "TRIGGER_MODE": {"descr": {"addr": 1, "size": 2, "offset": 0}}, "TRIGGER_DATA_MSB_FIRST": {"descr": {"addr": 1, "size": 1, "offset": 2}}, "TRIGGER_ENABLE": {"descr": {"addr": 1, "size": 1, "offset": 3}}, "USE_EXT_TIMESTAMP": {"descr": {"addr": 1, "size": 1, "offset": 4}}, "DATA_FORMAT": {"descr": {"addr": 2, "size": 2, "offset": 0}}, "EN_TLU_RESET_TIMESTAMP": {"descr": {"addr": 2, "size": 1, "offset": 5}}, "EN_TLU_VETO": {"descr": {"addr": 2, "size": 1, "offset": 6}}, "TRIGGER_LOW_TIMEOUT": {"descr": {"addr": 3, "size": 8}}, "CURRENT_TLU_TRIGGER_NUMBER": {"descr": {"addr": 4, "size": 32, "properties": ["ro"]}}, "TRIGGER_COUNTER": {"descr": {"addr": 8, "size": 32}}, "LOST_DATA_COUNTER": {"descr": {"addr": 12, "size": 8, "properties": ["ro"]}}, "TRIGGER_SELECT": {"descr": {"addr": 13, "size": 32}}, "TRIGGER_VETO_SELECT": {"descr": {"addr": 17, "size": 32}}, "TRIGGER_INVERT": {"descr": {"addr": 21, "size": 32}}, "MAX_TRIGGERS": {"descr": {"addr": 25, "size": 32}}, "TRIGGER_HANDSHAKE_ACCEPT_WAIT_CYCLES": {"descr": {"addr": 29, "size": 8}}, "HANDSHAKE_BUSY_VETO_WAIT_CYCLES": {"descr": {"addr": 30, "size": 8}}, "TRIGGER_LOW_TIMEOUT_ERROR_COUNTER": {"descr": {"addr": 31, "size": 8, "properties": ["ro"]}}, "TLU_TRIGGER_ACCEPT_ERROR_COUNTER": {"descr": {"addr": 32, "size": 8, "properties": ["ro"]}}, "TRIGGER_THRESHOLD": {"descr": {"addr": 33, "size": 8}}, "SOFT_TRIGGER": {"descr": {"addr": 34, "size": 8, "properties": ["writeonly"]}}, "TRIGGER_DATA_DELAY": {"descr": {"addr": 35, "size": 8}}, } _require_version = "==11" def __init__(self, intf, conf): super(tlu, self).__init__(intf, conf) def reset(self): self.RESET = 0