BER in bert- example

Hi list,

There is a function called ‘ber’ in receive_path.py in the python bert
example.

def ber(self):
return (1.0-self._ber.density())/3.0

From where does the 3 originate? Some lines above, there is this
comment:

Descramble BERT sequence. A channel error will create 3 incorrect

bits
self._descrambler = gr.descrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit
descrambler

But from my tests I see that
1 bit error in -> 7 bit errors out
2 consecutive bit errors in -> 2 errors in the output
3 consecutive bit errors in -> 7 errors in the output
4 consecutive bit errors in -> 4 errors in the output

And so forth up to 7 (Length of the lfsr)

The reason I ask is that if I want to change the scrambler and/or the
modulation, I assume that this “magic number” will change as well.

BR
//Mattias

On Sun, Jan 31, 2010 at 7:36 AM, Mattias K. [email protected] wrote:

self._descrambler = gr.descrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit
The reason I ask is that if I want to change the scrambler and/or the
modulation, I assume that this “magic number” will change as well.

If you want a good BER measurement, I wouldn’t use the method that you
describe here.

Since, as you’ve noted, the errors propagate through the shift
register and generate more errors than the number of errors at the
input, it seems more like an error generator than an error counter.

Though, on a side note, it is strange you are getting 7 bits in error
when you only have 1 bit in error going in. This really should be
limited to 3 as the comment suggests.

The benefit to this approach is self-synchronization, but you lose out
on an accurate bit error measurement.

Without knowing more about the type of system you are going to be
testing, I can’t comment on how I’d change the measurement or
evaluation of the bits produced by your modem. Sorry.

Hope this was helpful - though I somewhat doubt it.

Brian

On Sun, Jan 31, 2010 at 06:52, Brian P. [email protected]
wrote:

If you want a good BER measurement, I wouldn’t use the method that you
describe here.

You are correct. The scrambler introduces three output errors per
input error for single channel errors that are farther apart than the
length of the shift register. This is the case once the shift
register has already achieved self-synchronization and at low channel
error rates. For the purposes of the simple BERT example, this was
sufficient. (The number 3 comes from the number of taps in the
scrambler polynomial.)

Johnathan

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs