Position: Index > Unclassified >

Intro to Logic Analyzers

2017-08-21 08:09  
Declaration:We aim to transmit more information by carrying articles . We will delete it soon, if we are involved in the problems of article content ,copyright or other problems.

A logic analyzer isna€?t the most common piece of equipment in a hobbyista€?s shop, so we thought wea€?d write a small introduction about what it is and what ita€?s good for. A logic analyzer is commonly used to debug circuits where two or more chips are talking to each other, like a central uC interfacing with external memory, a peripheral camera or mp3 decoder. The main advantages over an oscilloscope are that more than 4 channels can be watched at the same time (sometimes more than 80), and that the logic analyzer can trigger / record right where ita€?s needed, not just on the first (or every) rising edge. For instance, you could program one to trigger and record data only after a particular byte sequence occurs. Read on for the (brief) basics of how to use a logic analyzer, what features to look for, some links to inexpensive analyzers as well as home-brew versions, and our attempt to digest a play station 2a€?s controller protocol.

small disclaimer: This is for a beginner and written by onea€| please point out errors and omissions!

Features and Basics of operation:

First, a small sanity saving feature:labels.

Instead of input 1, 2, 3,a€| the inputs can be labeled CLOCK, WRITE_ENABLE, CHIP_SELECT, etc., and multi-line buses can be configured to display hex values instead of binary. Reading a sequence of hex values (0x4D etc) is much easier than trying to decode stacks of square waves byte by byte.

State Analyzer or Timing Analyzer mode:

There are two modes that determine when a logic analyzer will sample:

InState Analyzermode, the logic analyzer samples all the test signals on the SUTa€?s (System Under Test) own clock signal, so the analyzer sees data exactly the same as the test circuit.

InTiming Analyzermode, the logic analyzer uses its own internal clock to decide when to sample. This mode provides more resolution, and is useful for making sure all the signals in the test circuit are transitioning correctly, ie, data is stable a sufficient amount of time before and after the clock signal. High end analyzers enable overlaying of both state and timing information to speed troubleshooting.


Besides having many more channels available than an oscilloscope, the other main advantage of a logic analyzer is its ability to record only the data of interest, even if ita€?s buried in the middle of a complex and long exchange. For example, a trigger could be designed to start recording only after seeing a particular bit pattern 4 times, followed by a delay, followed by another particular pattern, etc.

Newer PC-based logic analyzers make use of the PCa€?s infinite storage, so precise triggering isna€?t necessary to capture the target communications. However, many argue that ita€?s better to setup a precisely targeted trigger in the first place to avoid spending time searching through megabytes of data. ECNasia mag has a good review of many inexpensive PC-based analyzers, some of which are even less than $200.

This hack-a-day comment listing includes lots of great links to parallel port and other home-brew logic analyzers.

Programming the Trigger:

example trigger programming sequence levels

Trigger programming used to detect a configuration command from a play station 2

Doug Beck of HP has an excellent introduction to trigger programming and some common mistakes. The basic idea is to set conditions for when the analyzer should record. The conditions typically involve a sequence of events and not simply a rising edge. For instance:

1) wait until DATABUS = 0x3Dthen, if WRITE has 4 rising edges within 400 ms, goto 3, else goto 13) Record whenever ADDR = 0x56 (until record buffer full)

Each clock cycle of input data is tested against a stepa€?s conditions until they are met, at which point the analyzer begins comparing input data to a new step in the chain. Note: after a level is completed, new input data is collected to test the next level. So if you wanted to check to see if ADDR=0x3D at the same time as DATA=0x32, both of these tests would have to be performed in the same level using an AND operator, not two different levels. The basic building blocks include timers, counters, Boolean logic , comparisons and edge triggers.

One very useful feature is the ability to automatically digest serial data (USART, SPI, I2C, etc.). This feature isna€?t included in all logic analyzers, so be sure to look for it when purchasing.

This excellent Tektronix XYZ's of Logic Analyzers ( / Advertisement for their $10k analyzers) says channel count is still important even for serial-only applications, because 32 bit instructions get re-mapped vertically across 32 different channels even though the data stream comes in on one wire.

Finding the Configuration bytes in a PlayStation 2's Initial Hand Shaking with a Controller:

logic analyzer probing play station 2 cable

In our efforts to develop the MIDIATOR kit (PlayStation / Guitar Hero -->MIDI), we spliced into an extension cord and attached oscilloscope and logic analyzer probes to the Command, Data, Clock and Attention Lines. Also shown in the picture are some PICs that were used to listen in on the serial (SPI) communications and dump out the data to a computer via RS-232. The MPLAB C-code is available on our PS2 Interface Guide.

In this case, we got away with sloppy wiring since the PlayStation protocol is relatively slow (500kb/s), but attaching probes can require careful consideration of how much the probes themselves will affect a circuit. Too much added capacitance will cause the rise and fall times of a fast signal to round, which could lead to erroneous readings. Many modern circuits are designed with special interfaces just for logic analyzer probes. This is especially helpful when there are upwards of 64 lines to watch.

logic analyzer and oscilloscope displaying and comparing the same signals

The logic analyzer does not record unnecessary analog data, and has a much larger memory that you can zoom in on and scroll through.

Unfortunately, this particular analyzer did not have built in functionality for analyzing and triggering off serial data (only parallel), but we were still able to setup a trigger that found the configuration byte, and then recorded after a certain delay. The trigger uses edge detection and a timer to find a step of a certain size. Admittedly, a better example would have involved a parallel bus, but we were still able to get more out of the communication than with an oscilloscope.

Reprinted Url Of This Article: