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 N.