GNU Radio's DVBS2RX Package
|
DVB-S2 Physical Layer (PL) Synchronizer. More...
#include <plsync_cc.h>
Public Types | |
typedef std::shared_ptr< plsync_cc > | sptr |
Public Member Functions | |
virtual float | get_freq_offset ()=0 |
Get the current frequency offset estimate. | |
virtual bool | get_coarse_freq_corr_state ()=0 |
Get the coarse frequency offset correction state. | |
virtual bool | get_locked ()=0 |
Get the current lock status. | |
virtual uint64_t | get_sof_count ()=0 |
Get the current count of detected start-of-frame (SOF) instants. | |
virtual uint64_t | get_frame_count ()=0 |
Get the current count of processed (accepted) PLFRAMEs. | |
virtual uint64_t | get_rejected_count ()=0 |
Get the current count of rejected PLFRAMEs. | |
virtual uint64_t | get_dummy_count ()=0 |
Get the current count of received dummy PLFRAMEs. | |
virtual std::chrono::system_clock::time_point | get_lock_time ()=0 |
Get the timestamp of the last frame synchronization lock. | |
Static Public Member Functions | |
static sptr | make (int gold_code, int freq_est_period, double sps, int debug_level, bool acm_vcm, bool multistream, uint64_t pls_filter_lo, uint64_t pls_filter_hi) |
Make physical layer deframer block. | |
DVB-S2 Physical Layer (PL) Synchronizer.
This block finds DVB-S2 PLFRAMEs on the input symbol-spaced IQ stream and outputs the corresponding XFECFRAMEs towards a downstream constellation de-mapper block. Internally, it implements PL frame timing recovery, coarse and fine frequency offset estimation, carrier phase tracking, PLSC decoding, and PL descrambling. Furthermore, it manages frequency corrections carried out by an external rotator block connected via a message port.
This block can also filter PLFRAMEs based on target PL signaling (PLS) values. In constant coding and modulation (CCM) mode, the PLS filter must specify a single option (i.e., a single MODCOD, frame size, and pilot configuration). In contrast, in adaptive or variable coding and modulation (ACM/VCM) mode, the filter can be configured to allow multiple PLS values, including all of them. In this case, since the output XFECFRAMEs can vary in length and format, this block tags the first sample of each output XFECFRAME with the frame's PLS information.
std::shared_ptr<plsync_cc> gr::dvbs2rx::plsync_cc::sptr |
|
pure virtual |
Get the coarse frequency offset correction state.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current count of received dummy PLFRAMEs.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current count of processed (accepted) PLFRAMEs.
A PLFRAME is processed after frame timing lock and after being accepted by the PLS filter, in which case its XFECFRAME is output to the next block. Frames rejected by the PLS filter and dummy frames are not included in this count.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current frequency offset estimate.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the timestamp of the last frame synchronization lock.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current lock status.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current count of rejected PLFRAMEs.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
pure virtual |
Get the current count of detected start-of-frame (SOF) instants.
This count includes all detected SOFs, including false positives. Note that detecting a SOF does not mean that instant will lead to a processed frame. Frames are only processed after frame timing lock, which requires two consecutive SOFs detected with the correct interval between them. Hence, the SOF count is always greater than or equal to the processed frame count.
Implemented in gr::dvbs2rx::plsync_cc_impl.
|
static |
Make physical layer deframer block.
gold_code | (int) Gold code used for physical layer scrambling. |
freq_est_period | (int) Freq. offset estimation period in frames. |
sps | (double) Oversampling ratio at the input to the upstream MF. |
debug_level | (int) Debug level. |
acm_vcm | (bool) Whether running in ACM/VCM mode. Determines whether the PLS filter can include multiple options. |
multistream | (bool) Whether the input signal carries multiple MPEG transport streams (MIS mode). Determines whether dummy PLFRAMEs are expected in the received signal, even if operating in CCM mode (refer to Table D.2 of the standard). |
pls_filter_lo | (uint64_t) Lower 64 bits of the PLS filter bitmask. A value of 1 in the n-th position indicates PLS "n" (for n in 0 to 63) should be enabled. |
pls_filter_hi | (uint64_t) Upper 64 bits of the PLS filter bitmask. A value of 1 in the n-th position indicates PLS "n" (for n in 64 to 127) should be enabled. |
acm_vcm=false
, the constructor throws an exception if pls_filter_lo
and pls_filter_hi
collectively select more than one PLS value (i.e., if their aggregate population count is greater than one).