<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Advanced_eXtensible_Interface</id>
	<title>Advanced eXtensible Interface - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rs-485.com/index.php?action=history&amp;feed=atom&amp;title=Advanced_eXtensible_Interface"/>
	<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Advanced_eXtensible_Interface&amp;action=history"/>
	<updated>2026-05-04T01:22:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://rs-485.com/index.php?title=Advanced_eXtensible_Interface&amp;diff=379&amp;oldid=prev</id>
		<title>RS-485: Imported from Wikipedia (overwrite)</title>
		<link rel="alternate" type="text/html" href="https://rs-485.com/index.php?title=Advanced_eXtensible_Interface&amp;diff=379&amp;oldid=prev"/>
		<updated>2026-05-02T17:48:12Z</updated>

		<summary type="html">&lt;p&gt;Imported from Wikipedia (overwrite)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Computer bus protocol}}&lt;br /&gt;
{{Multiple issues|&lt;br /&gt;
{{Primary sources|date=April 2022}}&lt;br /&gt;
{{Promotional tone|date=April 2022}}&lt;br /&gt;
}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Advanced eXtensible Interface&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;AXI&amp;#039;&amp;#039;&amp;#039;) is an on-chip communication bus protocol and is part of the [[Advanced Microcontroller Bus Architecture]] specification (AMBA).&amp;lt;ref&amp;gt;{{cite web |title=AMBA {{!}} Documentation |url=https://developer.arm.com/architectures/system-architectures/amba |publisher=Arm Holdings |language=en}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;ARM-AXI-Protocol_(2016)&amp;quot;&amp;gt;{{cite web |url=https://community.arm.com/arm-community-blogs/b/soc-design-and-simulation-blog/posts/introduction-to-axi-protocol-understanding-the-axi-interface |title=Introduction to AXI Protocol: Understandingca the AXI interface |last=Toole |first=Christina |date=24 October 2016 |website=arm.com |publisher=Arm Limited |access-date=11 September 2023 |quote=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.}}&amp;lt;/ref&amp;gt; AXI is [[royalty-free]] and its specification is freely available from [[ARM Holdings|ARM]].&lt;br /&gt;
&lt;br /&gt;
AMBA AXI specifies many optional [[signal]]s, which can be included depending on the specific requirements of the design,&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=109–118 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt; making AXI a versatile bus for numerous applications.&lt;br /&gt;
&lt;br /&gt;
While the communication over an AXI [[Bus (computing)|bus]] is between a single initiator and a single target, the specification includes detailed descriptions and [[signal]]s to include N:M interconnects, able to extend the bus to topologies with multiple initiators and targets.&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=23–24 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 [[Communication protocol|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.&amp;lt;ref&amp;gt;{{cite web |title=AMBA AXI4 Interface Protocol |url=https://www.xilinx.com/products/intellectual-property/axi.html |publisher=Xilinx Inc |website=www.xilinx.com |language=en}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=AXI4 IP |url=https://www.xilinx.com/products/intellectual-property/axi/axi4_ip.html |publisher=Xilinx Inc |website=www.xilinx.com |language=en}}&amp;lt;/ref&amp;gt; AMBA5 with AXI5 was released in 2022, adding atomicity, data protection, and cache operations. A new ACE (AXI Coherency Extension) is specified.&amp;lt;ref&amp;gt;{{cite web |last1=ARM Ltd |title=AMBA 5 |url=https://www.arm.com/en/architecture/system-architectures/amba/amba-5 |website=Arm {{!}} The Architecture for the Digital World |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Thread IDs==&lt;br /&gt;
{{Unreferenced section|date=May 2020}}&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{cite pdf |title=AMBA AXI and ACE Protocol Specification|url=https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/IHI0022H_amba_axi_protocol_spec.pdf|publisher=Arm Ltd.|date=22 February 2013|access-date=28 November 2025}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{cite pdf |title=AXI Interconnect v2.1 LogiCORE IP Product Guide|url=https://www.xilinx.com/support/documents/ip_documentation/axi_interconnect/v2_1/pg059-axi-interconnect.pdf|publisher=Xilinx|date=17 May 2022|access-date=28 November 2025}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{cite pdf |title=AXI Thread IDs (TIDs) – SoC Basics|url=https://www.isec.tugraz.at/wp-content/uploads/2021/08/p2.pdf|publisher=Institute for Embedded Systems, TU Graz|date=2021|access-date=28 November 2025}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Additionally, the AXI-Lite bus is restricted to only support transaction lengths of a single data word per transaction.)&lt;br /&gt;
&lt;br /&gt;
== Handshake ==&lt;br /&gt;
[[File:AMBA_AXI_Handshake.svg|thumb|Basic [[Handshake (computing)|handshake mechanism]] of the AMBA AXI [[Communication protocol|protocol]]. In this example, the destination entity waits for a high VALID to assert its own READY.]]&lt;br /&gt;
&lt;br /&gt;
AXI defines a basic [[Handshake (computing)|handshake mechanism]], composed by an &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; signal.&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=37–38 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt; The &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; signal is driven by the receiving entity to notify that it is prepared to receive data.&lt;br /&gt;
&lt;br /&gt;
When both the &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt;, or terminate the transmission, by de-asserting &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt;. An individual data transfer, so a clock cycle when both &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; are high, is called a &amp;quot;beat&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Two main rules are defined for the control of these signals:&lt;br /&gt;
&lt;br /&gt;
* A source must not wait for a high &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; to assert &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Once &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; is asserted, a source must maintain the assertion until a handshake occurs.&lt;br /&gt;
&lt;br /&gt;
Thanks to this [[Handshake (computing)|handshake]] mechanism, both the source and the destination can control the flow of data, throttling the speed if needed.&lt;br /&gt;
&lt;br /&gt;
== Channels ==&lt;br /&gt;
In the AXI specification, five [[Communication channel|channels]] are described:&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=22–23 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Read Address channel (AR)&lt;br /&gt;
* Read Data channel (R)&lt;br /&gt;
* Write Address channel (AW)&lt;br /&gt;
* Write Data channel (W)&lt;br /&gt;
* Write Response channel (B)&lt;br /&gt;
&lt;br /&gt;
Other than some basic ordering rules,&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=40 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt; each [[Communication channel|channel]] is independent from each other and has its own couple of &amp;lt;code&amp;gt;xVALID/xREADY&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signals.&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=38 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{multiple image&lt;br /&gt;
 | align = center&lt;br /&gt;
 | total_width = 1000&lt;br /&gt;
&lt;br /&gt;
 | image1 = AXI read channels.svg&lt;br /&gt;
 | alt1 = AXI read channels&lt;br /&gt;
 | caption1 = AXI Read Address and Read Data channels.&lt;br /&gt;
&lt;br /&gt;
 | image2 = AXI write channels.svg&lt;br /&gt;
 | alt2 = AXI write channels&lt;br /&gt;
 | caption2 = AXI Write Address, Write Data and Write Response channels.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== AXI ==&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Signals of the Read and Write Address channels&lt;br /&gt;
|-&lt;br /&gt;
! Signal description !! Write Address channel !! Read Address channel&lt;br /&gt;
|-&lt;br /&gt;
| Address ID, to identify multiple [[Stream (computing)|streams]] over a single [[Communication channel|channel]] || AWID || ARID&lt;br /&gt;
|-&lt;br /&gt;
| Address of the first beat of the burst || AWADDR || ARADDR&lt;br /&gt;
|-&lt;br /&gt;
| Number of beats inside the burst || AWLEN{{refn|name=axi34difference|group=nb|Different behavior between AXI3 and AXI4}} || ARLEN{{refn|name=axi34difference|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| Size of each beat || AWSIZE || ARSIZE&lt;br /&gt;
|-&lt;br /&gt;
| Type of the burst || AWBURST || ARBURST&lt;br /&gt;
|-&lt;br /&gt;
| Lock type, to provide [[Atomicity (programming)|atomic operations]] || AWLOCK{{refn|name=axi34difference|group=nb}} || ARLOCK{{refn|name=axi34difference|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| Memory type, how the transaction has to progress through the system || AWCACHE || ARCACHE&lt;br /&gt;
|-&lt;br /&gt;
| Protection type: [[Privilege (computing)|privilege]], security level and data/instruction access || AWPROT || ARPROT&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality of service]] of the transaction || AWQOS{{refn|name=axi4only|group=nb|Available only with AXI4}} || ARQOS{{refn|name=axi4only|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| Region identifier, to access multiple logical interfaces from a single physical one || AWREGION{{refn|name=axi4only|group=nb}} || ARREGION{{refn|name=axi4only|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| User-defined data || AWUSER{{refn|name=axi4only|group=nb}} || ARUSER{{refn|name=axi4only|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || AWVALID || ARVALID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || AWREADY || ARREADY&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Signals of the Read and Write Data channels&lt;br /&gt;
|-&lt;br /&gt;
! Signal description !! Write Data channel !! Read Data channel&lt;br /&gt;
|-&lt;br /&gt;
| Data ID, to identify multiple [[Stream (computing)|streams]] over a single [[Communication channel|channel]] || WID{{refn|name=axi3only|group=nb|Available only with AXI3}} || RID&lt;br /&gt;
|-&lt;br /&gt;
| Read/Write data || WDATA || RDATA&lt;br /&gt;
|-&lt;br /&gt;
| Read response, to specify the status of the current RDATA signal || || RRESP &lt;br /&gt;
|-&lt;br /&gt;
| Byte strobe, to indicate which bytes of the WDATA signal are valid || WSTRB || &lt;br /&gt;
|-&lt;br /&gt;
| Last beat identifier || WLAST || RLAST&lt;br /&gt;
|-&lt;br /&gt;
| User-defined data || WUSER{{refn|name=axi4only|group=nb}} || RUSER{{refn|name=axi4only|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || WVALID || RVALID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || WREADY || RREADY&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Signals of the Write Response channel&lt;br /&gt;
|-&lt;br /&gt;
! Signal description !! Write Response channel&lt;br /&gt;
|-&lt;br /&gt;
| Write response ID, to identify multiple [[Stream (computing)|streams]] over a single [[Communication channel|channel]] || BID&lt;br /&gt;
|-&lt;br /&gt;
| Write response, to specify the status of the burst || BRESP&lt;br /&gt;
|-&lt;br /&gt;
| User-defined data || BUSER{{refn|name=axi4only|group=nb}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xVALID&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || BVALID&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;xREADY&amp;lt;/code&amp;gt; [[Handshake (computing)|handshake]] signal || BREADY&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=28–34 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
{{reflist|group=nb}}&lt;br /&gt;
&lt;br /&gt;
=== Bursts ===&lt;br /&gt;
[[File:AXI_Bursts.svg|thumb|upright=1.5|Example of FIXED, INCR and WRAP bursts]]&lt;br /&gt;
&lt;br /&gt;
AXI is a [[Burst mode (computing)|burst-based]] [[Communication protocol|protocol]],&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=22 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt; 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.&lt;br /&gt;
In AXI, bursts can be of three types, selected by the signals ARBURST (for reads) or AWBURST (for writes):&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=45–47 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* FIXED&lt;br /&gt;
* INCR&lt;br /&gt;
* WRAP&lt;br /&gt;
&lt;br /&gt;
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 (computing and electronics)|FIFO]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{Address} = \mathit{StartAddress}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{Address}_i = \mathit{StartAddress} + \mathit{i} \cdot \mathit{TransferSize}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;Higher Address boundary&amp;quot;, it is reset to the &amp;quot;Wrap boundary&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{Address}_i = \mathit{WrapBoundary} + (\mathit{StartAddress} + \mathit{i} \cdot \mathit{TransferSize})\ \mathrm{mod}\ (\mathit{BurstLength} \cdot \mathit{TransferSize})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathit{WrapBoundary} = \left\lfloor \frac{\mathit{StartAddress}}{\mathit{NumberBytes} \cdot \mathit{BurstLength}} \right\rfloor \cdot (\mathit{NumberBytes} \cdot \mathit{BurstLength})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transactions ===&lt;br /&gt;
&lt;br /&gt;
==== Reads ====&lt;br /&gt;
[[File:AXI read transaction.svg|thumb|upright=2.25|Example of an AXI read transaction. The initiator requests 4 beats (ARLEN + 1&amp;lt;ref name=&amp;quot;axlen&amp;quot;&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=44 |language=en}}&amp;lt;/ref&amp;gt;) of 4 Bytes each starting from address 0x0 with INCR type. The target returns 0x10 for address 0x0, 0x11 for address 0x4, 0x12 for address 0x8 and 0x13 for address 0xc, all with the OKAY status. Only the most relevant signals are shown here.]]&lt;br /&gt;
&lt;br /&gt;
To start a read transaction, the initiator has to provide on the Read address channel:&lt;br /&gt;
* the start address on ARADDR&lt;br /&gt;
* the burst type, either FIXED, INCR or WRAP, on ARBURST (if present)&lt;br /&gt;
* the burst length on ARLEN (if present).&lt;br /&gt;
Additionally, the other auxiliary signals, if present, are used to define more specific transfers.&lt;br /&gt;
&lt;br /&gt;
After the usual ARVALID/ARREADY handshake, the target has to provide on the Read data channel:&lt;br /&gt;
* the data corresponding to the specified address(es) on RDATA&lt;br /&gt;
* the status of each beat on RRESP&lt;br /&gt;
plus any other optional signals.&lt;br /&gt;
Each beat of the target&amp;#039;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.&lt;br /&gt;
&lt;br /&gt;
==== Writes ====&lt;br /&gt;
[[File:AXI write transaction.svg|thumb|upright=2.25|Example of an AXI write transaction. The initiator drives 4 beats (AWLEN + 1&amp;lt;ref name=&amp;quot;axlen&amp;quot; /&amp;gt;) of 4 Bytes each starting from address 0x0 with INCR type, writing 0x10 for address 0x0, 0x11 for address 0x4, 0x12 for address 0x8 and 0x13 for address 0xc. The target returns &amp;#039;OKAY&amp;#039; as write response for the whole transaction. Only the most relevant signals are shown here.]]&lt;br /&gt;
&lt;br /&gt;
To start a write operation, the initiator has to provide both the address information and the data information.&lt;br /&gt;
&lt;br /&gt;
The address information is provided over the Write address channel, in a similar manner as a read operation:&lt;br /&gt;
* the start address has to be provided on AWADDR&lt;br /&gt;
* the burst type, either FIXED, INCR or WRAP, on AWBURST (if present)&lt;br /&gt;
* the burst length on AWLEN (if present)&lt;br /&gt;
and, if present, all the optional signals.&lt;br /&gt;
&lt;br /&gt;
An initiator has also to provide the data related to the specified address(es) on the Write data channel:&lt;br /&gt;
* the data on WDATA&lt;br /&gt;
* the &amp;quot;strobe&amp;quot; bits on WSTRB (if present), which conditionally mark the individual WDATA bytes as &amp;quot;valid&amp;quot; or &amp;quot;invalid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Like in the read path, on the last data word, WLAST has to be asserted by the initiator.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Subsets ==&lt;br /&gt;
&lt;br /&gt;
=== AXI-Lite ===&lt;br /&gt;
AXI4-Lite is a [[subset]] of the AXI4 protocol, providing a [[Processor register|register-like]] structure with reduced features and complexity.&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |pages=121–128 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt; Notable differences are:&lt;br /&gt;
* all bursts are composed by 1 beat only&lt;br /&gt;
* all data accesses use the full data bus width, which can be either 32 or 64 bits&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=124 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Signals ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Write address channel !! Write data channel !! Write response channel !! Read address channel !! Read data channel&lt;br /&gt;
|-&lt;br /&gt;
| AWVALID || WVALID || BVALID || ARVALID || RVALID&lt;br /&gt;
|-&lt;br /&gt;
| AWREADY || WREADY || BREADY || ARREADY || RREADY&lt;br /&gt;
|-&lt;br /&gt;
| AWADDR || WDATA || BRESP || ARADDR || RDATA&lt;br /&gt;
|-&lt;br /&gt;
| AWPROT || WSTRB || || ARPROT || RRESP&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite web |author1=Arm Holdings |title=AMBA AXI and ACE Protocol Specification |url=https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |website=developer.arm.com |access-date=5 July 2019 |page=122 |language=en |archive-date=5 July 2019 |archive-url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AXI-Stream ===&lt;br /&gt;
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:&lt;br /&gt;
* no bursts, instead data is packed into packets, frames and data streams&lt;br /&gt;
* no limit on the data length which may be continuous&lt;br /&gt;
* data width can be any integer number of bytes&lt;br /&gt;
&lt;br /&gt;
AXI5 Stream protocol introduces wake-up signaling and signal protection using parity.&lt;br /&gt;
&lt;br /&gt;
A single AXI Stream transmitter can drive multiple streams which may be interleaved but reordering is not permitted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Signal !! Source !! Width !! Description&lt;br /&gt;
|-&lt;br /&gt;
| ACLK || Clock || 1 || ACLK is a global clock signal. All signals are sampled on the rising edge of ACLK.&lt;br /&gt;
|-&lt;br /&gt;
| ARESETn || Reset || 1 || ARESETn is a global reset signal.&lt;br /&gt;
|-&lt;br /&gt;
| TVALID || Transmitter || 1 || TVALID indicates the Transmitter is driving a valid transfer. A transfer takes place when both TVALID and TREADY are asserted.&lt;br /&gt;
|-&lt;br /&gt;
| TREADY || Receiver || 1 || TREADY indicates that a Receiver can accept a transfer.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| TLAST || Transmitter || 1 || TLAST indicates the boundary of a packet.&lt;br /&gt;
|-&lt;br /&gt;
| TID || Transmitter || TID_WIDTH || TID is a data stream identifier. TID_WIDTH is recommended to be no more than 8.&lt;br /&gt;
|-&lt;br /&gt;
| TDEST || Transmitter || TDEST_WIDTH || TDEST provides routing information for the data stream. TDEST_WIDTH is recommended to be no more than 8.&lt;br /&gt;
|-&lt;br /&gt;
| 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.&lt;br /&gt;
|-&lt;br /&gt;
| TWAKEUP || Transmitter || 1 || TWAKEUP identifies any activity associated with AXI-Stream interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Advanced Microcontroller Bus Architecture]]&lt;br /&gt;
* [[Wishbone (computer bus)]]&lt;br /&gt;
* [[Master/slave (technology)]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://www.arm.com/products/silicon-ip-system/embedded-system-design/amba-specifications AMBA webpage]&lt;br /&gt;
* [https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf AXI4 specification] {{Webarchive|url=https://web.archive.org/web/20190705083043/https://static.docs.arm.com/ihi0022/e/IHI0022E_amba_axi_and_ace_protocol_spec.pdf |date=2019-07-05 }}&lt;br /&gt;
* [https://community.arm.com/developer/ip-products/system/b/soc-design-blog/posts/introduction-to-axi-protocol-understanding-the-axi-interface ARM AXI introduction]&lt;br /&gt;
* [https://www.xilinx.com/products/intellectual-property/axi.html Xilinx AXI introduction]&lt;br /&gt;
&lt;br /&gt;
{{Computer-bus}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computer buses]]&lt;br /&gt;
[[Category:System on a chip]]&lt;br /&gt;
[[Category:ARM architecture]]&lt;br /&gt;
[[Category:Serial buses]]&lt;/div&gt;</summary>
		<author><name>RS-485</name></author>
	</entry>
</feed>