Why do data interfaces that are serial (e.g. PCI Express or HDMI) have so many pins on the physical connector? If data is not being sent in parallel, shouldn’t you only need one pin each for send and receive, one for ground, and maybe a fourth for clock?

173 views

[ad_1]

Relatedly, why is PCIe x16, say, faster than PCIe x1? What functions are the extra pins performing if data cannot be sent multiple bits at a time?

In: Engineering
[ad_2]

I can’t speak to PCI, but HDMI I know.

So the data is serial but there are multiple signals. So for example in HDMI there are 3 wires for each of Red, Green, and Blue. Video is made of the 3 primary additive colors, RGB, so each is separated into its own signal.

Each signal for Red, Green, Blue uses three pins/cabless for the balanced signal being sent. Balanced signal is a positive, negative, and ground. HDMI goes one way, so there is no “receive” going back to the source device. Balanced signals are used to decease interference.

So thats 9 pins for the RGB (and audio since its embedded in the video). Three colors, times three signal cables for each. Then there is another set of 3 wires for timing signals. This is used to keep all three colors in sync. So that is 12 pins for the main video.

The other 7 pins in HDMI are for various things. One is a low speed serial channel back to the source device for various things like EDID, and HDCP. A few pins for the ARC channel. There is a common ground for those channels. One pin is for 5v power, it can be used by adaptors to power a small chip for conversions, like a HDMI to VGA adaptor. One is for Hot Plug Detect. This is a very simple connection between the source and display so they can tell something was plugged in. In later versions 1.4+ a reserve pin and some others were given double duty to do ethernet over HDMI (100mb). That never really took off.

The Wiki page has a pinout list: https://en.wikipedia.org/wiki/HDMI

So thats all the pins for HDMI. Why not just 2 wires, a Tx and a ground? History and the advancement of tech. When DVI or HDMI 1.0 came out, you couldn’t send the full bandwidth of say 1080p video down one single cable. So it was split into multiple. For example, 1080p video needs 3Gbps of bandwidth. In 2000, you couldn’t send 3Gbps down a single cable, you couldn’t generate it and you couldn’t read it (now maybe it was possible technically in 2000, I’m not sure, there is probably a price and ability to make it mass market consideration in there).

Now, the advancement of tech can get 3Gbps down a single coax, like 3G-SDI. That is 1080p over a single wire. You can even do 12G-SGI and do 4k60 down a single RG-6 coax. But as the ability to send higher data rates goes up, so does the use. For example HDMI 2.1 is 48Gbps. Basically the 4 main channels (R,G,B, and clock) all running at 12Gbps (12 x 4 = 48), allowing for 4k120 (see note).

USB-C and Thunderbolt are similar. They are serial data streams but you have multiple lanes of data. So each lane may do 10Gbps and then 4 lanes.

Note: FYI, SDI and HDMI have different encoding schemes so while 1080p video needs 3Gbps on SDI, its more like 4.5Gbps with HDMI because of various overhead.

I can’t speak to HDMI, but PCIe I know.

The simple answer is the analog of water passing in a pipe. Just as the water in a pipe goes 1 part of water (cross-section area) in series at a time if you watched closely. The simple difference of x16 vs. x1 is that you have a pipe with 16x the diameter vs. “1x” or “normal” diameter. Similar to how a fire hydrant is a very wide pipe, but a bathroom sink is a narrow pipe. Pipes allow water to flow in a straight line, with varying widths.

Why is this useful? Some PCIe uses are for graphics cards that need that x16 diameter pipe to display your mind-blowing videos. Some use cases are just a slow wifi adapter that can use x2 or x4 because the pipe requirements don’t need as much “water” or “information” all at once.

Getting deeper, PCIe was invented for flexible use cases that were unforeseen at creation. They allowed a way for future uses to continue with the same interface for ease of computer design re-use (i.e. processor design re-use).

Yes, it is a “serial interface” – but it’s actually complex and using all those pins in parallel too. It’s actually a configurable set of “serial interfaces” in “parallel configuration”. If you need to know the details of a serial interface, it simply means that the data contains the clock embedded in the data signal itself. There is a “PCIe Clock” signal, but that isn’t for data collection, just coordination at the low-level and proper reference alignment to ensure the 2x processors that are talking to each other know what is going on. The details are scary, so just reply if you must know.

A real system has Processor <-> PCIe <-> Graphics Card (w/ Processor) <-> HDMI <-> Monitor

Another example is Processor <-> PCIe <-> Wi-Fi Client (w/ Processor) < – – air – – > Wi-Fi Access Point (w/ Processor) <-> Cable/Fiber/ (puke) DSL

PCIe is, at its core, made up of a transmit pair and a receive pair (*”Pair” is used to denote a “Differential Pair”, a type of signalling method frequently used in high speed electronics that uses two wires for a single data line–using two wires and a ‘differential’ signalling method improves signal integrity and allows longer cables to be used*). These transmit and receive pairs can be thought of as two one way roads, one allows travel from place A to place B, and another from place B to place A.

Now, when you have 1 transmit line and 1 receive line, this is called PCIe x1, where the number after the “x” indicates how many lanes the ‘road’ has. Think of it as two separate one-lane roads. A PCIe x1 link requires 4 pins: “TX+, TX-, RX+, RX-” (A positive and negative transmit pair, and a positive and negative receive pair).

A one-lane road can only allow 1 car to drive down it at a time. We’ll call this car “Packet 1”. Packet 1 can travel from A to B pretty quickly, but before the next car (let’s call it “Packet 2”) can use the road, Packet 1 needs to reach its destination. And subsequent cars need to wait for Packet 2 to complete, etc etc.

Now, if you ***add*** another lane to the road, now ***two*** cars can drive down it at the same time, allowing more people to travel from place A to place B at the same time. A two lane road would be PCIe x2. Now Packet 1 and Packet 2 can drive from place A to place B at the same time, and Packet 3 and Packet 4 will have to wait for the roads to become free. A PCIe x2 link uses 8 pins.

You can keep adding lanes, resulting in PCIe x4 (16 pins), x8 (32 pins) and up to x16 (64 pins). When you have a 16-lane road, you can now have 16 cars driving side by side, meaning you have more room for more traffic, and you can get a larger number of cars moving from one place to another.

So while PCIe is considered a type of serial communication at its most basic (PCIe x1), it can use multiple lanes in a parallel-***like*** method to dramatically increase data throughput.

—————————————

In the case of HDMI, the large number of pins is because there are actually 3 separate serial channels, along with a clock channel. Like PCIe, HDMI uses differential pairs for data transmission (a positive and a negative ‘pair’ of wires per signal); ***unlike*** PCIe, HDMI only ever goes one-way (meaning each channel only needs 2 wires/pins).

Using the road analogy, HDMI is effectively a 4-lane, one-way road travelling from place A to place B. Lane 1 (red channel) only allows red cars, lane 2 (green channel) only allows green cars, lane 3 (blue channel) only allows blue cars, and lane 4 (clock channel) is reserved for police cars that keep all the other cars at the speed limit.

As displayed images are made up of the colors red, green and blue, you need to combine the data of the red, green and blue channels while using the clock channel to synchronize the data received by the three serial color channels. TVs and Monitors have special circuits that can compose images based on the data received from these channels, and quite literally fills in the image in a similar way we read text on a page (it fills it in pixel by pixel across a line, then the next line, and the next, until the full image is ready and it then gets displayed).

HDMI also has ***other*** pins that are not specifically used for sending image data from a PC to a monitor–these include a special ‘power’ pin, a CEC pin, EDID Clock, EDID Data, a Detect pin (to detect when something is connected), though these are specialized pins that are not necessarily required for sending serial image data from a device to a screen.