Skip to content

title: MDI: Media Dependent Interface tags: []


MDI: Media Dependent Interface

Package name: jsl/protocols/ethernet/MDI/MDI-1000Base-T

This module defines the MDI bundle and associated constraint functions for the 1000Base-T Ethernet standard.

Create a 1000Base-T MDI Constraint and apply it to a simple topology

  require eth-0 : MDI-1000Base-T from ethernet-jack[0]
  require eth-1 : MDI-1000Base-T from ethernet-jack[1]
  val mdi-constraint = MDI-1000Base-T-Constraint(
    route-struct = diff-routing-struct(substrate, 100)
  )
  topo-net(eth-0, eth-1)
  constrain(mdi-constraint, eth-1, eth-0)

Create a 1000Base-T MDI Constraint and apply it to a complex topology

  val esd = diodes/ESD224DQAR/create-esd-pool(2, GND)
  val mdi-constraint = MDI-1000Base-T-Constraint(
    route-struct = diff-routing-struct(substrate, 100)
  )
  within [src, dst] = constrain-topology(eth-0 => eth-1, mdi-constraint):
    require protected-pairs:dual-pair[4] from esd
    for p in 0 to 4:
      topo-pair(src.TP[p] => protected-pairs[p].A => protected-pairs[p].B => dst.TP[p])

Summary

MDI-1000Base-T-Constraint

Functions

Function Description
MDI-1000Base-T-Constraint (+ 1) SI Constraint For 1000Base-T MDI

General Definitions

Function Description
MDI-1000Base-T-get-trace-impedance Retrieve the expected differential impedance for the differential pairs
MDI-1000Base-T 1000Base-T MDI Bundle
make-1000Base-T-supports (+ 2) Construct supports statements for a 1000Base-T connection.
MDI-1000Base-T-get-pair-to-pair-skew Retrieve expected Inter-pair skew
MDI-1000Base-T-get-skew-loss Retrieve the expected Intra-pair skew and diff-pair loss limits
Variable Description
NUM_PAIRS_1000Base-T

Definitions

MDI-1000Base-T-Constraint

public defstruct MDI-1000Base-T-Constraint <: DiffPair-Constraint :
    inter-skew: Toleranced

  • inter-skew: Toleranced - Max skew between diff-pairs (not between P/N)

Functions

MDI-1000Base-T-Constraint

SI Constraint For 1000Base-T MDI

public defn MDI-1000Base-T-Constraint ( -- skew:Toleranced, loss:Double, route-struct:DifferentialRoutingStructure, inter-skew:Toleranced) -> MDI-1000Base-T-Constraint

  • skew: Toleranced - Intra-pair skew for the P/N of the diff-pair
  • loss: Double - Max Loss for any of the diff-pairs
  • route-struct: DifferentialRoutingStructure - User provided routing structure for each of the diff-pair bundles of the MDI.
  • inter-skew: Toleranced - Inter-pair skew between TP diff-pairs.
  • Returns MDI-1000Base-T-Constraint

This constraint assumes the endpoints are MDI-1000Base-T bundles. The code will construct the necessary skew and loss constraints for this bundle according to the pass configurations.

MDI-1000Base-T-Constraint

Construct a Constraint for 1000Base-T MDI with default specs (800fs intra-pair skew, 12dB loss, 330fs inter-pair skew)

public defn MDI-1000Base-T-Constraint ( -- route-struct:DifferentialRoutingStructure) -> MDI-1000Base-T-Constraint

  • route-struct: DifferentialRoutingStructure - User provided routing structure for each of the diff-pair bundles of the MDI.
  • Returns MDI-1000Base-T-Constraint

General Definitions

MDI-1000Base-T-get-trace-impedance

Retrieve the expected differential impedance for the differential pairs

public defn MDI-1000Base-T-get-trace-impedance () -> Toleranced

  • Returns Toleranced - Toleranced in ohms.

MDI-1000Base-T

1000Base-T MDI Bundle

public pcb-bundle MDI-1000Base-T

  • TP - : diff-pair[NUM_PAIRS_1000Base-T]. Array of 4 diff-pairs for the 4 twisted pairs that make up the 1000Base-T medium. The pairs are zero indexed and the mapping from index to pair identifiers is 0 => A 1 => B 2 => C 3 => D

make-1000Base-T-supports

Construct supports statements for a 1000Base-T connection.

public defn make-1000Base-T-supports (b-type:Bundle, dps:[JITXObject, JITXObject] ...)

  • b-type: Bundle - Bundle type for mapping. This bundle must define a port TP that is a PortArray of 4 diff-pair Bundle type. See MDI-1000Base-T as an example.
  • dps: [JITXObject, JITXObject] - Tuple of [P,N] of twisted-pair sets from a component or module. This list must be ordered in A, B, C, D pair ordering.

This constructs a supports statement for a 1000Base-T (Gigabit) MDI interface. This includes creating the appropriate option mappings for each differential pair.

The b-type Bundle is present so that the user can customize which bundle type to construct a support statement for. This is often useful when constructing a "Network Switch" like chip where there are auxiliary functions like LED drivers, etc associated with that port.

Example Support Declaration

; From 'JITx-Inc/microchip-networking'
make-1000Base-T-supports(
  MDI-1000Base-T,
  [C.TXRX1P_A, C.TXRX1M_A]
  [C.TXRX1P_B, C.TXRX1M_B]
  [C.TXRX1P_C, C.TXRX1M_C]
  [C.TXRX1P_D, C.TXRX1M_D]
)

make-1000Base-T-supports

Construct a 1000Base-T Supports Statement

public defn make-1000Base-T-supports (dps:[JITXObject, JITXObject] ...)

  • dps: [JITXObject, JITXObject] - Tuple of [P, N] ports that make up each of the differential pairs that make up the A, B, C, D twisted pairs of the MDI. Note that these arguments are expected to be passed in the right order - otherwise, we may setup the wrong pin assignment constraints. This argument is expected to be length 4.

By default - this function uses MDI-1000Base-T as the bundle type for the constructed supports statement. Otherwise, it is the same as the other implementation.

make-1000Base-T-supports

Construct a 1000Base-T Supports Statement

public defn make-1000Base-T-supports (dps:JITXObject ...)

  • dps: JITXObject - Diff-Pairs that make up the A, B, C, D twisted pairs of the MDI. Note that these arguments are expected to be passed in the right order - otherwise, we may setup the wrong pin assignment constraints.

MDI-1000Base-T-get-pair-to-pair-skew

Retrieve expected Inter-pair skew

public defn MDI-1000Base-T-get-pair-to-pair-skew () -> Toleranced

  • Returns Toleranced - Allowable delay difference as a Toleranced value in Seconds.

MDI-1000Base-T-get-skew-loss

Retrieve the expected Intra-pair skew and diff-pair loss limits

public defn MDI-1000Base-T-get-skew-loss () -> [Toleranced, Double]

  • Returns [Toleranced, Double] - Tuple of [Skew, Loss] where

  • Skew - Allowable delay difference as a Toleranced value in Seconds.

  • Loss - Max allowable power loss limit in dB.

NUM_PAIRS_1000Base-T

public val NUM_PAIRS_1000Base-T

Related Packages

Forwarded by packages: jsl/protocols/ethernet, jsl/protocols