kopia lustrzana https://github.com/M17-Project/M17_spec
Add standardized BERT mode.
rodzic
9e367aa646
commit
50140ca5b7
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue