-
Notifications
You must be signed in to change notification settings - Fork 571
AXI Bus
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.
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.
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.
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
Have a question or want to get in touch? Our IRC channel is #litex at irc.libera.chat.
- Welcome to LiteX
- LiteX's internals
- How to
- Create a minimal SoC-TODO
- Add a new Board-TODO
- Add a new Core-WIP
- Add a new CPU-WIP
- Reuse-a-(System)Verilog,-VHDL,-Amaranth,-Spinal-HDL,-Chisel-core
- Use LiteX on the Acorn CLE 215+
- Load application code the CPU(s)
- Use Host Bridges to control/debug a SoC
- Use LiteScope to debug a SoC
- JTAG/GDB Debugging with VexRiscv CPU
- JTAG/GDB Debugging with VexRiscv-SMP, NaxRiscv and VexiiRiscv CPUs
- Document a SoC
- How to (Advanced)