Scrambler Mask, Seed and Lenght

Hi,

the default values for the parameters of the scrambler block are the
following:
Mask: 0x8A
Seed: 0x7F
length:7

Is this a 7-bit scrambler? If yes, why the mask corresponds to an 8-bit
number? (0x8A = ‘10001010’)
What is the polynomial that corresponds to this mask?
According to this link (which I found as reference):
http://wiki.spench.net/wiki/GNU_Radio_Notes#GLFSR_Source

the mask 0x8A is related with the polynomial x^8+x^4+x^2+1

Is that correct? Do I miss something or is there an error on default
values?

Thank you!

On Fri, May 15, 2015 at 1:32 AM, Marcus Müller
[email protected]
wrote:

So, yes, I think I agree, and length should at least be 8 here (your
polynomial has degree 7), and it’s a bit uncommon to see a LFSR being used
without the x^0 coefficient.

Agree. This was a poor implementation decision by someone who clearly
didn’t know what he was doing at the time :slight_smile:

I’ve been wanting to fix this for a long time; looks like 3.8 would be a
good chance to break this properly.

HI Thanasis,
first things first: That is gr::digital::scrambler_bb, which has doxygen
documentation [1].
The length is really just the length of the underlying shift register –
which ought to be at least (order of generator poly)+1, ie.
floor(log2(mask))+1
I recommend having a quick glance at its source code [2], revealing that
it’s actually but a block wrapper around gr::digital::lfsr[3].
If I read lfsr’s code correctly, you’re right, the highest bit of the
mask will always be ignored, because it [4] will always be ANDed with a
0:
unsigned char newbit = (popCount( d_shift_register & d_mask
)%2)^(input & 1);
since d_shift_register never sees the 8th bit being set:
d_shift_register = ((d_shift_register>>1) |
(newbit<<d_shift_register_length));

So, yes, I think I agree, and length should at least be 8 here (your
polynomial has degree 7), and it’s a bit uncommon to see a LFSR being
used without the x^0 coefficient.

Best regards,
Marcus

[1]
http://gnuradio.org/doc/doxygen/classgr_1_1digital_1_1scrambler__bb.html#details
[2]

[3] GNU Radio Manual and C++ API Reference: gr::digital::lfsr Class Reference
[4]
gnuradio/gr-digital/include/gnuradio/digital/lfsr.h at master · gnuradio/gnuradio · GitHub

ok until 3.8 how can I use this block without making mistakes?

If for example want the following polynomials (copy from [1])

               x^4 + x^3 + x^0 = 0x19
               x^5 + x^3 + x^0 = 0x29
               x^6 + x^5 + x^0 = 0x61

do I have to set the length to 5,6,7 respectively?

[1]

2015-05-15 15:28 GMT+03:00 Johnathan C. [email protected]: