Module rpps.scram.lfsr
Classes
class Galois (seed, toggle)-
Expand source code
class Galois(LFSR): __slots__ = ("_poly", "toggle") name = "Galois" def __init__(self, seed, toggle): super().__init__(seed) self._poly = toggle self.toggle = np.zeros((len(seed),), bool) self.toggle[len(seed) - toggle] = True def __str__(self): return f"{super().__str__()}:{self._poly.astype(int)}"Ancestors
Subclasses
Class variables
var name
Instance variables
var toggle-
Expand source code
class Galois(LFSR): __slots__ = ("_poly", "toggle") name = "Galois" def __init__(self, seed, toggle): super().__init__(seed) self._poly = toggle self.toggle = np.zeros((len(seed),), bool) self.toggle[len(seed) - toggle] = True def __str__(self): return f"{super().__str__()}:{self._poly.astype(int)}"
class LFSR (seed)-
Expand source code
class LFSR: __slots__ = ("_seed", "lfsr") def __init__(self, seed): self._seed = seed self.lfsr = seed def __str__(self): return f"{type(self).__name__}" def reset(self): self.lfsr = self._seed def get_bit(self): ...Subclasses
Instance variables
var lfsr-
Expand source code
class LFSR: __slots__ = ("_seed", "lfsr") def __init__(self, seed): self._seed = seed self.lfsr = seed def __str__(self): return f"{type(self).__name__}" def reset(self): self.lfsr = self._seed def get_bit(self): ...
Methods
def get_bit(self)-
Expand source code
def get_bit(self): ... def reset(self)-
Expand source code
def reset(self): self.lfsr = self._seed
class fibonacci (seed, taps)-
Expand source code
class fibonacci(LFSR): __slots__ = ("taps") name = "Fibonacci" def __init__(self, seed, taps): super().__init__(seed) self.taps = taps def __str__(self): return f"{super().__str__()}:{self.taps.tolist()}" def get_bit(self): # Xor taps sequentially new_bit = np.bitwise_xor.reduce(self.lfsr[self.taps - 1]) & 1 # shift one place to the right, [1,0,1,0,1,#] >> 1 = [#,1,0,1,0,1] self.lfsr[1:] = self.lfsr[:-1] # clock LFSR self.lfsr[0] = new_bit # set left-most bit (input bit) # return right-most bit (output bit) return self.lfsr[-1]Ancestors
Class variables
var name
Instance variables
var taps-
Expand source code
class fibonacci(LFSR): __slots__ = ("taps") name = "Fibonacci" def __init__(self, seed, taps): super().__init__(seed) self.taps = taps def __str__(self): return f"{super().__str__()}:{self.taps.tolist()}" def get_bit(self): # Xor taps sequentially new_bit = np.bitwise_xor.reduce(self.lfsr[self.taps - 1]) & 1 # shift one place to the right, [1,0,1,0,1,#] >> 1 = [#,1,0,1,0,1] self.lfsr[1:] = self.lfsr[:-1] # clock LFSR self.lfsr[0] = new_bit # set left-most bit (input bit) # return right-most bit (output bit) return self.lfsr[-1]
Methods
def get_bit(self)-
Expand source code
def get_bit(self): # Xor taps sequentially new_bit = np.bitwise_xor.reduce(self.lfsr[self.taps - 1]) & 1 # shift one place to the right, [1,0,1,0,1,#] >> 1 = [#,1,0,1,0,1] self.lfsr[1:] = self.lfsr[:-1] # clock LFSR self.lfsr[0] = new_bit # set left-most bit (input bit) # return right-most bit (output bit) return self.lfsr[-1]
class galois_left (seed, toggle)-
Expand source code
class galois_left(Galois): name = "Galois Left" def get_bit(self): lsb = self.lfsr[0] self.lfsr[1:] = self.lfsr[:-1] # clock LFSR self.lfsr[0] = 0 if lsb: self.lfsr = np.bitwise_xor(self.lfsr, self.toggle) return lsbAncestors
Class variables
var name
Methods
def get_bit(self)-
Expand source code
def get_bit(self): lsb = self.lfsr[0] self.lfsr[1:] = self.lfsr[:-1] # clock LFSR self.lfsr[0] = 0 if lsb: self.lfsr = np.bitwise_xor(self.lfsr, self.toggle) return lsb
class galois_right (seed, toggle)-
Expand source code
class galois_right(Galois): name = "Galois Right" def get_bit(self): msb = self.lfsr[-1] self.lfsr[:-1] = self.lfsr[1:] # clock LFSR self.lfsr[-1] = 0 if msb: self.lfsr = np.bitwise_xor(self.lfsr, self.toggle) return msbAncestors
Class variables
var name
Methods
def get_bit(self)-
Expand source code
def get_bit(self): msb = self.lfsr[-1] self.lfsr[:-1] = self.lfsr[1:] # clock LFSR self.lfsr[-1] = 0 if msb: self.lfsr = np.bitwise_xor(self.lfsr, self.toggle) return msb