Bug When input amplitude is too large, symbol_sync_cc get stuck. Screenshot
[image: frame1] <https://user-images.githubusercontent.com/7480424/50651077-3ee5e480-0fbd-11e9-9da4-a4d7f473944f.png> [image: frame2] <https://user-images.githubusercontent.com/7480424/50651078-3f7e7b00-0fbd-11e9-8b1b-6c42ef2c4d5b.png> 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
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio