Skip to content

AXI Bus

AndrewD edited this page Aug 16, 2024 · 5 revisions

Introduction to AXI Bus in LiteX SoCs

One of the key components of a LiteX SoC is the bus system, which is used to connect the various components of the SoC. One of the most popular bus systems used in LiteX SoCs is the Advanced eXtensible Interface (AXI) bus.

Overview of AXI Bus

The AXI bus is a high-performance, scalable bus system that is widely used in FPGA-based SoCs. It was developed by ARM and is widely used in embedded systems due to its high performance and flexible architecture.

The AXI bus provides a simple, flexible, and scalable bus architecture that makes it easy to connect and communicate between different components in an SoC. The AXI bus specification defines a standard interface for communication between components, allowing components from different vendors to be easily combined in a single SoC.

The AXI bus specification defines several channels or signals to communicate between the bus master and bus slave components in an SoC. Here are the main channels and their descriptions:

  • AW (Address Write) Channel: This channel carries the write address and write control signals from the bus master to the bus slave. It is used to initiate a write transaction.
  • W (Write Data) Channel: This channel carries the write data from the bus master to the bus slave. It is used to transfer the data to be written to the bus slave's memory.
  • B (Write Response) Channel: This channel carries the response from the bus slave to the bus master for a write transaction. It confirms the completion of the write transaction and provides status information.
  • AR (Address Read) Channel: This channel carries the read address and read control signals from the bus master to the bus slave. It is used to initiate a read transaction.
  • R (Read Data) Channel: This channel carries the read data from the bus slave to the bus master. It is used to transfer the data read from the bus slave's memory.

The AXI bus API in LiteX provides a convenient and straightforward way to work with the AXI bus in a LiteX SoC.

How AXI Bus Works in LiteX SoCs

In a LiteX SoC, the AXI bus provides a communication channel between the different components of the SoC. Each component that wants to participate in the bus must implement an AXI slave interface, which provides access to the component's registers and memory. The AXI bus masters, such as a processor, can then read from or write to the slave components using the AXI slave interface.

AXI transactions are initiated by the bus master and consist of a request for data (read) or a request to write data (write). The transaction includes the address of the target component's slave interface and the data to be read or written. The slave component responds with the requested data in the case of a read transaction, or acknowledges the write transaction.

AXI Bus Example in LiteX SoCs

Here is a concrete example of how the AXI bus can be used in a LiteX SoC. Suppose we want to design an SoC that contains a processor and a memory module, and we want to use the AXI bus to connect the two components.

TODO

Clone this wiki locally