pylfsr
Linear-Feedback Shift Registers are components widely used in digital electronics. This is a toolkit for designing them.
It supports LFSR with internal feedback (Galois implementation) and with external feedback (Fibonacci implementation).
Example
LFSR with internal feedback described by polynomial x**3+x**2+1
, encode as 0x0D
with initial value of 0x01
would look like:
+----<-----+-------<-------+
| | |
+-----[0]-XOR-[0]-----[1]--+-->-- out
x**3 x**2 x**1 x**0
Values at its output can be check by:
>>> n = 3
>>> taps = max_len_lfsr_min_taps[n]
>>> poly = taps_to_poly(taps)
>>> prng = lfsr_if(poly)
>>> for i in range(10):
... print(i, next(prng))
0 1
1 6
2 3
3 7
4 5
5 4
6 2
7 1
8 6
9 3
More details and examples can be found in the documentation.