#include <atsci_sssr.h>
This class implements data segment sync tracking and symbol timing using the method described in "ATSC/VSB Tutorial - Receiver Technology" by Wayne E. Bretl of Zenith, pgs 41-45.
Public Member Functions | |
atsci_sssr () | |
~atsci_sssr () | |
void | reset () |
call on channel change | |
void | update (sssr::sample_t sample_in, bool *seg_locked, int *symbol_index, double *timing_adjust) |
process a single sample at the ATSC symbol rate (~10.76 MSPS) |
atsci_sssr::atsci_sssr | ( | ) |
References _SSSR_DIAG_OUTPUT_, and reset().
atsci_sssr::~atsci_sssr | ( | ) |
void atsci_sssr::reset | ( | ) |
call on channel change
References sssr::quad_filter::reset(), sssr::seg_sync_integrator::reset(), and sssr::digital_correlator::reset().
Referenced by atsci_sssr().
void atsci_sssr::update | ( | sssr::sample_t | sample_in, | |
bool * | seg_locked, | |||
int * | symbol_index, | |||
double * | timing_adjust | |||
) |
process a single sample at the ATSC symbol rate (~10.76 MSPS)
This block computes an indication of our timing error and keeps track of where the segment sync's occur. timing_adjust
is returned to indicate how the interpolator timing needs to be adjusted to track the transmitter's symbol timing. If seg_locked
is true, then symbol_index
is the index of this sample in the current segment. The symbols are numbered from 0 to 831, where symbols 0, 1, 2 and 3 correspond to the data segment sync pattern, nominally +5, -5, -5, +5.
References _SSSR_DIAG_OUTPUT_, sssr::seg_sync_integrator::find_max(), gr_signbit(), sssr::seg_sync_integrator::update(), sssr::digital_correlator::update(), and sssr::quad_filter::update().
Referenced by atsc_bit_timing_loop::work().