displayport module#

DisplayPort Protocol

DisplayPort is a serial protocol supporting high speed links for video+audio https://en.wikipedia.org/wiki/DisplayPort

The functions and definitions in this file support defining DisplayPort connections between sources and receivers on a printed circuit board.

## DisplayPort Blocking Capacitors

The DisplayPort specification calls for AC coupling for the data lanes. This is typically achieved using a blocking capacitor.

Net each leg of each lane through its own capacitor with ordinary nets, give each capacitor a BridgingPinModel between its two pins so the signal path continues through it, and apply the constraint end to end with constrain().

class DisplayPort[source]#

Bases: Port

aux = DiffPair()#

Auxiliary channel pair

lane = (DiffPair(), DiffPair(), DiffPair(), DiffPair())#

Four data transfer pairs

hpd = Port()#

Hot-Plug Detect

class Standard(pair_to_pair_skew)[source]#

Bases: object

Parameters:

pair_to_pair_skew (Toleranced)

skew = Toleranced(0, 2e-11, 2e-11)#

Allowed intra-pair skew

loss = 15.0#

Allowed loss

pair_to_pair_skew: Toleranced#

Allowed inter-pair skew

impedance = Toleranced(100, 10, 10)#
Constraint(structure=None)[source]#
Parameters:
class Version(*values)[source]#

Bases: Standard, Enum

Different DP versions and accompanying standard values. To tweak, use py:func:dataclasses.replace.

>>> tweak_DP1p0 = dataclasses.replace(DisplayPort.Version.DP1p0, impedance=Toleranced.percent(100, 5))
DP1p0 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 8e-10, 8e-10))#

10.80 Gbit/s / 4 lanes => 2.7 Gbit/s / 10 UI => 270 MHz clk

DP1p1 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 7.42e-10, 7.42e-10))#

10.80 Gbit/s / 4 lanes => 2.7 Gbit/s / 10 UI => 270 MHz clk

DP1p2 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 6.74e-10, 6.74e-10))#

21.60 Gbit/s / 4 lanes => 5.4 Gbit/s / 10 UI => 540 MHz clk

DP1p2a = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 6.74e-10, 6.74e-10))#

21.60 Gbit/s / 4 lanes => 5.4 Gbit/s / 10 UI => 540 MHz clk

DP1p3 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 4.62e-10, 4.62e-10))#

32.40 Gbit/s / 4 lanes => 8.1 Gbit/s / 10 UI => 810 MHz clk

DP1p4 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 4.62e-10, 4.62e-10))#

32.40 Gbit/s / 4 lanes => 8.1 Gbit/s / 10 UI => 810 MHz clk

DP1p4a = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 4.62e-10, 4.62e-10))#

32.40 Gbit/s / 4 lanes => 8.1 Gbit/s / 10 UI => 810 MHz clk

DP2p0 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 2e-10, 2e-10))#

80.00 Gbit/s / 4 lanes => 20.0 Gbit/s / 10 UI => 2000 MHz clk

DP2p1 = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 2e-10, 2e-10))#

80.00 Gbit/s / 4 lanes => 20.0 Gbit/s / 10 UI => 2000 MHz clk

DP2p1a = DisplayPort.Standard(pair_to_pair_skew=Toleranced(0, 2e-10, 2e-10))#

80.00 Gbit/s / 4 lanes => 20.0 Gbit/s / 10 UI => 2000 MHz clk

class DisplayPortConnector[source]#

Bases: Port

dp = DisplayPort()#

DisplayPort bundle for data communication

gnd = Port()#

Ground connection

There are five ground signals in the connector, but for simplicity we only have one in the bundle. Once on the board, there’s no need for separated ground signals.

power = Power()#
config = (Port(), Port())#

Two configuration pins