"Whenever we execute this piece of code, the processor goes crazy." Sound familiar? This problem may involve crosstalk in your connectors. In large systems, especially those comprising multiple circuit cards, wide, fast bus structures must traverse connectors at many points. As bus signals pass through the connectors, the driven signals, or "aggressors," couple some of their energy onto the other signals, or "victims."
In a good connector the crosstalk is small even for adjacent pins, and it decreases rapidly as the victim pin is moved further from the aggressor. You can directly observe this effect with the following simple test setup. Your test setup must stimulate the connector with an aggressive signal that precisely mimics the in-circuit conditions of rise time, voltage, and current:
- Turn off the system or hold it in reset.
- Substitute a pulse generator for one of the bus drivers.
- Adjust the rise time and voltage swing to simulate your real driver.
- On the far
side of the connector, apply a load calibrated to
draw the same amount of current as your real
Your test setup must receive the crosstalk voltage in a manner similar to the real system:
- Cut each victim trace on both sides of the connector.
- On one side of the connector, short all the victim pins to ground. This simulates the action of having a low-impedance bus driver's powerful bus driver holding each of the victim signals in a low state.
- Measure the crosstalk received on the other side of the connector.
This approach pinpoints crosstalk generated inside the connector, eliminating trace-to-trace crosstalk on the pc board.
To understand what causes crosstalk in this configuration, remember that the aggressor current always flows in a loop. It goes to the other board and it also comes back. It flows to the other board through the signal pins on the connector, and it returns to its source back through the nearest power/ground pins. The current for every line on the bus flows in this kind of loop.
Now, here's the important part: when several bus lines are forced to share power/ground pins, their current loops overlap. These overlapping current loops form a single-turn, loosely coupled transformer with multiple inputs and outputs. Any signal on one loop couples, through the transformer effect, onto all the others.
On a typical connector, when you interchange the driver and its load in the test setup, thereby reversing the direction of signal flow on that aggressor signal pin, the crosstalk changes polarity. This polarity change proves that the crosstalk results primarily from mutual inductance (the transformer effect) rather than parasitic capacitance. This result may run counter to your intuition about crosstalk, but it is true. Crosstalk in most connectors results primarily from mutual inductance rather than parasitic capacitance. Because the coupling is transformer-like, reversing the direction of current flow on the primary circuit inverts the voltage on the secondary.
When dealing with a connector whose coupling is dominated by parasitic capacitances, it doesn't matter from which side you inject the aggressor signal. The received polarity stays the same. All that matters for capacitive crosstalk is the voltage you impose on the aggressor pin, not the current flowing through it.
Since connector crosstalk mostly acts through a transformer-like principle, anything you do to separate the current loops, such as providing private power and ground pins for each signal, will reduce the intersignal coupling. Anything you do to reduce the aggressor current flow, such as using fewer loads on the destination side of the connector, also helps.
A connector configured with too few power and ground pins, or with too many heavy loads, will generate a lot of crosstalk, easily enough to disturb edge-sensitive signals on the bus. The resulting flaky effects, like phantom interrupts, unexpected resets, and double clocking, are guaranteed to drive a processor crazy.