diff options
Diffstat (limited to 'gr-digital/python/digital/utils/lfsr.py')
-rw-r--r-- | gr-digital/python/digital/utils/lfsr.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gr-digital/python/digital/utils/lfsr.py b/gr-digital/python/digital/utils/lfsr.py new file mode 100644 index 0000000000..2b8a47cb76 --- /dev/null +++ b/gr-digital/python/digital/utils/lfsr.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# +# Copyright 2020 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# + +def lfsr_args(seed, *exp): + """ + Produce arguments to create scrambler objects from exponent polynomial expressions. + seed: start-value of register + *exp: exponents of desired polynomial. + Example: + >>> l = digital.lfsr(*lfrs_args(0b11001,7,1,0)) + Creates an lfsr object with seed 0b11001, mask 0b1000011, K=6 + """ + from functools import reduce + return reduce(int.__xor__, map(lambda x:2**x, exp)), seed, max(exp)-1 |