What are Impulse Response Functions?

Zachariah Peterson
|  Created: October 21, 2020  |  Updated: October 26, 2022
What is impulse response function Fourier transform

The first time I read about impulse response functions, it was in the context of stochastic calculus while working on a portfolio management paper. This was before I started working in the electronics industry. I didn’t go so deep as to extract impulse response functions to examine how sudden changes in asset prices are interrelated, but the underlying concept is extremely valuable for understanding physical systems. Once I started working on causal channel modeling and design techniques, I started to realize the power of understanding impulse response functions for different channel parameters.

So what is an impulse response function? As its name suggests, this function defines how something responds to some input signal, which we call an “impulse.” While it might sound arbitrary, the term “impulse” has a very precise mathematical definition that we use to characterize a channel in a high speed PCB. Example application areas include anything with Ethernet, SerDes channels, fiber channels, coax cables, and much more. Here’s how to get an impulse response function for a high speed PCB channel and how you can use it to better understand your board.

What are Impulse Response Functions?

A linear time-invariant system (which PCBs certainly are until we start using magnetic substrates) will exhibit some defined response when it receives some input signal (be it defined as a specific voltage/current/power). With currently available PCB materials, all high speed channels on a PCB substrate are linear systems, and they are certainly time-invariant (the material parameters do not change in time). Think of an underdamped RLC circuit; the response is an underdamped oscillation that decays to the final voltage. The actual time-domain waveform can be calculated directly if you know the circuit’s impulse response function.

This doesn’t just apply to RLC networks; you can easily model the response for a channel or circuit to any input signal using the channel’s impulse response function. The channel’s response R(t) to a given input signal S(t) is defined using a convolution operation with the channel’s impulse response function h(t):

What is impulse response function
A channel’s response R(t) and the input signal S(t) are related by the impulse response function.

Note that any program with basic signal processing capabilities (Mathematica or MATLAB) gives you a convolution function and will calculate the above integral for you. This integral tells me literally everything I need to know about the channel: no matter what signal I want to inject into the channel, I know what the signal will look like at the other end of the channel as long as I know h(t). This is critical for evaluating the following effects in high-speed PCBs:

If you graph an impulse response function, it looks like a pulse that enters a channel and quickly decays to zero. Note that this is just a mathematical tool that tells you how the channel responds to a delta function at t = 0. This is not the actual time-domain waveform for R(t). Getting impulse response functions for your system takes a bit of math and requires a precise interpretation.

Getting Impulse Response Functions from Measurements

Although impulse response functions are time-domain functions, they are not something you can get accurately by measuring directly. In fact, with a time-domain measurement of an impulse response, what you measure will always be bandlimited because any injected pulse on a high speed channel will never have a rise/fall time that reaches zero. You would still have to calculate some sort of transfer function, and then you’d still have to convert back to the time-domain, and each conversion produces non-causal errors (more on causality below).

For this reason, we prefer to take measurements in the frequency domain, and then convert the results back to the time domain to get the channel’s impulse response function. If you have the channel’s network parameters (S, Y, Z, T, ABCD, or H parameters), you can calculate impulse response functions from those parameters using an inverse Fourier transform:

  1. Measure the relevant network parameters for your channel (S, Y, Z, T, ABCD, or H parameters)
  2. Calculate your transfer function from these parameters (note: an S-parameter is in effect a transfer function)
  3. Take the inverse Fourier transform of the transfer function (I’ve written this as a matrix for a MIMO system):
What is impulse response function and transfer function
General form of an impulse response matrix h in terms of a parameter matrix P.

Congratulations! You have taken your network parameter measurements and calculated the impulse response function that relates to your particular parameter matrix. Interpreting an impulse response function is another matter as not all impulse response functions are created equal.

Interpreting Impulse Response Functions

This is perhaps where most ambiguities around impulse response functions arise. If you simply calculate a transfer function from your parameters, then it doesn’t matter what parameters you use. However, the various parameters you might measure (most commonly S-parameters) are themselves transfer functions. For example, S-parameters measure how the power carried by an electromagnetic wave gets transferred through a channel or circuit network. 

An impulse response function calculated from, for example, a Z-parameter does not have the same physical meaning as the impulse response calculated from, for example, the channel’s S-parameters. In fact, they don’t even have the same units! For example, the impulse response function calculated from a Z-parameter has units of Ohms/s. Perhaps the most important point a newer SI engineer may not understand is: the impulse response function does not tell you how that the impedance or any other system parameter varies in time (we’re dealing with an LTI system, so of course the impedance is not time-dependent by definition). Any impulse response function has a precise mathematical meaning that should not be taken literally as a physical interpretation.

What is more important is the actual impulse response, which is R(t) calculated with the convolution operation given above.

Cascaded Networks

What about cascaded networks? If you’re familiar with electrical network theory, then you know that a parameter matrix for a cascaded network can be found by multiplying together the matrices for individual networks. However, for S-parameters, we need to convert to either T-parameters of ABCD parameters, and multiply the matrices for these new network parameters, and convert back to the S-parameters for the cascaded network. Just as an example, consider the ABCD-parameters for two networks (A connected to B). The equivalent matrix for a signal passing from input → A → B → output is just the product of the respective ABCD-parameter matrices, as shown below.

What is impulse response function cascaded network
The impulse response function for a cascaded network (C) would just use the inverse Fourier transform of the S-parameters in the C-matrix.

You can derive a similar relation using T-parameters. In fact, MATLAB's cascaded S-parameter calculation uses the ABCD parameters to determine S-parameters for cascaded networks. To convert to ABCD parameters or T-parameters for an S-parameter network, read this reference from Caspers (Appendix 1) to find some simple formulas you can use. You can also see some examples of cascaded S-parameters in this IEEE article.

What About Causality?

The above discussion has momentarily ignored a crucial point of signal integrity simulations and modeling channel responses. This point is around causality. Basically, causality states that a channel can only respond to a signal after the signal has entered the channel.

If you want to verify causality of your channel model in terms of its relevant parameters (be they S, Y, Z, T, or H parameters), you need to look at the calculated impulse response given your channel model. If the impulse response is non-zero at any time before t = 0, then your channel model and its impulse response are non-causal. In other words, the impulse response function tells you that the channel responds to a signal before a signal is launched on the channel, which is obviously incorrect.

An example is showing impulse response causality is given below. This example shows a comparison of impulse responses in a differential channel (the odd-mode impulse response) given an input pulse (marked Input waveform in blue). The graph compares impulse responses determined with three models:

  1. The classic dispersionless transmission line model from basic transmission line theory
  2. The model in #1 with causality correction applied to the calculated S-parameters (see more on these corrections here)
  3. A model with causality correction applied to the channel propagation constant, dielectric constant, and transfer function

As we look at the rising edges of these impulse responses, we can evaluate how close to perfectly causal each of these models becomes. Because every practical model is bandlimited, you can never have perfect causality, but you can get quite close with corrections appropriately applied to channel models.

Causal impulse response
Impulse response comparison without causality correction, with basic causality correction, and with alternative causality correction applied to channel parameters. [Source]

It's quite clear that the causality correction needs to be applied to a model extracted from S-parameter measurements, or constructed from geometry/dielectric parameters on the PCB. The conclusion one draws from the above study is that causality needs to be enforced in the dielectric constant through the Kramers-Kronig relation when calculating channel behavior analytically (using the RLCG model).

In general, impulse response functions determined from measurements will not appear causal because all measurements are bandlimited. Jason Ellison discusses this all very well in a recent blog post, so I won’t repeat his comments here. Take a look at his blog to learn more about causality corrections.

Signal processing can be difficult, but once you understand what is an impulse response function and what it means for your PCB, you can implement the design you need in Altium Designer®. When you’ve finished your design, and you want to release files to your manufacturer, the Altium 365™ platform makes it easy to collaborate and share your projects.

We have only scratched the surface of what’s possible with Altium Designer on Altium 365. Start your free trial of Altium Designer + Altium 365 today.

About Author

About Author

Zachariah Peterson has an extensive technical background in academia and industry. He currently provides research, design, and marketing services to companies in the electronics industry. Prior to working in the PCB industry, he taught at Portland State University and conducted research on random laser theory, materials, and stability. His background in scientific research spans topics in nanoparticle lasers, electronic and optoelectronic semiconductor devices, environmental sensors, and stochastics. His work has been published in over a dozen peer-reviewed journals and conference proceedings, and he has written 2500+ technical articles on PCB design for a number of companies. He is a member of IEEE Photonics Society, IEEE Electronics Packaging Society, American Physical Society, and the Printed Circuit Engineering Association (PCEA). He previously served as a voting member on the INCITS Quantum Computing Technical Advisory Committee working on technical standards for quantum electronics, and he currently serves on the IEEE P3186 Working Group focused on Port Interface Representing Photonic Signals Using SPICE-class Circuit Simulators.

Related Resources

Related Technical Documentation

Back to Home
Thank you, you are now subscribed to updates.