MICROCHIP DDR AXI4 Arbiter User Guide

October 30, 2023
MICROCHIP

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

  1. Install DDR AXI4 Arbiter v2.2 to the IP Catalog of the Libero SoC software.
  2. 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 MICROCHIP-DDR-AXI4-Arbiter-fig-3

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_ArbiterMICROCHIP-DDR-AXI4-Arbiter-fig-4

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 InterfaceMICROCHIP-DDR-AXI4-Arbiter-fig-5

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:

  1. 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. ConfigurationMICROCHIP-DDR-AXI4-Arbiter-
fig-8

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 DesignMICROCHIP-DDR-AXI4-Arbiter-
fig-9ModelSim opens with the testbench file, as shown in the following figure.
Figure 4-5. ModelSim Simulation WindowMICROCHIP-DDR-AXI4-Arbiter-
fig-10

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

References

Read User Manual Online (PDF format)

Read User Manual Online (PDF format)  >>

Download This Manual (PDF format)

Download this manual  >>

Related Manuals