Transcript
Testing the USB Port of the Bolt
Today, we’re going to be testing the USB port of the Bolt. USB is an interesting protocol in that it’s extremely high speed, but the physical layer protocol is very simple. It’s a differential encoding. The data is encoded with two data lines, a D+ and a D- line, and it’s differential. When one goes high, the other goes low, that’s a one, and when they swap, that’s a zero.
So we’re going to be testing the physical layer interface of the Bolt to make sure that the controlled impedances are correct, there’s no impedance mismatches along the path from the circuit board all the way into the laptop. We’re also going to be using an eye diagram to judge signal quality, and then we’re going to be testing the driver and the upper layers of the interface to make sure that the throughput is what we expect through this high-speed port.
Because it’s 480 megabits per second, that’s a very fast pulse width, that’s a two-nanosecond pulse time, so we need some specialized equipment to look at the signals.
Test Setup and Probing
We’re going to be testing the USB-C adapter and USB cable we supply with the Bolt, and to do this, we need a high-speed oscilloscope with some special probing. The normal scope probe ground lead and scope probe tip have too much inductance to get accurate measurements, so we’ve soldered scope probes directly onto the circuit board interface of this USB-C connector.
Here, we’re doing a transfer now through ProVision to exercise data through the USB port, and if we look at individual traces, we have one scope probe on D+, one on D-, we can see that they are indeed differential. When one’s high, one is low, and vice versa.
Eye Diagram and Signal Quality
To look at this in more detail, we’re gonna switch the scope in differential mode and take a look at the signal quality through an eye diagram. So let me switch to that mode now.
Now we’re looking at the differential trace as computed by the scope from the two scope probes on the top plot, and the bottom plot is the eye diagram. This is an overlay of each bit. The ones are going up, the zeros are going down. But again, this is the differential signal across the two lines.
What we’re looking for is a nice-shaped eye. The center portion should be clear. This ensures that there’s no noise in the system, and we’re also looking at the rise time. With a two-nanosecond pulse width, the rise time should be in the fraction of a nanosecond range. We’re seeing good rise times here in the tens of picosecond range, given the time scale on this axis.
So we have a clean eye with a wide-open center and sharp rise times, as determined by the scope looking at a composite of many thousands of bits flowing through. We can also look at the thickness of the eye to gauge jitter. The clock is embedded in the data stream, and the USB receiver is doing clock recovery.
Jitter Histogram Test
Another test that we want to perform is the jitter on the bitstream to determine how good clock recovery can be. So we’re gonna switch from the eye diagram to a histogram to look at the bit jitter as the final physical layer signal quality test for the Bolt USB port.
Now we’re looking at three plots. We have the differential signal on the top, we have the eye diagram here in the center, and the bottom is what’s known as the composite TJ histogram. This is the total jitter histogram, as computed by the scope, and what we’re looking for is a low amount of timing jitter on the pulses themselves.
I’m gonna freeze this and take a look at the jitter, and we can see we’re about minus 100 picoseconds to about plus 50 picoseconds of jitter. And if we let this run, we can see that the measurements are still within that range. No more than plus or minus 100 picoseconds of jitter on a two-nanosecond pulse width, which is well within USB spec, which means that the Bolt is emitting good pulses with good timing, allowing the host to do clock recovery and bit detection correctly.
Physical Layer Summary
So we tested the physical layer of the Bolt USB interface. The eye diagram looks clean. The jitter is very low. The hardware is good. Now let’s test the upper layers of the USB protocol, including the driver stack, and then finally with a speed test through ProVision. So we’ll begin that test next.
USB Throughput Speed Test
We’re going to initiate a speed test on the command line of the Bolt, where it will be sending Bolt data through the upper layers of the USB protocol stack to measure the raw throughput. We’ll initiate the test. You can see the eye diagram developing, and we’re getting about eight megabytes per second, which is close to the theoretical maximum you can get through USB.
Even though it’s 40 megabits per second, an individual peripheral doesn’t get the full bandwidth, because the host is also reserving time slots for other devices on that serial bus. So now that we’ve shown that we’re getting a good throughput at the middle layers of the protocol stack, let’s go to the bottom line and see how long it takes to download an entirely full Bolt with ProVision.
Full Bolt Download Test
Okay, now we’re going to do the bottom line test. How long does it take to download a full Bolt through the USB interface with ProVision? A Bolt holds about 140 megabytes of data. That’s a lot of data. Let’s try a download and see how long this takes.
We’ll initiate the download, and we have a 100% full Bolt here to download, and we can watch the download on the scope and also here in ProVision.
And the download is finished. That took about three minutes to download the full Bolt. That includes the USB transfer time, the time to retrieve the individual pieces of data from the Bolt’s memory, and the time to store this in ProVision.
So we have a well-implemented USB port interface on the Bolt. No reflections, good controlled impedance, good physical layer signals, and fast throughput.