GNU Radio 3.6.4.1 C++ API
gri_lfsr Class Reference

Fibonacci Linear Feedback Shift Register using specified polynomial maskGenerates a maximal length pseudo-random sequence of length 2^degree-1. More...

#include <gri_lfsr.h>

Public Member Functions

 gri_lfsr (uint32_t mask, uint32_t seed, uint32_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)
 
int 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.

Constructor: gri_lfsr(int mask, int seed, int reg_len);

 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
         x^5 + x^3 + x^0 = 0x29
         x^6 + x^5 + x^0 = 0x61

 seed - the initialization vector placed into the register
        durring 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. Durring 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

gri_lfsr::gri_lfsr ( uint32_t  mask,
uint32_t  seed,
uint32_t  reg_len 
)
inline

Member Function Documentation

int gri_lfsr::mask ( ) const
inline
unsigned char gri_lfsr::next_bit ( )
inline
unsigned char gri_lfsr::next_bit_descramble ( unsigned char  input)
inline
unsigned char gri_lfsr::next_bit_scramble ( unsigned char  input)
inline
void gri_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

void gri_lfsr::reset ( )
inline

Reset shift register to initial seed value


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