classmethod sdr.GLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self

Creates a Galois LFSR from its taps.

Parameters:
taps: FieldArray

The shift register taps \(T = [c_0, c_1, \dots, c_{n-2}, c_{n-1}]\).

state: ArrayLike | None = None

The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

Returns:

A Galois LFSR with taps \(T = [c_0, c_1, \dots, c_{n-2}, c_{n-1}]\).

Examples

In [1]: c = galois.primitive_poly(7, 4); c
Out[1]: Poly(x^4 + x^2 + 3x + 5, GF(7))

In [2]: taps = -c.coeffs[1:][::-1]; taps
Out[2]: GF([2, 4, 6, 0], order=7)

In [3]: lfsr = sdr.GLFSR.Taps(taps)

In [4]: print(lfsr)
Galois LFSR:
  field: GF(7)
  characteristic_poly: x^4 + x^2 + 3x + 5
  feedback_poly: 5x^4 + 3x^3 + x^2 + 1
  taps: [2 4 6 0]
  order: 4
  state: [1 1 1 1]
  initial_state: [1 1 1 1]