You sit down at your lab bench to debug some funny behavior in a 10 MHz clock. You fire up your oscilloscope, get your probing in place and hit the almighty Auto Scale button, after which you’re presented with something like this:
Figure 1: 10 MHz square wave after Auto Scale
and then it strikes you; there are ten million clock cycles occurring every second! How in the world is the scope able to accurately display such a clean representation of your signal? How is it that the middle of the rising edge of your clock is perfectly aligned at center screen? The answer is the trigger system.
The trigger system is both one of the most commonly-used and least-understood sub-systems in real-time oscilloscopes. In this article I’m going to pull back the curtain just a bit and explain what the trigger system does, how it works and why you should care.
What Oscilloscope Triggers Do
The sole responsibility of the trigger system is to tell the rest of the oscilloscope what data to care about. It decides when the acquisition system begins acquiring, which means that by default it decides what is displayed on screen and what data is available to make measurements on. It can make these decisions with a very simple set of conditions or very complex conditions, based on user input.
Let’s consider the example above; a 10 MHz square wave. The reason the signal in the image above looks so clear and well-positioned on-screen is that the trigger is set up, appropriately, to look for a rising edge on Channel 1:
Figure 2: Trigger setup as configured by Auto Scale
Remember that to start we used Auto Scale, which was kind enough to pick an appropriate trigger source and threshold based on our input signal. But what would our signal look like without an appropriate trigger configuration? I’m glad you asked:
Figure 3: 10 MHz square wave, auto-triggered. Infinite-persistence is enabled on Channel 1 to better illustrate what’s going on
In Figure 3 above I have changed the trigger condition to look for an edge on Channel 2 (which has no signal connected at the moment). The auto-trigger feature, which we can see is enabled in the “Sweep” section of the trigger configuration dialog, is automagically kicking off acquisitions on a regular time interval giving us a smear of yellow signal trace across the screen. The signal itself appears to be clearly visible in this image, superimposed over the “smeared” signal trace, unfortunately however this is just an artifact of the screen shot; that’s where the signal happened to line up at the instant I took the screen capture. In practice, auto-triggered acquisitions aren’t good for much of anything other than to determine the relevant DC parameters to use in setting up your trigger condition. Note that if the auto-trigger feature is disabled, without an appropriate trigger configuration the oscilloscope simply won’t acquire:
Figure 4: Disabling the auto-trigger feature without an appropriate trigger configuration means the oscilloscope won’t acquire at all.
The trigger system will always place the trigger point (the instant at which all conditions present in the trigger configuration are met) at t = 0.0 s on screen. Later on, we’ll see how using advanced trigger configurations can help capture infrequent and hard to find events, in addition to the simple rising-edge trigger we’ve seen so far.
How Oscilloscope Triggering Works
Most real-time oscilloscopes have an “analog” trigger system. This system is actually a mishmash of analog circuitry and digital counters but it relies on input from analog comparators fed from the scope pre-amp. Some oscilloscopes now feature a “digital” trigger, meaning that the trigger system is entirely digital and is fed with integer data from the ADC output. Both types of systems perform the same function; evaluating whether or not all of the configured trigger conditions are met at a given moment in time. Because fully digital trigger systems are fairly rare, we’ll focus on analog trigger systems.
Figure 5: Generic four-channel DSO front-ends and trigger system
Figure 5 above shows a generic representation of the parts of a four-channel DSO (digital-storage oscilloscope) that we’re concerned with; the analog channel front-ends and the trigger system. The trigger system takes inputs from comparators on all of the analog channels and provides a single output. For convenience, let’s focus on a simplified diagram with only one analog channel:
Figure 6: Generic DSO front-end and trigger system
Figure 6 is a simplified, one-channel view of the same systems depicted in Figure 5. When a signal is connected to the channel input it goes through a series of transformations before it ends up on-screen:
- First, the signal is scaled appropriately and offset if necessary by the pre-amp. The pre-amp output is sent to the ADC to be digitized.
- Trigger comparators observe the output of the preamp and fire if it exceeds the threshold they have been set to. This threshold is set based on user input, or by helper routines like the almighty Auto Scale.
- The trigger system observes all of the trigger comparator outputs in the system and combines them in such a way as to monitor for a given set of conditions. These conditions can be very straight-forward (IE: rising-edge on channel one) or quite complex (IE: pulse-width greater-than 2.4 ns on channel 3, followed by a pattern of channel one high, channel two low and channel four low, held for a duration of greater-than 30.0 ns and less than 50.0 ns).
- When the trigger system sees that all of the conditions are met for the specified trigger, it sends a pulse on its output. We call this signal “System Trigger” or “SysTrig” for short. SysTrig is monitored by the acquisition system as well as a special sub-system known as the “time-base interpolator”.
- When the acquisition system sees a pulse on SysTrig, it begins to digitize, process, store, measure and finally display data. We refer to this entire process in general as “acquisition”.
- Before the acquisition data (the waveform) which is now stored in memory can be displayed on-screen, we need to know how to orient it horizontally; this is where the time-base interpolator comes in. The interpolator monitors SysTrig, just like the acquisition system. When it goes high, it’s the interpolator’s job to figure out what address in waveform memory matches up with the instant the trigger occurs. It communicates this information to the acquisition system and voila, the result is the desired waveform on-screen, with the trigger point placed perfectly at t = 0.0 s!
Why You Should Care about Oscilloscope Triggering
Although some of you may find the inner workings of oscilloscope sub-systems interesting, it’s fair to say that most folks couldn’t care less. If you are one of those folks and you just skipped the entire “How It Works” section above, no sweat, there will not be a quiz at the end! The bottom line is that you should care about the trigger system and take the time to understand it because it can help you debug difficult issues and save you quite a bit of time and frustration.
Using an oscilloscope in a basic way, that is to say, pushing the Default Setup and Auto Scale buttons can tell us a little bit about our signal and is a quick and convenient way to get started. However, if you’re interested in capturing an infrequent event, as is often the case when debugging common issues like runts, glitches and setup & hold violations, the trigger system is a powerful tool.
Advanced Oscilloscope Trigger Modes
In addition to edge trigger mode discussed at the beginning of this article, most real-time oscilloscopes have a number of advanced trigger modes designed to detect common problems. When used in conjunction with “Triggered” sweep (aka, auto-trigger disabled) these modes will ensure that only the behavior you’re looking for is acquired and displayed. As an example, let’s look for a runt in a square wave. We connect our signal, use our trusty Auto Scale button and all we see is a square wave, no runt in sight!
Figure 7: Looking for runts in all the wrong places…
Figure 7 shows us that although we suspect a runt is present in our signal, finding it with edge trigger will prove difficult. Maybe we’ll be able to see it if we zoom out a bit?
Figure 8: Looking for a runt with edge trigger, zoomed out horizontally
As shown in Figure 8, by zooming out horizontally we can tell that there’s something fishy going on, but it’s not entirely clear what. Now, let’s use runt trigger mode on our Infiniium S-Series oscilloscope and see what we can find:
Figure 9: Runt trigger mode setup on an Infiniium S-Series oscilloscope
Figure 10: Looking for a runt with runt trigger mode
There’s our runt! The waveform in Figure 10 is clear and steady and the event we’re interested in, our elusive runt, is right at t = 0.0 s! This is the value of learning the trigger system on your scope, it will allow you to find the events you’re interested in, and only the events you’re interested in, very quickly. Although this example focused on finding a runt, the same sort of example can be demonstrated with glitches, setup & hold violations, specific data across multiple channels, data patterns relative to clock edges, edge transition times, etc. using the appropriate trigger mode.
Advanced Scope Trigger Features
In addition to advanced trigger modes like runt mode discussed above, many oscilloscopes have features that can be used in conjunction with trigger modes to further refine what we want the oscilloscope to show and to instruct the scope to automatically take actions when a trigger occurs.
Figure 11: Trigger Conditioning dialog on an Infiniium S-Series oscilloscope
Figure 12: Trigger Actions available on an Infiniium S-Series oscilloscope
Figure 11 above shows some common options for trigger conditioning, while Figure 12 shows some of the things we can configure the oscilloscope to do for us automagically when a trigger occurs. My personal favorite is the “Email on Trigger” feature. If you have a really infrequent event, no problem; set up your trigger and leave for the weekend. Come back, open up your email and find all the data you need!
Thanks for reading! If you have specific questions regarding triggering or challenges triggering on a specific event let us know in the comments!