#
# ------------------------------------------------------------
# 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