## Really Cool Bus

In the early '90s, while consulting for Echelon Corp, I studied the high-frequency performance of building power wiring. This research was centered on using power wiring as a communications medium for HVAC control, lighting, building security, and (eventually) smart toasters.

The smart-toaster idea never panned out, but my research took me into a large number of interesting attics and crawlspaces—the kinds of places that literally hum with electrical energy, where biologists find whole new species of rodents and insects living on pure insulation.

In the course of this work, I discovered that air-conditioning technicians do some really cool things with their big ductwork. In particular, every place where a little duct branches off from a big duct, the technicians reduce the size of the big ductwork. Long distribution channels always start out fat and then get progressively smaller as they branch down to the last register. The practice of progressive duct sizing maintains constant air pressure everywhere in the system. After each branch where part of the airflow is directed from the main duct, the main pathway is resized such that the remaining (somewhat smaller) airflow in the main path still maintains the same air pressure. If the installers don't resize the ducts, the pressure drops successively at each tap, roasting the poor slobs at the end of the hall in summer and freezing them in winter.

The same principle applied to electrical-bus topologies yields some interesting results. Let's assume that you have one driver with N identical daisy-chained loads. Further assume that the loads are each purely resistive. By adjusting the bus impedance at each tap, can you maintain a constant signal voltage (that is, constant pressure) all along the structure?

Applying Kirchoff's current law at tap number n, you can see that the incoming current V_{n}/Z_{n} must equal the tap current V_{TAP}/Z_{TAP} plus the current V_{n+1}/Z_{n+1} that propagates forward into the next segment. Solving for Z_{n+1} in the case where you constrain V_{n}=V_{TAP}=V_{n+1}, you get

1/Z_{n+1}=1/Z_{n}–1/Z_{TAP}

which reveals the conditions necessary for perfect bus propagation.
At each stage, the parallel combination of Z_{TAP} and Z_{n+1} equals Z_{n}, so there are no reflected signals at any tap.

Unfortunately, when the tap impedance, Z_{TAP} , falls short of Z_{n} , the equation delivers a negative answer, meaning that no physically realizable
solution exists. Furthermore, even in cases when Z_{TAP} far exceeds Z_{n}, after a certain number of stages the answers still go negative. In our air-conditioning analogy, the equations tell us that a limit exists
on the total number of taps, and if you want to supply more taps you need a bigger main pipe.
In electrical terms, you should start with the smallest (most powerful) Z_{1} you can manage, something less than Z_{TAP}/N.

Because the range of impedances easily manufacturable on a pc board is rather limited,
I originally (and erroneously) assumed that the condition Z_{1}<Z_{TAP}/N meant that you could never have long branch taps associated with a bus. I shelved the
approach until recently when someone asked me about conversions between 3.3V CMOS and
LVDS (low-voltage differential signaling). These conversions require substantial signal
attenuation, which changes the whole nature of the branching problem.
In Figure 1, resistors R_{1} and R_{3} provide attenuation for the LVDS receiver, while keeping Z_{TAP} high enough to accommodate a large number of taps. Resistors R_{2} and R_{4} lead to a source of bias voltage within the common-mode input range of the LVDS receiver. These two resistors provide source terminations for the long tap traces leading to the LVDS receivers.
The LVDS receivers switch just fine with a 300-mV p-p input level.

As in everything, limitations exist. The structure in Figure 1 is unidirectional. It supports only one driver and many loads.

If that's the problem you have, however, progressive impedance sizing could be the solution. Especially note that Figure 1 permits branch taps of unlimited length. For a motherboard application, use embedded resistors for the resistive attenuators and place the connectors anywhere along the tap traces. Such a structure works about the same (within ±5%) whether the daughter cards are all plugged in or all pulled out.

If you choose to fully develop this idea, please let me know how it works. With a little effort you could have a really cool bus.