Random Quote Board

Gigabit Ethernet and the Misunderstanding of The Fifth Level

Gary Schafer, July 2023

I've been doing some study of gigabit Ethernet. It's a rabbit hole that I decided to go down. I just wanted to understand how a file is transferred from Point A to Point B and what happens along the way. As I was beginning my study, I came across several webpages and documents that appear to have read, and decided to repeat, something that, I think, makes it more difficult to understand.

Gigabit Ethernet, as the name suggests, transmits 1 Gbps (1000 Mbps, or 1 x 109 bits per second). It's specified in the IEEE 802.3ab standard. It uses a symbol rate of 125 MHz. To transmit 1000 Mbps with a 125 MHz, we need to send 1000 / 125 = 8 bits per symbol. An Ethernet cable uses 4 pairs of wires. This means that each pair needs to transmit 8 / 4 = 2 bits per symbol. Theoretically, we could transmit 2 bits per symbol using a 4 level pulse stream. With four levels each on four pairs, that gives us 44 = 256 possible symbols. This makes sense since we need to send 8 bits, and 28 = 256. Anyway, if we only use 4 levels over four pairs, we'll have just enough to send our data and nothing else. The system would have nothing for FEC or system control.

Which is why 802.3ab uses a line encoding scheme called "PAM5" or "5-level pulse amplitude modulation". It's also where some of the misstatements come into the picture. Here's what I've read on this fifth level, such as this from a Fluke document on GigE:

The "fifth" level is used for additional synchronization as well as error detection/error correction.

Then there's this tidbit from EDN:

Four levels represent two bits; the fifth level supports forward error correction (FEC) in the form of four-dimensional eight-state Trellis coding.

It's not the fifth level that provides for the FEC and system control; it's the fact that you're using five levels total.

Here's why I don't like the statements of this "fifth level". It makes it sound as if the system uses four levels for data, and the fifth level just for FEC and system control. That's not how it works. It's not the fifth level that provides for the FEC and system control; it's the fact that you're using five levels total.

With five levels possible over four pairs of wires, that gives us 54 = 625 possible symbols. We only need 256 symbols. This leaves us with 625 - 256 = 369 symbols left over for FEC and control. Except that the 802.3ab group decided to do something a bit different. Rather than using a single symbol mapping, they divided the timing into even and odd time groups. This means that each symbol uses a different mapping from the ones before and after it. Each group gets its own symbol map. What this means is that it's using 2 x 256 = 512 symbols for data. This still leaves 625 - 512 = 113 symbols for FEC and control. Regardless, we're using all five levels at the same time to encode each 2 bits; it's not four levels for data and a fifth solely for error correction. Each level is used, though some are used more than others depending on the context. For example, if you look at the symbol mapping, the "Idle/CarrExt" uses only levels 0 and -2. But these two levels are still used for normal data. Again, all five levels are used for data. There's no magical fifth level used just for FEC.

Here's a Random Fact...