Eye Diagram on Oscilloscope

Heya people!

It’s been a quiet week, but I managed to review and ordered few things that I needed to get for my on going project. By next week I should be getting my DC-DC converter, Digital Isolator, RS-485 transceiver, and some passive components. I might post the detail on why or how to pick these components to make it compatible to your microcontroller (MCU).

Further, why did I mention eye diagram on the topic? What is eye diagram?

Since Signal Integrity is the main topic of my project, an eye-diagram, which is an oscilloscope display (literally it look like an eye), could tell us the quality of serial bit stream and it can be used to debug signal integrity issues. According to Sciencedirect, amplitude noise and timing jitter could impact our system’s performance. However, using simple Bit Error Rate (BER) measurement alone can’t tell the difference between amplitude noise and timing jitter. Eye diagram, on the other hand, provides more information regarding both issues.

Figure 1: Diagram of Eye Pattern. Picture Credit: sciencedirect.com

We can take high-bandwidth instantaneous samples of high speed digital signal and the sum of the samples (superimposing ‘0’ and ‘1’) are the eye diagram! To make it more clear, just remember those timing diagram you did in your System Verilog class. The eye diagram would look EXACTLY like one of those state diagrams!

I was playing with my oscilloscope earlier to display the eye diagram ( I own Tektronix TBS1102B), and unlike the advanced version, I had to manually set up the closest eye diagram I can get from it (see short video below) and I was using high baud rate (2Mbps) to demonstrate the best display of eye diagram.

void setup() {
  Serial.begin(2000000);
  pinMode(4, INPUT);
  digitalWrite(4, LOW);
 }

void loop() {
    Serial.write(0xAA);
}

From this short clip, we can see clearly the transition state from High to Low and so on.

If you are using the same type of Oscilloscope, this can be accomplished by running code above (connect it with your Arduino, of course), Autoset it, then pick sample (by adjusting the horizontal knob) to the non-static rising edge, then select utility > display > enable persist (to as long as you want).

ps: I found this artwork (or maybe enlarged screenshot) on Instagram and I want one for my office! lol


Leave a comment