MICROCHIP DDR AXI4 Arbiter
Introduction: The AXI4-Stream protocol standard uses the terminology Master and Slave. The equivalent Microchip terminology used in this document is Initiator and Target, respectively.
Summary: The following table provides a summary of the DDR AXI4 Arbiter characteristics.
Characteristic | Value |
---|---|
Core Version | DDR AXI4 Arbiter v2.2 |
Supported Device Families | – |
Supported Tool Flow Licensing | – |
Features: DDR AXI4 Arbiter has the following key features:
- IP core must be installed to the IP Catalog of the Libero SoC software.
- The core is configured, generated, and instantiated within the SmartDesign tool for inclusion in the Libero project list.
Device Utilization and Performance:
Device Details | Family | Device | Resources | Performance (MHz) |
---|---|---|---|---|
LUTs DFF RAMs LSRAM SRAM Math Blocks Chip Globals | PolarFire | MPF300T-1 | 5411 4202 | 266 |
Functional Description
Functional Description: This section describes the implementation details of the DDR_AXI4_Arbiter. The following figure shows the top-level pin-out diagram of the DDR AXI4 Arbiter.
DDR_AXI4_Arbiter Parameters and Interface Signals
Configuration Settings:
The configuration settings for DDR_AXI4_Arbiter are not specified in this document.
Inputs and Outputs Signals:
The input and output signals for DDR_AXI4_Arbiter are not specified in this document.
Timing Diagrams
The timing diagrams for DDR_AXI4_Arbiter are not specified in this document.
Testbench
Simulation:
The simulation details for DDR_AXI4_Arbiter are not specified in this document.
Revision History
The revision history for DDR_AXI4_Arbiter is not specified in this document.
Microchip FPGA Support
The Microchip FPGA Support information for DDR_AXI4_Arbiter is not specified in this document.
Product Usage Instructions
- Install DDR AXI4 Arbiter v2.2 to the IP Catalog of the Libero SoC software.
- Configure, generate and instantiate the core within the SmartDesign tool for inclusion in the Libero project list.
Introduction (Ask a Question)
Memories are an integral part of any typical video and graphics application. They are used for buffering entire video frames when the local memory of the FPGA is insufficient to hold the entire frame. When there are multiple reads and writes of video frames into DDR, an arbiter will be required to arbitrate between multiple requests. The DDR AXI4 Arbiter IP provides 8 write channels to write frame buffers into external DDR memory and 8 read channels to read frames from external memory. The arbitration is based on a first-come, first-served basis. If two requests occur simultaneously, the channel with the lower channel number will take priority. The arbiter connects to the DDR controller IP through the AXI4 interface. The DDR AXI4 Arbiter provides an AXI4 Initiator interface to the DDR on-chip controllers. The arbiter supports up to eight write channels and eight read channels. The block arbitrates between eight read channels to provide access to the AXI read channel in a first-come, first-served manner. The block arbitrates between eight write channels to provide access to the AXI write channel in a first-come, first-served manner. All eight read-and-write channels have equal priority. The AXI4 Initiator interface of the Arbiter IP can be configured for various data widths ranging from 64 bits to 512 bits.
Important: The AXI4-Stream protocol standard uses the terminology “Master” and “Slave”. The equivalent Microchip terminology used in this document is Initiator and Target, respectively.
Summary (Ask a Question)
The following table provides a summary of the DDR AXI4 Arbiter characteristics.
Table 1. DDR AXI4 Arbiter Characteristics
This document applies to DDR AXI4 Arbiter v2.2.
- PolarFire® SoC
- PolarFire
- RTG4™
- IGLOO® 2
- SmartFusion® 2
Requires Libero® SoC v12.3 or later releases. The IP can be used in RTL mode without any license. For more information, see DDR_AXI4_Arbiter.
Features (Ask a Question)
DDR AXI4 Arbiter has the following key features:
- Eight Write channels
- Eight Read channels
- AXI4 Interface to DDR controller
- Configurable AXI4 width: 64, 128, 256, and 512 bits
- Configurable Address width: 32 to 64 bits
Implementation of IP Core in Libero® Design Suite (Ask a Question)
IP core must be installed to the IP Catalog of the Libero SoC software. This is installed automatically through the IP Catalog update function in the Libero SoC software, or the IP core is manually downloaded from the catalog. Once the IP core is installed in the Libero SoC software IP Catalog, the core is configured, generated, and instantiated within the SmartDesign tool for inclusion in the Libero project list.
Device Utilization and Performance (Ask a Question)
The following table lists the device utilization used for DDR_AXI4_Arbiter.
Table 2. DDR_AXI4_Arbiter Utilization
Device Details | Resources | Performance (MHz) | RAMs | Math Blocks | Chip Globals | |||
Family | Device | LUTs | DFF | LSRAM | μSRAM | |||
PolarFire® SoC | MPFS250T-1 | 5411 | 4202 | 266 | 13 | 1 | 0 | 0 |
PolarFire | MPF300T-1 | 5411 | 4202 | 266 | 13 | 1 | 0 | 0 |
SmartFusion® 2 | M2S150-1 | 5546 | 4309 | 192 | 15 | 1 | 0 | 0 |
Important:
- The data in the preceding table is captured using typical synthesis and layout settings. The IP is configured for eight write channels, eight read channels, address width of 32 bit, and data width of 512 bits configuration.
- Clock is constrained to 200 MHz while running the timing analysis to achieve the performance numbers.
Functional Description (Ask a Question)
This section describes the implementation details of the DDR_AXI4_Arbiter. The following figure shows the top-level pin-out diagram of the DDR AXI4 Arbiter. Figure 1-1. Top-Level Pin-Out Block Diagram for Native Arbiter Interface
The following figure shows the system-level block diagram of the DDR_AXI4_Arbiter in Bus interface mode. Figure 1-2. System-Level Block Diagram of DDR_AXI4_Arbiter
A read transaction is triggered by setting the input signal r(x)_req_i high on a particular read channel. The arbiter responds by acknowledgment when it is ready to service the read request. Then it samples the starting AXI address and reads the burst size which is input from the external initiator. The channel processes the inputs and generates the required AXI transactions to read data from the DDR memory. The read data output from the arbiter is common to all the read channels. During data read out, the read data valid of the corresponding channel goes high. The end of the read transaction is denoted by a read-done signal when all the requested bytes are sent out. Similar to a read transaction, a write transaction is triggered by setting the input signal w(x)_req_i high. Along with the request signal, the write start address and the burst length must be provided during the request. When the arbiter is available to service the written request, it responds by sending an acknowledgment signal on the corresponding channel. Then the user has to provide the write data along with the data-valid signal on the channel. The number of clocks the data valid high period must match the burst length. The arbiter completes the write operation and sets the write done signal high denoting the completion of the write transaction.
DDR_AXI4_Arbiter Parameters and Interface Signals (Ask a Question)
This section discusses the parameters in the DDR_AXI4_Arbiter GUI configurator and I/O signals.
2.1 Configuration Settings (Ask a Question)
The following table lists the description of the configuration parameters used in the hardware implementation of DDR_AXI4_Arbiter. These are generic parameters and can be varied as per the requirement of the application.
Table 2-1. Configuration Parameter
Signal Name | Description |
AXI ID Width | Defines the AXI ID width. |
AXI Data Width | Defines the AXI data width. |
AXI Address Width | Defines the AXI address width |
Number of Read channels | Options to select the required no of write channels from the drop-down menu ranging from one channel to eight write channels. |
Number of Write channels | Options to select the required no of read channels from the drop-down menu ranging from one channel to eight read channels. |
AXI4_SELECTION | Options to select between AXI4_MASTER and AXI4_MIRRORED_SLAVE. |
Arbiter Interface | Option to select the bus interface. |
Inputs and Outputs Signals (Ask a Question)
The following table lists the inputs and output ports of the DDR AXI4 Arbiter for Bus interface.
Table 2-2. Input and Output Ports for Arbiter Bus Interface
Signal Name | Direction | Width | Description |
reset_i | Input | — | Active Low asynchronous reset signal to design |
sys_ckl_i | Input | — | System clock |
ddr_ctrl_ready_i | Input | — | Receives the ready Input signal from the DDR controller |
ARVALID_I_0 | Input | — | Read request from read channel 0 |
ARSIZE_I_0 | Input | 8 bits | read burst size from read channel 0 |
ARADDR_I_0 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 0 |
ARREADY_O_0 | Output | — | Arbiter acknowledgment to read request from read channel 0 |
RVALID_O_0 | Output | — | Read data valid from read channel 0 |
RDATA_O_0 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 0 |
RLAST_O_0 | Output | — | Read end of frame signal from read channel 0 |
BUSER_O_r0 | Output | — | Read completion to read channel 0 |
ARVALID_I_1 | Input | — | Read request from read channel 1 |
ARSIZE_I_1 | Input | 8 bits | Read burst size from read channel 1 |
ARADDR_I_1 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 1 |
ARREADY_O_1 | Output | — | Arbiter acknowledgment to read request from read channel 1 |
RVALID_O_1 | Output | — | Read data valid from read channel 1 |
RDATA_O_1 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 1 |
RLAST_O_1 | Output | — | Read end of frame signal from read channel 1 |
BUSER_O_r1 | Output | — | Read completion to read channel 1 |
ARVALID_I_2 | Input | — | Read request from read channel 2 |
………..continued | |||
Signal Name | Direction | Width | Description |
ARSIZE_I_2 | Input | 8 bits | Read burst size from read channel 2 |
ARADDR_I_2 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 2 |
ARREADY_O_2 | Output | — | Arbiter acknowledgment to read request from read channel 2 |
RVALID_O_2 | Output | — | Read data valid from read channel 2 |
RDATA_O_2 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 2 |
RLAST_O_2 | Output | — | Read end of frame signal from read channel 2 |
BUSER_O_r2 | Output | — | Read completion to read channel 2 |
ARVALID_I_3 | Input | — | Read request from read channel 3 |
ARSIZE_I_3 | Input | 8 bits | Read burst size from read channel 3 |
ARADDR_I_3 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 3 |
ARREADY_O_3 | Output | — | Arbiter acknowledgment to read request from read channel 3 |
RVALID_O_3 | Output | — | Read data valid from read channel 3 |
RDATA_O_3 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 3 |
RLAST_O_3 | Output | — | Read end of frame signal from read channel 3 |
BUSER_O_r3 | Output | — | Read completion to read channel 3 |
ARVALID_I_4 | Input | — | Read request from read channel 4 |
ARSIZE_I_4 | Input | 8 bits | Read burst size from read channel 4 |
ARADDR_I_4 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 4 |
ARREADY_O_4 | Output | — | Arbiter acknowledgment to read request from read channel 4 |
RVALID_O_4 | Output | — | Read data valid from read channel 4 |
RDATA_O_4 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 4 |
RLAST_O_4 | Output | — | Read end of frame signal from read channel 4 |
BUSER_O_r4 | Output | — | Read completion to read channel 4 |
ARVALID_I_5 | Input | — | Read request from read channel 5 |
ARSIZE_I_5 | Input | 8 bits | Read burst size from read channel 5 |
ARADDR_I_5 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 5 |
ARREADY_O_5 | Output | — | Arbiter acknowledgment to read request from read channel 5 |
RVALID_O_5 | Output | — | Read data valid from read channel 5 |
RDATA_O_5 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 5 |
RLAST_O_5 | Output | — | Read end of frame signal from read channel 5 |
BUSER_O_r5 | Output | — | Read completion to read channel 5 |
ARVALID_I_6 | Input | — | Read request from read channel 6 |
ARSIZE_I_6 | Input | 8 bits | Read burst size from read channel 6 |
ARADDR_I_6 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 6 |
ARREADY_O_6 | Output | — | Arbiter acknowledgment to read request from read channel 6 |
RVALID_O_6 | Output | — | Read data valid from read channel 6 |
RDATA_O_6 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 6 |
RLAST_O_6 | Output | — | Read end of frame signal from read channel 6 |
………..continued | |||
Signal Name | Direction | Width | Description |
BUSER_O_r6 | Output | — | Read completion to read channel 6 |
ARVALID_I_7 | Input | — | Read request from read channel 7 |
ARSIZE_I_7 | Input | 8 bits | Read burst size from read channel 7 |
ARADDR_I_7 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 7 |
ARREADY_O_7 | Output | — | Arbiter acknowledgment to read request from read channel 7 |
RVALID_O_7 | Output | — | Read data valid from read channel 7 |
RDATA_O_7 | Output | [AXI_DATA_WIDTH-1 : 0] | Read data from read channel 7 |
RLAST_O_7 | Output | — | Read end of frame signal from read channel 7 |
BUSER_O_r7 | Output | — | Read completion to read channel 7 |
AWSIZE_I_0 | Input | 8 bits | Write burst size for write channel 0 |
WDATA_I_0 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 0 |
WVALID_I_0 | Input | — | Write data valid to write channel 0 |
AWVALID_I_0 | Input | — | Write request from write channel 0 |
AWADDR_I_0 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 0 |
AWREADY_O_0 | Output | — | Arbiter acknowledgment to write request from write channel 0 |
BUSER_O_0 | Output | — | Write completion to write channel 0 |
AWSIZE_I_1 | Input | 8 bits | Write burst size for write channel 1 |
WDATA_I_1 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 1 |
WVALID_I_1 | Input | — | Write data valid to write channel 1 |
AWVALID_I_1 | Input | — | Write request from write channel 1 |
AWADDR_I_1 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 1 |
AWREADY_O_1 | Output | — | Arbiter acknowledgment to write request from write channel 1 |
BUSER_O_1 | Output | — | Write completion to write channel 1 |
AWSIZE_I_2 | Input | 8 bits | Write burst size for write channel 2 |
WDATA_I_2 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 2 |
WVALID_I_2 | Input | — | Write data valid to write channel 2 |
AWVALID_I_2 | Input | — | Write request from write channel 2 |
AWADDR_I_2 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 2 |
AWREADY_O_2 | Output | — | Arbiter acknowledgment to write request from write channel 2 |
BUSER_O_2 | Output | — | Write completion to write channel 2 |
AWSIZE_I_3 | Input | 8 bits | Write burst size for write channel 3 |
WDATA_I_3 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 3 |
WVALID_I_3 | Input | — | Write data valid to write channel 3 |
AWVALID_I_3 | Input | — | Write request from write channel 3 |
AWADDR_I_3 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 3 |
AWREADY_O_3 | Output | — | Arbiter acknowledgment to write request from write channel 3 |
BUSER_O_3 | Output | — | Write completion to write channel 3 |
AWSIZE_I_4 | Input | 8 bits | Write burst size for write channel 4 |
………..continued | |||
Signal Name | Direction | Width | Description |
WDATA_I_4 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 4 |
WVALID_I_4 | Input | — | Write data valid to write channel 4 |
AWVALID_I_4 | Input | — | Write request from write channel 4 |
AWADDR_I_4 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 4 |
AWREADY_O_4 | Output | — | Arbiter acknowledgment to write request from write channel 4 |
BUSER_O_4 | Output | — | Write completion to write channel 4 |
AWSIZE_I_5 | Input | 8 bits | Write burst size for write channel 5 |
WDATA_I_5 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 5 |
WVALID_I_5 | Input | — | Write data valid to write channel 5 |
AWVALID_I_5 | Input | — | Write request from write channel 5 |
AWADDR_I_5 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 5 |
AWREADY_O_5 | Output | — | Arbiter acknowledgment to write request from write channel 5 |
BUSER_O_5 | Output | — | Write completion to write channel 5 |
AWSIZE_I_6 | Input | 8 bits | Write burst size for write channel 6 |
WDATA_I_6 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 6 |
WVALID_I_6 | Input | — | Write data valid to write channel 6 |
AWVALID_I_6 | Input | — | Write request from write channel 6 |
AWADDR_I_6 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 6 |
AWREADY_O_6 | Output | — | Arbiter acknowledgment to write request from write channel 6 |
BUSER_O_6 | Output | — | Write completion to write channel 6 |
AWSIZE_I_7 | Input | 8 bits | Write burst size from write channel 7 |
WDATA_I_7 | Input | [AXI_DATA_WIDTH-1:0] | Video data Input to write channel 7 |
WVALID_I_7 | Input | — | Write data valid to write channel 7 |
AWVALID_I_7 | Input | — | Write a request from write channel 7 |
AWADDR_I_7 | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to happen from write channel 7 |
AWREADY_O_7 | Output | — | Arbiter acknowledgment to write request from write channel 7 |
BUSER_O_7 | Output | — | Write completion to write channel 7 |
The following table lists the inputs and output ports of the DDR AXI4 Arbiter for the native interface.
Table 2-3. Input and Output Ports for Native Arbiter Interface
Signal Name | Direction | Width | Description |
reset_i | Input | — | Active low asynchronous reset signal to design |
sys_clk_i | Input | — | System clock |
ddr_ctrl_ready_i | Input | — | Receives the ready input signal from the DDR controller |
r0_req_i | Input | — | Read request from initiator 0 |
r0_burst_size_i | Input | 8 bits | Read burst size |
r0_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 0 |
r0_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 0 |
………..continued | |||
Signal Name | Direction | Width | Description |
r0_data_valid_o | Output | — | Read data valid from read channel 0 |
r0_done_o | Output | — | Read completion to initiator 0 |
r1_req_i | Input | — | Read request from initiator 1 |
r1_burst_size_i | Input | 8 bits | Read burst size |
r1_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 1 |
r1_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 1 |
r1_data_valid_o | Output | — | Read data valid from read channel 1 |
r1_done_o | Output | — | Read completion to initiator 1 |
r2_req_i | Input | — | Read request from initiator 2 |
r2_burst_size_i | Input | 8 bits | Read burst size |
r2_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 2 |
r2_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 2 |
r2_data_valid_o | Output | — | Read data valid from read channel 2 |
r2_done_o | Output | — | Read completion to initiator 2 |
r3_req_i | Input | — | Read request from initiator 3 |
r3_burst_size_i | Input | 8 bits | Read burst size |
r3_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 3 |
r3_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 3 |
r3_data_valid_o | Output | — | Read data valid from read channel 3 |
r3_done_o | Output | — | Read completion to initiator 3 |
r4_req_i | Input | — | Read request from initiator 4 |
r4_burst_size_i | Input | 8 bits | Read burst size |
r4_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 4 |
r4_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 4 |
r4_data_valid_o | Output | — | Read data valid from read channel 4 |
r4_done_o | Output | — | Read completion to initiator 4 |
r5_req_i | Input | — | Read request from initiator 5 |
r5_burst_size_i | Input | 8 bits | Read burst size |
r5_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 5 |
r5_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 5 |
r5_data_valid_o | Output | — | Read data valid from read channel 5 |
r5_done_o | Output | — | Read completion to initiator 5 |
r6_req_i | Input | — | Read request from initiator 6 |
r6_burst_size_i | Input | 8 bits | Read burst size |
r6_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 6 |
r6_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 6 |
r6_data_valid_o | Output | — | Read data valid from read channel 6 |
r6_done_o | Output | — | Read completion to initiator 6 |
r7_req_i | Input | — | Read request from initiator 7 |
r7_burst_size_i | Input | 8 bits | Read burst size |
………..continued | |||
Signal Name | Direction | Width | Description |
r7_rstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address from where read has to be started for read channel 7 |
r7_ack_o | Output | — | Arbiter acknowledgment to read request from initiator 7 |
r7_data_valid_o | Output | — | Read data valid from read channel 7 |
r7_done_o | Output | — | Read completion to initiator 7 |
rdata_o | Output | [AXI_DATA_WIDTH – 1:0] | Video data output from read channel |
w0_burst_size_i | Input | 8 bits | Write burst size |
w0_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 0 |
w0_data_valid_i | Input | — | Write data valid to write channel 0 |
w0_req_i | Input | — | Write request from initiator 0 |
w0_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 0 |
w0_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 0 |
w0_done_o | Output | — | Write completion to initiator 0 |
w1_burst_size_i | Input | 8 bits | Write burst size |
w1_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 1 |
w1_data_valid_i | Input | — | Write data valid to write channel 1 |
w1_req_i | Input | — | Write request from initiator 1 |
w1_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 1 |
w1_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 1 |
w1_done_o | Output | — | Write completion to initiator 1 |
w2_burst_size_i | Input | 8 bits | Write burst size |
w2_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 2 |
w2_data_valid_i | Input | — | Write data valid to write channel 2 |
w2_req_i | Input | — | Write request from initiator 2 |
w2_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 2 |
w2_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 2 |
w2_done_o | Output | — | Write completion to initiator 2 |
w3_burst_size_i | Input | 8 bits | Write burst size |
w3_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 3 |
w3_data_valid_i | Input | — | Write data valid to write channel 3 |
w3_req_i | Input | — | Write request from initiator 3 |
w3_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 3 |
w3_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 3 |
w3_done_o | Output | — | Write completion to initiator 3 |
w4_burst_size_i | Input | 8 bits | Write burst size |
w4_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 4 |
w4_data_valid_i | Input | — | Write data valid to write channel 4 |
w4_req_i | Input | — | Write request from initiator 4 |
w4_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to happen from write channel 4 |
………..continued | |||
Signal Name | Direction | Width | Description |
w4_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 4 |
w4_done_o | Output | — | Write completion to initiator 4 |
w5_burst_size_i | Input | 8 bits | Write burst size |
w5_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 5 |
w5_data_valid_i | Input | — | Write data valid to write channel 5 |
w5_req_i | Input | — | Write request from initiator 5 |
w5_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 5 |
w5_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 5 |
w5_done_o | Output | — | Write completion to initiator 5 |
w6_burst_size_i | Input | 8 bits | Write burst size |
w6_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 6 |
w6_data_valid_i | Input | — | Write data valid to write channel 6 |
w6_req_i | Input | — | Write request from initiator 6 |
w6_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 6 |
w6_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 6 |
w6_done_o | Output | — | Write completion to initiator 6 |
w7_burst_size_i | Input | 8 bits | Write burst size |
w7_data_i | Input | [AXI_DATA_WIDTH – 1:0] | Video data input to write channel 7 |
w7_data_valid_i | Input | — | Write data valid to write channel 7 |
w7_req_i | Input | — | Write request from initiator 7 |
w7_wstart_addr_i | Input | [AXI_ADDR_WIDTH – 1:0] | DDR address to which write has to be happen from write channel 7 |
w7_ack_o | Output | — | Arbiter acknowledgment to write request from initiator 7 |
w7_done_o | Output | — | Write completion to initiator 7 |
AXI I/F Signals | |||
Read Address Channel | |||
arid_o | Output | [AXI_ID_WIDTH – 1:0] | Read address ID. Identification tag for the read address group of signals. |
araddr_o | Output | [AXI_ADDR_WIDTH – 1:0] | Read address. Provides the initial address of a read burst transaction.
Only the start address of the burst is provided. |
arlen_o | Output | [7:0] | Burst length. Provides the exact number of transfers in a burst. This information determines the number of data transfers associated with the address. |
arsize_o | Output | [2:0] | Burst size. Size of each transfer in the burst. |
arburst_o | Output | [1:0] | Burst type. Coupled with the size information, details how the address for each transfer within the burst is calculated.
Fixed to 2’b01 à Incremental address burst. |
arlock_o | Output | [1:0] | Lock type. Provides additional information about the atomic characteristics of the transfer.
Fixed to 2’b00 à Normal Access. |
………..continued | |||
Signal Name | Direction | Width | Description |
arcache_o | Output | [3:0] | Cache type. Provides additional information about the cacheable characteristics of the transfer.
Fixed to 4’b0000 à Non-cacheable and non-bufferable. |
arprot_o | Output | [2:0] | Protection type. Provides protection unit information for the transaction. Fixed to 3’b000 à Normal, secure data access. |
arvalid_o | Output | — | Read address valid. When HIGH, the read address and control information is valid and remain high until the address acknowledge signal, arready, is high.
1 = Address and control information valid 0 = Address and control information not valid |
arready_o | Input | — | Read address ready. The target is ready to accept an address and associated control signals.
1 = target ready 0 = target not ready |
Read Data Channel | |||
rid | Input | [AXI_ID_WIDTH – 1:0] | Read ID tag. ID tag of the read data group of signals. The rid value is generated by the target and must match the arid value of the read transaction to which it is responding. |
rdata | Input | [AXI_DATA_WIDTH – 1:0] | Read data |
rresp | Input | [1:0] | Read response.
The status of the read transfer. Allowable responses are OKAY, EXOKAY, SLVERR, and DECERR. |
rlast | Input | — | Read last.
Last transfer in a read burst. |
rvalid | Input | — | Read valid. Required read data is available and the read transfer can complete.
1 = read data available 0 = read data not available |
rready | Output | — | Read ready. Initiator can accept the read data and response information.
1= initiator ready 0 = initiator not ready |
Write Address Channel | |||
awid | Output | [AXI_ID_WIDTH – 1:0] | Write address ID. Identification tag for the write address group of signals. |
awaddr | Output | [AXI_ADDR_WIDTH – 1:0] | Write address. Provides the address of the first transfer in a write burst transaction. The associated control signals are used to determine the addresses of the remaining transfers in the burst. |
awlen | Output | [7:0] | Burst length. Provides the exact number of transfers in a burst. This information determines the number of data transfers associated with the address. |
awsize | Output | [2:0] | Burst size. Size of each transfer in the burst. Byte lane strobes indicate exactly which byte lanes to update. |
awburst | Output | [1:0] | Burst type. Coupled with the size information, details how the address for each transfer within the burst is calculated.
Fixed to 2’b01 à Incremental address burst. |
………..continued | |||
Signal Name | Direction | Width | Description |
awlock | Output | [1:0] | Lock type. Provides additional information about the atomic characteristics of the transfer.
Fixed to 2’b00 à Normal Access. |
awcache | Output | [3:0] | Cache type. Indicates the bufferable, cacheable, write- through, write-back, and allocate attributes of the transaction.
Fixed to 4’b0000 à Non-cacheable and non-bufferable. |
awprot | Output | [2:0] | Protection type. Indicates the normal, privileged, or secure protection level of the transaction and whether the transaction is a data access or an instruction access. Fixed to 3’b000 à Normal, secure data access. |
awvalid | Output | — | Write address valid. Indicates that valid write address and control information are available.
1 = address and control information available 0 = address and control information not available. The address and control information remain stable until the address acknowledge signal, awready, goes HIGH. |
awready | Input | — | Write address ready. Indicates that the target is ready to accept an address and associated control signals.
1 = target ready 0 = target not ready |
Write Data Channel | |||
wdata | Output | [AXI_DATA_WIDTH – 1:0] | Write data |
wstrb | Output | [AXI_DATA_WIDTH – 8:0] | Write strobes. This signal indicates which byte lanes to update in memory. There is one write strobe for each eight bits of the write data bus. |
wlast | Output | — | Write last. Last transfer in a write burst. |
wvalid | Output | — | Write valid. Valid write data and strobes are available. 1 = write data and strobes available
0 = write data and strobes not available |
wready | Input | — | Write ready. Target can accept the write data. 1 = target ready
0 = target not ready |
Write Response Channel | |||
bid | Input | [AXI_ID_WIDTH – 1:0] | Response ID. The identification tag of the write response. The bid value must match the awid value of the write transaction to which the target is responding. |
bresp | Input | [1:0] | Write response. Status of the write transaction. The allowable responses are OKAY, EXOKAY, SLVERR, and DECERR. |
bvalid | Input | — | Write response valid. Valid write response is available. 1 = write response available
0 = write response not available |
bready | Output | — | Response ready. Initiator can accept the response information.
1 = initiator ready 0 = initiator not ready |
Timing Diagrams (Ask a Question)
This section discusses DDR_AXI4_Arbiter timing diagrams. The following figures show the connection of the read and write request inputs, starting memory address, write inputs from the external initiator, read or write acknowledgment, and read or write completion inputs given by arbiter.
Figure 3-1. Timing Diagram for Signals used in Writing/Reading through AXI4 Interface
Testbench (Ask a Question)
A unified testbench is used to verify and test DDR_AXI4_Arbiter called as user testbench. Testbench is provided to check the functionality of the DDR_AXI4_Arbiter IP. This testbench works only for two read channels and two write channels with Bus Interface configuration.
Simulation (Ask a Question)
The following steps describe how to simulate the core using the testbench:
- Open the Libero® SoC Catalog tab, expand Solutions-Video, double-click DDR_AXI4_Arbiter, and then click OK. The documentation associated with the IP are listed under Documentation. Important: If you do not see the Catalog tab, navigate to View > Windows menu and click Catalog to make it visible.
Figure 4-1. DDR_AXI4_Arbiter IP Core in Libero SoC Catalog
Create component window appears as shown in the following. Click OK. Ensure that the Name is DDR_AXI4_ARBITER_PF_C0.
Figure 4-2. Create Component
Configure the IP for 2 read channels, 2 write channels and select Bus Interface as shown in the following figure and click OK to generate the IP.
Figure 4-3. Configuration
On the Stimulus Hierarchy tab, select the testbench (DDR_AXI4_ARBITER_PF_tb.v), right click and then click Simulate Pre-Synth Design > Open Interactively.
Important: If you do not see the Stimulus Hierarchy tab, navigate to View > Windows menu and click Stimulus Hierarchy to make it visible.
Figure 4-4. Simulating Pre-Synthesis DesignModelSim opens with the testbench file, as shown in the following figure.
Figure 4-5. ModelSim Simulation Window
Important: If the simulation is interrupted due to the runtime limit specified in the .do file, use the run -all command to complete the simulation.
Revision History (Ask a Question)
The revision history describes the changes that were implemented in the document. The changes are listed by revision, starting with the most current publication.
Table 5-1. Revision History
Revision | Date | Description |
A | 04/2023 | The following is the list of changes in revision A of the document:
• Migrated the document to the Microchip template. • Updated the document number to DS00004976A from 50200950. • Added 4. Testbench. |
2.0 | — | The following is the list of changes in revision 2.0 of the document:
• Added Figure 1-2. • Added Table 2-2. • Updated the names of some input and output signal names in Table 2-2. |
1.0 | — | Initial Release. |
Microchip FPGA Support (Ask a Question)
Microchip FPGA products group backs its products with various support services, including Customer Service, Customer Technical Support Center, a website, and worldwide sales offices. Customers are suggested to visit Microchip online resources prior to contacting support as it is very likely that their queries have been already answered. Contact Technical Support Center through the website at www.microchip.com/support. Mention the FPGA Device Part number, select the appropriate case category, and upload design files while creating a technical support case. Contact Customer Service for non-technical product support, such as product pricing, product upgrades, updated information, order status, and authorization.
- From North America, call 800.262.1060
- From the rest of the world, call 650.318.4460
- Fax, from anywhere in the world, 650.318.8044
Microchip Information (Ask a Question)
The Microchip Website (Ask a Question)
Microchip provides online support via our website at www.microchip.com/. This website is used to make files and information easily available to customers. Some of the content available includes:
- Product Support – Datasheets and errata, application notes and sample programs, design resources, user’s guides and hardware support documents, latest software releases, and archived software
- General Technical Support – Frequently Asked Questions (FAQs), technical support requests, online discussion groups, Microchip design partner program member listing
- Business of Microchip – Product selector and ordering guides, latest Microchip press releases, a listing of seminars and events, listings of Microchip sales offices, distributors, and factory representatives
Product Change Notification Service (Ask a Question)
Microchip’s product change notification service helps keep customers current on Microchip products. Subscribers will receive email notifications whenever there are changes, updates, revisions or errata related to a specified product family or development tool of interest. To register, go to www.microchip.com/pcn and follow the registration instructions.
Customer Support (Ask a Question)
Users of Microchip products can receive assistance through several channels:
- Distributor or Representative
- Local Sales Office
- Embedded Solutions Engineer (ESE)
- Technical Support
Customers should contact their distributor, representative or ESE for support. Local sales offices are also available to help customers. A listing of sales offices and locations is included in this document. Technical support is available through the website at: www.microchip.com/support.
Microchip Devises Code Protection Feature (Ask a Question)
Note the following details of the code protection feature on Microchip products:
- Microchip products meet the specifications contained in their particular Microchip Data Sheet.
- Microchip believes that its family of products is secure when used in the intended manner, within operating specifications, and under normal conditions.
- Microchip values and aggressively protects its intellectual property rights. Attempts to breach the code protection features of Microchip product is strictly prohibited and may violate the DigitalMillennium Copyright Act.
- Neither Microchip nor any other semiconductor manufacturer can guarantee the security of its code. Code protection does not mean that we are guaranteeing the product is “unbreakable”. Code protection is constantly evolving. Microchip is committed to continuously improving the code protection features of our products.
Legal Notice (Ask a Question)
This publication and the information herein may be used only with Microchip products, including to design, test, and integrate Microchip products with your application. Use of this information in any other manner violates these terms. Information regarding device applications is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets your specifications. Contact your local Microchip sales office for additional support or, obtain additional support at www.microchip.com/en-us/support/design-help/ client-support-services. THIS INFORMATION IS PROVIDED BY MICROCHIP “AS IS”. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE, OR WARRANTIES RELATED TO ITS CONDITION, QUALITY, OR PERFORMANCE. IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL, OR CONSEQUENTIAL LOSS, DAMAGE, COST, OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE INFORMATION OR ITS USE, HOWEVER, CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE? TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP’S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THE INFORMATION OR ITS USE WILL NOT EXCEED THE NUMBER OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THE INFORMATION. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights unless otherwise stated.
Trademarks (Ask a Question)
The Microchip name and logo, the Microchip logo, Adaptec, AVR, AVR logo, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi logo, MOST, MOST logo, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash, Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron, and XMEGA are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper Speed Control, HyperLight Load, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, ProASIC Plus logo, Quiet- Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, and ZL are registered trademarks of Microchip Technology Incorporated in the U.S.A. Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any Capacitor, AnyIn, AnyOut, Augmented Switching, BlueSky, BodyCom, Clockstudio, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic Average Matching, DAM, ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, In-Circuit Serial Programming, ICSP, INICnet, Intelligent Paralleling, IntelliMOS, Inter-Chip Connectivity, JitterBlocker, Knob-on-Display, KoD, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE, Ripple Blocker, RTAX, RTG4, SAMICE, Serial Quad I/O, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-I.S., storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, Total Endurance, Trusted Time, TSHARC, USBCheck, VariSense, VectorBlox, VeriPHY, ViewSpan, WiperLock, XpressConnect, and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in the U.S.A. The Adaptec logo, Frequency on Demand, Silicon Storage Technology, and Symmcom are registered trademarks of Microchip Technology Inc. in other countries. GestIC is a registered trademark of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in other countries. All other trademarks mentioned herein are property of their respective companies. © 2023, Microchip Technology Incorporated and its subsidiaries. All Rights Reserved.
ISBN: 978-1-6683-2302-1 Quality Management System (Ask a Question) For information regarding Microchip’s Quality Management Systems, please visit www.microchip.com/quality.
Worldwide Sales and Service
AMERICAS | ASIA/PACIFIC | ASIA/PACIFIC | EUROPE |
Corporate Office
2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: www.microchip.com/support Web Address: www.microchip.com Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 Austin, TX Tel: 512-257-3370 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Novi, MI Tel: 248-848-4000 Houston, TX Tel: 281-894-5983 Indianapolis Noblesville, IN Tel: 317-773-8323 Fax: 317-773-5453 Tel: 317-536-2380 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 Tel: 951-273-7800 Raleigh, NC Tel: 919-844-7510 New York, NY Tel: 631-435-6000 San Jose, CA Tel: 408-735-9110 Tel: 408-436-4270 Canada – Toronto Tel: 905-695-1980 Fax: 905-695-2078 |
Australia – Sydney
Tel: 61-2-9868-6733 China – Beijing Tel: 86-10-8569-7000 China – Chengdu Tel: 86-28-8665-5511 China – Chongqing Tel: 86-23-8980-9588 China – Dongguan Tel: 86-769-8702-9880 China – Guangzhou Tel: 86-20-8755-8029 China – Hangzhou Tel: 86-571-8792-8115 China – Hong Kong SAR Tel: 852-2943-5100 China – Nanjing Tel: 86-25-8473-2460 China – Qingdao Tel: 86-532-8502-7355 China – Shanghai Tel: 86-21-3326-8000 China – Shenyang Tel: 86-24-2334-2829 China – Shenzhen Tel: 86-755-8864-2200 China – Suzhou Tel: 86-186-6233-1526 China – Wuhan Tel: 86-27-5980-5300 China – Xian Tel: 86-29-8833-7252 China – Xiamen Tel: 86-592-2388138 China – Zhuhai Tel: 86-756-3210040 |
India – Bangalore
Tel: 91-80-3090-4444 India – New Delhi Tel: 91-11-4160-8631 India – Pune Tel: 91-20-4121-0141 Japan – Osaka Tel: 81-6-6152-7160 Japan – Tokyo Tel: 81-3-6880- 3770 Korea – Daegu Tel: 82-53-744-4301 Korea – Seoul Tel: 82-2-554-7200 Malaysia – Kuala Lumpur Tel: 60-3-7651-7906 Malaysia – Penang Tel: 60-4-227-8870 Philippines – Manila Tel: 63-2-634-9065 Singapore Tel: 65-6334-8870 Taiwan – Hsin Chu Tel: 886-3-577-8366 Taiwan – Kaohsiung Tel: 886-7-213-7830 Taiwan – Taipei Tel: 886-2-2508-8600 Thailand – Bangkok Tel: 66-2-694-1351 Vietnam – Ho Chi Minh Tel: 84-28-5448-2100 |
Austria – Wels
Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Denmark – Copenhagen Tel: 45-4485-5910 Fax: 45-4485-2829 Finland – Espoo Tel: 358-9-4520-820 France – Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Germany – Garching Tel: 49-8931-9700 Germany – Haan Tel: 49-2129-3766400 Germany – Heilbronn Tel: 49-7131-72400 Germany – Karlsruhe Tel: 49-721-625370 Germany – Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Germany – Rosenheim Tel: 49-8031-354-560 Israel – Ra’anana Tel: 972-9-744-7705 Italy – Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Italy – Padova Tel: 39-049-7625286 Netherlands – Drunen Tel: 31-416-690399 Fax: 31-416-690340 Norway – Trondheim Tel: 47-72884388 Poland – Warsaw Tel: 48-22-3325737 Romania – Bucharest Tel: 40-21-407-87-50 Spain – Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Sweden – Gothenberg Tel: 46-31-704-60-40 Sweden – Stockholm Tel: 46-8-5090-4654 UK – Wokingham Tel: 44-118-921-5800 Fax: 44-118-921-5820 |
© 2023 Microchip Technology Inc. and its subsidiaries
Documents / Resources
![]() |
MICROCHIP DDR AXI4 Arbiter [pdf] User Guide DDR AXI4 Arbiter, DDR AXI4, Arbiter |