Let's see if I've managed to learn anything by trying to understand ground bounce / Vcc droop on a trivial clock circuit. The oscillator I have is a MXO45HS (datasheet attached). The test circuit shown in the datasheet is:
Attachment:
File comment: Test Circuit
Screenshot 2024-08-18 at 4.04.32 PM.png [ 74.44 KiB | Viewed 5010 times ]
As ever, my understanding is weak but I am interpreting the mA and VM symbols to be "meters" - that is, not really in the circuit, but labels for the operating current and operating voltage. So the circuit I built started with just the oscillator, and not even the 0.01μF capacitor that is called for on the input side, and I didn't verify that my oscilloscope probes were under the capacitance required for the output but just assumed that was the case (if I am reading the datasheet correctly, for my 1Mhz oscillator the probe capacitance has to be below 50 picofarads). With the circuit in this state and channel 1 probing the voltage from the ground pin of the oscillator to its Vcc pin, the scope shows this trace:
Attachment:
File comment: Just the crystal
1_justcrystal.png [ 3.19 KiB | Viewed 5010 times ]
With the 0.01μF capacitor across the power rails of the breadboard, the scope shows:
Attachment:
File comment: 0.01μF
2_datasheet.png [ 3.1 KiB | Viewed 5010 times ]
With an additional 1000μF capacitor from the ground rail of the breadboard to the power pin of the oscillator, the scope shows:
Attachment:
File comment: 1000.01μF
3_1000μF.png [ 3.17 KiB | Viewed 5010 times ]
If I move the ground probe of the scope to be across the legs of the 1000μF capacitor, we get:
Attachment:
File comment: Measuring across the 1000μF capacitor
3b_capmeasure.png [ 2.94 KiB | Viewed 5010 times ]
So, what does all this add up to in my updated understanding?
Initially, I was expecting the capacitors to make a difference to the voltage between the ground pin and the output pin of the oscillator. But they don't. The final image shows that the 1000μF capacitor is
working, so the issue must be the reactance in the wiring and the breadboard between the ground rail of the breadboard and the ground pin of the oscillator - that is, even though the capacitors are trying to keep the ground at level, the reactance in the wiring is actually measurable on my scope, so that when the leading (edited) edge of the clock arrives the "inertia" of electrons arriving at the ground pin means they aren't coming in fast enough, and so the voltage between the ground pin and Vcc falls. Presumably the closer I can get the bypass capacitor to the ground pin of the oscillator, the more I can reduce the effect.
Does that explanation sound correct, or am I misunderstanding or misusing my oscilloscope?
Even if I am understanding correctly, the amount of bounce I am measuring across the device doesn't look significant. But, I could put the scope across other chips in my real computer circuit looking for traces where I am playing with the tolerances on the datasheets, and presumably capture a trace of ground bounce if it was in fact significant enough to flip a bit. Such a trace should be possible to capture when running the circuit at 4Mhz, which is the speed at which the computer currently fails ...
As a bonus distraction, I tried putting the clock signal through a 74HC04 inverter gate, and the result was:
Attachment:
File comment: Inverted
4_inverted.png [ 2.68 KiB | Viewed 5010 times ]
which seemed to me to suggest that the HC chip both took out the overshoot on the clock signal and very slightly softened the edge. Whether that's useful or not I don't know.