diff options
author | Elof Wecksell <elof@wecksell.se> | 2021-01-12 10:35:31 +0100 |
---|---|---|
committer | Martin Braun <martin@gnuradio.org> | 2021-01-29 03:31:03 -0800 |
commit | b16924381c90e07d5d8cf5bc236c7dc48a0fd677 (patch) | |
tree | e5fe0c4005af6c6f0a6178139439a478de0abacf /gr-digital/python/digital/utils/lfsr.py | |
parent | 761b327c761e0596f72cbe9f63e510f1b36c4b47 (diff) |
gr-digital: improved performance and capability of scramblers to 64-bit registers. Use __builtin_parity or volk popcnt. qa was also enhanced to detect errors.
Signed-off-by: Elof Wecksell <elof@wecksell.se>
Co-authored-by: Martin Braun <martin@gnuradio.org>
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 |