[Discuss-gnuradio] symbol_sync_cc stuck when error too large (resulting
From:
WarMonkey
Subject:
[Discuss-gnuradio] symbol_sync_cc stuck when error too large (resulting d_avg_period goes negative)
Date:
Mon, 7 Jan 2019 20:24:57 +0800
Bug
When input amplitude is too large, symbol_sync_cc get stuck.
Screenshot
Tracing
in file symbol_sync_cc_impl.cc line 537: error = -488.4; advance_loop(error);
in file clock_tracking_loop.cc line 128 function advance_loop(float error) : before: d_avg_period=10.771521, d_beta=0.0090558, error=-488.4; d_avg_period = d_avg_period + d_beta * error; after: d_avg_period = -0.417 out of range [d_min_avg_period, d_max_avg_period]
back to file symbol_sync_cc_impl.cc line 540: d_clock->phase_wrap();
in file clock_tracking_loop.cc line 145 function phase_wrap()
phase = -87.227, limit=-0.417/2=-0.20895, now we stuck in these while loops; ps: i think period should be d_avg_period, because avg period is estimated symbol period. when loop bandwidth relatively larger ( 0.05~0.25 ), limiting d_inst_period can make tracking error larger, even loop unlock. i'll benchmark both later.
Workaround
apply limit to d_avg_period immediately after d_avg_period changed
in file clock_tracking_loop.cc line 127
Ultimate solution
check every input, state and output in range when calculate control loop
Bug
When input amplitude is too large, symbol_sync_cc get stuck.
Screenshot
Tracing
error = -488.4;
advance_loop(error);
before: d_avg_period=10.771521, d_beta=0.0090558, error=-488.4;
d_avg_period = d_avg_period + d_beta * error;
after: d_avg_period = -0.417
out of range [d_min_avg_period, d_max_avg_period]
d_clock->phase_wrap();
phase = -87.227, limit=-0.417/2=-0.20895, now we stuck in these while loops;
ps: i think period should be d_avg_period, because avg period is estimated symbol period. when loop bandwidth relatively larger ( 0.05~0.25 ), limiting d_inst_period can make tracking error larger, even loop unlock. i'll benchmark both later.
Workaround
apply limit to d_avg_period immediately after d_avg_period changed
Ultimate solution