Generating orthogonal PN sequences in GRC

Hi,

I am trying to use the GLFSR source in GRC with PN correlator for system
identification. What I want is to generate a sequence from the GLFSR
source and to get an estimate when the PN correlator uses the same
sequence and to get zero when the sequences generated by the GLFSR and
the PN correlator are totally orthogonal for any delay.

To make this, I need to know how to generate two orthogonal PN sequences
from two different GLFSR blocks. I tried to use different seed
parameters, but I saw that the two sequences are still correlated for
some delay (shift). Anyone who has done this before ? In short, how can
I generate two PN sequences which are orthogonal for any delay ?

brex

On Oct 12, 2011, at 15:28, godana ebrahim [email protected] wrote:

I am trying to use the GLFSR source in GRC with PN correlator for system
identification. What I want is to generate a sequence from the GLFSR
source
and to get an estimate when the PN correlator uses the same sequence and
to
get zero when the sequences generated by the GLFSR and the PN correlator
are
totally orthogonal for any delay.

To make this, I need to know how to generate two orthogonal PN
sequences
from two different GLFSR blocks. I tried to use different seed
parameters,
but I saw that the two sequences are still correlated for some delay
(shift). Anyone who has done this before ? In short, how can I generate
two
PN sequences which are orthogonal for any delay ?

This block optionally takes both a seed and mask parameter. The seed
provides the initial contents of the LFSR, and the mask represents the
generator polynomial feedback taps.

The feedback taps are the thing that creates different sequences, while
the
seed (as you have discovered) determines the phase of the generated
sequence.

The block has a set of default feedback taps for each polynomial degree,
which are known to create maximal-length PN sequences:

http://gnuradio.org/cgit/gnuradio.git/tree/gnuradio-core/src/lib/general/gri_glfsr.cc#n26

Finally, to answer your question, in order for two different GLFSR
blocks to
generate orthogonal sequences, you’ll have to specify your own
polynomial
mask. A good place to learn about maximal-length sequences with
references
to different polynomials:

Johnathan

I tried a simple setup to see if specifying the mask in GRC does things
as expected (as you told me). I took two GLFSR blocks. Both blocks are
set to the same degree (6) and the same seed. The mask of the first
block is set to 0; so that the built-in mask of degree 6 (which has an
integer value of 18) is used. For the other block, I set the mask to 18
in GRC. These two blocks are expected to give the same output sequence.
However, they did not. When I set the mask of both blocks to 0, they
give the same output. So, what is wrong ? Something I am missing here ?

brex

I tried a simple setup to see if specifying the mask in GRC does things
as expected (as you told me). I took two GLFSR blocks. Both blocks are
set to the same degree (6) and the same seed. The mask of the first
block is set to 0; so that the built-in mask of degree 6 (which has an
integer value of 18) is used. For the other block, I set the mask to 18
in GRC. These two blocks are expected to give the same output sequence.
However, they did not. When I set the mask of both blocks to 0, they
give the same output. So, what is wrong ? Something I am missing here ?

brex


I am trying to use the GLFSR source in GRC with PN correlator for system
identification. What I want is to generate a sequence from the GLFSR
source and to get an estimate when the PN correlator uses the same
sequence and to get zero when the sequences generated by the GLFSR and
the PN correlator are totally orthogonal for any delay.

To make this, I need to know how to generate two orthogonal PN sequences from two
different GLFSR blocks. I tried to use different seed parameters, but I saw that
the two sequences are still correlated for some delay (shift). Anyone who has done
this before ? In short, how can I generate two PN sequences which are orthogonal
for any delay ?

This block optionally takes both a seed and mask parameter. The seed
provides the initial contents of the LFSR, and the mask represents the
generator polynomial feedback taps.

The feedback taps are the thing that creates different sequences, while
the seed (as you have discovered) determines the phase of the generated
sequence.

The block has a set of default feedback taps for each polynomial degree,
which are known to create maximal-length PN sequences:
http://gnuradio.org/cgit/gnuradio.git/tree/gnuradio-core/src/lib/general/gri_glfsr.cc#n26

Finally, to answer your question, in order for two different GLFSR
blocks to generate orthogonal sequences, you’ll have to specify your own
polynomial mask. A good place to learn about maximal-length sequences
with references to different polynomials:

Johnathan