External Memory Interfaces (EMIF) IP User Guide: Agilex™ 5 FPGAs and SoCs
A newer version of this document is available. Customers should click here to go to the newest version.
3.5. Agilex™ 5 EMIF IP for Hard Processor Subsystem (HPS)
To enable connectivity between the HPS and the Agilex™ 5 EMIF IP, you must create and configure an instance of the EMIF for HPS IP, and connect it to the Agilex™ 5 FPGA hard processor subsystem instance in your system.
Restrictions on I/O Bank Usage for Agilex™ 5 EMIF IP with HPS
The following restrictions apply to the I/O bank usage:
- Only the two IO96 banks adjacent to the HPS MPFE can be used for HPS-EMIF. (Banks 3A and 3B.)
- If only one IO96 bank is to be used by HPS-EMIF, it must be the one adjacent to the HPS MPFE. (Bank 3A.)
-
No protocol's data width usage may span multiple IO96 banks. For example, a single DDR4 x64, which requires 8 byte lanes for data and 3 byte lanes for address and control, may not span two IO96 banks. However, a single DDR4 x32, which requires 4 byte lanes of data and 3 byte lanes of address and control, may be placed in one IO96 bank and another single DDR4 x32 may be placed in another IO96 bank.
- Pins that are not used by the HPS-EMIF directly are available for I/O sharing with other protocols, such as GPIO, MIPI, LVDS, or PHYLite, with certain HPS bridge restrictions which are described in the following tables.
- HPS-EMIF and AVSTx16 configuration mode cannot be used simultaneously, because both use bank 3A.
- Reference clock sharing is not allowed between HPS-EMIF IP and other IPs.
- For multi-channel EMIFs or when multiple EMIFs are used inside HPS-EMIF IP, they must have identical IP parameters.
HPS EMIF Mapping (Both bridges are used)
When using both the F2H bridge and the F2SDRAM bridge, no I/O sharing is allowed. That is, the HPS can access DDR and fabric can access DDR via the F2H and/or F2SDRAM bridge, but no GPIO, etc is allowed.
Protocol | Banks | Data Width | BL7 | BL6 | BL5 | BL4 | BL3 | BL2 | BL1 | BL0 |
---|---|---|---|---|---|---|---|---|---|---|
DDR4 | 1 | 1x16 | X | X | X | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
1 | 1x16+ECC | X | X | DQ[ECC] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32 | X | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32+ECC | DQ[ECC] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 | 1x16 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | X | X | X | |
1 | 1x16+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[ECC] | X | X | |
1 or 2 | 1x32 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | X | |
1 or 2 | 1x32+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | DQ[ECC] | |
N/A | 1x64 | Not supported | ||||||||
N/A | 1x64+ECC | Not supported | ||||||||
DDR5 | 1 | 1x16 | X | X | X | X | AC1 | AC0 | DQ[0] | DQ[1] |
1 | 1x16+ECC | X | X | X | DQ[ECC] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32 | X | X | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32+ECC | X | DQ[ECC] | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 | 1x16 | DQ[1] | DQ[0] | AC1 | AC0 | X | X | X | X | |
1 | 1x16+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[ECC] | X | X | X | |
1 or 2 | 1x32 | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | X | X | |
1 or 2 | 1x32+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | DQ[ECC] | X | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[0] | DQ[1] | |
LPDDR4 / LPDDR5 | 1 | 1x16 | X | X | X | X | AC1 | AC0 | DQ[1] | DQ[0] |
1 or 2 | 1x32 | DQ[3] | DQ[2] | X | X | AC1 | AC0 | DQ[1] | DQ[0] | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
2 | 4x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
|
HPS EMIF Mapping (Using only the F2SDRAM bridge)
The following table shows the I/O sharing that is allowed when using the F2SDRAM bridge and not using the F2H bridge. The HPS can access DDR and fabric can access DDR via the F2SDRAM bridge only.
Protocol | Banks | Data Width | BL7 | BL6 | BL5 | BL4 | BL3 | BL2 | BL1 | BL0 |
---|---|---|---|---|---|---|---|---|---|---|
DDR4 | 1 | 1x16 | GM | GM | RZ | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
1 | 1x16+ECC | GO | GO | DQ[ECC] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32 | GO | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32+ECC | DQ[ECC] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 | 1x16 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | X | X | X | |
1 | 1x16+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[ECC] | X | X | |
1 or 2 | 1x32 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | X | |
1 or 2 | 1x32+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | DQ[ECC] | |
N/A | 1x64 | Not supported | ||||||||
N/A | 1x64+ECC | Not supported | ||||||||
DDR5 | 1 | 1x16 | GM | GM | RZ | GM | AC1 | AC0 | DQ[0] | DQ[1] |
1 | 1x16+ECC | GM | GM | RZ | DQ[ECC] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32 | GO | GO | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32+ECC | GO | DQ[ECC] | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 | 1x16 | DQ[1] | DQ[0] | AC1 | AC0 | X | X | X | X | |
1 | 1x16+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[ECC] | X | X | X | |
1 or 2 | 1x32 | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | X | X | |
1 or 2 | 1x32+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | DQ[ECC] | X | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[0] | DQ[1] | |
LPDDR4 / LPDDR5 | 1 | 1x16 | GM | GM | RZ | GM | AC1 | AC0 | DQ[1] | DQ[0] |
1 or 2 | 1x32 | DQ[3] | DQ[2] | RZ | GM | AC1 | AC0 | DQ[1] | DQ[0] | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
2 | 4x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
|
HPS EMIF Mapping (Using only the F2H bridge)
The following table shows the I/O sharing permitted when using the F2H bridge and not using the F2SDRAM bridge. The HPS can access DDR and fabric can access DDR via the F2H bridge only.
Protocol | Banks | Data Width | BL7 | BL6 | BL5 | BL4 | BL3 | BL2 | BL1 | BL0 |
---|---|---|---|---|---|---|---|---|---|---|
DDR4 | 1 | 1x16 | X | X | X | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
1 | 1x16+ECC | X | X | DQ[ECC] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32 | X | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32+ECC | DQ[ECC] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 | 1x16 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | GL | GL | GL | |
1 | 1x16+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[ECC] | GO | GO | |
1 or 2 | 1x32 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | GO | |
1 or 2 | 1x32+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | DQ[ECC] | |
N/A | 1x64 | Not supported | ||||||||
N/A | 1x64+ECC | Not supported | ||||||||
DDR5 | 1 | 1x16 | X | X | X | X | AC1 | AC0 | DQ[0] | DQ[1] |
1 | 1x16+ECC | X | X | X | DQ[ECC] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32 | X | X | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32+ECC | X | DQ[ECC] | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 | 1x16 | DQ[1] | DQ[0] | AC1 | AC0 | RZ | GM | GM | GM | |
1 | 1x16+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[ECC] | GL | GL | GL | |
1 or 2 | 1x32 | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | GO | GO | |
1 or 2 | 1x32+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | DQ[ECC] | GO | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[0] | DQ[1] | |
LPDDR4 / LPDDR5 | 1 | 1x16 | X | X | X | X | AC1 | AC0 | DQ[1] | DQ[0] |
1 or 2 | 1x32 | DQ[3] | DQ[2] | X | X | AC1 | AC0 | DQ[1] | DQ[0] | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
2 | 4x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
|
HPS EMIF Mapping (No bridges are used)
The following table shows the I/O sharing permitted when using neither the F2H bridge nor the FS2DRAM bridge. The HPS can access DDR, but the fabric cannot.
Protocol | Banks | Data Width | BL7 | BL6 | BL5 | BL4 | BL3 | BL2 | BL1 | BL0 |
---|---|---|---|---|---|---|---|---|---|---|
DDR4 | 1 | 1x16 | GM | GM | RZ | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
1 | 1x16+ECC | GO | GO | DQ[ECC] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32 | GO | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 or 2 | 1x32+ECC | DQ[ECC] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] | |
1 | 1x16 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | GL | GL | GL | |
1 | 1x16+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[ECC] | GO | GO | |
1 or 2 | 1x32 | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | GO | |
1 or 2 | 1x32+ECC | DQ[0] | AC0 | AC2 | AC1 | DQ[1] | DQ[2] | DQ[3] | DQ[ECC] | |
N/A | 1x64 | Not supported | ||||||||
N/A | 1x64+ECC | Not supported | ||||||||
DDR5 | 1 | 1x16 | GM | GM | RZ | GM | AC1 | AC0 | DQ[0] | DQ[1] |
1 | 1x16+ECC | GM | GM | RZ | DQ[ECC] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32 | GO | GO | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 or 2 | 1x32+ECC | GO | DQ[ECC] | DQ[3] | DQ[2] | AC1 | AC0 | DQ[0] | DQ[1] | |
1 | 1x16 | DQ[1] | DQ[0] | AC1 | AC0 | RZ | GM | GM | GM | |
1 | 1x16+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[ECC] | GL | GL | GL | |
1 or 2 | 1x32 | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | GO | GO | |
1 or 2 | 1x32+ECC | DQ[1] | DQ[0] | AC1 | AC0 | DQ[2] | DQ[3] | DQ[ECC] | GO | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[0] | DQ[1] | |
LPDDR4 / LPDDR5 | 1 | 1x16 | GM | GM | RZ | GM | AC1 | AC0 | DQ[1] | DQ[0] |
1 or 2 | 1x32 | DQ[3] | DQ[2] | RZ | GM | AC1 | AC0 | DQ[1] | DQ[0] | |
1 | 2x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
2 | 4x16 | DQ[1] | DQ[0] | AC1 | AC0 | AC1 | AC0 | DQ[1] | DQ[0] | |
|
I/O Sharing versus HPS EMIF DDR Protocol versus Bridge Allowed
The following table summarizes the information from the previous tables, showing which bridge can be used with which I/O sharing and DDR protocol combinations.
I/O Sharing | Protocol | Banks | Data Width | Bridge Allowed |
---|---|---|---|---|
MIPI or PHYLite | DDR4 | 1 | 1x16 | F2SDRAM |
DDR4 | 1 | 1x16 | F2SDRAM or F2H | |
1 | 1x16+ECC | F2SDRAM | ||
LPDDR4 / LPDDR5 | 1 | 1x16 | F2SDRAM | |
1 or 2 | 1x32 | F2SDRAM | ||
MIPI through RZQ sharing | DDR4 | 1 | 1x16 | F2H |
DDR5 | 1 | 1x16+ECC | F2H | |
MIPI through RZQ and refclk sharing | DDR4 | 1 | 1x16+ECC | F2SDRAM or F2H |
1 or 2 | 1x32 | F2SDRAM or F2H | ||
DDR5 | 1 or 2 | 1x32 | F2SDRAM or F2H | |
1 or 2 | 1x32+ECC | F2SDRAM or F2H | ||
LVDS | DDR4 | 1 | 1x16 | F2SDRAM or F2H |
DDR5 | 1 | 1x16 | F2SDRAM or F2H | |
1 | 1x16+ECC | F2SDRAM or F2H | ||
LPDDR4 / LPDDR5 | 1 | 1x16 | F2SDRAM | |
1 or 2 | 1x32 | F2SDRAM | ||
GPIO | DDR4 | 1 | 1x16 | F2SDRAM or F2H |
1 | 1x16+ECC | F2SDRAM or F2H | ||
1 or 2 | 1x32 | F2SDRAM or F2H | ||
DDR5 | 1 | 1x16 | F2SDRAM or F2H | |
1 | 1x16+ECC | F2SDRAM or F2H | ||
1 or 2 | 1x32 | F2SDRAM or F2H | ||
1 or 2 | 1x32+ECC | F2SDRAM or F2H | ||
LPDDR4 / LPDDR5 | 1 | 1x16 | F2SDRAM | |
1 or 2 | 1x32 | F2SDRAM |