Hi Marcus, Good point; but this is just for demonstration purposes here. I can tie it to USRP Source/Sink.
The delta (measured in samples) should still be consistent, no matter what. Best, Lukas > Gesendet: Mittwoch, 26. Februar 2020 um 15:25 Uhr > Von: "Marcus D Leech" <patchvonbr...@gmail.com> > An: "Lukas Haase" <lukasha...@gmx.at> > Cc: "discuss-gnuradio@gnu.org" <discuss-gnuradio@gnu.org> > Betreff: Re: How ensure consistency with timing signals > > Something to understand about the throttle block is that it doesn’t guarantee > a precise sample rate. Just that the long term average rate is what you > expect. > > Sent from my iPhone > > > On Feb 26, 2020, at 12:09 PM, Lukas Haase <lukasha...@gmx.at> wrote: > > > > Hello, > > > > I use a square wave to generate control/clocking signal for some control > > logic: > > > > https://snipboard.io/WQ8p6d.jpg > > > > The work function of the "Controller" block looks like: > > > > def work(self, input_items, output_items): > > d = np.diff(input_items[0]) > > inds = np.where(d == 1) > > for ind in inds[0]: > > nedge = self.nitems_read(0) + ind > > delta = nedge - self.nedge_prev > > print("EDGE @ " + str(nedge) + ", Delta=" + str(delta)) > > self.nedge_prev = nedge > > return len(output_items[0]) > > > > I.e., it detects the rising edge. The code above stores the previous edge > > and shows the delta between them. > > If the frequency of the square wave exactly divides the sampling rate, I > > would expect that this delta is always constant/consistent (and I need this > > for my application). > > > > However, with samp_rate=5M and freq=10: > > > > EDGE @ 10751169, Delta=500054 > > EDGE @ 11251224, Delta=500055 > > EDGE @ 11751278, Delta=500054 > > EDGE @ 12251332, Delta=500054 > > EDGE @ 12751387, Delta=500055 > > EDGE @ 13251441, Delta=500054 > > EDGE @ 13751496, Delta=500055 > > EDGE @ 14251550, Delta=500054 > > > > One interval is not only not always constant but is 54/55 samples larger > > than the expected 500000. > > When making the interval small (e.g., samp_rate=5M, freq=1k, it works: > > > > EDGE @ 65072534, Delta=5000 > > EDGE @ 65077534, Delta=5000 > > EDGE @ 65082534, Delta=5000 > > EDGE @ 65087534, Delta=5000 > > EDGE @ 65092534, Delta=5000 > > EDGE @ 65097534, Delta=5000 > > EDGE @ 65102534, Delta=5000 > > > > I tried tried offsetting the frequency by a slight but but no change. E.g., > > freq = 1.0 / (1.0/10 - 1.0/samp_rate) > > > > I know I could implement a logic that adds a constant directly in the work > > function but to keep things manageable I would really prefer to use clock > > signals (there will be a bunch of them floating around in the end). > > > > > > Thanks, > > Lukas > > > > > > > > >