40- and 100-Gbps Ethernet MAC and PHY MegaCore Function User Guide

ID 683114
Date 6/15/2022
Public
Document Table of Contents

3.2.4.3. 40-100GbE IP Core RX Data Bus Without Adapters (Custom Streaming Interface)

The RX bus without adapters consists of five 8-byte words, or 320 bits, operating at a frequency above 315 MHz for the 100GbE IP core or two 8‑byte words, or 128 bits, for the 40GbE IP core, nominally at 315 MHz. This bus drives data from the RX MAC to the RX client.

Figure 33. RX MAC to Client Interface Without Adapters The custom streaming interface bus width varies with the IP core variation. In the figure, <w> = 2 for the 40GbE IP core and <w> = 5 for the 100GbE IP core.
Table 23.  Signals of the RX Client Interface Without AdaptersIn the table, <w> = 2 for the 40GbE IP core and <w> = 5 for the 100GbE IP core.

Signal Name

Direction

Description

dout_d[<w>*64-1:0]

Output

Received data and Idle bytes. In RX preamble pass-through mode, this bus also carries the preamble.

dout_c[<w>*8-1:0]

Output

Indicates control bytes on the data bus. Each bit of dout_c indicates whether the corresponding byte of dout_d is a control byte. A bit is asserted high if the corresponding byte on dout_d is an Idle byte or the Start byte, and has the value of zero if the corresponding byte is a data byte or, in preamble pass-through mode, a preamble or SFD byte.

dout_first_data[<w>-1:0]

Output

Indicates the first data word of a frame, in the current clk_rxmac cycle. In RX preamble pass-through mode, the first data word is the word that contains the preamble. When the RX preamble pass-through feature is turned off, the first data word is the first word of Ethernet data that follows the preamble.

dout_last_data[<w>*8–1:0]

Output

Indicates the final data byte of a frame, before the FCS, in the current clk_rxmac cycle.

dout_runt_last_data[<w>-1:0]

Output

Indicates that the last_data (the final data byte of the frame) is the final data byte of a runt frame (< 64 bytes). If a frame is eight bytes or smaller, it is considered a decoding error and not a runt frame, and the IP core does not flag it with this signal.

dout_payload[<w>-1:0]

Output

Word contains packet data (including destination and source addresses) as opposed to only containing Idle bytes. CRC and padding bits are considered data for this signal. When preamble pass-through is turned on, the preamble is also considered data for this signal.

dout_fcs_error

Output

The current or most recent last_data byte is part of a frame with an incorrect FCS (CRC-32) value. By default, the IP core asserts dout_fcs_error in the same cycle as the dout_last_data signal. However, in RX automatic pad removal mode, the dout_fcs_error signal might lag the dout_last_data signal for the frame.

dout_fcs_valid

Output

The FCS error bit is valid.

dout_dst_addr_match[<w>-1:0]

Output

The first data word in a frame that matches the destination address in the DST_AD0_LO and DST_AD0_HI registers. However, if bit 30 of the MADDR_CTRL register has the value of 0, the address is always considered to match. Otherwise, if bit 0 of the MADDR_CTRL register has the value of 0, the address is always considered to not match.

dout_valid

Output

The dout_d bus contents are valid. This signal is occasionally deasserted due to clock crossing.

clk_rxmac

Input

RX MAC clock. The minimum clock frequency is 315 MHz. The clk_rxmac clock and the clk_txmac clock (which clocks the TX datapath) are not related and their rates do not have to match.

The data bytes use 100 Gigabit Media Independent Interface (CGMII‑like) encoding. For packet payload bytes, the dout_c bit is set to 0 and the dout_d byte is the packet data. You can use this information to transmit out‑of-spec data such as customized preambles when implementing non-standard variants of the IEEE 802.3ba-2010 100G Ethernet Standard. If the additional customized data is not required, simply ignore all words which are marked with dout_payload = 0 and discard the dout_c bus.

In RX preamble pass-through mode, dout_c has the value of 1 while the start byte of the preamble is presented on the RX interface, and dout_c has the value of 0 while the remainder of the preamble sequence (six-byte preamble plus SFD byte) is presented on the RX interface. While the preamble sequence is presented on the RX interface, dout_payload has the value of 1.