# 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.

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.

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