Add standardized BERT mode.

pull/67/head
Rob Riggs 2021-08-16 21:18:53 -05:00
rodzic 9e367aa646
commit 50140ca5b7
1 zmienionych plików z 85 dodań i 2 usunięć

Wyświetl plik

@ -1,6 +1,6 @@
Data Link Layer
===============
The Data Link layer is split into two modes:
The Data Link layer is split into three modes:
* Packet mode
Data are sent in small bursts, on the order of 100s to 1000s of bytes
@ -11,6 +11,10 @@ The Data Link layer is split into two modes:
with no break in physical layer output, until the stream ends. e.g. voice data,
bulk data transfers, etc.
* BERT mode
PRBS9 is used to fill frames with a deterministic bit sequence. Frames are sent
in a continuous sequence.
When the physical layer is idle (no RF being transmitted or received),
the data link defaults to packet mode.
@ -41,10 +45,11 @@ All frames are preceded by a 16-bit *synchronization burst*.
* Link setup frames shall be preceded with 0x55F7.
* Stream frames shall be preceeded with 0xFF5D.
* Packet frames shall be preceeded with 0x75FF.
* BERT frames shall be preceeded with 0xDF55.
All syncwords are type 4 bits.
These sync words are based on `Barker codes`_. The sequence 0xDF55 (symbols -3 +3 -3 -3 +3 +3 +3 +3) is reserved.
These sync words are based on `Barker codes`_.
.. _`Barker codes`: https://en.wikipedia.org/wiki/Barker_code
@ -415,3 +420,81 @@ equate to a slot time of 4 and a P-persistence value of 63.
The benefit of this method is that it imposes no penalty on uncontested networks.
BERT Mode
---------
BERT mode is a standardized, interoperable mode for bit error rate testing. The preamble is
sent, followed by an indefinite sequence of BERT frames. Notably, a link setup frame must not
be sent in BERT mode.
BERT Frame
~~~~~~~~~~
Each BERT frame is preceeded by the BERT sync word, 0xDF55.
The BERT frame consists of 197 bits from a `PRBS9 <https://en.wikipedia.org/wiki/Pseudorandom_binary_sequence>`_
generator. This is 24 bytes and 5 bits of data. The next frame starts with the 198th bit from the PRBS9
generator. The same generator is used for each subsequent frame without being reset. The number of bits
pulled from the generator, 197, is a prime number. This will produce a reasonably large number of unique
frames with even a small PRBS generator.
The PRBS9 uses the ITU standard polynomial :math:`x^{9}+x^{5}+1`
The PRBS9 is initialized with a state of 1. (Any non-zero value will work.) The pseudorandom sequence
is generated by an LFSR as if fed with a stream of 0's.
.. list-table:: Bit fields of BERT frame
:header-rows: 1
* - Bits
- Meaning
* - 0-196
- BERT PRBS9 payload
* - 4
- Flush bits for convolutional coder
The 201 bits are convolutionally encoded to 402 type 2 bits.
The 402 bits are punctured using the P2 puncture matrix to get 368 type 3 bits.
The 368 punctured bits are interleaved and decorrelated to get the type 4 bits to be transmitted.
.. list-table:: BERT frame
:header-rows: 1
* - Bits
- Meaning
* - 16 bits
- Sync word 0xDF55
* - 368 bits
- Payload
BERT Receiver
~~~~~~~~~~~~~
PRBS generators are self-syncronizing. The receiver detects the frame is a BERT frame based on the
sync word received. If the PRBS9 generator is reset at this point, the sender and receiver should
be synchonized at the start. This, however, is not required.
Syncronization
==============
The receiver will feed the bits from a decoded frame into the LFSR used for the PRBS. Errors will
come out of the PRBS as a burst of three (3) 1's. Once a sequence of twenty (20) 0's are recovered,
the stream is considered syncronized. The receiver counts 20 bits received with no errors. It then
runs the LFSR as if it were a free-running PRBS generator and compares the bit differences. Each
difference increments the error counter. This method, comparing the ideal output of a PRBS rather
than feeding the received bitstream into the LFSR, avoids triple-counting bit errors.
Resynchronization
=================
The receiver must keep track of the number of bit errors over a period of 128 bits. If more than
25 bit errors occur, the synchronization process starts anew. This is necessary in the case of
missed frames or other serious synchronization issues.
References
~~~~~~~~~~
http://www.itu.int/rec/T-REC-O.150-199210-S