A differential signaling system is one where a signal is transmitted down a pair of tightly coupled carriers, one of these carrying the signal, the other carrying an equal but opposite image of the signal. Differential signaling was developed to cater for situations where the logic reference ground of the signal source could not be well connected to the logic reference ground of the load. Differential signaling is inherently immune to common mode electrical noise, the most common interference artifact present in an electronic product. Another major advantage of differential signaling is that it minimizes electromagnetic interference (EMI) generated from the signal pair.
Differential pair routing is a design technique employed to create a balanced transmission system able to carry differential (equal and opposite) signals across a printed circuit board. Typically this differential routing will interface to an external differential transmission system, such as a connector and cable.
It is important to note that while the coupling ratio achieved in a twisted pair differential cable may be better than 99%, the coupling achieved in differential pair routing will typically be less than 50%. Current expert opinion is that the PCB routing task is not to try and ensure a specific differential impedance is achieved, rather the objective is to maintain the properties required to ensure the differential signal arrives in good condition at the target component as it travels from the external cabling.
According to Lee Ritchey, a noted industry high-speed PCB design expert, successful differential signaling does not require working to a specific differential impedance. What it does require is:
- To set each of the routing signal impedances to half the incoming differential cable impedance.
- That each of the two signal lines is properly terminated in its own characteristic impedance at the receiver end.
- That the two lines should be of equal length, to within tolerances of the logic family and the circuit frequency used in the design. The focus should be on preserving the timing, match the lengths close enough to satisfy the skew budget of the design. Example length tolerances include: high-speed USB, length mis-match should be no greater than 150 mils; DDR2 clocks need to be matched to within 25 mils.
- Use the benefit of routing the two signals side-by-side to help achieve good quality routing of matched lengths, where required it is acceptable to separate to route around obstacles.
- Layer changes are acceptable, as long as the signal impedances are maintained.
For more information, refer to the article Differential Signaling Doesn’t Require Differential Impedance, by Lee W. Ritchey, available from http://www.speedingedge.com/RelatedArticles.htm.
DEFINING THE DIFFERENTIAL PAIRS ON THE SCHEMATIC
Differential pairs are defined on the schematic by placing a differential pair directive (Place » Directive) on each of the nets in the pair. The net pair must be named with net label suffixes of _N and _P. Placing a differential pair directive on each pair net applies a parameter to the net, which has a parameter Name of DifferentialPair and a Value of True.
Differential pair definitions are transferred to the PCB during design synchronization.
Place directives on the schematic to define differential pairs.
VIEWING AND MANAGING DIFFERENTIAL PAIRS ON THE PCB
Differential pair definitions are viewed and managed in the PCB panel, set to Differential Pairs Editor. The figure below shows the pairs that belong to the All Differential Pairs class (all the pairs on this board). Pair V_RX0 is highlighted, the nets in this pair are V_RX0_N and V_RX0_P. The – and + displayed next to each member net name is a system flag, indicating if it is the positive or negative member of the pair.
Differential pairs can be viewed and managed in the Differential Pair Editor.
DEFINING DIFFERENTIAL PAIRS ON THE PCB
Differential pairs should be defined on the schematic, however, differential pair objects can be defined in the PCB Editor. To create a differential pair object, selectDifferential Pairs Editor mode in the PCB panel and click the Add button. From the resulting Differential Pair dialog, select existing nets for both the positive and negative nets, give the pair a name and click OK.
Quickly create pairs from the named nets.
You can also create a differential pair objects using net names conforming to a naming convention with a common prefix, followed by a consistent positive/negative suffix, for example, TX0_P and TX0_N. To do this, click the Create From Nets button in the PCB editor panel to open the Create Differential Pairs From Nets dialog. Use the filters at the top of the dialog to show net pairs, based on existing net names.
APPLICABLE DESIGN RULES
There are three design rules you will need to configure in the PCB Rules and Constraints Editor dialog (Design » Rules) to route a differential pair. These are:
- Routing Width – defines the routing width required for both nets in the pair and can be based on either physical track widths you define or be automatically calculated based on characteristic impedance values you define. Set the scope of this rule to target objects that are members of a differential pair, eg.InDifferentialPair.
- Differential Pairs Routing – defines the separation between the nets in the pair, the gap allowed, and the overall uncoupled length (the pair is uncoupled when the gap is wider than the Max Gap setting). Set the scope of this rule to target objects that are a differential pair, eg. IsDifferentialPair.
- Electrical Clearance – defines the minimum clearance between any two primitive objects (e.g. pad-pad, track-pad) on either any net, the same net or between different nets. Set the scope of this rule to target objects that are members of a differential pair, eg. InDifferentialPair.
The lengths of the differential pairs can be tuned accurately using the Interactive Diff Pair Length Tuning feature (Tools menu). When using this feature you have full on-the-fly control over target length and tolerance, and have various options to increase differential pair net lengths by adding variable amplitude wave patterns to the net pairs.
SETTING THE SCOPE OF THE DESIGN RULES
The scope of the design rule defines the set of objects that you want the rule to applied to. Since a differential pair is an object, you can use queries like the following examples to scope the rule to target differential pairs:
- InDifferentialPairClass(‘All Differential Pairs’) – targets all nets in all pairs belonging to the differential pair class called All Differential Pairs.
- InDifferentialPair(‘D_V_TX1’) -* targets both nets in the differential pair named D_V_TX1.
- (IsDifferentialPair And (Name = ‘D_V_TX1’)) – targets the differential pair object that has a name of D_V_TX1.
- (IsDifferentialPair And (Name Like ‘D‘)) -* targets all differential pair objects whose name starts with the letter D.
USING THE DIFFERENTIAL PAIR WIZARD TO DEFINE THE RULES
Click the Rule Wizard button in the Differential Pairs Editor (PCB panel) to walk you through the process of setting the required design rules. Note that the scope used for the created rules will depend on what was selected when the Rule Wizard button was clicked – if one pair was selected the rules will target the nets in that pair, but if a differential pair class was selected then the rules will target the nets and all pairs in that class.
ROUTING A DIFFERENTIAL PAIR
Differential pairs are routed as a pair – that is, you route two nets simultaneously. To route a differential pair, select Interactive Differential Pair Routing from the Placemenu. You will be prompted to select one of the nets in the pair, click on either to start routing. The figure below shows a differential pair being routed.
As you route the differential pair the standard conflict resolutions modes are available, including Walkaround, Push, Hug and Push, and Ignore obstacles. Use SHIFT + R to cycle through the modes. Use the <b></b> key on the numeric keypad to switch layers, and the *5 shortcut to cycle possible via patterns. Press the Shift+F1shortcuts to display all of the available shortcuts.
Differential pairs are routed simultaneously.
ARC SUPPORT FOR DIFFERENTIAL AND MULTI-ROUTE TOOLS
Altium Designer 10 sees the Multi-Trace and Differential Pair interactive routers enhanced to now support arc cornering styles. Use the Shift+Spacebar shortcut to change the corner style as required between:
- Track 45
- Line 90/45 with Arc (Radius 100mil)
- Track 90
- Line 90/90 Horizontal start with arc (Radius 100mil)
FULL DIFFERENTIAL PAIR SUPPORT FOR FPGA DESIGNS, INCLUDING PIN SWAPPING
Modern FPGAs, even low cost types, can have a large number of I/O pins that can be configured as differential pairs. To make it easy to harness the power of these, Altium Designer includes full support for integration of FPGA-based differential pairs, in both FPGA and PCB design.
In your FPGA design you can assign a single net to a differential I/O standard, such as LVDS, and this will be mapped to a pair of physical nets at the PCB design level. This process is under your control using the FPGA Signal Manager. The design compiler can also determine if the pins used as differential pairs at the PCB design level map correctly to the allowable pairs on an FPGA device.
SIGNAL INTEGRITY SUPPORT FOR DIFFERENTIAL PAIRS
Altium Designer’s Signal Integrity analyzer provides full support for the simulation of differential pairs. This uses the correct signal integrity model for pins when using the LVDS standard with FPGAs.
LOOP REMOVAL SUPPORT FOR DIFFERENTIAL AND MULTI-ROUTE TOOL
Related article: Modifying Existing Routing
Altium Designer provides support for Loop Removal when routing using either the Multi-Trace or Differential Pair interactive routing tools.
As you route there will be many instances where you need to change some of the existing routing. Rather than attempting to change the existing routing using a drafting type approach of clicking and dragging track segments, you re-route. To do this, select the Interactive Differential Pair Routing or Interactive Multi-Routingcommand from the Place menu as applicable, click on the existing routing to start and then route the new path, coming back to meet the existing routing. This will create a loop with the old path and the new path, no need to worry though, as soon as you right-click or press Esc to terminate the route, the redundant segments are automatically removed, including any redundant vias.