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 Vn/Zn must equal the tap current VTAP/ZTAP plus the current Vn+1/Zn+1 that propagates forward into the next segment. Solving for Zn+1 in the case where you constrain Vn=VTAP=Vn+1, you get


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

Unfortunately, when the tap impedance, ZTAP , falls short of Zn , the equation delivers a negative answer, meaning that no physically realizable solution exists. Furthermore, even in cases when ZTAP far exceeds Zn, 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) Z1 you can manage, something less than ZTAP/N.

Because the range of impedances easily manufacturable on a pc board is rather limited, I originally (and erroneously) assumed that the condition Z1<ZTAP/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 R1 and R3 provide attenuation for the LVDS receiver, while keeping ZTAP high enough to accommodate a large number of taps. Resistors R2 and R4 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.

Really Cool Bus

Figure 1—The bus impedance at each stage may be resized to maintain a constant voltage on the bus and a constant current at each tap.

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.