# How does the oscilloscope trigger really work?

I'm trying to learn more about digital oscilloscopes, especially triggering. Here is how I think the trigger works: Let's say I set the trigger to edge mode, and the level to 5V. When the signal measured then hits 5V, the scope's ADC activates and it starts to sample the signal. Some amount of data points are gathered, and these are plotted on the screen. Then there is a small "dead time" after which the scope again waits for the trigger condition to be met, and the same amount of data points are gathered again. These should now line up with the previous set of samples, and therefore the scope output looks stable on the screen.

The time axis is something I don't completely understand. I believe that the origin of the grid, where the highlighted dotted lines intersect, is the triggering point. At that point (at "t = 0") the voltage should be equal to the trigger level voltage. Am I correct so far? The thing is, this is not always the case with my oscilloscope. Sometimes the voltage at the origin is not equal to the trigger level, and the signal even drifts slowly to either direction. What causes the signal to drift even if the trigger is set?

Another confusion that I have: I've seen the right side of the origin called the "post-trigger" data and the left side "pre-trigger" data. How is there data from before the trigger, if data gathering starts from the trigger? Shouldn't the trigger point actually be at the very left of the screen?

Out of general interest, let's go back in time a bit and talk about how analog oscilloscope triggering worked.

Old-school oscilloscopes are vector devices. In other words, the dot on the screen is manipulated by two voltages. One moves it vertically, one moves it horizontally. They do this by electrostatic deflection of a electron beam. Effectively, the voltage on the deflection plates directly corresponds to the position of the "dot" on the scope display.

Since the display translates voltage to dot position directly, it's easy enough to accomplish this for the vertical (e.g. the magnitude) value of the trace. You simply buffer and amplify the input signal as needed, and apply it to the vertical deflection plates.

The horizontal sweep is internally controlled by a voltage accumulated on a capacitor (which is then amplified to drive the plates in the same way as the vertical plates). Sweeping was accomplished by a current source that charges that capacitor. When you changed the horizontal timebase, you were changing the charging current or switching the capacitor value.

The trigger worked by basically shorting the capacitor out, so the beam (which makes the dot) is clamped to a single position in X. When the trigger event occurs, it flips a latch in the oscilloscope, and the capacitor integrator starts accumulating, which generates a linear sweep across the screen.

Once the capacitor charge reaches a certain voltage, the sweep is treated as "done", the charge in the capacitor is dumped via the electronic switch, and the system is then ready for another trigger event.

This is relevant because a lot of the language that surrounds oscilloscope triggering derives from analog oscilloscopes. The "dead time" is because for a analog oscilloscope, it takes a non-zero period of time for the horizontal sweep capacitor to discharge. It's completely possible to produce a digital oscilloscope that doesn't have any dead time.

### Tangent:

Getting data before the trigger event is much harder with a analog oscilloscope. The only way to do so is to use something called a delay line.

                                      _____________________
|                     |
|                      |                     |
|                      |    Oscilloscope     |
|                      |                     |
+--------------------->| Trigger In          |
|_____________________|



What you'd do is use the delay line to, well, delay the input signal, and use a separate trigger input for the actual trigger. By doing so, you effectively time-shift the start of the trace by whatever time the delay-line delays for (generally up to a few hundred nanoseconds).

The downside of this technique is that you need a specialized widget (the delay line). They're generally fixed delay, and may affect your signal depending on their bandwidth and characteristics.

When the signal measured then hits 5V, the scope's ADC activates and it starts to sample the signal. Some amount of data points are gathered, and these are plotted on the screen.

The scope's ADC is continuously running and gathering data. The trigger controls what is displayed.

Then there is a small "dead time" after which the scope again waits for the trigger condition to be met, and the same amount of data points are gathered again. These should now line up with the previous set of samples, and therefore the scope output looks stable on the screen.

This is only the case if your signal is perfectly periodic, and your explicitly only displaying triggered data (many scopes have an "auto" trigger feature that will display data even if the scope hasn't been triggered). As mentioned by Hearth in the comments to my answer, the "dead time" you describe is called holdoff, and correctly setting this is essential when triggering on certain waveforms. For example, a periodic signal with two quick pulses followed by a long delay would require a holdoff long enough to ignore the second pulse (so the scope doesn't re-trigger on the second pulse).

The time axis is something I don't completely understand. I believe that the origin of the grid, where the highlighted dotted lines intersect, is the triggering point. At that point (at "t = 0") the voltage should be equal to the trigger level voltage. Am I correct so far?

Yes.

The thing is, this is not always the case with my oscilloscope. Sometimes the voltage at the origin is not equal to the trigger level, and the signal even drifts slowly to either direction. What causes the signal to drift even if the trigger is set?

The x-axis is movable on most oscilloscopes. If you look closely at your screenshot, there is a white arrow at the top of the screen pointing down. That is your horizontal ($$\t = 0\$$) reference. You'll also notice a yellow arrow towards the left pointing right that shows the currently set trigger level.

Another confusion that I have: I've seen the right side of the origin called the "post-trigger" data and the left side "pre-trigger" data. How is there data from before the trigger, if data gathering starts from the trigger? Shouldn't the trigger point actually be at the very left of the screen?

The scope continuously captures data, but only displays data when the data it captured meets the trigger conditions. Based on your horizontal position, the amount of post-trigger or pre-trigger data displayed will vary.

• That "small dead time" is there on most scopes regardless of the signal, and can be controlled. It's called the trigger holdoff control. (very useful thing that a lot of people aren't aware of!) Aug 7, 2019 at 19:54

While basic USB oscilloscopes use continuous software\digital triggering, this is not how benchtop scopes work. There is too much analog bandwidth at high speeds to be able to monitor all the information with an ADC. Especially since modern scopes have advanced triggering options.

Modern oscilloscopes have comparators that compare the voltage coming in to a preset level, then trigger on that. At high speeds, the ADC can keep up with the data, but processing it becomes an issue, so when triggered the scope only shows the ADC data around the trigger point.

Source: Keysight

Sometimes the voltage at the origin is not equal to the trigger level, and the signal even drifts slowly to either direction. What causes the signal to drift even if the trigger is set?

The little arrow determines where the scope's trigger level is triggering at.

Another confusion that I have: I've seen the right side of the origin called the "post-trigger" data and the left side "pre-trigger" data. How is there data from before the trigger, if data gathering starts from the trigger? Shouldn't the trigger point actually be at the very left of the screen?

If you use the horizontal position button you can move the trigger point to the left and get more data to the right. Because most people are interested in what happens before the trigger, oscilloscopes show that also.

What causes the signal to drift even if the trigger is set?

The dreaded drift can have very many causes...

• You're looking at Channel 1, but the trigger is looking at the Channel 2 input, or some 'scopes have an EXTernal trigger input jack. Don't just assume that the trigger is always looking at the same wave that you're viewing.
• Many 'scopes have a trigger menu that goes something like this: Auto, Normal, Single . If the scope doesn't get a trigger in Normal or Single, you see a blank display.
But in Auto, a 'scope often will wait a short time, looking for a trigger. If it doesn't see an input it can trigger on, it will display whatever is in its data buffer at that moment...you get a drifty display. The cause might be because your trigger level control is set too high (above the waveform top) or too low (below the waveform bottom).
• Trigger circuits often require a reasonable signal level. If the waveform is too small on the screen, a trigger may not be generated.
• Trigger menus may include exotic modes where a video signal is expected for example. Works fine on a video signal, not so well on other wave shapes.
• Other trigger options might offer noise filtering, high frequency reject, low frequency reject. These can foul up the triggering process on a waveform that appears clean on your display.
• On your photo, the trigger point appears on the timescale mid-screen (where it is most commonly put). That's the tiny downward pointing arrow. But you can sometimes find that the trigger point is W-A-Y offscreen. Your 'scope says yes, I'm triggering (green Trig'd icon in your photo), yet the displayed wave is drifting or is jittery. If you use the horiz position control to get the trigger back home, you'll likely find the drift or jitter disappears.

With practice, you can learn to find the proper control to restore display sanity without resorting to Autoset. Viewing some part of a complex waveform can require proper settings on many menus...autoset wipes them all, and sometimes makes poor choices.

Here is how I think the trigger works: Let's say I set the trigger to edge mode, and the level to 5V. When the signal measured then hits 5V, the scope's ADC activates and it starts to sample the signal. Some amount of data points are gathered, and these are plotted on the screen. Then there is a small "dead time" after which the scope again waits for the trigger condition to be met, and the same amount of data points are gathered again. These should now line up with the previous set of samples, and therefore the scope output looks stable on the screen.

This is how old analog scopes worked. Digital scopes are different. The ADC continuously captures data into a buffer. Initially, it ignores the trigger until the 'pre-trigger' buffer is filled. Then it continuously overwrites this buffer, while searching for the trigger condition. When the trigger is found, then the scope fills in the rest of the buffer and displays the entire buffer. In this way, the trigger point can be placed anywhere on the scope display. In contrast, the trigger point in analog scopes is not nearly as flexible and generally can only be placed off the left side of the display. With delay lines, it can be moved on to the display by a few ns.

The dead time in a digital scope is how long it takes to process and display the buffer after a trigger, how long it takes to reset the acquisition hardware to acquire a new capture, and how long it takes to fill the pre-trigger buffer. Some of this can occasionally be handled in parallel or accelerated by specialized acquisition and signal processing hardware.

The time axis is something I don't completely understand. I believe that the origin of the grid, where the highlighted dotted lines intersect, is the triggering point. At that point (at "t = 0") the voltage should be equal to the trigger level voltage. Am I correct so far? The thing is, this is not always the case with my oscilloscope. Sometimes the voltage at the origin is not equal to the trigger level, and the signal even drifts slowly to either direction. What causes the signal to drift even if the trigger is set?

In your screen shot, the signal does appear to cross the trigger point that's indicated by the small trigger level and position arrows, which is exactly what you should expect to see.

In some scopes (especially higher end scopes), the triggering path can be separate from the acquisition path. In this case, the trigger signals internally come from comparators, and it is possible for the calibration to drift between the ADC and the trigger comparator so the trigger level and possibly position are not as precise as it should be.

Another confusion that I have: I've seen the right side of the origin called the "post-trigger" data and the left side "pre-trigger" data. How is there data from before the trigger, if data gathering starts from the trigger? Shouldn't the trigger point actually be at the very left of the screen?

Again, in a digital scope the capture is continuous and the scope maintains a pre-trigger buffer that is continuously refreshed until the trigger condition occurs. This is an extremely powerful feature as it enables you to look at what preceded some event, something that is in general impossible to do with analog scopes (unless you can insert a sufficiently long delay into the data inputs, which realistically tops out at a few nanoseconds).