Delay by Less than a sampling interval

Started by SammySmith September 29, 2009
Hi all,

Is it possible to delay digital data, by a fraction of the sampling
interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the
sampling interval.
My understanding is that it can be done with interpolation, but that would
require a higher clock. Is it possible without using a higer clock?


Regards,
Sam
On 29 Sep, 10:45, "SammySmith" <eigenvect...@yahoo.com> wrote:
> Hi all, > > Is it possible to delay digital data, by a fraction of the sampling > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > sampling interval. > My understanding is that it can be done with interpolation, but that would > require a higher clock. Is it possible without using a higer clock?
You can do something similar with a linear-phase all-pass filter. Just keep in mind that you can't produce a perfect such filter, so the end result will be an approximation of the desired result. Rune
On Sep 29, 10:45&#2013266080;am, "SammySmith" <eigenvect...@yahoo.com> wrote:
> Hi all, > > Is it possible to delay digital data, by a fraction of the sampling > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > sampling interval. > My understanding is that it can be done with interpolation, but that would > require a higher clock. Is it possible without using a higer clock? > > Regards, > Sam
Take a look at: http://www.acoustics.hut.fi/software/fdtools/ Moti
On Tue, 29 Sep 2009 03:45:01 -0500, SammySmith wrote:

> Hi all, > > Is it possible to delay digital data, by a fraction of the sampling > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > sampling interval. > My understanding is that it can be done with interpolation, but that > would require a higher clock. Is it possible without using a higer > clock? > > > Regards, > Sam
See polyphase filtering -- your example is but an oddball case of that. You'll end up with more or less the all-pass filter that Rune mentions, I'm sure. -- www.wescottdesign.com

Rune Allnor wrote:
> On 29 Sep, 10:45, "SammySmith" <eigenvect...@yahoo.com> wrote: > >>Hi all, >> >>Is it possible to delay digital data, by a fraction of the sampling >>interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the >>sampling interval. >>My understanding is that it can be done with interpolation, but that would >>require a higher clock. Is it possible without using a higer clock? > > > You can do something similar with a linear-phase all-pass filter. > Just keep in mind that you can't produce a perfect such filter, > so the end result will be an approximation of the desired result.
A very straightforward way to interpolate by a small time shift is FFT. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
On Tue, 29 Sep 2009 02:19:31 -0700, Rune Allnor wrote:

> On 29 Sep, 10:45, "SammySmith" <eigenvect...@yahoo.com> wrote: >> Hi all, >> >> Is it possible to delay digital data, by a fraction of the sampling >> interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts >> the sampling interval. >> My understanding is that it can be done with interpolation, but that >> would require a higher clock. Is it possible without using a higer >> clock? > > You can do something similar with a linear-phase all-pass filter. Just > keep in mind that you can't produce a perfect such filter, so the end > result will be an approximation of the desired result. > > Rune
But but but... If the sampled signal is band limited then the result should be exact, as a corollary to perfect reconstruction of a band limited signal. Granted, it may take an infinite amount of time to get an answer, but what's a bit of delay? -- www.wescottdesign.com
Tim Wescott <tim@seemywebsite.com> wrote:
< On Tue, 29 Sep 2009 02:19:31 -0700, Rune Allnor wrote:
 
<> On 29 Sep, 10:45, "SammySmith" <eigenvect...@yahoo.com> wrote:

<>> Is it possible to delay digital data, by a fraction of the sampling
<>> interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts
<>> the sampling interval.
(snip)
 
<> You can do something similar with a linear-phase all-pass filter. Just
<> keep in mind that you can't produce a perfect such filter, so the end
<> result will be an approximation of the desired result.

As written, I would say the answer is no.  Note that it says "fraction
of the sampling interval" not "fraction plus some integer times the
sampling interval" (otherwise called an improper fraction)...

< But but but...
 
< If the sampled signal is band limited then the result should be exact, as 
< a corollary to perfect reconstruction of a band limited signal.

For some definition of exact.  You can't get rid of the quantization
noise from the original sampling, and I believe will add more with
each resampling.  
 
< Granted, it may take an infinite amount of time to get an answer, but 
< what's a bit of delay?

The OP doesn't seem to indicate the allowable delay, other than
"a fraction of a sampling interval."   In other words, real time.

-- glen

On Sep 29, 4:45&#2013266080;am, "SammySmith" <eigenvect...@yahoo.com> wrote:
> Hi all, > > Is it possible to delay digital data, by a fraction of the sampling > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > sampling interval. > My understanding is that it can be done with interpolation, but that would > require a higher clock. Is it possible without using a higer clock? > > Regards, > Sam
If your delay (t0) is much less than half of a sample time, then y(t-t0) = y(t) - (t0)*y'(t) gives a pretty good approximation. Higher accuracy comes from extending the number of terms in the Taylor approximation. y(t-t0) = y(t) - (t0)*y'(t) + (t0^2)*y''(t)/2 - (t0^3)*y'''(t)/6 + ... Yes you do this with a bank of differentiators. If the needed delay is constant, then all of the terms may be summed to form a single FIR type of structure. An advantage of this approach is if you need variable delay. What will work best for you will depend on so far unspecified parameters. Clay
On Sep 29, 4:45&#2013266080;am, "SammySmith" <eigenvect...@yahoo.com> wrote:
> Hi all, > > Is it possible to delay digital data, by a fraction of the sampling > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > sampling interval. > My understanding is that it can be done with interpolation, but that would > require a higher clock. Is it possible without using a higer clock? > > Regards, > Sam
You haven't said how oversampled the signal is, that would make a difference. Also, if you interpolate up and decimate back down to the original rate, all of this is numerical, so I don't see why an additional clock would be required. I am guessing that problem of adding extra full samples in the delay as brought up by Glen, is not a problem. True? Clay's suggestion of using derivatives will take extra processing (filtering), the design of which will require some information about the signal bandwidth relative to the sample rate. Please provide a little more information. Dirk A. Bell DSP Consultant
On Sep 29, 4:36&#2013266080;pm, Clay <c...@claysturner.com> wrote:
> On Sep 29, 4:45&#2013266080;am, "SammySmith" <eigenvect...@yahoo.com> wrote: > > > Hi all, > > > Is it possible to delay digital data, by a fraction of the sampling > > interval. i.e. if fs=1/Ts, where fs is the sampling frequency and Ts the > > sampling interval. > > My understanding is that it can be done with interpolation, but that would > > require a higher clock. Is it possible without using a higer clock? > > > Regards, > > Sam > > If your delay (t0) is much less than half of a sample time, then > > y(t-t0) = y(t) - (t0)*y'(t) > > gives a pretty good approximation.
maybe there's something very basic that i am missing on the outset. how do you get y'(t)?
> Higher accuracy comes from extending the number of terms in the Taylor > approximation. > > y(t-t0) = y(t) - (t0)*y'(t) + (t0^2)*y''(t)/2 - (t0^3)*y'''(t)/6 + ... > > Yes you do this with a bank of differentiators.
are these differentiators causal? as i read the subject line of the thread, i think there is no phase- linear method better than linear interpolation. "sampling interval" implies a discrete-time system. "less than one sampling interval" is not meaningful if adding in some other constant delay greater than a sampling interval. so, if it's real-time, i guess Sammy will need some real-fast A/D and D/A (simple audio 1-bit codecs won't do) he can accomplish delay by less than a simapling interval by linearly interpolating between the most current two samples. y[n] = x[n]*(1-t0/T) + x[n-1]*(t0/T) oh crap! the ZOH of the D/A will put in another 1/2 sample delay, so Sammy, it would have to be greater than 1/2 sample in any case. but, if what you want is a precision delay, where the precision is much less than a sampling interval, and you can tolerate a minimum delay of a constant and integer value (say, 32 samples), then you can have two versions of the same signal but one is delayed relative to the other by much less than a sampling interval. r b-j