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
Delay by Less than a sampling interval
Started by ●September 29, 2009
Reply by ●September 29, 20092009-09-29
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
Reply by ●September 29, 20092009-09-29
On Sep 29, 10:45�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, > SamTake a look at: http://www.acoustics.hut.fi/software/fdtools/ Moti
Reply by ●September 29, 20092009-09-29
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, > SamSee 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
Reply by ●September 29, 20092009-09-29
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
Reply by ●September 29, 20092009-09-29
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. > > RuneBut 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
Reply by ●September 29, 20092009-09-29
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
Reply by ●September 29, 20092009-09-29
On Sep 29, 4:45�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, > SamIf 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
Reply by ●September 29, 20092009-09-29
On Sep 29, 4:45�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, > SamYou 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
Reply by ●September 29, 20092009-09-29
On Sep 29, 4:36�pm, Clay <c...@claysturner.com> wrote:> On Sep 29, 4:45�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