Skip to content

Delay Circuits

Published On:
Oct 28, 2024
Last Updated:
Nov 3, 2024

Delay circuits are used to delay the progression of a analogue or digital signal through a circuit. You may want to delay a signal to:

  • Allow time for a circuit to settle.
  • Debounce a switch.
  • Create an audio delay/reverb effect.
  • Create an oscillator at a specific frequency (e.g. feeding back the output of three inverters connected in series creates an oscillator).
  • Delay user interactions.

This page covers a range of techniques for creating delays, including RC/Schmitt trigger circuits, 555 timers, long pieces of wire, delay line ICs, bucket brigade ICs, and microcontrollers.

RC with Schmitt Trigger

A RC circuit combined with Schmitt triggers can be used to create a digital delay. The RC circuit converts a sharp input transition into a slower transition based on the RC circuit time constant. The Schmitt trigger then “sharpens” up the edges again by switching it’s output quickly when the input reaches certain thresholds. This is a placeholder for the reference: fig-schmitt-trigger-delay-single-rc shows the circuit. This uses two inverting Schmitt triggers — the purpose of the second one (U2) is to re-invert the signal so it is the same polarity as the input.

A delay circuit made from a RC circuit and a Schmitt trigger.

This is a placeholder for the reference: fig-schmitt-trigger-single-rc-waveforms shows the waveforms for the single RC delay circuit. Notice how the delays are not symmetrical. The delay for the low-to-high transition is longer than the high-to-low transition. This can be fixed by adding another RC circuit between the two Schmitt triggers (more on this below).

One downside to this circuit is that there is a “cooldown” period between transitions. This is the time it takes to the RC circuit to settle so that it can work correctly for the next transition. As such, the cooldown is normally about 5τ5\tau (5 time constants) where τ=RC\tau = RC. If transitions occur within this cooldown period, the circuit will not work as expected, sometimes transitioning to quickly (the RC circuit has not settled yet, and already has a head-start in going back in the other direction), or not transitioning at all (e.g. a transition to high and then back to low before the output has switched would result in no output change).

Design Procedure

You generally want to pick a capacitance in the range of 100pF100\,pF to 1μF1\,\mu F. This is because if the capacitance is lower than 100pF100\,pF, parasitic capacitance (typically in the 120pF1-20pF range) will be have a significant effect on the delay. Capacitances higher than 1μF1\,\mu F start to get more expensive, are physically larger, and start to use dielectrics (e.g. X7R or X5R) which cause the capacitance to significantly vary with voltage.

The 74HC14 “Hex Inverter with Schmitt Trigger Inputs” family of ICs are commonly used as the Schmitt trigger. You would then pick a resistance to give the desired delay. To do this, we need to use the RC charging equation (see the RC Charging Circuits page for more info).

V=VCC(1e[tRC])\begin{align} V = V_{CC} (1 - e^{ \large{\left[ \frac{-t}{RC} \right]} }) \end{align}

In this situation, VV would be the threshold voltage (VT+V_{T+} or VTV_{T-} depending on the transition direction), VCCV_{CC} is the supply voltage, tt is the desired delay time, and CC is the capacitance.

We need to rearrange this equation to solve for RR:

V=VCC(1e[tRC])VVCC=1e[tRC]e[tRC]=1VVCCtRC=ln(1VVCC)RC=tln(1VVCC)R=tln(1VVCC)C\begin{align} V &= V_{CC} (1 - e^{ \large{\left[ \frac{-t}{RC} \right]} }) \nonumber \\ \frac{V}{V_{CC}} &= 1 - e^{ \large{\left[ \frac{-t}{RC} \right]} } \nonumber \\ e^{ \large{\left[ \frac{-t}{RC} \right]} } &= 1 - \frac{V}{V_{CC}} \nonumber \\ \frac{-t}{RC} &= \ln(1 - \frac{V}{V_{CC}}) \nonumber \\ RC &= \frac{-t}{\ln(1 - \frac{V}{V_{CC}})} \nonumber \\ R &= \frac{-t}{\ln(1 - \frac{V}{V_{CC}})C} \htmlId{eqn-schmitt-trigger-delay-resistance}{} \\ \end{align}

Symmetrical Delays

The circuit shown in This is a placeholder for the reference: fig-schmitt-trigger-delay-single-rc does not have symmetrical delays. The delay for the low-to-high transition is longer than the high-to-low transition. This will occur whenever the VT+V_{T+} and VTV_{T-} thresholds for the Schmitt trigger are not symmetrical around the midpoint of the supply voltage. This perfect condition is unlikely to occur in practise. This is a placeholder for the reference: tbl-schmitt-trigger-symmetry summarises the typical thresholds for the SN74HC14 and calculates the center point of these thresholds. As you can see, they are not equal to 0.5 (but pretty close, being in the range of 0.44 to 0.46).

VCC VT+V_{T+} (typ.) Ratio of VCC VTV_{T-} (typ.) Ratio of VCC Thresholds Mid-point (ratio of VCC)
2V 1.2V 0.6 0.6V 0.3 0.45
4.5V 2.5V 0.56 1.6V 0.36 0.46
6V 3.3V 0.55 2V 0.33 0.44
The threshold mid-points (as a ratio of VCC) for the Texas Instruments SN74HC141.

By adding another RC circuit between the two Schmitt triggers as shown in This is a placeholder for the reference: fig-schmitt-trigger-delay-symmetrical, the delay time for the positive and negative going transitions can be made to be the same (well…more equal, there is still a rather large manufacturing tolerance for VT+V_{T+} and VTV_{T-}).

A RC/Schmitt trigger delay circuit with symmetrical positive and negative going delays.

When doing this you will want to split your delay time evenly between the two RC circuits (i.e. identical RC circuits). You can use the same process as in the example above with a single RC element, but set tt to half the desired delay time.

555 Timer

555 timers can be configured to create a variable digital delay. This is a placeholder for the reference: fig-555-timer-delay shows a circuit using a 555 timer configured in monostable mode. It will output a fixed width pulse after a high-to-low transition on the input.

A 555 timer configured to output a fixed width pulse after a high-to-low transition on the input.

The width of the output pulse is determined by the values of R1R_1 and C1C_12:

tpulse=1.1R1C1\begin{align} t_{pulse} &= 1.1 R_1 C_1 \\ \end{align}

Note one of the key behaviours with the circuit in This is a placeholder for the reference: fig-555-timer-delay is that when the input transitions from high-to-low, the output only stays high for a fixed amount of time before returning to it’s original state. You could view it more of a pulse generator than a delay circuit.

I’m not sure if you can easily use 555 timers to delay input transitions and have the output stay in the same state as the input indefinitely (until the next input transition) as you can with the RC/Schmitt trigger circuit. My guess is yes, but I haven’t put the time/energy into working out how. You would also have to consider what happens if the input changes before the output has “caught up”.

A Long Piece of Wire

It sounds almost too simple, but a suitably sized length of wire (or fibre-optic cable) can be used to create short delays. The propagation of an electrical signal in copper wire is fast (around 0.7c, where c is the speed of light in a vacuum), but not instant! Light travels about 30cm in one nanosecond, so you can get delays in the 0.1 to 100ns+ range with right length of cable.

The propagation of an electrical signal down a wire.

A great thing about this technique is that it works for both digital and analogue and is bi-directional. This is a common technique in oscilloscopes. The exact speed of the signal depends on many factors including the dielectric surrounding the copper wire. Most sources give a speed of around 0.7c for a signal in a typical copper wire3.

An interesting application of this technique was used by the IEX stock exchange. High-frequency traders typically leverage microsecond-scale delays inherent in stock market information to “game” the market. This style of trading (latency arbitrage) is generally viewed negatively and not conducive to a healthy market. To combat this, IEX created a “Speed Bump” (shown in This is a placeholder for the reference: fig-iex-speed-bump-fibre-optic-cable) which contained 61km of fibre optic cable, that they routed all traffic to their stock market through5. This spool of cable introduced a 350us delay to all market data, allowing multiple markets time to adjust to new data, and preventing latency arbitrage from being profitable6. The neat physical delay trick also side-stepped many of the legal issues around reliability and control had they implemented the delay in software.

The “Speed Bump” at the IEX stock exchange5.

Chains of Inverter Gates

A chain of inverter gates can be used to create a digital delay. You utilize the propagation delay (the time it takes for the input signal to appear at the output) of the inverter gates to create the delay. Most inverter gates have propagation delays from 0.5-10ns, so this approach is useful for short delays. You can do this yourself if delay does not need to be very precise (tpdt_{pd} only gives an approximation of the total delay) or long (chaining together hundreds of discrete gates starts to become impractical). If you want more precision or length, consider using a dedicated delay line IC (see below).

A series of inverter gates creating a digital delay.

Delay Lines

Delay lines are digital ICs which can delay a digital signal by a certain amount of time. Many of these delay line ICs work internally by using a long chain of inverter gates (very similar to how you would wire them discretely), but also with advanced circuitry to compensate for voltage and temperature variations and keep the delays accurate. Most also provide “taps” which are pins that connect to various points along the inverter gates. Dallas Semiconductor pioneered this technology with the production of the DS1000, DS1100, DS1135, DS1110, DS1077, DS1085 and DS1086 ICs8.

This is a placeholder for the reference: fig-ds1135-internal-circuitry shows the internal circuitry of the Analog Devices DS1135 “3-in-1 Delay Line” IC8.

The internal circuitry of the Analog Devices DS1135 “3-in-1 Delay Line” IC8.

One example is the Analog Devices (formerly Dallas Semiconductor/Maxim) DS1110L “3V 10-Tap Silicon Delay Line” IC9.

Bucket Brigade Devices

Bucket brigade devices (BBDs) are analogue delay ICs which work by “shuffling” sampled inputs voltages along a chain of capacitors until it reaches the output. They were commonly used in early audio processing systems, and still find use today in specialty items such as guitar effect pedals10.

This is a placeholder for the reference: fig-bucket-brigade-delay-basic-internal-schematic shows the basic internal design of a basic bucket brigade IC.

The basic internal design of a bucket brigade IC11.

BBDs usually have quite a number of buckets in them! Common sizes include 256, 512, 1024, 2048, and 4096 buckets per chip. Because they were designed for audio, delays ranged from about 5 ms to 200 ms12. Delays longer than this can be achieved by chaining multiple BBDs together.

Microcontroller

Of course, a microcontroller can be used to delay both digital and analogue signals. You would need basic GPIO to interface with digital signals, and a ADC and DAC for analogue signals. Combined with some memory (typically RAM) setup as a FIFO buffer, you can create a delay of your choosing. You will want to choose a sample rate that is at least 2 times higher than the highest frequency you want to delay (i.e. obey the Nyquist-Shannon sampling theorem). For analogue signals, the bit depth of the ADC and DAC will determine the resolution of the signal, and combined with the sample rate and desired delay time, will determine how much memory you will need.

This is a placeholder for the reference: fig-mcu-delay shows a pseudo-circuit (high-level diagram) illustrating how to create an analogue delay using a microcontroller.

A pseudo-circuit illustrating how to create an analogue delay using a microcontroller.

Using a microcontroller could be the best approach if you:

  • Already have microcontroller.
  • Need to delay complex analogue signals.
  • Need the delay to be highly configurable and/or updatable in the field (i.e. via a bootloader).
  • The signal already passes through the microcontroller.

Using a microcontroller is probably not the best option if:

  • All you need is a simple digital delay.
  • It needs to be really quick (1-20ns range).
  • You don’t already have a microcontroller.
  • The delay needs to be very reliable (e.g. not affected by firmware bugs or higher priority interrupts).

Footnotes

  1. Texas Instruments (2021, Jun). SNx4HC14 Hex Inverters with Schmitt-Trigger Inputs [datasheet]. Retrieved 2024-10-29, from https://www.ti.com/lit/ds/symlink/sn74hc14.pdf. 2 3

  2. Texas Instruments (2014, Sep). NA555, NE555, SA555, SE555 - xx555 Precision Timers [datasheet]. Retrieved 2024-11-03, from https://www.ti.com/lit/ds/symlink/sa555.pdf.

  3. Physics StackExchange (2019, Jun 2). Speed of Signals in a Wire vs Fiber Optic Cable. Retrieved 2024-11-01, from https://physics.stackexchange.com/questions/274886/speed-of-signals-in-a-wire-vs-fiber-optic-cable.

  4. Wikipedia (2024, Sep 7). Speed of electricity. Retrieved 2024-11-01, from https://en.wikipedia.org/wiki/Speed_of_electricity.

  5. IEX. Technology > The Speed Bump. Retrieved 2024-11-01, from https://www.iexexchange.io/technology#the-speed-bump. 2

  6. Dan Maloney (2019, Oct 31). Putting The Brakes on High-Frequency Trading with Physics. Hackaday. Retrieved 2024-11-01, from https://hackaday.com/2019/02/26/putting-the-brakes-on-high-frequency-trading-with-physics/.

  7. Diodes Incorporated (2013, Jan). 74HC04 Hex Inverters [datasheet]. Retrieved 2024-11-01, from https://www.diodes.com/datasheet/download/74HC04.pdf.

  8. Analog Devices (2002, Aug 30). How Delay Lines Work. Retrieved 2024-10-30, from https://www.analog.com/en/resources/technical-articles/how-delay-lines-work.html. 2 3

  9. Analog Devices (formerly Dallas Semiconductor/Maxim) (20023, Nov). DS1110L - 3V 10-Tap Silicon Delay Line. Retrieved 2024-10-30, from https://www.analog.com/media/en/technical-documentation/data-sheets/DS1110L-DS1110LE-500.pdf.

  10. Wikipedia (2024, Oct 13). Bucket brigade device. Retrieved 2024-11-01, from https://en.wikipedia.org/wiki/Bucket-brigade_device.

  11. ElectroSmash. Bucket Brigade Devices: MN3007. Retrieved 2024-11-02, from https://www.electrosmash.com/mn3007-bucket-brigade-devices.

  12. Gerlt Technologies. Bucket Brigade Delay ICs (BBDs). Retrieved 2024-11-01, from https://www.gerlttechnologies.com/index.php/more-info/components/173-bucket-brigade-delay-ics-bbds.