PLSC Decoder.
More...
#include <pl_signaling.h>
PLSC Decoder.
Decodes a sequence of 64 noisy pi/2 BPSK symbols into the corresponding 7-bit PLS code. Implements the pi/2 BPSK demapping, the PLSC descrambling, and the parsing of the PLSC information.
◆ plsc_decoder() [1/2]
gr::dvbs2rx::plsc_decoder::plsc_decoder |
( |
int |
debug_level = 0 | ) |
|
|
explicit |
◆ plsc_decoder() [2/2]
gr::dvbs2rx::plsc_decoder::plsc_decoder |
( |
std::vector< uint8_t > && |
expected_pls, |
|
|
int |
debug_level = 0 |
|
) |
| |
|
explicit |
◆ ~plsc_decoder()
gr::dvbs2rx::plsc_decoder::~plsc_decoder |
( |
| ) |
|
|
inline |
◆ decode()
void gr::dvbs2rx::plsc_decoder::decode |
( |
const gr_complex * |
bpsk_in, |
|
|
bool |
coherent = true , |
|
|
bool |
soft = true |
|
) |
| |
Decode the incoming pi/2 BPSK symbols of the PLSC.
- Parameters
-
bpsk_in | (const gr_complex *) Input pi/2 BPSK symbols, starting from the last SOF symbol and followed by the PLSC symbols (see note 1). |
coherent | (bool) Whether to use coherent BPSK demapping (the default). When set to false, the decoding uses hard decisions produced through differential demapping of the pi/2 BPSK symbols, even if soft=true (see note 2). |
soft | (bool) Whether to decode the PLSC dataword using soft pi/2 BPSK decisions instead of hard decisions. |
- Note
- 1 - The last SOF symbol is required when coherent=false. In contrast, when coherent=true, the implementation simply skips this symbol. However, note "bpsk_in" must start at the last SOF symbol regardless.
-
2 - The non-coherent (differential) demapping is only supported with hard decisions because there is negligible performance difference when differential demapping is used to produce soft decisions. On the contrary, based on some experiments, it seems that differential demapping with soft decisions would only be slower, and it would produce a similar (if not worse) performance than differential demapping with hard decisions. Ultimately, the supported parameter combinations are: (coherent=true, soft=false), (coherent=true, soft=true), and (coherent=false, soft=false). With (coherent=false, soft=true), the implementation will silently fall back to differential demapping with hard decisions (coherent=false, soft=false).
◆ get_info()
void gr::dvbs2rx::plsc_decoder::get_info |
( |
pls_info_t * |
out | ) |
const |
|
inline |
Read the last decoded PLS information
- Parameters
-
out | (pls_info_t*) Pointer to a pls_info_t structure where the last decoded information will be written. |
◆ d_plsc
uint8_t gr::dvbs2rx::plsc_decoder::d_plsc |
The documentation for this class was generated from the following file: