Hi guys, I am trying to use gnuradio channel_model to do some simulation right now, and I found something is not consistent in the implementation of the channel_model C++ code. Here is my confusion:
In gnuradio-core/src/lib/hier/gr_channel_model.cc : line 57 d_timing_offset = gr_make_fractional_interpolator_cc(0.0, epsilon); defines the timing offset filter as a fractional interpolator. In ./gnuradio-core/src/lib/filter/gr_fractional_interpolator_cc.cc or its implementation, we can see that the constructor's first argument is `phase_shift' and the second arg is 'interp_ration'. From my point of view, `interp_ration' defines the number of input to output ratio, so if it is less than 1.0, this filter gives more output items than what it is input; And the `phase_shift' defines the relative phase of the interpolated sample. However, timing offset should be a metric of phase shift based on symbol timing T instead of `interpolation ratio'. In our software implementation, M=Ts/T >=2, which means the interpolator can only model timing offset at most 1/M, even so, line 57 of gr_channel_model.cc should be d_timing_offset = gr_make_fractional_interpolator_cc(epsilon, 1.0); And many other files using this channel model would then not need to define its timing offset (like example_timing.py, qa_constellation_receiver.py etc.) to be 1.0 to make things correct. I wonder if everyone agrees with this, or I am wrong about this? Thanks. Regards Wang Ning _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio