What is an Impulse Response Function?

Zachariah Peterson
|  Created: October 21, 2020  |  Updated: January 25, 2021
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 is an Impulse Response Function?

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 an impulse response function for your system takes a bit of math and requires a precise interpretation.

Getting an Impulse Response Function from Measurements

Although an impulse response function is a time-domain function, it is 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 the impulse response function 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 an Impulse Response Function.

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.

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 parameters (be they S, Y, Z, T, or H parameters), you simply need to look at the impulse response function. If the impulse response function is non-zero at any time before t = 0, then the impulse response function is 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.

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®. Altium Designer on Altium 365® delivers an unprecedented amount of integration to the electronics industry until now relegated to the world of software development, allowing designers to work from home and reach unprecedented levels of efficiency.

We have only scratched the surface of what is possible to do with Altium Designer on Altium 365. You can check the product page for a more in-depth feature description or one of the On-Demand Webinars.

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 1000+ technical blogs on PCB design for a number of companies. He is a member of IEEE Photonics Society, IEEE Electronics Packaging Society, and the American Physical Society, and he currently serves on the INCITS Quantum Computing Technical Advisory Committee.

most recent articles

Back to Home