Arria® 10 and Cyclone® 10 GX Avalon® Streaming Interface for PCI Express* User Guide

ID 683647
Date 9/11/2024
Public
Document Table of Contents

5.1. Avalon‑ST RX Interface

The following table describes the signals that comprise the Avalon-ST RX Datapath. The RX data signal can be 64, 128, or 256 bits.

Table 26.  64-, 128-, or 256‑Bit Avalon-ST RX Datapath

Signal

Direction

Description

rx_st_data[<n>-1:0]

Output

Receive data bus. Refer to figures following this table for the mapping of the Transaction Layer’s TLP information to rx_st_data and examples of the timing of this interface. Note that the position of the first payload dword depends on whether the TLP address is qword aligned. The mapping of message TLPs is the same as the mapping of TLPs with 4‑dword headers. When using a 64-bit Avalon-ST bus, the width of rx_st_data is 64. When using a 128-bit Avalon-ST bus, the width of rx_st_data is 128. When using a 256‑bit Avalon‑ST bus, the width of rx_st_data is 256 bits.

rx_st_sop[1:0]

Output

Indicates that this is the first cycle of the TLP when rx_st_valid is asserted. When using a 256-bit Avalon-ST bus the following correspondences apply:

When you turn on Enable multiple packets per cycle,

  • bit 0 indicates that a TLP begins in rx_st_data[127:0]
  • bit 1 indicates that a TLP begins in rx_st_data[255:128]

In single packet per cycle mode, this signal is a single bit which indicates that a TLP begins in this cycle.

rx_st_eop[1:0]

Output

Indicates that this is the last cycle of the TLP when rx_st_valid is asserted.

When using a 256-bit Avalon-ST bus the following correspondences apply:

When you turn on Enable multiple packets per cycle,

  • bit 0 indicates that a TLP ends in rx_st_data[127:0]
  • bit 1 indicates that a TLP ends in rx_st_data[255:128]

In single packet per cycle mode, this signal is a single bit which indicates that a TLP ends in this cycle.

rx_st_empty[1:0]

Output

Indicates the number of empty qwords in rx_st_data. Not used when rx_st_data is 64 bits. Valid only when rx_st_eop is asserted in 128-bit and 256‑bit modes.

For 128‑bit data, only bit 0 applies; this bit indicates whether the upper qword contains data. For 256‑bit data single packet per cycle mode, both bits are used to indicate whether 0-3 upper qwords contain data, resulting in the following encodings for the 128‑and 256-bit interfaces:

  • 128-Bit interface:
    • rx_st_empty = 0, rx_st_data[127:0]contains valid data
    • rx_st_empty = 1, rx_st_data[63:0] contains valid data
  • 256‑bit interface: single packet per cycle mode
    • rx_st_empt y = 0, rx_st_data[255:0] contains valid data
    • rx_st_empty = 1, rx_st_data[191:0] contains valid data
    • rx_st_empty = 2, rx_st_data[127:0] contains valid data
    • rx_st_empty = 3, rx_st_data[63:0] contains valid data
  • For 256-bit data, when you turn on Enable multiple packets per cycle, the following correspondences apply:
    • bit 1 applies to the eop occurring in rx_st_data[255:128]
    • bit 0 applies to the eop occurring in rx_st_data[127:0]
  • When the TLP ends in the lower 128 bits, the following equations apply:
    • rx_st_eop[0]=1 & rx_st_empty[0]=0, rx_st_data[127:0] contains valid data
    • rx_st_eop[0]=1 & rx_st_empty[0]=1, rx_st_data[63:0] contains valid data, rx_st_data[127:64] is empty
  • When TLP ends in the upper 128bits, the following equations apply:
    • rx_st_ eop[1]=1 & rx_st_empty[1]=0, rx_st_data[255:128] contains valid data
    • rx_st_eop[1]=1 & rx_st_empty[1]=1, rx_st_data[191:128] contains valid data, rx_st_data[255:192] is empty

rx_st_ready

Input

Indicates that the Application Layer is ready to accept data. The Application Layer deasserts this signal to throttle the data stream.

If rx_st_ready is asserted by the Application Layer on cycle <n> , then <n + > readyLatency > is a ready cycle, during which the Transaction Layer may assert valid and transfer data.

The RX interface supports a readyLatency of 3 cycles.

rx_st_valid

Output

Clocks rx_st_data into the Application Layer. Deasserts within 2 clocks of rx_st_ready deassertion and reasserts within 2 clocks of rx_st_ready assertion if more data is available to send.

For 256-bit data, when you turn on Enable multiple packets per cycle, bit 0 applies to the entire bus rx_st_data[255:0]. Bit 1 is not used.

rx_st_err[<n>-1:0]

Output

Indicates that there is an uncorrectable error correction coding (ECC) error in the internal RX buffer. Active when ECC is enabled. ECC is automatically enabled by the Quartus® Prime assembler. ECC corrects single‑bit errors and detects double‑bit errors on a per byte basis.

When an uncorrectable ECC error is detected, rx_st_err is asserted for at least 1 cycle while rx_st_valid is asserted.

For 256-bit data, when you turn on Enable multiple packets per cycle, bit 0 applies to the entire bus rx_st_data[255:0]. Bit 1 is not used.

Intel recommends resetting the Arria® 10 or Cyclone® 10 GX Hard IP for PCI Express when an uncorrectable double‑bit ECC error is detected.

Attention: If you instantiate this IP core as a separate component from the Quartus® Prime IP Catalog, the Message pane reports the following warning messages:
pcie_a10.pcie_a10_hip_0.tx.st Interface must have an associated reset
pcie_a10.pcie_a10_hip_0.rx.st Interface must have an associated reset
You can safely ignore these warnings because the IP core has a dedicated hard reset pin that is not part of the Avalon-ST TX or RX interface.