# Delay by Less than a sampling interval

Started by 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
```