Stressing "average rate"! In GNU Radio, samples are processed in as much
space there's output buffer and/or how many samples a block wants to
consume or produce at once.

In the case of throttle, a single call to its work() method takes all
the input there is (let's say it's 8000 samples in this round; the value
depends on how the flow graph operates, and can and will change from
iteration to iteration!), copies it to the output buffer (the sync_block
idiom in GNU Radio ensures that there's always at least as much output
space available as input, so the min(input available, output space
available) is handed to the work() function), and then  just waits as
long as it needs to wait: simply n_samples_copied * sampling_rate. That
means that if you set the sampling rate to 1, the throttle will block
execution for 8000s, and then the downstream block will be informed that
there are 8000 new items to be processed. A common misconception is that
setting a sampling rate would make throttle emit 1 sample every
1/sampling rate, which is not the case.

This, by the way, is the reason why it's *always* bad to have a throttle
block connected to some hardware sink, even if the hardware sink's
sampling rate is lower than the throttle's rate; the "chunky" nature of
passing samples makes it likely that the samples simply don't reach the
hardware sink in time.

Best regards,

Marcus


On 23.07.2016 03:51, Martin Braun wrote:
> On 07/22/2016 04:38 PM, Lakshay Narula wrote:
>> Thanks Martin, that was exactly what I was looking for. 
>>
>> Would the following statement be correct: the GNU Radio flowgraph always
>> produces samples as fast as the CPU can (irrespective of the set sample
>> rate or throttle), and stops producing whenever the USRP sink buffer is
>> full.
> Yup.
>
>> Also, does the throttle block work in a similar fashion?
> That block blocks work() such that the average rate through it is what
> it's set to to.
>
> M
>> Thanks again,
>> Lakshay.
>
> _______________________________________________
> 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

Reply via email to