GNU Radio's DVBS2RX Package
gr::dvbs2rx::plsync_cc Class Referenceabstract

DVB-S2 Physical Layer (PL) Synchronizer. More...

#include <plsync_cc.h>

Inheritance diagram for gr::dvbs2rx::plsync_cc:

Public Types

typedef std::shared_ptr< plsync_ccsptr
 

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.
 

Detailed Description

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.

Member Typedef Documentation

◆ sptr

typedef std::shared_ptr<plsync_cc> gr::dvbs2rx::plsync_cc::sptr

Member Function Documentation

◆ get_coarse_freq_corr_state()

virtual bool gr::dvbs2rx::plsync_cc::get_coarse_freq_corr_state ( )
pure virtual

Get the coarse frequency offset correction state.

Returns
(bool) True when the frequency offset is coarsely corrected.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_dummy_count()

virtual uint64_t gr::dvbs2rx::plsync_cc::get_dummy_count ( )
pure virtual

Get the current count of received dummy PLFRAMEs.

Returns
(uint64_t) Dummy frame count.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_frame_count()

virtual uint64_t gr::dvbs2rx::plsync_cc::get_frame_count ( )
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.

Returns
(uint64_t) Processed frame count.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_freq_offset()

virtual float gr::dvbs2rx::plsync_cc::get_freq_offset ( )
pure virtual

Get the current frequency offset estimate.

Returns
(float) Frequency offset.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_lock_time()

virtual std::chrono::system_clock::time_point gr::dvbs2rx::plsync_cc::get_lock_time ( )
pure virtual

Get the timestamp of the last frame synchronization lock.

Returns
(std::chrono::system_clock::time_point) Last frame lock timestamp in UTC.
Note
The timestamp is only valid after the first frame lock.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_locked()

virtual bool gr::dvbs2rx::plsync_cc::get_locked ( )
pure virtual

Get the current lock status.

Returns
(bool) True when the frame synchronizer is locked.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_rejected_count()

virtual uint64_t gr::dvbs2rx::plsync_cc::get_rejected_count ( )
pure virtual

Get the current count of rejected PLFRAMEs.

Returns
(uint64_t) Rejected frame count.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ get_sof_count()

virtual uint64_t gr::dvbs2rx::plsync_cc::get_sof_count ( )
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.

Returns
(uint64_t) Detected SOF count.

Implemented in gr::dvbs2rx::plsync_cc_impl.

◆ make()

static sptr gr::dvbs2rx::plsync_cc::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 )
static

Make physical layer deframer block.

Parameters
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.
Note
When 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).
The oversampling ratio (sps) parameter is only used to schedule phase increment updates (i.e., frequency corrections) to an external rotator. This block attempts to schedule frequency corrections at the start of PLFRAMEs. Nevertheless, while this block processes a symbol-spaced IQ stream, it assumes the external rotator lies before the matched filter (MF) and, as such, processes a fractionally-spaced IQ stream. Hence, when scheduling a frequency correction, this block uses the sps paramter to adjust the symbol-spaced sample offset of a PLFRAME to the corresponding fractionally-spaced offset in the rotator's input.

The documentation for this class was generated from the following file: