DCU

Lattice Semiconductor ECP5/ECP5-5G Dual-Channel Unit (DCU) Interface.

class bakeneko.interface.phy.serdes.vendor.lattice.ecp5.dcu.DCU(*, dcu: DCUNumber, channel: Channel, link_speed: Literal[LinkSpeed.LS2_5, LinkSpeed.LS5_0], refclk: Signal, tx0_p: Signal | None = None, tx0_n: Signal | None = None, rx0_p: Signal | None = None, rx0_n: Signal | None = None, tx1_p: Signal | None = None, tx1_n: Signal | None = None, rx1_p: Signal | None = None, rx1_n: Signal | None = None) None

Lattice Semiconductor ECP5/ECP5-5G devices have a concept called a Dual-Channel Unit (DCU), it represents an encapsulation of 2 SerDes channels.

Each ECP5/ECP5-5G device has 2 DCUs on the larger 45k an 85k variants, and a single DCU on the smaller 25k variants with no DCUs the non-UM devices.

The overall structure of a DCU looks like this:

╭───────────╮
│    DCU    │
├─────┬─────┤
│ CH0 │ CH1 │
╰─────┴─────╯

Within each DCU, there is also an EXTREF block, which deals with internal reference clock generation from the DCU, as well as an auxiliary control channel.

A more detailed block diagram of a DCU would be as follows:

╭───────────────────────────────╮
│              DCU              │
│ ╭─────────╮ ╭─────────╮ ╭───╮ │
│ │         │ │         │ │ A │ │
│ │   CH0   │ │   CH1   │ │ U │ │
│ │         │ │         │ │ X │ │
│ ├─────────┤ ├─────────┤ ╰───╯ │
│ │         │ │         │ ╭───╮ │
│ │   PCS   │ │   PCS   │ │ E │ │
│ │         │ │         │ │ X │ │
│ ├─────────┤ ├─────────┤ │ T │ │
│ │ SERDES0 │ │ SERDES1 │ │ R │ │
│ ├────┬────┤ ├────┬────┤ │ E │ │
│ │ RX │ TX │ │ RX │ TX │ │ F │ │
│ ╰────┴────╯ ╰────┴────╯ ╰───╯ │
╰───────────────────────────────╯

For more details on the ECP5 DCUs see the Lattice Technical Note FPGA-TN-02206.

Note

Many of the DCU and channel properties are set at elaboration time for the synthesis and place-and-route tools, however, many, if not most of them are able to be modified via the SerDes Client Interface (SCI) for the DCU.

Parameters:
  • dcu (DCUNumber) – The specific DCU on the device to use.

  • channel (Channel) – The specific channel or channels to use for the given DCU.

  • link_speed (LinkSpeed) – The link speed for the DCUs channels.

  • refclk (Signal) – The input reference clock for this DCU

  • tx0_p (Signal | None) – The positive side of the channel 0 transmitter pair (default: None)

  • tx0_n (Signal | None) – The negative side of the channel 0 transmitter pair (default: None)

  • rx0_p (Signal | None) – The positive side of the channel 0 receiver pair (default: None)

  • rx0_n (Signal | None) – The negative side of the channel 0 receiver pair (default: None)

  • tx1_p (Signal | None) – The positive side of the channel 0 transmitter pair (default: None)

  • tx1_n (Signal | None) – The negative side of the channel 0 transmitter pair (default: None)

  • rx1_p (Signal | None) – The positive side of the channel 0 receiver pair (default: None)

  • rx1_n (Signal | None) – The negative side of the channel 0 receiver pair (default: None)

Attributes:
  • dcu_num (DCUNumber) – The DCU on the device this module is configured for

  • chan (Channel) – The DCU channel(s) this module is configured for

  • sci (DCUInterface) – The SerDes Client Interface for this DCU.

elaborate(platform: Platform | None) Module
Return type:

Module

Todo

Document Me