Signal termination is the practice of placing a resistive (or reactive) load at the end of a transmission line to absorb signal energy and prevent reflections. Without proper termination, impedance mismatches cause reflected waves that corrupt signal integrity, particularly at high frequencies or over long interconnects.
In practice
In low-speed or short-trace designs, termination is often unnecessary because the signal's rise time is slow enough that the line behaves as a lumped element rather than a transmission line. A rough rule of thumb (though different design guides use different fractions depending on topology and acceptable ringing): termination becomes important when the trace propagation delay exceeds roughly one-sixth of the signal's rise time. At that point, an unterminated line will produce visible ringing and overshoot on a scope.
Termination schemes fall into a few common categories. Series termination places a resistor (typically 22-100 ohms) near the driver to match the driver's output impedance to the line impedance. Parallel (shunt) termination places a resistor to a supply or ground at the receiver end to absorb the wave. Thevenin and AC termination are variations suited to specific bus topologies or power constraints. Differential interfaces like RS-485 and CAN almost always require a parallel termination resistor (typically 120 ohms) across the differential pair at the two ends of the bus cable; LVDS termination value and placement vary by topology and are typically specified in the component datasheet.
In embedded designs, termination comes up most often with high-speed external memory buses (DDR SDRAM on application processors), high-speed PCB traces to FPGAs, long RS-485 cable runs, CAN bus networks, and clock distribution lines. DDR memory controllers on parts like Cortex-A SoCs and i.MX or Zynq devices use on-die termination (ODT) that can be configured in software, eliminating the need for discrete termination resistors on the board for the signal groups and operating modes covered by ODT.
A common pitfall is terminating short stubs or board-level connections that do not need it: adding termination resistors to low-speed GPIO lines wastes current and can degrade signal levels. Equally common is forgetting termination on RS-485 or CAN bus cables, which causes intermittent communication errors that are difficult to reproduce without a scope or logic analyzer connected at the far end of the cable.
Frequently asked
How do I know whether a signal on my PCB needs termination?
Compare the signal's rise time to the one-way propagation delay of the trace. PCB traces propagate at roughly 150-170 ps/inch in FR4, though the actual value varies with stackup, dielectric constant, and routing geometry. If the trace delay exceeds about one-sixth of the rise time, the line is electrically long and termination should be considered. For typical GPIO toggled in firmware at moderate speeds, most short traces on a PCB do not need termination, though what matters is the signal's actual edge rate at the pad driver rather than the firmware toggle rate alone. High-speed clocks,
DDR data lines, and long differential bus cables almost always do.
What value resistor should I use for series termination?
The goal is for the series resistor plus the driver's output impedance to equal the line's characteristic impedance, which is typically 50-65 ohms for a microstrip on FR4. If the driver output impedance is around 10-20 ohms, a series resistor of 33-50 ohms is a common starting point. The exact value is often tuned on the bench by inspecting the waveform at the receiver with an oscilloscope.
Why is 120 ohms the standard termination value for RS-485 and CAN?
Both RS-485 and CAN specifications are built around twisted-pair cable with a characteristic impedance of approximately 120 ohms. Terminating with a matching resistor absorbs the traveling wave at the cable end, preventing reflections back down the bus. Using the wrong value (or omitting termination entirely) causes ringing that can be misread as valid data edges, especially at high baud rates or over long cable runs.
What is on-die termination (ODT) and when does it matter?
ODT is a programmable termination resistance built into the I/O cells of a device, commonly found in
DDR2/DDR3/DDR4
SDRAM chips and the memory controllers of application-class SoCs (such as NXP i.MX, Xilinx Zynq, and similar Cortex-A parts). The
memory controller enables and configures ODT for specific DDR signal groups and operating modes, so no discrete resistors are needed on the PCB for those signals. Correct ODT settings are typically derived from signal integrity
simulation and specified in the SoC's board design guide.
Can I leave termination resistors unpopulated and add them later if I have signal integrity problems?
Yes, and this is a common board bring-up strategy. Placing 0402 or 0603 footprints in series on high-speed lines (populated with 0-ohm jumpers initially) or parallel to ground at receivers (left unpopulated) lets you add termination resistors after probing the board. This is much easier than modifying a PCB spin. The tradeoff is that the unpopulated footprints themselves add a small stub, which matters at very high frequencies.
Differentiators vs similar concepts
Termination is sometimes confused with impedance matching in a broader RF/analog sense. In RF design, impedance matching (using L-networks, transformers, or stub tuners) maximizes power transfer at a specific frequency. PCB signal termination in digital embedded design is focused on suppressing reflections over a wide frequency range using resistive loads, typically without concern for maximizing power transfer. The two concepts share the same underlying physics but differ in technique and goal. Termination is also distinct from filtering: a series or shunt resistor used purely to reduce high-frequency noise (a snubber or RC filter on a GPIO line) is often called filtering rather than termination, even though the hardware looks similar.