HI Marcus, Thank you so much for your help!
Since there's one iteration per output sample and the number of taps of filtering is 8 (fixed), the time it takes to do one iteration is fixed no matter what resampling ratio I set. What slows things down is: as the resampling ratio increase, the number of iteration increases given a fixed number of input items. I just want to make sure I understand things correctly :) I set the resampling ratio to be (1/67.5) at transmitter, I noticed that (1/67.5) doesn't work as good as the integer (1/64.0), does it mean fractional part will also slow things down? Thanks, Yang On Mon, Oct 23, 2017 at 5:47 AM, Marcus Müller <muel...@kit.edu> wrote: > Hi Yang, > > for questions of performance, it's usually best to consult the source code > itself. By the way, fractional_resampler_** has been renamed > mmse_resampler_** on git's "next" branch. > > You'll notice the code in {mmse_|fractional_}resampler_cc_impl.cc is: > > while(oo < noutput_items) { > out[oo++] = d_resamp->interpolate(&in[ii], d_mu); > > double s = d_mu + d_mu_inc; > double f = floor(s); > int incr = (int)f; > d_mu = s - f; > ii += incr; > } > > consume_each(ii); > return noutput_items; > > > Which means there's one iteration per output sample, invariably, no matter > what your resampling ratio is. > What would increase the performance is reducing NTAPS in > {mmse_|fractional_}interpolator, but since that is already only 8, which, > with a bit of SIMD, your CPU does in a single instruction, I don't seem > that much room for improvement there. > The other thing would be reducing NSTEPS, but it's already but a 7 bit > quantization of the *q* in *r*ᵣₑₛₐₘₚₗₑ = *n* + *q*, *n*∈ℕ₀, 0≤*q*∈ℚ, so > I'm not convinced you'd want to do that; the jitter you get for a *b* bit > quantization (i.e. *b*=log₂ NSTEPS) has a variance of (-20*b* log₁₀ 2-10 > log₁₀ 12) dB ≈ -(6*b* + 10.8) dB (hoping that I do the math right). If I > juggle Cauchy's mean value theorem correctly in my head, that means you > basically get that (times the signal power) as the worst-case power in the > phase noise introduced by the timing approximation with a critically > sampled signal. If I'm right (really, haven't taken the time to write this > down), then that means e.g. for NSTEPS=128, that you get -52.8 dB phase > noise, whereas a reduction to let's say NSTEPS=16 gives you 24 dB more > noise – and -28.8 dB phase noise isn't all that great. > > What are the resampling ratios you're working with? > > Best regards, > Marcus > > > On 2017-10-23 05:31, Yang Liu wrote: > > Dear all, > > I used fractional resampler(gr::filter::fractional_resampler_cc) at > transmitter side to help up sample the signal to the device sample rate > before sending it out. In the experiment, I found that this resampler works > well for some resample ratio (in terms of speed), and the performance > (speed) doesn't necessarily improve as the resample ratio decreases. > > Therefore, I am wondering whether this resampling block indeed works > better for some sets of resampling ratio? If yes, what are these sets? > Knowing this will help me to set the parameters at tx properly especially > when the sample rate is high :) > > Thanks a lot for your help. > > Best, > Yang > > > _______________________________________________ > Discuss-gnuradio mailing > listDiscuss-gnuradio@gnu.orghttps://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio