On a cool autumn day in 1979 my technical mentor, Professor Martin (Marty) Graham, drew my attention from the hubbub of conversation in the company lunchroom. Between the remains of a Reuben sandwich and a cup of coffee he spread a paper napkin on the table and pulled out his favorite writing instrument, a heavy Mont Blanc fountain pen. The perfectly balanced pen was rounded and smooth, jet black with glints of gold inlay. He always used it when he had something important to say. Using light, confident strokes Marty produced on that napkin a series of diagrams that I remember to this day. He called them "Space-Time Diagrams". Here's what he said:
* * * * *
Draw a line horizontally across the top of a napkin. The line represents a long, uniform bus structure. Transceivers sit at various points along the line.
On the left side of the page, draw a vertical line. That line represents time. Time zero, the beginning, appears near the top. Time advances as you move down the page.
Imagine a third axis emerging perpendicularly out of the page. The third axis represents voltage. Using the three dimensions of space, time and voltage you can draw 2-D manifolds (surfaces) that describe the behavior of the bus at all point in space and time.
Draw a single source located at the left side of the diagram. Have it send one pulse (Figure 1). The pulse propagates down and to the right as it moves further in space, and further in time, from the point of origin. When the pulse track reaches the right side of the diagram it stops. At that point, scanning down the right side of the diagram, you can see the received pulse. Assume this bus is terminated at both ends so there are no reflections.
A vertical slice of the space-time surface represents the voltage at one fixed spatial position (see white vertical line drawn through spatial position A in Figure 1). The slice depicts the relation between voltage and time at that position, like an oscilloscope trace taken with the probe touching that physical spot on the bus. From the space-time diagram you can visualize the waveform at any position. Figure 1 shows the pulse arriving last (i.e., lowest on the diagram) at the right-hand end of the bus.
A horizontal slice of the space-time surface represents a snapshot of the bus, frozen at one instant in time. That's a signal you can't see with an oscilloscope. You just have to imagine it.
The slope of the tracks drawn in a space-time diagram represent the inherent velocity of signals traveling on the bus. The transmission structures commonly used on pcb laminates produce fine, straight tracks with little dispersion.
Now let's inject a pulse in the middle of the line (Figure 2). The pulse propagates both right and left, headed towards the two ends of the bus. It takes a powerful driver to propagate a clean-looking signal in both directions. Even if you transmit a clean-looking signal, the pulse hits the left and right ends of the bus at different times based on the physical separation of the source from either end. That skew is a defining characteristic of all distributed bus architectures. To accommodate the skew you have several choices.
Idea #1: Slow down. Set your system clock period longer than one bus round-trip time. That guarantees within each bus transaction at least one moment when all receivers can be properly clocked.
(In 1979, Marty and I worked on a system that used precisely this method. It was a large digital telephone exchange. The heart of that system was a ribbon-cable bus 75 feet long. Because of its extraordinary length, the bus was clocked at a maximum rate of 4.5 MHz.)
Idea #2: Use source-synchronous timing. In this method each source, when it turns on and begins to transmit data, sends its own timing reference. The timing reference might be an alternating 101010... data pattern, or perhaps the same pattern offset by 90 degrees, or anything from which the receivers can reference their data reception. The timing reference requires an additional wire on the data bus.
(In a source-synchronous system the received phase of the timing reference changes every time you change sources, complicating the design of the receiver. The source-synchronous idea works best in a system that transmits long bursts of data, so that the time lost in receiver re-synchronization remains a small part of each transaction cycle. The system Marty and I were working on was a time-domain-multiplexing system. It had to transmit single-word bursts. )
But there is another way, Marty pointed out, far more clever.
Idea #3: Only send data left-to-right. This method depends on a global timing reference located at the left end of the bus. The timing reference broadcasts continually on wires adjacent to the data bus. Those events slice the space-time plane into diagonal data cells. (The timing reference events appear as white dotted lines in Figure 3. To avoid clutter, the diagram only shows timing reference events T0, T3, and T6.)
Each source transmits data with respect to the global timing reference as locally received. For example, the first pulse transmitted in Figure 3 lines up with reference cell T0. The rightward-moving half of that pulse remains aligned with reference cell T0 until the pulse strikes the right end of the bus at which point it is received. Later, another source lines up its transmission with reference cell T3 as that cell passes by. The emanations from each source arrive at the right endpoint synchronous with the global timing reference.
This method is a variation on source-synchronous design. It works particularly well in a master-slave architecture assuming the distributed slaves all send their data to a master controller at the right end of the bus. It is capable of attaining 100% bus utilization.
NOTE 1: When the slaves send to the master, the signals moving to the left of each transmission are never important to data reception, because the slaves never need to communicate directly. All communication goes through the master at the right end of the bus.
NOTE 2: For transmission from master to slaves (right to left), you must use a different timing reference sourced at the right end of the bus.
The master-slave, left-to-right system sounds cute, but the pictures drawn so far mask a major problem. Look at what happens when the space-time tracks cross (Figure 4). As far as pcb traces are concerned, two waves moving in opposite directions on a transmission line naturally cross each other without interference.
The mechanism for crossing involves linear superposition. Where the waves cross, at each point in time and space the transmission line sums their amplitudes. Like rogue waves crossing in the middle of the ocean, the effect total height of the combination may exceed that of either wave alone.
In my example the waves have equal heights, so at the point of superposition the total wave height doubles. That sounds unusual, but it definitely happens. You can put your probe at that spot and see it.
Here's another view of the superposition, drawn so you can clearly see the double-height feature (Figure 5).
To avoid double-height waveforms, and the problems they cause, most system architects enforce long gaps every time the bus changes source. In common parlance, the gaps clear the bus between transaction bursts.
* * * * *
I looked up. All our friends had gone. The lunchroom was empty, but my head was full. Marty knew when I had absorbed enough for one session. Before he padded off to his next meeting, we agreed to talk again the following evening. I'll save that discussion for the next newsletter.
Dr. Howard Johnson