How do PCB vias affect signal quality?

I'm a novice when it comes to higher speed signals, but it just so happens I was researching signal integrity when you asked the question. One source I am referencing is Right the First Time by Lee Ritchey. You will want to check out chapter 25, Right Angle Bends and Vias: Potential Sources of Reflections and Other Problems.

I don't believe the vias will cause any problems in your design. Here is an excerpt from the source:

Vias, when used in traces, are capacitive, not inductive. The capacitance value of a via is small compared to the capacitance of a trace (3.5pF/inch for 50Ω). In general, vias are not visible to signals with edge rates slower than 0.3 ns.

The chapter goes on to discuss reflections due to PCB layer impedance mismatches, however this appears to be a case when manufacturing tolerances are not met.


300mV is a lot for a 3.3V bus. Vias will not cause a problem as a via only adds a few nH of inductance and if the capacitance on either end is lower than 100pF and a trace that short would be under 0.1Ω which would make an RLC resonator at around 1GHz, and you won't see it.

Transmission line effects don't become noticeable until 50MHz, so 4Mhz should be fine.

The most common problem on two layer boards is common mode noise from improper grounding (daisy chaining grounds) and common mode noise. So I would first look at the grounding system in the design, make sure that currents don't create common mode noise through small traces that are daisy chained.

The other problem might be with grounding and where the scope ground is placed.


The issue is not the SPI clock being too high frequency (4 MHz). It could be 0.1 Hz and the signal edges would still ring, as it's the edge rate that defines the bandwidth. Typically microcontroller IO pins are moderately strong, and can drive for example a 30pF capacitive load with 4ns rise time or 10pF capacitive load with 2.5nS rise time. That's strong enough to drive 100-120MHz signals out from a MCU, according to STM32F207 datasheet.

What you may be missing is that if your MCU does not have settable pin drive strength, you can slow down the rise/fall times to sane levels by putting for example 33 ohms series terminating resistors at the device that is driving the pins. This way the edges need less bandwidth and there is less ringing. 4MHz SPI running for 5cm of length should not be an issue, but do check what rise/fall times your chips need to work.

Another issue is that your oscilloscope might show ringing for signals just because the scope or probes have 100MHz BW limit and signal edges are fast enough to go over 100MHz BW limit.