AXI Application Layer

The application layer provides an AXI interface (that conforms to the AMBA AXI protocol) to the client application. This feature lets you use AXI signals to communicate with the PCIe Controller instead of having to use PCIe protocols. The AXI interface has:

  • An AXI master read/write interface that connects to a memory controller or DMA engine. This interface is needed for all endpoints, and for root ports that allow endpoints to access their memory space. All AXI master interface signals in the core start with the prefix TARGET_AXI (see AXI Master Interface Signals).
  • An AXI slave read/write interface that enables the endpoint or root port to generate memory transactions to the link partner as bus master. This interface is required for root ports. It is only required for endpoints that need bus master capability (see AXI Slave Interface Signals).
  • An interface to signals received messages from the PCIe link.

Figure 1. AXI Modules

The PCIe Controller first decodes TLPs arriving from the transaction layer into memory requests, I/O requests, messages, and completion packets. Configuration requests are forwarded to the configuration module. The PCIe Controller sends decoded requests to the AXI master interface. The PCIe Controller performs write operations as indivisible operations (that is, address followed by data). Read operations allow delayed completions, thus allowing the address and data phases of multiple transactions to be interleaved.

With the AXI slave interface, the client can perform DMA reads and writes to the link partner's memory space, acting as a PCI master (this capability is required for root ports, and optional for endpoints). In root port, the the client application also uses the AXI slave interface to transmit I/O and configuration requests on the link. The AXI slave interface receives the client request and its associated parameters from the client application. If the transaction is a memory write or message operation, the AXI slave interface constructs a TLP containing the data to be written, and sends it to the transaction layer for delivery to the PCIe link. The core maintains no state for these posted transactions.

If the transaction is a non-posted transaction—memory read, I/O read, I/O write, configuration read, or configuration write—the AXI slave interface module forwards the request to the transaction layer and records the request parameters in the completion state memory (or split completion table). The PCIe Controller permits storage for the state of up to 256 pending transactions in the split completion table. When the corresponding completion TLP is received from the transaction layer, the AXI slave interface module matches it with the request and forwards the data to the application over the AXI slave interface. The AXI slave interface also handles completion timeouts by removing the transaction state from the completion state memory and signaling to the client using a dummy response across the AXI slave interface.