Symbol Sync: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(Not only link to PDF of GRCON17 talk but the landing page with video as well; minor cosmetics)
Line 14: Line 14:
[[File:symbol_sync_1.png|400px]]
[[File:symbol_sync_1.png|400px]]


For the GNU Radio Conference 2017 presentation on this block, see
See the [https://www.gnuradio.org/grcon/grcon17/presentations/symbol_clock_recovery_and_improved_symbol_synchronization_blocks/ GNU Radio Conference 2017 presentation] on this block (PDF slides and Video).
[[https://github.com/gnuradio/gnuradio/files/2911247/Samples_to_Digital_Symbol_AWalls_20170912a.pdf]]
 
Example flowgraphs using this block can be found [https://github.com/gnuradio/gnuradio/tree/master/gr-digital/examples/demod here]


Example flowgraphs using this block can be found here: https://github.com/gnuradio/gnuradio/tree/master/gr-digital/examples/demod


== Parameters ==
== Parameters ==

Revision as of 09:53, 18 May 2021

Symbol sync block.png

Symbol Sync is a type of symbol synchronizer that performs a bunch of tasks typically required to receive/decode a digital signal from over the air, listed below. This block acts as an improvement to the Clock Recovery and Polyphase Clock Sync blocks.

1. Estimates and tracks symbol rate (i.e. number of samples per symbol), given an initial estimate of samples per symbol and an allowable deviation from that estimate.

2. Performs the timing synchronization needed so that the signal is sampled at exactly the right moment in time, which is when each symbol/pulse is at its max value (see diagram below).

3. Decimate the signal so that what comes out of the block is 1 sample per symbol (or multiple if the user would like, but it's usually set to 1 or sometimes 2).

4. Filter signal appropriately

Symbol sync 1.png

See the GNU Radio Conference 2017 presentation on this block (PDF slides and Video).

Example flowgraphs using this block can be found here


Parameters

Timing Error Detector (TED)
The enumerated type of timing error detector to use. See enum ted_type for a list of possible types.
Samples per Symbol
User specified nominal clock period in samples per symbol.
Expected TED Gain
Expected gain of the timing error detector, given the TED in use and the anticipated input amplitude, pulse shape, and Es/No. This value is the slope of the TED's S-curve at timing offset tau = 0. This value is normally computed by the user analytically or by simulation in a tool outside of GNURadio. This value must be correct for the loop filter gains to be computed properly from the desired input loop bandwidth and damping factor.
Loop BW
Approximate normalized loop bandwidth of the symbol clock tracking loop. It should nominally be close to 0, but greater than 0. If unsure, start with a number around 2*pi*0.04, and experiment to find the value that works best for your situation.
Damping Factor
Damping factor of the symbol clock tracking loop. Damping < 1.0 is an under-damped loop. Damping = 1.0/sqrt(2.0) is a maximally flat loop response. Damping = 1.0 is a critically-damped loop. Damping > 1.0 is an over-damped loop. Start with critically damped or over-damped. An under-damped loop is usually not desirable for timing recovery.
Max Deviation
Maximum absolute deviation of the average clock period estimate from the user specified nominal clock period in units of samples per symbol. Smaller is better for acquiring lock at start of burst. Too small misses data when symbol clock is far from nominal.
Output Samples/Symbol
The number of output samples per symbol (default=1). Normally set to 1; or to 2 if upstream from an equalizer block.
TED Slicer Constellation
A constellation obj shared pointer that will be used by decision directed timing error detectors to make decisions. I.e. the timing error detector will use this constellation as a slicer, if the particular algorithm needs sliced symbols.
Interpolating Resampler Type
The enumerated type of interpolating resampler to use. See the interpolating resampler type enum for a list of possible types.
Num Filters (if using certain resamplers)
The number of arms in the polyphase filterbank of the interpolating resampler, if using an interpolating resampler that uses a PFB.
PFB Taps (if used certain resamplers)
The prototype filter for the polyphase filterbank of the interpolating resampler, if using an interpolating resampler that uses a PFB.

Usage Hints and Gotchas

1. Input signal should be at a consistent amplitude (e.g., +/- 1.0), so consider an AGC before this block. TEDs have specific assumptions about input amplitudes!

2. For decision directed TEDs (M&M, Modified M&M, Zero Crossing), the input signal amplitude should match constellation. Note that GNU Radio's Constellation Object silently scales your constellation!

3. Input signal should not have a DC offset

4. Input signal should be peaked at symbol centers, except for MSK signals and MSK TEDs. This requirement will normally be accomplished by the matched filter which occurs before the Symbol Sync block, unless you use the PFB, MF resampler which does the matched filtering for you.

Block Diagram of Block

Symbol sync 2.png