This document contains technical documentation for the
To browse the source code, please visit the repository on GitHub.
This module contains a large set of AXI-Lite components written in VHDL. They are based around record types in axi_lite_pkg.vhd that make it convenient to work with the AXI-Lite signals.
See also the Module bfm for tools to efficiently simulate your AXI-Lite design.
Clock domain crossing of a full AXI-Lite bus (read and write) using asynchronous FIFOs for the different channels. By setting the width generics, the bus is packed optimally so that no unnecessary resources are consumed.
The constraints of asynchronous_fifo.vhd must be used.
AXI-Lite mux, aka simple 1-to-N crossbar.
base_addresses generic is a list of base addresses for the N slaves.
If the address requested by the master does not match any base address, this entity
will send AXI decode error
DECERR on the response channel (
There will still be proper AXI handshaking done, so the master will not be stalled.
This entity is written to be used in a register bus, and is designed for simplicity and low
An assumption is made that the AXI-Lite master does not queue up reads or writes.
I.e. after an
AR transaction, it does not send another
ARVALID before the
R transaction has happened.
If the AXI-Lite does queue up transactions it can lead to locking the bus.
However, if you are using this entity then you probably have a axi_to_axi_lite.vhd instance upstream. This entity will by design not queue up transactions.
Maximum logic level
Pipelining of a full AXI-Lite bus (read and write), with the goal of improving timing on the data and/or control signals.
The default settings will result in full skid-aside buffers, which pipeline both the data and control signals. However the generics to handshake_pipeline.vhd can be modified to get a simpler implementation that results in lower resource utilization.
Data types for working with AXI4-Lite interfaces. Based on the document “ARM IHI 0022E (ID022613): AMBA AXI and ACE Protocol Specification” Available here: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0022e/
Simple N-to-1 crossbar for connecting multiple AXI-Lite read masters to one port. This is a wrapper around axi_simple_read_crossbar.vhd. See that entity for details.
Simple N-to-1 crossbar for connecting multiple AXI-Lite write masters to one port. This is a wrapper around axi_simple_write_crossbar.vhd. See that entity for details.
Convenience wrapper for splitting and CDC’ing a register bus based on generics. The goal is to split a register bus, and have each resulting AXI-Lite bus in the same clock domain as the module that uses the registers. Typically used in chip top levels.
Convert AXI transfers to AXI-Lite transfers.
This module does not handle conversion of non-well behaved AXI transfers.
Burst length has to be one and size must be the width of the bus. If these
conditions are not met, the read/write response will signal
This module will throttle the AXI bus so that there is never more that one outstanding transaction (read and write separate). While the AXI-Lite standard does allow for outstanding bursts, some Xilinx cores (namely the PCIe DMA bridge) do not play well with it.
Convenience wrapper for converting a AXI bus to AXI-Lite, and then splitting and CDC’ing a register bus. The goal is to split a register bus, and have each resulting AXI-Lite bus in the same clock domain as the module that uses the registers. Typically used in chip top levels.