GNU Radio C++ API Reference: gr::digital::lfsr Class Reference

| GNU Radio C++ API Reference 3.10.12.0 The Free & Open Software Radio Ecosystem |

Loading...
Searching...
No Matches
gr::digital::lfsr Class Reference
Miscellaneous

Fibonacci Linear Feedback Shift Register using specified polynomial mask. More...

`#include <gnuradio/digital/lfsr.h>`

## Public Member Functions
| lfsr (uint64_t mask, uint64_t seed, uint8_t reg_len)
unsigned char | next_bit ()
unsigned char | next_bit_scramble (unsigned char input)
unsigned char | next_bit_descramble (unsigned char input)
void | reset ()
void | pre_shift (int num)
uint64_t | mask () const

## Detailed Description

Fibonacci Linear Feedback Shift Register using specified polynomial mask.

Generates a maximal length pseudo-random sequence of length 2^degree-1, if supplied with a primitive polynomial.

Constructor: digital::lfsr(int mask, int seed, int reg_len);

Parameters

  mask | - polynomial coefficients representing the locations of feedback taps from a shift register which are xor'ed together to form the new high order bit.

Some common masks might be: x^4 + x^3 + x^0 = 0x19, K=3 x^5 + x^3 + x^0 = 0x29, K=4 x^6 + x^5 + x^0 = 0x61, K=5

Parameters

  seed | - the initialization vector placed into the register during initialization. Low order bit corresponds to x^0 coefficient – the first to be shifted as output.
  reg_len | - specifies the length of the feedback shift register to be used. During each iteration, the register is rightshifted one and the new bit is placed in bit reg_len. reg_len should generally be at least order(mask) + 1

see http://en.wikipedia.org/wiki/Linear_feedback_shift_register for more explanation.

next_bit() - Standard LFSR operation

    Perform one cycle of the LFSR.  The output bit is taken from
    the shift register LSB.  The shift register MSB is assigned from
    the modulo 2 sum of the masked shift register.

next_bit_scramble(unsigned char input) - Scramble an input stream

    Perform one cycle of the LFSR.  The output bit is taken from
    the shift register LSB.  The shift register MSB is assigned from
    the modulo 2 sum of the masked shift register and the input LSB.

next_bit_descramble(unsigned char input) - Descramble an input stream

    Perform one cycle of the LFSR.  The output bit is taken from
    the modulo 2 sum of the masked shift register and the input LSB.
    The shift register MSB is assigned from the LSB of the input.

See http://en.wikipedia.org/wiki/Scrambler for operation of these last two functions (see multiplicative scrambler.)

## Constructor & Destructor Documentation

## ◆ lfsr()

gr::digital::lfsr::lfsr | ( | uint64_t | mask,
|  | uint64_t | seed,
|  | uint8_t | reg_len )
| inline

References mask().

## Member Function Documentation

## ◆ mask()

uint64_t gr::digital::lfsr::mask | ( |  | ) | const
| inline

Referenced by lfsr().

## ◆ next_bit()

unsigned char gr::digital::lfsr::next_bit | ( |  | ) |
| inline

Referenced by pre_shift().

## ◆ next_bit_descramble()

unsigned char gr::digital::lfsr::next_bit_descramble | ( | unsigned char | input | ) |
| inline

## ◆ next_bit_scramble()

unsigned char gr::digital::lfsr::next_bit_scramble | ( | unsigned char | input | ) |
| inline

## ◆ pre_shift()

void gr::digital::lfsr::pre_shift | ( | int | num | ) |
| inline

Rotate the register through x number of bits where we are just throwing away the results to get queued up correctly

References next_bit().

## ◆ reset()

void gr::digital::lfsr::reset | ( |  | ) |
| inline

Reset shift register to initial seed value

The documentation for this class was generated from the following file:

- lfsr.h