Microchip UG0644 DDR AXI Arbiter User Guide

June 9, 2024
MICROCHIP

UG0644 DDR AXI Arbiter

Product Information

The DDR AXI Arbiter is a hardware component that provides a
64-bit AXI master interface to the DDR-SDRAM on-chip controllers.
It is commonly used in video applications for buffering and
processing of video pixel data. The product user manual provides
detailed information and instructions on hardware implementation,
simulation, and resource utilization.

Hardware Implementation

The DDR AXI Arbiter is designed to interface with the DDR-SDRAM
on-chip controllers. It provides a 64-bit AXI master interface
which enables fast processing of video pixel data. The product user
manual provides a detailed design description of the DDR AXI
Arbiter and its hardware implementation.

Simulation

The product user manual provides instructions on simulating the
DDR AXI Arbiter using MSS SmartDesign and Testbench tools. These
tools enable the user to validate the correctness of the design and
ensure proper functioning of the hardware component.

Resource Utilization

The DDR AXI Arbiter utilizes system resources such as logic
cells, memory blocks, and routing resources. The product user
manual provides a detailed resource utilization report which
outlines the resource requirements of the DDR AXI Arbiter. This
information can be used to ensure that the hardware component can
be implemented within the available system resources.

Product Usage Instructions

The following instructions provide guidance on how to use the
DDR AXI Arbiter:

Step 1: Hardware Implementation

Implement the DDR AXI Arbiter hardware component to interface
with the DDR-SDRAM on-chip controllers. Follow the design
description provided in the product user manual to ensure proper
implementation of the hardware component.

Step 2: Simulation

Simulate the DDR AXI Arbiter design using MSS SmartDesign and
Testbench tools. Follow the instructions provided in the product
user manual to validate the correctness of the design and ensure
proper functioning of the hardware component.

Step 3: Resource Utilization

Review the resource utilization report provided in the product
user manual to determine the resource requirements of the DDR AXI
Arbiter. Ensure that the hardware component can be implemented
within the available system resources.

By following these instructions, you can effectively use the DDR
AXI Arbiter hardware component for video pixel data buffering and
processing in video applications.

UG0644 User Guide
DDR AXI Arbiter
February 2018

DDR AXI Arbiter
Contents
1 Revision History …………………………………………………………………………………………………………….. 1
1.1 Revision 5.0 ………………………………………………………………………………………………………………………. 1 1.2 Revision 4.0 ………………………………………………………………………………………………………………………. 1 1.3 Revision 3.0 ………………………………………………………………………………………………………………………. 1 1.4 Revision 2.0 ………………………………………………………………………………………………………………………. 1 1.5 Revision 1.0 ………………………………………………………………………………………………………………………. 1
2 Introduction ………………………………………………………………………………………………………………….. 2 3 Hardware Implementation ……………………………………………………………………………………………… 3
3.1 Design Description ……………………………………………………………………………………………………………… 3 3.2 Inputs and Outputs …………………………………………………………………………………………………………….. 5 3.3 Configuration Parameters …………………………………………………………………………………………………. 13 3.4 Timing Diagrams ………………………………………………………………………………………………………………. 14 3.5 Testbench ……………………………………………………………………………………………………………………….. 16
3.5.1 Simulating MSS SmartDesign …………………………………………………………………………………………………. 25 3.5.2 Simulating Testbench ……………………………………………………………………………………………………………. 30 3.6 Resource Utilization ………………………………………………………………………………………………………….. 31
UG0644 User Guide Revision 5.0

DDR AXI Arbiter

1

Revision History

The revision history describes the changes that were implemented in the document. The changes are listed by revision, starting with the most current publication.

1.1

Revision 5.0

In revision 5.0 of this document, the Resource Utilization section and the Resource Utilization Report

were updated. For more information, see Resource Utilization (see page 31).

1.2

Revision 4.0

The following is a summary of the changes in revision 4.0 of this document.

Added testbench configuration parameters in the table. For more information, see Configuration Parameters (see page 16).. Added information to simulate core using testbench. For more information, see Testbench (see page 16). Updated the Resource Utilization for DDR AXI Arbiter values in the table. For more information, see Resource Utilization (see page 31).

1.3

Revision 3.0

The following is a summary of the changes in revision 3.0 of this document.

Added 8-bit information for write channel 1 and 2. For more information, see Design Description (see page 3). Updated Testbench section. For more information, see Testbench (see page 16).

1.4

Revision 2.0

In revision 2.0 of this document, the figures and tables in the were updated in the Testbench section.

For more information, see Testbench (see page 16).

1.5

Revision 1.0

Revision 1.0 was the first publication of this document

UG0644 User Guide Revision 5.0

1

DDR AXI Arbiter

2

Introduction

Memories are an integral part of any typical video and graphics applications. They are used for buffering video pixel data. One common buffering example is display frame buffers in which the complete video pixel data for a frame is buffered in the memory.

Dual data rate (DDR)-synchronous DRAM (SDRAM) is one of the commonly used memories in video applications for buffering. SDRAM is used because of its speed which is required for fast processing in video systems.

The following figure shows an example of a system-level diagram of DDR-SDRAM memory interfacing with video application.

Figure 1 · DDR-SDRAM Memory Interfacing

In Microsemi SmartFusion®2 System-on-Chip (SoC), there are two on-chip DDR controllers with 64-bit advanced extensible interface (AXI) and 32-bit advanced high-performance bus (AHB) slave interfaces towards the field programmable gate array (FPGA) fabric. An AXI or AHB master interface is required to read and write the DDR-SDRAM memory interfaced to the on-chip DDR controllers.

UG0644 User Guide Revision 5.0

2

DDR AXI Arbiter

3

Hardware Implementation

3.1

Design Description

The DDR AXI Arbiter provides a 64-bit AXI master interface to the DDR-SDRAM on-chip controllers of

SmartFusion2 devices. The DDR AXI Arbiter has four read channels and two write channels towards the

user logic. The block arbitrates between the four read channels to provide access to the AXI read

channel in a round-robin manner. As long as the read channel 1 master’s read request is high, the AXI

read channel is allocated to it. Read channel 1 has fixed output data width of 24-bit. Read channels 2, 3,

and 4 can be configured as 8-bit, 24-bit, or 32-bit data output width. This is selected by global

configuration parameter.

The block also arbitrates between the two write channels to provide access to the AXI write channel in a round-robin manner. Both the write channels have equal priority. Write channel 1 and 2 can be configured as 8-bit, 24-bit, or 32-bit input data width.

UG0644 User Guide Revision 5.0

3

DDR AXI Arbiter
The following figure shows the top-level pin-out diagram of the DDR AXI Arbiter. Figure 2 · Top-Level Block Diagram of DDR AXI Arbiter Block

UG0644 User Guide Revision 5.0

4

DDR AXI Arbiter
The following figure shows the top-level block diagram of a system with DDR AXI Arbiter block ported into the SmartFusion2 device. Figure 3 · System-Level Block Diagram of DDR AXI Arbiter on the SmartFusion2 Device

3.2

Inputs and Outputs
The following table lists the input and output ports of the DDR AXI Arbiter.

Table 1 · Input and Output Ports of the DDR AXI Arbiter

Signal Name RESET_N_I

Direction Input

Width

SYS_CLOCK_I BUFF_READ_CLOCK_I

Input Input

rd_req_1_i rd_ack_o

Input Output

rd_done_1_o start_read_addr_1_i

Output Input

bytes_to_read_1_i

Input

video_rdata_1_o

Output

[(g_AXI_AWIDTH-1):0] [(g_RD_CHANNEL1_AXIBUFF AWIDTH + 3) – 1 : 0] [(g_RD_CHANNEL1_VIDEO_DATA_WIDTH1):0]

Description
Active low asynchronous reset signal to design
System clock
Write channel’s internal buffer read clock, must be double the SYS_CLOCK_I frequency
Read request from Master 1
Arbiter acknowledgment to read request from Master 1
Read completion to Master 1
DDR address from where read has to be started for read channel 1
Bytes to be read out from read channel 1
Video data output from read channel 1

UG0644 User Guide Revision 5.0

5

DDR AXI Arbiter

Signal Name rdata_valid_1_o rd_req_2_i rd_ack_2_o
rd_done_2_o start_read_addr_2_i
bytes_to_read_2_i
video_rdata_2_o
rdata_valid_2_o rd_req_3_i rd_ack_3_o
rd_done_3_o start_read_addr_3_i
bytes_to_read_3_i
video_rdata_3_o
rdata_valid_3_o rd_req_4_i rd_ack_4_o
rd_done_4_o start_read_addr_4_i
bytes_to_read_4_i
video_rdata_4_o
rdata_valid_4_o wr_req_1_i wr_ack_1_o
wr_done_1_o start_write_addr_1_i
bytes_to_write_1_i
video_wdata_1_i
wdata_valid_1_i wr_req_2_i

Direction Output Input Output
Output Input
Input
Output
Output Input Output
Output Input
Input
Output
Output Input Output
Output Input
Input
Output
Output Input Output
Output Input
Input
Input
Input Input

Width
[(g_AXI_AWIDTH-1):0] [(g_RD_CHANNEL2_AXI_BUFF_AWIDTH + 3) – 1 : 0] [(g_RD_CHANNEL2_VIDEO_DATA_WIDTH1):0] [(g_AXI_AWIDTH-1):0] [(g_RD_CHANNEL3_AXI_BUFF_AWIDTH + 3) – 1 : 0] [(g_RD_CHANNEL3_VIDEO_DATA_WIDTH1):0] [(g_AXI_AWIDTH-1):0] [(g_RD_CHANNEL4_AXI_BUFF_AWIDTH + 3) – 1 : 0] [(g_RD_CHANNEL4_VIDEO_DATA_WIDTH1):0] [(g_AXI_AWIDTH-1):0] [(g_WR_CHANNEL1_AXI_BUFF_AWIDTH + 3) – 1 : 0] [(g_WR_CHANNEL1_VIDEO_DATA_WIDTH1):0]

Description Read data valid from read channel 1 Read request from Master 2 Arbiter acknowledgment to read request from Master 2 Read completion to Master 2 DDR address from where read has to be started for read channel 2 Bytes to be read out from read channel 2 Video data output from read channel 2 Read data valid from read channel 2 Read request from Master 3 Arbiter acknowledgment to read request from Master 3 Read completion to Master 3 DDR address from where read has to be started for read channel 3 Bytes to be read out from read channel 3 Video data output from read channel 3 Read data valid from read channel 3 Read request from Master 4 Arbiter acknowledgment to read request from Master 4 Read completion to Master 4 DDR address from where read has to be started for read channel 4 Bytes to be read out from read channel 4 Video data output from read channel 4 Read data valid from read channel 4 Write request from Master 1 Arbiter acknowledgment to write request from Master 1 Write completion to Master 1 DDR address to which write has to happen from write channel 1 Bytes to be written from write channel 1 Video data Input to write channel 1
Write data valid to write channel 1 Write request from Master 1

UG0644 User Guide Revision 5.0

6

DDR AXI Arbiter

Signal Name wr_ack_2_o

Direction Output

wr_done_2_o start_write_addr_2_i

Output Input

bytes_to_write_2_i

Input

video_wdata_2_i

Input

wdata_valid_2_i AXI I/F signals Read Address Channel m_arid_o

Input Output

m_araddr_o

Output

m_arlen_o

Output

m_arsize_o m_arburst_o

Output Output

m_arlock_o

Output

m_arcache_o

Output

m_arprot_o

Output

Width
[(g_AXI_AWIDTH-1):0] [(g_WR_CHANNEL2_AXI_BUFF_AWIDTH + 3) – 1 : 0] [(g_WR_CHANNEL2_VIDEO_DATA_WIDTH1):0]

Description Arbiter acknowledgment to write request from Master 2 Write completion to Master 2 DDR address to which write has to happen from write channel 2 Bytes to be written from write channel 2 Video data Input to write channel 2
Write data valid to write channel 2

[3:0] [(g_AXI_AWIDTH-1):0] [3:0] [2:0] [1:0] [1:0] [3:0] [2:0]

Read address ID. Identification tag for the read address group of signals.
Read address. Provides the initial address of a read burst transaction. Only the start address of the burst is provided.
Burst length. Provides the exact number of transfers in a burst. This information determines the number of data transfers associated with the address
Burst size. Size of each transfer in the burst
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
Lock type. Provides additional information about the atomic characteristics of the transfer.
Fixed to 2’b00 à Normal Access
Cache type. Provides additional information about the cacheable characteristics of the transfer.
Fixed to 4’b0000 à Non-cacheable and non-bufferable
Protection type. Provides protection unit information for the transaction.
Fixed to 3’b000 à Normal, secure data access

UG0644 User Guide Revision 5.0

7

DDR AXI Arbiter
Signal Name m_arvalid_o

Direction Output

Width

m_arready_i

Input

Read Data Channel

m_rid_i

Input

[3:0]

m_rdata_i m_rresp_i
m_rlast_i m_rvalid_i

Input Input

[(g_AXI_DWIDTH-1):0] [1:0]

Input Input

m_rready_o

Output

Write Address Channel

m_awid_o

Output

m_awaddr_o

Output

[3:0] [(g_AXI_AWIDTH-1):0]

UG0644 User Guide Revision 5.0

Description Read address valid.
When HIGH, the read address and control information is valid and remain high until the address acknowledge signal, m_arready, is high.
1′ = Address and control information valid 0′ = Address and control information not valid. Read address ready. The slave is ready to accept an address and associated control signals:
1 = slave ready
0 = slave not ready.
Read ID tag. ID tag of the read data group of signals. The m_rid value is generated by the Slave and must match the m_arid value of the read transaction to which it is responding. Read data. Read response.
The status of the read transfer. Allowable responses are OKAY, EXOKAY, SLVERR, and DECERR. Read last.
Last transfer in a read burst. Read valid. Required read data is available and the read transfer can complete:
1 = read data available
0 = read data not available. Read ready. Master can accept the read data and response information:
1= master ready
0 = master not ready.
Write address ID. Identification tag for the write address group of signals. 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.
8

DDR AXI Arbiter
Signal Name m_awlen_o

Direction Output

Width [3:0]

m_awsize_o

Output

[2:0]

m_awburst_o

Output

[1:0]

m_awlock_o

Output

[1:0]

m_awcache_o

Output

[3:0]

m_awprot_o

Output

[2:0]

m_awvalid_o

Output

Description
Burst length. Provides the exact number of transfers in a burst. This information determines the number of data transfers associated with the address.
Burst size. Size of each transfer in the burst. Byte lane strobes indicate exactly which byte lanes to update.
Fixed to 3’b011 à 8 bytes per data transfer or 64-bit transfer
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
Lock type. Provides additional information about the atomic characteristics of the transfer.
Fixed to 2’b00 à Normal Access
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
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
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, m_awready, goes HIGH.

UG0644 User Guide Revision 5.0

9

DDR AXI Arbiter

Signal Name m_awready_i

Direction Input

Width

Write Data Channel

m_wid_o

Output

[3:0]

m_wdata_o m_wstrb_o

Output Output

[(g_AXI_DWIDTH-1):0]AXI_DWDITH parameter
[7:0]

m_wlast_o m_wvalid_o

Output Output

m_wready_i

Input

Write Response Channel Signals

m_bid_i

Input

[3:0]

m_bresp_i m_bvalid_i

Input

[1:0]

Input

m_bready_o

Output

Description Write address ready. Indicates that the slave is ready to accept an address and associated control signals:
1 = slave ready
0 = slave not ready.
Write ID tag. ID tag of the write data transfer. The m_wid value must match the m_awid value of the write transaction. Write data
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 Write last. Last transfer in a write burst. Write valid. Valid write data and strobes are available:
1 = write data and strobes available
0 = write data and strobes not available. Write ready. Slave can accept the write data: 1 = slave ready
0 = slave not ready.
Response ID. The identification tag of the write response. The m_bid value must match the m_awid value of the write transaction to which the slave is responding. Write response. Status of the write transaction. The allowable responses are OKAY, EXOKAY, SLVERR, and DECERR. Write response valid. Valid write response is available:
1 = write response available
0 = write response not available. Response ready. Master can accept the response information.
1 = master ready
0 = master not ready.

The following figure shows the internal block diagram of the DDR AXI arbiter.

UG0644 User Guide Revision 5.0

10

DDR AXI Arbiter
The following figure shows the internal block diagram of the DDR AXI arbiter. Figure 4 · Internal Block Diagram of the DDR AXI Arbiter

Each read channel gets triggered when it gets a high input signal on the readreq(x)_i input. Then it

UG0644 User Guide Revision 5.0

11

DDR AXI Arbiter
Each read channel gets triggered when it gets a high input signal on the readreq(x)_i input. Then it samples the starting AXI address and the bytes to read inputs which are input from the external master. The channel acknowledges the external master by toggling readack(x)_o. The channel processes the inputs and generates the required AXI transactions to read the data from DDR-SDRAM. The data read out in 64-bit AXI format is stored into internal buffer. After the required data is read out and stored into the internal buffer, the un-packer module is enabled. The un-packer module unpacks each 64-bit word into the output data bit length required for that particular channel for example if the channel is configured as 32-bit output data width, each 64-bit word is sent out as two 32-bit output data words. For channel 1 which is a 24-bit channel, the un-packer unpacks each 64-bit word into 24-bit output data. As 64 is not a multiple of 24, the un-packer for read channel 1 combines a group of three 64-bit words to generate eight 24-bit data words. This puts a constraint on read channel 1 that the data bytes requested by the external master should be divisible by 8. Read channels 2, 3, and 4 can be configured as 8-bit, 24bit, and 32-bit data width, which is determined by g_RD_CHANNEL(X) _VIDEO_DATA_WIDTH global configuration parameter. If they are configured as 24-bit, the above mentioned constraint will be applicable to each of them also. But if they are configured as 8-bit or 32-bit, there is no such constraint as 64 is multiple of 32 and 8. In these cases, each 64-bit word is unpacked into either two 32-bit data words or eight 8-bit data words.
Read Channel 1 unpacks 64-bit data words read out of DDR-SDRAM to 24-bit output data words in batches of 48 64-bit words, that is whenever 48 64-bit words are available in the internal buffer of read channel 1, the un-packer starts unpacking them to give 24-bit output data. If the requested data bytes to read are less than 48 64-bit words, the un-packer is only enabled after the complete data is read out of the DDR-SDRAM. In remaining three read channels, the un-packer starts sending out read data only after the complete requested number of bytes is read out from the DDR-SDRAM.
When a read channel configured for 24-bit output width, the starting read address must be aligned to 24-bytes boundary. This is required to satisfy the constraint that the un-packer unpacks a group of three 64-bit words to produce eight 24-bit output words.
All read channels generate the read done output to the external master after the requested bytes are sent to the external master.
In case of write channels, the external master has to input the required data to the particular channel. The write channel takes the input data and packs them into 64-bit words and stores them in the internal storage. After the required data is stored, the external master has to provide the write request along with the starting address and bytes to write. On sampling these inputs, the write channel acknowledges the external master. After this, the channel generates the AXI write transactions to write the stored data into DDR-SDRAM. All write channels generate the write done output to the external master once the requested bytes are written into DDR-SDRAM. After a write request is given to any write channel, new data must not be written into the write channel, until the current transaction completion is indicated by assertion of wrdone(x)_o
Write channels 1 and 2 can be configured as 8-bit, 24-bit, and 32-bit data width, which is determined by g_WR_CHANNEL(X)_VIDEO_DATA_WIDTH global configuration parameter. If they are configured as 24bit, then the bytes to be written must be multiple of eight as the internal packer packs eight 24-bit data words to generate three 64-bit data words. But if they are configured as 8-bit or 32-bit, there is no such constraint.
For a 32-bit channel, minimum two 32-bit words have to be read. For a 8-bit channel, minimum 8-bit words need to be read, because there is no padding provided by the arbiter module. In all the read and write channels, the depth of the internal buffers is multiple of the display horizontal width. The internal buffer depth is calculated as follows:
g_RD_CHANNEL(X)_HORIZONTAL_RESOLUTION g_RD_CHANNEL(X)_VIDEO_DATA_WIDTH g_RD_CHANNEL(X)_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH
Where, X = Channel number

The internal buffer width is determined by AXI data bus width that is, configuration parameter

UG0644 User Guide Revision 5.0

12

DDR AXI Arbiter

The internal buffer width is determined by AXI data bus width that is, configuration parameter g_AXI_DWIDTH.
The AXI read and write transactions are performed according to the ARM AMBA AXI specifications. The transaction size for each data transfer is fixed to 64-bit. The block generates AXI transactions of fixed burst length of16 beats. The block also checks whether any single burst crosses the AXI address boundary of 4 KByte. If a single burst crosses the 4 KByte boundary, the burst is split into 2 burst at the 4 KByte boundary.

3.3

Configuration Parameters
The following table lists the configuration parameters used in the hardware implementation of the DDR AXI Arbiter. These are generic parameters and can be varied based on the application requirements.

Table 2 · Configuration Parameters
Name g_AXI_AWIDTH g_AXI_DWIDTH g_RD_CHANNEL1_AXI_BUFF_AWIDTH
g_RD_CHANNEL2_AXI_BUFF_AWIDTH
g_RD_CHANNEL3_AXI_BUFF_AWIDTH
g_RD_CHANNEL4_AXI_BUFF_AWIDTH
g_WR_CHANNEL1_AXI_BUFF_AWIDTH
g_WR_CHANNEL2_AXI_BUFF_AWIDTH
g_RD_CHANNEL1_HORIZONTAL_RESOLUTION g_RD_CHANNEL2_HORIZONTAL_RESOLUTION g_RD_CHANNEL3_HORIZONTAL_RESOLUTION g_RD_CHANNEL4_HORIZONTAL_RESOLUTION g_WR_CHANNEL1_HORIZONTAL_RESOLUTION g_WR_CHANNEL2_HORIZONTAL_RESOLUTION g_RD_CHANNEL1_VIDEO_DATA_WIDTH g_RD_CHANNEL2_VIDEO_DATA_WIDTH g_RD_CHANNEL3_VIDEO_DATA_WIDTH g_RD_CHANNEL4_VIDEO_DATA_WIDTH g_WR_CHANNEL1_VIDEO_DATA_WIDTH g_WR_CHANNEL2_VIDEO_DATA_WIDTH g_RD_CHANNEL1_BUFFER_LINE_STORAGE

Description
AXI address bus width
AXI data bus width
Address bus width for the read Channel 1 internal buffer, which stores the AXI read data.
Address bus width for the read Channel 2 internal buffer, which stores the AXI read data.
Address bus width for the read Channel 3 internal buffer, which stores the AXI read data.
Address bus width for the read Channel 4 internal buffer, which stores the AXI read data.
Address bus width for the write Channel 1 internal buffer, which stores the AXI write data.
Address bus width for the write Channel 2 internal buffer, which stores the AXI write data.
Video display horizontal resolution for read Channel 1
Video display horizontal resolution for read Channel 2
Video display horizontal resolution for read Channel 3
Video display horizontal resolution for read Channel 4
Video display horizontal resolution for write Channel 1
Video display horizontal resolution for write Channel 2
Read Channel 1 video output bit width
Read Channel 2 video output bit width
Read Channel 3 video output bit width
Read Channel 4 video output bit width
Write Channel 1 video Input bit width.
Write Channel 2 video Input bit width.
Depth of the internal buffer for read Channel 1 in terms of number of display horizontal lines. The depth of the buffer is g_RD_CHANNEL1_HORIZONTAL_RESOLUTION g_RD_CHANNEL1_VIDEO_DATA_WIDTH g_RD_CHANNEL1_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH

UG0644 User Guide Revision 5.0

13

DDR AXI Arbiter

3.4

Name g_RD_CHANNEL2_BUFFER_LINE_STORAGE g_RD_CHANNEL3_BUFFER_LINE_STORAGE g_RD_CHANNEL4_BUFFER_LINE_STORAGE g_WR_CHANNEL1_BUFFER_LINE_STORAGE g_WR_CHANNEL2_BUFFER_LINE_STORAGE

Description
Depth of the internal buffer for read Channel 2 in terms of number of display horizontal lines. The depth of the buffer is g_RD_CHANNEL2_HORIZONTAL_RESOLUTION g_RD_CHANNEL2_VIDEO_DATA_WIDTH g_RD_CHANNEL2_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH
Depth of the internal buffer for read Channel 3 in terms of number of display horizontal lines. The depth of the buffer is g_RD_CHANNEL3_HORIZONTAL_RESOLUTION g_RD_CHANNEL3_VIDEO_DATA_WIDTH g_RD_CHANNEL3_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH
Depth of the internal buffer for read Channel 4 in terms of number of display horizontal lines. The depth of the buffer is g_RD_CHANNEL4_HORIZONTAL_RESOLUTION g_RD_CHANNEL4_VIDEO_DATA_WIDTH g_RD_CHANNEL4_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH
Depth of the internal buffer for write Channel 1 in terms of number of display horizontal lines. The depth of the buffer is g_WR_CHANNEL1_HORIZONTAL_RESOLUTION g_WR_CHANNEL1_VIDEO_DATA_WIDTH g_WR_CHANNEL1_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH
Depth of the internal buffer for write Channel 2 in terms of number of display horizontal lines. The depth of the buffer is g_WR_CHANNEL2_HORIZONTAL_RESOLUTION g_WR_CHANNEL2_VIDEO_DATA_WIDTH g_WR_CHANNEL2_BUFFER_LINE_STORAGE) / g_AXI_DWIDTH

Timing Diagrams
The following figure shows the connection of the read and write request inputs, starting memory address, bytes to read or write inputs from external master, read or write acknowledgment, and read or write completion outputs given by arbiter.

Figure 5 · Timing Diagram for Signals Used in Writing/Reading through AXI Interface

UG0644 User Guide Revision 5.0

14

DDR AXI Arbiter
The following figure shows the connection between the write data input from the external master along with the data input valid for both write channels. Figure 6 · Timing Diagram for Writing into Internal Storage
The following figure shows the connection between the read data output towards the external master along with the data output valid for all read channels 2, 3, and 4. Figure 7 · Timing Diagram for Data Received through DDR AXI Arbiter for Read Channels 2, 3, and 4
The following figure shows the connection between the read data output for the read Channel 1 when g_RD_CHANNEL 1_HORIZONTAL_RESOLUTION is greater than 128 (in this case = 256). Figure 8 · Timing Diagram for Data Received through DDR AXI Arbiter Read Channel 1 (greater than 128 bytes)

UG0644 User Guide Revision 5.0

15

DDR AXI Arbiter
The following figure shows the connection between the read data output for the read Channel 1 when g_RD_CHANNEL 1_HORIZONTAL_RESOLUTION is less than or equal to 128 (in this case = 64). Figure 9 · Timing Diagram for Data Received through DDR AXI Arbiter Read Channel 1 (less than or equal to 128 bytes)

3.5

Testbench
A testbench is provided to check the functionality of the DDR Arbiter core. The following table lists the parameters that can be configured according to the application.

Table 3 · Testbench Configuration Parameters

Name IMAGE_1_FILE_NAME IMAGE_2_FILE_NAME g_DATA_WIDTH WIDTH HEIGHT

Description Input file name for image to be written by write channel 1 Input file name for image to be written by write channel 2 Video data width of the read or write channel Horizontal resolution of the image to be written and read by the write and read channels Vertical resolution of the image to be written and read by the write and read channels

UG0644 User Guide Revision 5.0

16

DDR AXI Arbiter
The following steps describe how testbench is used to simulate the core through Libero SoC. 1. In the Design Flow window, right-click Create SmartDesign and click Run to create a SmartDesign.
Figure 10 · Create SmartDesign

2. Enter the name of the new design as video_dma in the Create New SmartDesign dialog box and click OK. A SmartDesign is created, and a canvas is displayed on right of the Design Flow pane.
Figure 11 · Naming SmartDesign

3. In the Catalog window, expand Solutions-Video and drag-and-drop SF2 DDR Memory Arbiter in the SmartDesign canvas.

UG0644 User Guide Revision 5.0

17

DDR AXI Arbiter
Figure 12 · DDR Memory Arbiter in Libero SoC Catalog

The DDR Memory Arbiter Core is displayed, as shown in the following figure. Double-click the core to configure the arbiter if required.

UG0644 User Guide Revision 5.0

18

DDR AXI Arbiter
Figure 13 · DDR Memory Arbiter Core in SmartDesign Canvas

4. Select all the ports of the core and right-click and then click Promote to Top Level, as shown in the

UG0644 User Guide Revision 5.0

19

DDR AXI Arbiter
4. Select all the ports of the core and right-click and then click Promote to Top Level, as shown in the following figure. Figure 14 · Promote to Top Level Option

Ensure to promote all ports to top level before clicking the generate component icon in the toolbar.

5. Click the Generate Component icon in the SmartDesign toolbar, as shown in the following figure.

UG0644 User Guide Revision 5.0

20

DDR AXI Arbiter
5. Click the Generate Component icon in the SmartDesign toolbar, as shown in the following figure. The SmartDesign component is generated. Figure 15 · Generate Component
6. Navigate to View > Windows > Files. The Files dialog box is displayed. 7. Right-click the simulation folder and click Import Files, as shown in the following figure.
Figure 16 · Import File

8. To Import the image stimulus file, navigate and import one of the following files and click Open.

UG0644 User Guide Revision 5.0

21

DDR AXI Arbiter
8. To Import the image stimulus file, navigate and import one of the following files and click Open. a. A sample RGB_in.txt file is provided with the testbench at the following path:
..Project_namecomponentMicrosemiSolutionCore ddr_memory_arbiter 2.0.0Stimulus
To import the sample test bench input image, browse to the sample testbench input image file, and click Open, as shown in the following figure. Figure 17 · Input Image File Selection
b. To import a different image, browse to the folder containing the desired image file, and click Open. The imported image stimulus file is listed under simulation directory, as shown in the following figure. Figure 18 · Input Image File in Simulation Directory

9. Import the ddr BFM files. Two files which are equivalent of
UG0644 User Guide Revision 5.0

and
22

DDR AXI Arbiter
9. Import the ddr BFM files. Two files which are equivalent of DDR BFM — ddr3.v and ddr3_parameters.v are provided with the testbench at the following path: ..Project_namecomponentMicrosemiSolutionCoreddr_memory_arbiter 2.0.0Stimulus. Right-click the stimulus folder and select Import Files option, and then select the aforementioned BFM files. The imported DDR BFM files are listed under stimulus, as shown in the following figure. Figure 19 · Imported File
10. Navigate to File > Import > Others. The Import Files dialog box is displayed. Figure 20 · Import Testbench File

11. Import the testbench and MSS component files (top_tb.cxf, mss_top_sb_MSS.cxf, mss_top.cxf, and mss
..Project_namecomponentMicrosemiSolutionCoreddr_memory_arbiter 2.0.0Stimulus

UG0644 User Guide Revision 5.0

23

  1. DDR AXI Arbiter
    Figure 21 · Import Testbench and MSS Component Files
    Figure 22 · top_tb Created

UG0644 User Guide Revision 5.0

24

DDR AXI Arbiter

3.5.1

Simulating MSS SmartDesign
The following instructions describe how to simulate MSS SmartDesign:
1. Click the Design Hierarchy tab and select Component from the show drop- down list. The imported MSS SmartDesign is displayed.
2. Right-click mss_top under Work and click Open Component, as shown in the following figure. The mss_top_sb_0 component is displayed.
Figure 23 · Open Component

3. Right-click the mss_top_sb_0 component and click Configure, as shown in the following figure.

UG0644 User Guide Revision 5.0

25

DDR AXI Arbiter
3. Right-click the mss_top_sb_0 component and click Configure, as shown in the following figure. Figure 24 · Configure Component
The MSS Configuration window is displayed, as shown in the following figure. Figure 25 · MSS Configuration Window

4. Click Next through all the configuration tabs, as shown in the following image.

UG0644 User Guide Revision 5.0

26

DDR AXI Arbiter
4. Click Next through all the configuration tabs, as shown in the following image. Figure 26 · Configuration Tabs
The MSS is configured after Interrupts tab is configured. The following figure shows the progression of MSS Configuration. Figure 27 · MSS Configuration Window After Configuration

5. Click Next after the configuration is complete. The Memory Map window is displayed, as shown in the following figure.
Figure 28 · Memory Map

6. Click Finish.

7. Click Generate Component from the SmartDesign toolbar to generate the MSS, as shown in the

UG0644 User Guide Revision 5.0

27

DDR AXI Arbiter
7. Click Generate Component from the SmartDesign toolbar to generate the MSS, as shown in the following figure. Figure 29 · Generate Component
8. In the Design Hierarchy window, right-click mss_top under Work and click Set As Root, as shown in the following figure. Figure 30 · Set MSS as Root

9. In the Design Flow window, expand Verify Pre-synthesized Design under Create Design, right-click

UG0644 User Guide Revision 5.0

28

DDR AXI Arbiter
9. In the Design Flow window, expand Verify Pre-synthesized Design under Create Design, right-click Simulate and click Open Interactively. It simulates the MSS. Figure 31 · Simulate the Pre-synthesized Design
10. Click No if an alert message is displayed to associate Testbench stimulus with MSS. 11. Close the Modelsim window after the simulation is complete.
Figure 32 · Simulation Window

UG0644 User Guide Revision 5.0

29

DDR AXI Arbiter

3.5.2

Simulating Testbench
The following instructions describe how to simulate testbench:
1. Select the top_tb SmartDesign Testbench and click Generate Component from the SmartDesign toolbar to generate the testbench, as shown in the following figure.
Figure 33 · Generating a Component

2. In the Stimulus Hierarchy window, right-click top_tb (top_tb.v) testbench file and click Set as active stimulus. The stimulus is activated for the top_tb testbench file.

3. In the Stimulus Hierarchy window, right-click top_tb (
UG0644 User Guide Revision 5.0

) testbench file and click Open
30

DDR AXI Arbiter
3. In the Stimulus Hierarchy window, right-click top_tb (top_tb.v) testbench file and click Open Interactively from Simulate Pre-Synth Design. This simulates the core for one frame. Figure 34 · Simulating Pre-Synthesis Design

4. If the simulation is interrupted because of the runtime limit in the DO file, use the run -all command to complete the simulation. After the simulation is completed, navigate to View > Files > simulation to view the test bench output image file in the simulation folder.
The output of the simulation ­ the text equivalent of one frame of the image, is stored in the Read_out_rd_ch(x).txt text file depending on the read channel used. This can be converted into an image and compared with the original image.

3.6

Resource Utilization

The DDR Arbiter block is implemented on an M2S150T SmartFusion®2 System-on- Chip (SoC) FPGA in the

FC1152 package) and PolarFire FPGA (MPF300TS_ES – 1FCG1152E package).

Table 4 · Resource Utilization for DDR AXI Arbiter

Resource DFFs 4-input LUTs MACC RAM1Kx18

Usage 2992 4493 0 20

(For:

g_RD_CHANNEL(X)_HORIZONTAL_RESOLUTION = 1280

g_RD_CHANNEL(X)_BUFFER_LINE_STORAGE = 1

g_WR_CHANNEL(X)_BUFFER_LINE_STORAGE = 1

g_AXI_DWIDTH = 64

g_RD_CHANNEL(X)_VIDEO_DATA_WIDTH = 24

RAM64x18

g_WR_CHANNEL(X)_VIDEO_DATA_WIDTH = 32) 0

UG0644 User Guide Revision 5.0

31

DDR AXI Arbiter

Microsemi Corporate Headquarters One Enterprise, Aliso Viejo, CA 92656 USA Within the USA: +1 800-713-4113 Outside the USA: +1 949-380-6100 Fax: +1 949-215-4996 Email: [email protected] www.microsemi.com
© 2018 Microsemi Corporation. All rights reserved. Microsemi and the Microsemi logo are trademarks of Microsemi Corporation. All other trademarks and service marks are the property of their respective owners.

Microsemi makes no warranty, representation, or guarantee regarding the information contained herein or the suitability of its products and services for any particular purpose, nor does Microsemi assume any liability whatsoever arising out of the application or use of any product or circuit. The products sold hereunder and any other products sold by Microsemi have been subject to limited testing and should not be used in conjunction with mission-critical equipment or applications. Any performance specifications are believed to be reliable but are not verified, and Buyer must conduct and complete all performance and other testing of the products, alone and together with, or installed in, any end-products. Buyer shall not rely on any data and performance specifications or parameters provided by Microsemi. It is the Buyer’s responsibility to independently determine suitability of any products and to test and verify the same. The information provided by Microsemi hereunder is provided “as is, where is” and with all faults, and the entire risk associated with such information is entirely with the Buyer. Microsemi does not grant, explicitly or implicitly, to any party any patent rights, licenses, or any other IP rights, whether with regard to such information itself or anything described by such information. Information provided in this document is proprietary to Microsemi, and Microsemi reserves the right to make any changes to the information in this document or to any products and services at any time without notice.
Microsemi Corporation (Nasdaq: MSCC) offers a comprehensive portfolio of semiconductor and system solutions for aerospace & defense, communications, data center and industrial markets. Products include high-performance and radiation-hardened analog mixed-signal integrated circuits, FPGAs, SoCs and ASICs; power management products; timing and synchronization devices and precise time solutions, setting the world’s standard for time; voice processing devices; RF solutions; discrete components; enterprise storage and communication solutions; security technologies and scalable anti-tamper products; Ethernet solutions; Power-over-Ethernet ICs and midspans; as well as custom design capabilities and services. Microsemi is headquartered in Aliso Viejo, California, and has approximately 4,800 employees globally. Learn more at www.microsemi.com.
50200644

UG0644 User Guide Revision 5.0

32

References

Read User Manual Online (PDF format)

Loading......

Download This Manual (PDF format)

Download this manual  >>

MICROCHIP User Manuals

Related Manuals