Capturing specific data values
Searching for a specific character in the protocol table is a common method to locate protocol errors in the data stream.
But searching is a post-acquisition process and is limited to a time frame that is set by the size of the acquisition memory. The dead time between acquisitions is quite large and is caused by oscilloscope and the processing time of the software for interpreting the waveform into binary and then searching for the character. This is illustrated in figure 6
Figure 6: Dead time between acquisitions
Click on image to enlarge
Therefore the chance of capturing any infrequent and rare faults is very low. For example if there are 10 million points sampled at 50 GS/s, the real time acquisition will stop after 200 microseconds. But it will take hundreds of milliseconds before the system can capture the next block of 10 million points. Larger memory will even increase the problem. To find rare events it is necessary to trigger on those faults.
Most digital oscilloscopes provide a large portfolio of triggering capabilities. Traditionally, troubleshooting is related to time and level qualified triggering. With the advanced trigger modes available, triggering on glitches, transitions, runts and so forth is much easier than in the past. For protocol errors, it can be useful to trigger on commands, characters, or bit sequences.
Unfortunately a serial trigger circuit designed for NRZ patterns cannot find those faults because most high speed serial data signals are 8b/10b coded and require a dedicated hardware solution. A standard NRZ trigger cannot trigger on words of 8b/10b coded data streams for two reasons.
First, the coding of the 8 bit word to 10b symbol will change at the speed of the data rate and would require an adjustment of the symbol rate in the trigger memory to the same speed. Second, triggering on the right 8b/10b symbol requires synchronization or alignment of the 8b/10b codes to the data stream. For real time triggering the hardware must be capable to synchronize to one of the “comma symbols” (K.28.1, K.28.5, and K.28.7) which are unique and cannot be found in the data stream at any bit position in the code. The synchronization character can be somewhere in the data stream and might be very infrequent or appear only once. One example for a synchronization character is the comma symbol, K28.5 (011110101). Once the alignment symbol has been found, the decoding of the subsequent symbol values can proceed.
Software “triggering” solutions actually perform a search through the acquired data and therefore have long dead times that cause very large gaps between the acquisitions and increase the chances of missing the character in question. Many higher end oscilloscopes are equipped with a dedicated trigger chip for triggering on 8b/10b data patterns in high speed serial signals up to 6.25 Gb/s. This enables the instrument to find rare events since it is now able to trigger on 8b/10b characters. Characters are acronyms for a pattern of 10 bits of the 8b/10b code, i.e. D31.6 or K28.5. A second option related to a high speed serial standard’s protocol is triggering on 8b/10b words (commands), where words consist of multiple characters (commonly 4 words or 40 bits). It should be noted that every standard has its own word definitions.
A powerful debugging tool is the ability to trigger on 8b/10b code errors. No serial trigger would be able to trigger on all possible character errors, disparity errors or losses of byte synchronization, but it is usually possible to trigger on common errors such as disparity or character errors.