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