symsync_crcf

Multi-rate symbol synchronizer for symbol timing recovery.

Variants: symsync_crcf, symsync_rrrf

Public Functions

symsync_crcf symsync_crcf_create(unsigned int _k, unsigned int _M, float * _h, unsigned int _h_len)
symsync_crcf symsync_crcf_create_rnyquist(int _type, unsigned int _k, unsigned int _m, float _beta, unsigned int _M)
symsync_crcf symsync_crcf_create_kaiser(unsigned int _k, unsigned int _m, float _beta, unsigned int _M)
symsync_crcf symsync_crcf_copy(symsync_crcf _q)
int symsync_crcf_destroy(symsync_crcf _q)
int symsync_crcf_print(symsync_crcf _q)
int symsync_crcf_reset(symsync_crcf _q)
int symsync_crcf_lock(symsync_crcf _q)
int symsync_crcf_unlock(symsync_crcf _q)
int symsync_crcf_set_output_rate(symsync_crcf _q, unsigned int _k_out)
int symsync_crcf_set_lf_bw(symsync_crcf _q, float _bt)
float symsync_crcf_get_tau(symsync_crcf _q)
int symsync_crcf_execute(symsync_crcf _q, float complex * _x, unsigned int _nx, float complex * _y, unsigned int * _ny)

Interfaces

symsync_crcf symsync_crcf_create(unsigned int _k, unsigned int _M, float * _h, unsigned int _h_len)

Create synchronizer object from external coefficients

  • _k : samples per symbol, 2 <= _k
  • _M : number of filters in the bank, 0 < _M
  • _h : matched filter coefficients, shape: (_h_len, 1)
  • _h_len : length of matched filter; \( h_{len} = 2 k m + 1 \)

symsync_crcf symsync_crcf_create_rnyquist(int _type, unsigned int _k, unsigned int _m, float _beta, unsigned int _M)

Create square-root Nyquist symbol synchronizer from prototype

  • _type : filter type (e.g. LIQUID_FIRFILT_RRC)
  • _k : samples/symbol, 2 <= _k
  • _m : symbol delay, 0 < _m
  • _beta : rolloff factor, 0 <= _beta <= 1
  • _M : number of filters in the bank, 0 < _M

symsync_crcf symsync_crcf_create_kaiser(unsigned int _k, unsigned int _m, float _beta, unsigned int _M)

Create symsync using Kaiser filter interpolator. This is useful when the input signal has its matched filter applied already.

  • _k : input samples/symbol, 2 <= _k
  • _m : symbol delay, 0 < _m
  • _beta : rolloff factor, 0 <= _beta <= 1
  • _M : number of filters in the bank, 0 < _M

symsync_crcf symsync_crcf_copy(symsync_crcf _q)

Copy object including all internal objects and state

int symsync_crcf_destroy(symsync_crcf _q)

Destroy symsync object, freeing all internal memory

int symsync_crcf_print(symsync_crcf _q)

Print symsync object's parameters to stdout

int symsync_crcf_reset(symsync_crcf _q)

Reset symsync internal state

int symsync_crcf_lock(symsync_crcf _q)

Lock the symbol synchronizer's loop control

int symsync_crcf_unlock(symsync_crcf _q)

Unlock the symbol synchronizer's loop control

int symsync_crcf_set_output_rate(symsync_crcf _q, unsigned int _k_out)

Set synchronizer output rate (samples/symbol)

  • _q : synchronizer object
  • _k_out : output samples/symbol, 0 < _k_out

int symsync_crcf_set_lf_bw(symsync_crcf _q, float _bt)

Set loop-filter bandwidth

  • _q : synchronizer object
  • _bt : loop bandwidth, 0 <= _bt <= 1

float symsync_crcf_get_tau(symsync_crcf _q)

Return instantaneous fractional timing offset estimate

int symsync_crcf_execute(symsync_crcf _q, float complex * _x, unsigned int _nx, float complex * _y, unsigned int * _ny)

Execute synchronizer on input data array

  • _q : synchronizer object
  • _x : input data array, shape: (_nx, 1)
  • _nx : number of input samples
  • _y : output data array
  • _ny : number of samples written to output buffer