Source code for basil.HL.pulse_gen

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

from basil.HL.RegisterHardwareLayer import RegisterHardwareLayer


[docs]class pulse_gen(RegisterHardwareLayer): '''Pulser generator ''' _registers = {'RESET': {'descr': {'addr': 0, 'size': 8, 'properties': ['writeonly']}}, 'VERSION': {'descr': {'addr': 0, 'size': 8, 'properties': ['ro']}}, 'READY': {'descr': {'addr': 1, 'size': 1, 'properties': ['ro']}}, 'START': {'descr': {'addr': 1, 'size': 8, 'properties': ['writeonly']}}, 'EN': {'descr': {'addr': 2, 'size': 1}}, 'DELAY': {'descr': {'addr': 3, 'size': 32}}, 'WIDTH': {'descr': {'addr': 7, 'size': 32}}, 'REPEAT': {'descr': {'addr': 11, 'size': 32}} } _require_version = "==3" def __init__(self, intf, conf): super(pulse_gen, self).__init__(intf, conf)
[docs] def start(self): ''' Software start of pulse at random time ''' self.START = 0
def reset(self): self.RESET = 0
[docs] def set_delay(self, value): ''' Pulse delay w.r.t. shift register finish signal [in clock cycles(?)] ''' self.DELAY = value
def get_delay(self): return self.DELAY
[docs] def set_width(self, value): ''' Pulse width in terms of clock cycles ''' self.WIDTH = value
def get_width(self): return self.WIDTH
[docs] def set_repeat(self, value): ''' Pulse repetition in range of 0-255 ''' self.REPEAT = value
def get_repeat(self): return self.REPEAT def is_done(self): return self.is_ready @property def is_ready(self): return self.READY
[docs] def set_en(self, value): ''' If true: The pulse comes with a fixed delay with respect to the external trigger (EXT_START). If false: The pulse comes only at software start. ''' self.EN = value
[docs] def get_en(self): ''' Return info if pulse starts with a fixed delay w.r.t. shift register finish signal (true) or if it only starts with .start() (false) ''' return self.EN