Project

General

Profile

A5E-FPGA-EMIF-Example

Overview

The A5E FPGA EMIF example builds on the base A5E design and adds an FPGA-side LPDDR4 memory subsystem.

The HPS platform and board-level bring-up infrastructure from the base design are still present, but the primary feature of this example is the fpga_emif_subsys. This subsystem instantiates the Intel LPDDR4 EMIF IP and the support blocks needed to clock it, reset it, and present a fabric-facing memory access interface.

This example is best viewed as a subsystem integration reference design. It shows how the FPGA LPDDR4 interface is brought into the project and wired up, while leaving room for future user logic or traffic-generation logic to be added around it.

FPGA EMIF Subsystem

The FPGA EMIF subsystem contains four main blocks:

  • fpga_emif_0 - Intel LPDDR4 EMIF IP
  • s0_axi4_clock_bridge_0 - provides the internal subsystem clock
  • s0_axi4_reset_bridge_0 - provides the internal subsystem reset
  • s0_axi4_mm_bridge_0 - bridges the fabric-side Avalon-MM interface to the EMIF AXI4 interface

User traffic should be connected on the fabric-facing s0 side of s0_axi4_mm_bridge_0.

At the top level of the design:

  • The subsystem clock is driven from hps_subsys.intel_agilex_5_soc_0_h2f_user0_clk
  • The subsystem reset is driven from fabric_reset_bridge_0.out_reset
  • The LPDDR4 pins and EMIF reference clock are exported to the FPGA-side memory interface pins
hps_subsys.intel_agilex_5_soc_0_h2f_user0_clk (100 MHz example)            FPGA_CLKIN_P
                                      │                                           │
                                      ▼                                           │ ref_clk
                          ┌──────────────────────────┐                            ▼
                          │  s0_axi4_clock_bridge_0  │                ┌──────────────────────────┐   LPDDR4 pins  ┌───────────────┐
                          └──────────────────┬───────┘                │      fpga_emif_0         │◄──────────────►│  FPGA LPDDR4  │
                                             │                        │     (LPDDR4 EMIF IP)     │                └───────────────┘
                                             ├─────── clock ────────► └──────────────────────────┘
                                             │                                     ▲        ▲
                                             │                                     │ AXI4   │
                                             ▼                                     │        │
                               Avalon-MM  ┌──────────────────────────┐             │        │
Connection to user logic ◄───────────────►│  s0_axi4_mm_bridge_0     │◄────────────┘        │
                                          │   (Avalon-MM to AXI4)    │                      │
                                          └──────────────────────────┘                      │
                                                       ▲                                    │
                                                       │ reset                              │
                                                       │                                    │
                                     ┌─────────────────┴────────────────────────────────────┴┐
fabric_reset_bridge_0.out_reset ───► │                  s0_axi4_reset_bridge_0               │
                                     └───────────────────────────────────────────────────────┘

What This Project Offers

This project provides:

  • A reference integration of FPGA-side LPDDR4 on the A5E platform
  • A ready-made EMIF subsystem with clock, reset, and MM-to-AXI4 bridge structure already assembled
  • A clear starting point for adding FPGA masters, test logic, or application logic that need external LPDDR4
  • The same HPS bring-up platform as the base design, with the FPGA EMIF subsystem added alongside it

Memory Path

The important data path in this example is:

  • Fabric-side Avalon-MM traffic enters s0_axi4_mm_bridge_0
  • The bridge converts that traffic to the AXI4 interface expected by fpga_emif_0
  • The EMIF IP drives the external FPGA LPDDR4 memory interface

The subsystem's fabric-side integration point is the s0 side of s0_axi4_mm_bridge_0. No master is attached to that interface in the current example.

Clocking and Reset

The FPGA EMIF subsystem is integrated into the rest of the design as follows:

  • s0_axi4_clock_bridge_0 fans out the subsystem clock
  • That clock is used by the MM bridge and by the EMIF IP control/data interfaces
  • s0_axi4_reset_bridge_0 fans out the subsystem reset
  • That reset is applied to the MM bridge and the EMIF IP initialization/control interfaces
  • In this design, the subsystem clock bridge is fed from the user clock, which is 100 MHz in this example
  • This is useful for integration and bring-up, but it will not allow full bandwidth to the FPGA LPDDR4
  • If higher bandwidth is desired, connect s0_axi4_clock_bridge_0 to a faster clock source

External FPGA LPDDR4 Interface

The EMIF IP exports the expected FPGA-side LPDDR4 signals, including:

  • LPDDR4 reference clock input
  • CK / CKE / CS / CA control signals
  • DQ / DQS / DMI data signals
  • Memory reset
  • OCT / RZQ support signal

These signals are pinned out in the generated project and connected to the FPGA-side LPDDR4 memory interface on the board.

Scope of This Example

This example focuses on integrating the FPGA EMIF subsystem itself.

It does not add a dedicated traffic generator, benchmark engine, or end-user memory test application around the subsystem. In the current top-level design, the subsystem is integrated, clocked, reset, and pinned out, but no example traffic source is attached to exercise the memory path.

That makes this design a good base for:

  • adding custom FPGA masters
  • adding a simple memory test block
  • extending the design into a higher-level memory-access example later

Building the FPGA EMIF Example

Compile the FPGA design

Refer to Building_fpga_2531pro for building the FPGA design. Navigate into the mitysom-a5e-ref-fpga-emif example project before compiling the design.

  • Ensure to flash the resulting a5e.hps.jic onto the hardware
  • Ensure to replace the a5e.core.rbf on the SD card

Go to top
Add picture from clipboard (Maximum size: 1 GB)