Advanced eXtensible Interface
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
The Advanced eXtensible Interface (AXI) is an on-chip communication bus protocol and is part of the Advanced Microcontroller Bus Architecture specification (AMBA).[1][2] AXI is royalty-free and its specification is freely available from ARM.
AMBA AXI specifies many optional signals, which can be included depending on the specific requirements of the design,[3] making AXI a versatile bus for numerous applications.
While the communication over an AXI bus is between a single initiator and a single target, the specification includes detailed descriptions and signals to include N:M interconnects, able to extend the bus to topologies with multiple initiators and targets.[4]
AXI3 was introduced in 2003 with the AMBA3 specification. In 2010, a new revision of AMBA, AMBA4, defined the AXI4, AXI4-Lite and AXI4-Stream protocols. AMBA AXI4, AXI4-Lite and AXI4-Stream have been adopted by Xilinx and many of its partners as a main communication bus in their products.[5][6] AMBA5 with AXI5 was released in 2022, adding atomicity, data protection, and cache operations. A new ACE (AXI Coherency Extension) is specified.[7]
Thread IDs
[edit]Thread IDs allow a single initiator port to support multiple threads, where each thread has in-order access to the AXI address space, however each thread ID initiated from a single initiator port may complete out of order with respect to each other. For instance in the case where one thread ID is blocked by a slow peripheral, another thread ID may continue independently of the order of the first thread ID. Another example, one thread on a CPU may be assigned a thread ID for a particular initiator port memory access such as read addr1, write addr1, read addr1, and this sequence will complete in order because each transaction has the same initiator port thread ID. Another thread running on the CPU may have another initiator port thread ID assigned to it, and its memory access will be in order as well but may be intermixed with the first thread IDs transactions.[8]
Thread IDs on an initiator port are not globally defined, thus an AXI switch with multiple initiator ports will internally prefix the initiator port index to the thread ID, and provide this concatenated thread ID to the target device, then on return of the transaction to its initiator port of origin, this thread ID prefix will be used to locate the initiator port and the prefix will be truncated. This is why the target port thread ID is wider in bits than the initiator port thread ID.[9]
AXI-Lite bus is an AXI bus that only supports a single ID thread per initiator. This bus is typically used for an end point that only needs to communicate with a single initiator device at a time, for example, a simple peripheral such as a UART. In contrast, a CPU is capable of initiating transactions to multiple peripherals and address spaces at a time, and will support more than one thread ID on its AXI initiator ports and AXI target ports. This is why a CPU will typically support a full spec AXI bus. A typical example of a front side AXI switch would include a full specification AXI initiator connected to a CPU initiator, and several AXI-Lite targets connected to the AXI switch from different peripheral devices.[10]
(Additionally, the AXI-Lite bus is restricted to only support transaction lengths of a single data word per transaction.)
Handshake
[edit]
AXI defines a basic handshake mechanism, composed by an xVALID and xREADY signal.[11] The xVALID signal is driven by the source to inform the destination entity that the payload on the channel is valid and can be read from that clock cycle onwards. Similarly, the xREADY signal is driven by the receiving entity to notify that it is prepared to receive data.
When both the xVALID and xREADY signals are high in the same clock cycle, the data payload is considered transferred and the source can either provide a new data payload, by keeping high xVALID, or terminate the transmission, by de-asserting xVALID. An individual data transfer, so a clock cycle when both xVALID and xREADY are high, is called a "beat".
Two main rules are defined for the control of these signals:
- A source must not wait for a high
xREADYto assertxVALID. - Once
xVALIDis asserted, a source must maintain the assertion until a handshake occurs.
Thanks to this handshake mechanism, both the source and the destination can control the flow of data, throttling the speed if needed.
Channels
[edit]In the AXI specification, five channels are described:[12]
- Read Address channel (AR)
- Read Data channel (R)
- Write Address channel (AW)
- Write Data channel (W)
- Write Response channel (B)
Other than some basic ordering rules,[13] each channel is independent from each other and has its own couple of xVALID/xREADY handshake signals.[14]
AXI
[edit]Signals
[edit]| Signal description | Write Address channel | Read Address channel |
|---|---|---|
| Address ID, to identify multiple streams over a single channel | AWID | ARID |
| Address of the first beat of the burst | AWADDR | ARADDR |
| Number of beats inside the burst | AWLEN[nb 1] | ARLEN[nb 1] |
| Size of each beat | AWSIZE | ARSIZE |
| Type of the burst | AWBURST | ARBURST |
| Lock type, to provide atomic operations | AWLOCK[nb 1] | ARLOCK[nb 1] |
| Memory type, how the transaction has to progress through the system | AWCACHE | ARCACHE |
| Protection type: privilege, security level and data/instruction access | AWPROT | ARPROT |
| Quality of service of the transaction | AWQOS[nb 2] | ARQOS[nb 2] |
| Region identifier, to access multiple logical interfaces from a single physical one | AWREGION[nb 2] | ARREGION[nb 2] |
| User-defined data | AWUSER[nb 2] | ARUSER[nb 2] |
xVALID handshake signal |
AWVALID | ARVALID |
xREADY handshake signal |
AWREADY | ARREADY |
| Signal description | Write Data channel | Read Data channel |
|---|---|---|
| Data ID, to identify multiple streams over a single channel | WID[nb 3] | RID |
| Read/Write data | WDATA | RDATA |
| Read response, to specify the status of the current RDATA signal | RRESP | |
| Byte strobe, to indicate which bytes of the WDATA signal are valid | WSTRB | |
| Last beat identifier | WLAST | RLAST |
| User-defined data | WUSER[nb 2] | RUSER[nb 2] |
xVALID handshake signal |
WVALID | RVALID |
xREADY handshake signal |
WREADY | RREADY |
| Signal description | Write Response channel |
|---|---|
| Write response ID, to identify multiple streams over a single channel | BID |
| Write response, to specify the status of the burst | BRESP |
| User-defined data | BUSER[nb 2] |
xVALID handshake signal |
BVALID |
xREADY handshake signal |
BREADY |
Bursts
[edit]
AXI is a burst-based protocol,[16] meaning that there may be multiple data transfers (or beats) for a single request. This makes it useful in the cases where it is necessary to transfer large amount of data from or to a specific pattern of addresses. In AXI, bursts can be of three types, selected by the signals ARBURST (for reads) or AWBURST (for writes):[17]
- FIXED
- INCR
- WRAP
In FIXED bursts, each beat within the transfer has the same address. This is useful for repeated access at the same memory location, such as when reading or writing a FIFO.
In INCR bursts, on the other hand, each beat has an address equal to the previous one plus the transfer size. This burst type is commonly used to read or write sequential memory areas.
WRAP bursts are similar to the INCR ones, as each transfer has an address equal to the previous one plus the transfer size. However, with WRAP bursts, if the address of the current beat reaches the "Higher Address boundary", it is reset to the "Wrap boundary":
with
Transactions
[edit]Reads
[edit]
To start a read transaction, the initiator has to provide on the Read address channel:
- the start address on ARADDR
- the burst type, either FIXED, INCR or WRAP, on ARBURST (if present)
- the burst length on ARLEN (if present).
Additionally, the other auxiliary signals, if present, are used to define more specific transfers.
After the usual ARVALID/ARREADY handshake, the target has to provide on the Read data channel:
- the data corresponding to the specified address(es) on RDATA
- the status of each beat on RRESP
plus any other optional signals. Each beat of the target's response is done with a RVALID/RREADY handshake and, on the last transfer, the target has to assert RLAST to inform that no more beats will follow without a new read request.
Writes
[edit]
To start a write operation, the initiator has to provide both the address information and the data information.
The address information is provided over the Write address channel, in a similar manner as a read operation:
- the start address has to be provided on AWADDR
- the burst type, either FIXED, INCR or WRAP, on AWBURST (if present)
- the burst length on AWLEN (if present)
and, if present, all the optional signals.
An initiator has also to provide the data related to the specified address(es) on the Write data channel:
- the data on WDATA
- the "strobe" bits on WSTRB (if present), which conditionally mark the individual WDATA bytes as "valid" or "invalid"
Like in the read path, on the last data word, WLAST has to be asserted by the initiator.
After the completion of both the transactions, the target has to send back to the initiator the status of the write over the Write response channel, by returning the result over the BRESP signal.
Subsets
[edit]AXI-Lite
[edit]AXI4-Lite is a subset of the AXI4 protocol, providing a register-like structure with reduced features and complexity.[19] Notable differences are:
- all bursts are composed by 1 beat only
- all data accesses use the full data bus width, which can be either 32 or 64 bits
AXI4-Lite removes part of the AXI4 signals but follows the AXI4 specification for the remaining ones. Being a subset of AXI4, AXI4-Lite transactions are fully compatible with AXI4 devices, permitting the interoperability between AXI4-Lite initiators and AXI4 targets without additional conversion logic.[20]
Signals
[edit]| Write address channel | Write data channel | Write response channel | Read address channel | Read data channel |
|---|---|---|---|---|
| AWVALID | WVALID | BVALID | ARVALID | RVALID |
| AWREADY | WREADY | BREADY | ARREADY | RREADY |
| AWADDR | WDATA | BRESP | ARADDR | RDATA |
| AWPROT | WSTRB | ARPROT | RRESP |
AXI-Stream
[edit]AXI4-Stream is a simplified, lightweight bus protocol designed specifically for high-speed streaming data applications. It supports only unidirectional data flow, without the need for addressing or complex handshaking. An AXI Stream is similar to an AXI write data channel, with some important differences on how the data is arranged:
- no bursts, instead data is packed into packets, frames and data streams
- no limit on the data length which may be continuous
- data width can be any integer number of bytes
AXI5 Stream protocol introduces wake-up signaling and signal protection using parity.
A single AXI Stream transmitter can drive multiple streams which may be interleaved but reordering is not permitted.
| Signal | Source | Width | Description |
|---|---|---|---|
| ACLK | Clock | 1 | ACLK is a global clock signal. All signals are sampled on the rising edge of ACLK. |
| ARESETn | Reset | 1 | ARESETn is a global reset signal. |
| TVALID | Transmitter | 1 | TVALID indicates the Transmitter is driving a valid transfer. A transfer takes place when both TVALID and TREADY are asserted. |
| TREADY | Receiver | 1 | TREADY indicates that a Receiver can accept a transfer. |
| TDATA | Transmitter | TDATA_WIDTH | TDATA is the primary payload used to provide the data that is passing across the interface. TDATA_WIDTH must be an integer number of bytes and is recommended to be 8, 16, 32, 64, 128, 256, 512 or 1024-bits. |
| TSTRB | Transmitter | TDATA_WIDTH/8 | TSTRB is the byte qualifier that indicates whether the content of the associated byte of TDATA is processed as a data byte or a position byte. |
| TKEEP | Transmitter | TDATA_WIDTH/8 | TKEEP is the byte qualifier that indicates whether content of the associated byte of TDATA is processed as part of the data stream. |
| TLAST | Transmitter | 1 | TLAST indicates the boundary of a packet. |
| TID | Transmitter | TID_WIDTH | TID is a data stream identifier. TID_WIDTH is recommended to be no more than 8. |
| TDEST | Transmitter | TDEST_WIDTH | TDEST provides routing information for the data stream. TDEST_WIDTH is recommended to be no more than 8. |
| TUSER | Transmitter | TUSER_WIDTH | TUSER is a user-defined sideband information that can be transmitted along the data stream. TUSER_WIDTH is recommended to be an integer multiple of TDATA_WIDTH/8. |
| TWAKEUP | Transmitter | 1 | TWAKEUP identifies any activity associated with AXI-Stream interface. |
See also
[edit]References
[edit]- ^ "AMBA | Documentation". Arm Holdings.
- ^ Toole, Christina (24 October 2016). "Introduction to AXI Protocol: Understandingca the AXI interface". arm.com. Arm Limited. Retrieved 11 September 2023.
The protocol used by many SoC designers today is AXI, or Advanced eXtensible Interface, and is part of the Arm Advanced Microcontroller Bus Architecture (AMBA) specification. It is especially prevalent in Xilinx's Zynq devices, providing the interface between the processing system and programmable logic sections of the chip.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 109–118. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 23–24. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ "AMBA AXI4 Interface Protocol". www.xilinx.com. Xilinx Inc.
- ^ "AXI4 IP". www.xilinx.com. Xilinx Inc.
- ^ ARM Ltd. "AMBA 5". Arm | The Architecture for the Digital World.
- ^ "AMBA AXI and ACE Protocol Specification" (PDF). Arm Ltd. 22 February 2013. Retrieved 28 November 2025.
- ^ "AXI Interconnect v2.1 LogiCORE IP Product Guide" (PDF). Xilinx. 17 May 2022. Retrieved 28 November 2025.
- ^ "AXI Thread IDs (TIDs) – SoC Basics" (PDF). Institute for Embedded Systems, TU Graz. 2021. Retrieved 28 November 2025.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 37–38. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 22–23. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 40. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 38. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 28–34. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 22. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 45–47. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ a b Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 44. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 121–128. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 124. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 122. Archived from the original (PDF) on 5 July 2019. Retrieved 5 July 2019.
External links
[edit]Advanced eXtensible Interface
View on GrokipediaOverview
Definition and Purpose
The Advanced eXtensible Interface (AXI) is a high-performance on-chip communication protocol defined as part of ARM's AMBA (Advanced Microcontroller Bus Architecture) specification family, originating with AMBA 3 in 2003 and evolving through subsequent versions.[1] It serves as a point-to-point interface specification that facilitates communication between master and subordinate components, such as processors and memory or peripherals, promoting modularity and reusability in complex SoC architectures.[3] The primary purposes of AXI include enabling high-bandwidth and low-latency data transfers to meet the demands of modern embedded systems, while offering scalability to support multiple concurrent masters and subordinates without performance bottlenecks.[1] Additionally, its extensible nature allows for custom implementations and adaptations to specific design requirements, ensuring compatibility across diverse hardware ecosystems.[3] This makes AXI particularly suited for resource-constrained environments where efficient resource sharing and interconnect optimization are critical. At its core, AXI incorporates features such as separate channels for read and write operations, support for out-of-order transaction completion to maximize throughput, and burst lengths of up to 256 beats to handle large data transfers efficiently.[1][4] These elements, underpinned by a handshake protocol for reliable signaling, enable robust and flexible communication in high-frequency systems.[1] AXI finds widespread application in connecting processors for tasks like IoT and networking, interfacing with peripherals such as controllers in multi-processor setups, and linking accelerators for high-speed data processing in advanced SoCs.[3]History and Versions
The Advanced eXtensible Interface (AXI) protocol originated in 2003 as part of the AMBA 3 specification released by ARM, marking the introduction of AXI3 as a high-performance on-chip interconnect designed for high-frequency system-on-chip (SoC) designs. AXI3 was developed to address limitations in earlier AMBA protocols like the Advanced High-performance Bus (AHB), enabling more efficient burst transfers and pipelined operations to support the growing demands of complex integrated circuits.[5] In 2010, ARM released AMBA 4, which introduced AXI4 as an evolution of AXI3, incorporating enhancements such as quality-of-service (QoS) signaling for traffic prioritization and low-power interface features to optimize energy efficiency in multi-master environments. Alongside AXI4, the specification defined AXI4-Lite in 2010 as a simplified subset for low-bandwidth, single-transaction register accesses, reducing complexity for peripheral interfaces. The same year saw the introduction of AXI4-Stream, tailored for high-throughput, unidirectional streaming data transfers without address mapping, facilitating applications like video processing and networking.[6][7] In 2017, AMBA 5 introduced AXI5, which added features such as user signals, improved error handling, and enhanced coherency support for chiplet-based designs. Post-2010, AXI development has included both major updates like AXI5 and minor revisions for enhanced compatibility and clarity, such as updates to the ordering model in later issues of the specification. These iterations ensure backward compatibility while addressing refinements in protocol behavior. AXI has seen widespread adoption in ARM Cortex processor families, serving as the standard interconnect for SoC designs, and in field-programmable gate arrays (FPGAs) from vendors like AMD and Intel, where it underpins IP integration and high-bandwidth communication.[8][9][10][11] The evolution of AXI was driven by the escalating complexity of SoCs, necessitating support for concurrent, pipelined operations across multiple masters and subordinates to achieve higher bandwidth and scalability in embedded systems.[2]Core Mechanisms
Handshake Protocol
The Advanced eXtensible Interface (AXI) utilizes a two-way handshake protocol based on VALID and READY signals to synchronize data transfers between a source and a destination, ensuring reliable communication without combinatorial paths. The source asserts VALID to indicate that stable and valid information is present on the associated bus lines, while the destination asserts READY to signal its acceptance capability. A transfer completes only on the rising clock edge when both signals are high simultaneously, guaranteeing that the source does not proceed until the destination is prepared.[12] This mechanism inherently supports backpressure, enabling the destination to deassert READY at any time to halt incoming transfers temporarily, which prevents data overflow and allows for adaptive flow control in systems with differing processing rates. Once READY is deasserted, the source must hold VALID asserted and keep the data stable until READY is reasserted, ensuring no information is lost during pauses.[12] In terms of timing, the protocol is designed for single-cycle assertions in full-speed scenarios, where both VALID and READY can align within one clock period to maximize throughput, and it applies uniformly to address, data, and response phases. READY may be asserted prior to or concurrently with VALID, but once VALID is driven high, it remains so until the handshake succeeds, promoting predictable synchronous behavior across all channels.[12] Error handling within the handshake relies on protocol compliance rather than dedicated error signals, with any deviations—such as invalid timings—leading to undefined behavior that implementations must avoid through design verification. Transaction-level errors are conveyed via response codes in later phases, but the core handshake ensures all intended transfers either complete successfully or are paused without corruption.[12] This VALID/READY mechanism is used in AXI4 and AXI5 protocols. The September 2025 Issue L update to the AMBA AXI Protocol Specification introduces the AXI-L variant, which employs a credit-based transport mechanism for improved efficiency in high-performance designs.[13] For a simple transfer cycle illustration, the sequence unfolds as follows:- Cycle 1: Source asserts VALID and drives data; if destination asserts READY in the same cycle, transfer occurs on the clock edge, and both signals may deassert afterward.
- Cycle 2 (if backpressure applied): Source keeps VALID high and data stable; destination deasserts READY to delay.
- Cycle 3: Destination asserts READY; transfer completes on the clock edge, resolving the handshake.
Thread Identifiers
In the Advanced eXtensible Interface (AXI) protocol, thread identifiers—primarily AWID and ARID—serve as tags assigned by a master to distinguish between multiple concurrent transactions, enabling the management of outstanding requests and out-of-order responses across read and write channels.[14] These identifiers allow interconnects to route responses correctly back to the originating master, supporting efficient concurrency in systems with multiple initiators.[14] AWID, used on the write address channel, and ARID, on the read address channel, are typically implemented as 4-bit fields, permitting up to 16 unique threads or transaction streams per master.[14] In AXI3, the WID signal on the write data channel matches the corresponding AWID to link data beats to their address phase, facilitating potential write data interleaving; however, AXI4 simplifies this by removing WID entirely, assuming write data follows the address in strict order without separate identification.[14] For responses, slaves echo the master's identifier as RID on the read data channel (matching ARID) and BID on the write response channel (matching AWID), ensuring accurate transaction completion even when responses arrive out of sequence.[14] The use of thread identifiers provides key benefits, such as enabling interleaving of read transactions from multiple masters in AXI4 (with write interleaving unsupported), and allowing complex interconnects to handle up to 256 outstanding transactions through wider ID fields and burst mechanisms like INCR.[14] This concurrency improves system throughput in multi-master environments, such as SoCs with processors and peripherals.[14] However, limitations include the requirement that IDs remain unique within each master—interconnects may append bits for global uniqueness—and the absence of dynamic allocation, necessitating static assignment at design time.[14]Channel Structure
The Advanced eXtensible Interface (AXI) protocol employs five independent channels to separate address, data, and response information, enabling efficient handling of read and write transactions in system-on-chip designs. These channels are the write address channel (AW), which conveys addressing information for write operations; the write data channel (W), which transfers the actual write data; the write response channel (B), which provides completion status for writes; the read address channel (AR), which carries addressing for read operations; and the read data channel (R), which delivers read data along with responses. This separation allows for modular and scalable interconnects by isolating different phases of transactions.[1] The channels operate with unidirectional flows to optimize data movement: the AW, W, and AR channels transmit information from master components to subordinate (slave) components, while the B and R channels flow in the reverse direction from slaves to masters. This design ensures that data and control signals do not interfere, supporting simultaneous read and write activities without contention on shared paths. Each channel applies a handshake mechanism for synchronization, further enhancing reliability in asynchronous environments.[1] By decoupling the channels, AXI facilitates pipelining and concurrent operations, where address issuance can proceed independently of data transfer or response handling, thereby improving overall throughput in high-frequency systems. This independence permits the insertion of pipeline stages or buffers within individual channels to balance latency and performance without affecting others. In practice, such decoupling is crucial for managing variable transaction latencies in complex interconnect fabrics.[1] Channel widths in AXI are configurable to match system requirements. The data channels (W and R) support widths from 8 to 1024 bits, commonly 32, 64, or 128 bits for high-bandwidth applications. The address channels (AW and AR) have widths determined by the address width parameter (typically 32 or 64 bits for the AWADDR and ARADDR signals) plus control signals such as length, size, and burst type (adding approximately 30-40 bits). The response channel (B) and the control portions of the R channel are narrower, based on the thread ID width (typically 4 bits) plus 2 bits for the response code and optional user signals, often totaling 6-16 bits. This flexibility in sizing allows adaptation to diverse IP cores. In the interconnect, these channels play a pivotal role by enabling non-blocking routing through multiplexers and arbiters, where transactions can be queued and forwarded independently to prevent stalls across the bus fabric.[1]AXI4 Protocol
Interface Signals
The AXI4 interface employs a set of signals organized into five channels to facilitate read and write transactions between master and subordinate components, with all channels operating synchronously on the rising edge of a global clock and using VALID/READY handshaking for reliable data transfer. These signals enable high-bandwidth, low-latency communication while supporting features like burst transfers, out-of-order responses, and optional user-defined extensions. The protocol defines precise widths and behaviors for each signal to ensure interoperability in system-on-chip designs.[1]Write Address Channel
The write address channel transfers address and control information from the master to the subordinate for initiating write bursts. This unidirectional channel uses the following key signals:| Signal | Direction | Width | Description |
|---|---|---|---|
| AWID | Master to Subordinate | Up to 16 bits | Unique transaction identifier for the write burst, enabling out-of-order responses and ordering rules.[15] |
| AWADDR | Master to Subordinate | 32 or 64 bits | Specifies the start address of the first transfer in a write burst transaction.[1] |
| AWLEN | Master to Subordinate | 8 bits | Indicates the burst length, supporting 1 to 256 transfers in AXI4 for incremental bursts.[1] |
| AWSIZE | Master to Subordinate | 3 bits | Defines the size of each transfer in the burst, from 1 byte up to 128 bytes (2^7).[1] |
| AWBURST | Master to Subordinate | 2 bits | Specifies the burst type: FIXED (no address change), INCR (incrementing), or WRAP (wrapping around a boundary).[1] |
| AWLOCK | Master to Subordinate | 1 bit | Indicates normal (0) or exclusive (1) access; locked transactions not supported in AXI4.[16] |
| AWCACHE | Master to Subordinate | 4 bits | Indicates memory type attributes for caching and buffering behavior (e.g., non-cacheable, write-back).[1] |
| AWPROT | Master to Subordinate | 3 bits | Encodes protection information: privilege level, security state, and data/instruction access type.[1] |
| AWREGION | Master to Subordinate | 4 bits | Address region identifier used for decoding or routing in multi-region interconnects.[15] |
| AWQOS | Master to Subordinate | 4 bits | Provides quality-of-service priority to manage traffic in congested interconnects (AXI4-specific).[1] |
| AWVALID | Master to Subordinate | 1 bit | Asserted by the master to indicate that the address and control signals are valid and stable.[1] |
| AWREADY | Subordinate to Master | 1 bit | Asserted by the subordinate to acknowledge receipt and readiness for the address channel transfer.[1] |
| AWUSER | Master to Subordinate | Up to 32 bits (configurable) | Optional user-defined signal for custom extensions, propagated unchanged through the interconnect.[1] |
Write Data Channel
The write data channel conveys the actual data payloads from the master to the subordinate, accompanying the address channel for burst writes. It includes strobe signals to handle byte-level granularity.| Signal | Direction | Width | Description |
|---|---|---|---|
| WDATA | Master to Subordinate | 32, 64, 128, 256, 512, or 1024 bits | Carries the write data for each transfer in the burst, aligned to the data bus width.[1] |
| WSTRB | Master to Subordinate | WDATA width / 8 bits | Byte strobes indicating which byte lanes of WDATA contain valid data (one bit per byte).[1] |
| WLAST | Master to Subordinate | 1 bit | Asserted to signal the last transfer in the write burst sequence.[1] |
| WVALID | Master to Subordinate | 1 bit | Indicates that valid write data and strobes are available on the channel.[1] |
| WREADY | Subordinate to Master | 1 bit | Signifies the subordinate's readiness to accept the write data transfer.[1] |
| WUSER | Master to Subordinate | Up to 32 bits (configurable) | Optional user-defined signal for additional per-beat information, routed with the data.[1] |
Write Response Channel
The write response channel delivers completion status from the subordinate back to the master after a write transaction, allowing out-of-order handling via identifiers.| Signal | Direction | Width | Description |
|---|---|---|---|
| BID | Subordinate to Master | Up to 16 bits | Transaction identifier matching the AWID to associate the response with the originating write address.[1] |
| BRESP | Subordinate to Master | 2 bits | Encodes the write response: OKAY (success), EXOKAY (exclusive okay), SLVERR (slave error), or DECERR (decode error).[1] |
| BVALID | Subordinate to Master | 1 bit | Asserted to indicate a valid write response is available.[1] |
| BREADY | Master to Subordinate | 1 bit | Acknowledges the master's ability to accept the response.[1] |
| BUSER | Subordinate to Master | Up to 32 bits (configurable) | Optional user-defined response signal for custom status information.[1] |
Read Address Channel
The read address channel mirrors the write address channel but is dedicated to read transactions, sending control signals from the master to the subordinate. It includes an identifier for out-of-order responses.| Signal | Direction | Width | Description |
|---|---|---|---|
| ARID | Master to Subordinate | Up to 16 bits | Unique identifier for the read transaction group, enabling out-of-order delivery.[1] |
| ARADDR | Master to Subordinate | 32 or 64 bits | Start address for the first transfer in a read burst.[1] |
| ARLEN | Master to Subordinate | 8 bits | Burst length, indicating 1 to 256 transfers.[1] |
| ARSIZE | Master to Subordinate | 3 bits | Transfer size per beat in the read burst.[1] |
| ARBURST | Master to Subordinate | 2 bits | Burst type: FIXED, INCR, or WRAP.[1] |
| ARLOCK | Master to Subordinate | 1 bit | Indicates normal (0) or exclusive (1) access; locked transactions not supported in AXI4.[16] |
| ARCACHE | Master to Subordinate | 4 bits | Cache attributes for the read memory type.[1] |
| ARPROT | Master to Subordinate | 3 bits | Protection encoding for privilege, security, and access type.[1] |
| ARREGION | Master to Subordinate | 4 bits | Address region identifier used for decoding or routing in multi-region interconnects.[17] |
| ARQOS | Master to Subordinate | 4 bits | QoS identifier for read traffic prioritization.[1] |
| ARVALID | Master to Subordinate | 1 bit | Signals valid read address and controls from the master.[1] |
| ARREADY | Subordinate to Master | 1 bit | Indicates subordinate readiness to process the read address.[1] |
| ARUSER | Master to Subordinate | Up to 32 bits (configurable) | Optional user-defined signal for read address extensions.[1] |
Read Data Channel
The read data channel returns data and status from the subordinate to the master, supporting interleaved responses from multiple transactions.| Signal | Direction | Width | Description |
|---|---|---|---|
| RID | Subordinate to Master | Up to 16 bits | Identifier matching the ARID to identify the source transaction.[1] |
| RDATA | Subordinate to Master | 32, 64, 128, 256, 512, or 1024 bits | Read data returned for each beat in the burst.[1] |
| RRESP | Subordinate to Master | 2 bits | Response status per read transfer: OKAY, EXOKAY, SLVERR, or DECERR.[1] |
| RLAST | Subordinate to Master | 1 bit | Marks the final transfer in the read burst.[1] |
| RVALID | Subordinate to Master | 1 bit | Indicates valid read data and response availability.[1] |
| RREADY | Master to Subordinate | 1 bit | Master's acknowledgment of readiness to receive read data.[1] |
| RUSER | Subordinate to Master | Up to 32 bits (configurable) | Optional user-defined signal accompanying read data.[1] |
Clock and Reset Signals
Global timing and initialization are managed by two fundamental signals shared across the interface.| Signal | Direction | Width | Description |
|---|---|---|---|
| ACLK | Clock source to all components | 1 bit | Clock signal; all AXI4 signals are sampled on its rising edge for synchronous operation.[1] |
| ARESETn | Reset source to all components | 1 bit | Active-low asynchronous reset; deasserted synchronously to ACLK to initialize the interface.[1] |
