Intel Stratix 10 External Memory Interfaces IP User Guide
Intel Stratix 10 EMIF IP Introduction
You can easily implement the EMIF IP core functions through the Intel® Quartus® Prime software. The Intel® Quartus® Prime software also provides external memory toolkits that help you test the implementation of the IP in the FPGA.
The EMIF IP provides the following components:
- A physical layer interface (PHY) which builds the data path and manages timing transfers between the FPGA and the memory device.
- A memory controller which implements all the memory commands and protocol-level requirements.
For information on the maximum speeds supported by the external memory interface IP, refer to the External Memory Interface Spec Estimator.
Intel® Stratix® 10 EMIF IP Protocol and Feature Support
- Supports DDR4, DDR3, DDR3L, and LPDDR3 protocols with hard memory controller and hard PHY.
- Supports QDR-IV, QDR II + Xtreme, QDR II +, and QDR II using soft memory controller and hard PHY.
- Supports RLDRAM 3 using third-party soft controller.
- Supports UDIMM, RDIMM, LRDIMM and SODIMM memory devices.
- Supports 3D Stacked Die for DDR4 devices.
- Supports up to 4 physical ranks.
- Supports Ping Pong PHY mode, allowing two memory controllers to share command, address, and control pins.
- Supports error correction code (ECC) for both hard memory controller and soft memory controller.
Intel Stratix 10 EMIF IP Design Flow
The following figure shows the design flow to provide the fastest out-of-the-box experience with the EMIF IP.
Intel Stratix 10 EMIF IP Design Checklist
Design Step | Description | Resources |
---|---|---|
Select an FPGA | Not all Intel FPGAs support all memory types and configurations. To help with the FPGA selection process, refer to these resources. | |
Parameterize the IP | Correct IP parameterization is important for good EMIF IP operation. These resources define the memory parameters during IP generation. | |
Generate initial IP and example design | After you have parameterized the EMIF IP, you can generate the IP, along with an optional example design. Refer to the Quick-Start Guide for a walkthrough of this process. | |
Perform functional simulation | Simulation of the EMIF design helps to determine correct operation. These resources explain how to perform simulation and what differences exist between simulation and hardware implementation. | |
Make pin assigments | For guidance on pin placement, refer to these resources. | |
Perform board simulation | Board simulation helps determine optimal settings for signal integrity, drive strength, as well as sufficient timing margins and eye openings. For guidance on board simulation, refer to these resources. | |
Update board parameters in the IP | Board simulation is important to determine optimal settings for signal integrity, drive strength, and sufficient timing margins and eye openings. For guidance on board simulation refer to the mentioned resources. | |
Verify timing closure | For information regarding compilation, system-level timing closure and timing reports refer to the Timing Closure section of this User Guide. | |
Run the design on hardware | For instructions on how to program a FPGA refer to the Quick-Start Guide section of this User Guide. | |
Debug issues with preceeding steps | Operational problems can generally be attributed to one of the following: interface configuration, pin/resource planning, signal integrity, or timing. These resources contain information on typical debug procedures and available tools to help diagnose hardware issues. |
Intel Stratix 10 EMIF IP Product Architecture
Intel Stratix 10 EMIF Architecture: Introduction
The following are key hardware features of the Intel® Stratix® 10 EMIF architecture:
Hard Sequencer
The sequencer employs a hard Nios II processor, and can perform memory calibration for a wide range of protocols. You can share the sequencer among multiple memory interfaces of the same or different protocols.
Hard PHY
The hard PHY in Intel® Stratix® 10 devices can interface with external memories running at speeds of up to 1.3 GHz. The PHY circuitry is hardened in the silicon, which simplifies the challenges of achieving timing closure and minimal power consumption.
Hard Memory Controller
The hard memory controller reduces latency and minimizes core logic consumption in the external memory interface. The hard memory controller supports the DDR3, DDR4, and LPDDR3 memory protocols.
PHY-Only Mode
Protocols that use a hard controller (DDR4, DDR3, LPDDR3, and RLDRAM 3), provide a PHY-only option, which generates only the PHY and sequencer, but not the controller. This PHY-only mode provides a mechanism by which to integrate your own custom soft controller.
High-Speed PHY Clock Tree
Dedicated high speed PHY clock networks clock the I/O buffers in Intel® Stratix® 10 EMIF IP. The PHY clock trees exhibit low jitter and low duty cycle distortion, maximizing the data valid window.
Automatic Clock Phase Alignment
Automatic clock phase alignment circuitry dynamically adjusts the clock phase of core clock networks to match the clock phase of the PHY clock networks. The clock phase alignment circuitry minimizes clock skew that can complicate timing closure in transfers between the FPGA core and the periphery.
Resource Sharing
The Intel® Stratix® 10 architecture simplifies resource sharing between memory interfaces. Resources such as the OCT calibration block, PLL reference clock pin, and core clock can be shared. The hard Nios processor in the I/O subsystem manager (I/O SSM) must be shared across all interfaces in a column.
Intel Stratix 10 EMIF Architecture: I/O Subsystem
The I/O subsystem provides the following features:
- General-purpose I/O registers and I/O buffers
- On-chip termination control (OCT)
- I/O PLLs for external memory interfaces and user logic
- Low-voltage differential signaling (LVDS)
- External memory interface
components, as follows:
- Hard memory controller
- Hard PHY
- Hard Nios processor and calibration logic
- DLL
Intel Stratix 10 EMIF Architecture: I/O Column
- A hardened Nios processor with dedicated memory. This Nios block is referred to as the I/O SSM.
- Up to 13 I/O banks. Each I/O bank contains the hardware necessary for an external memory interface.
Intel Stratix 10 EMIF Architecture: I/O SSM
The I/O SSM includes dedicated memory which stores both the calibration algorithm and calibration run-time data. The hardened Nios II processor and the dedicated memory can be used only by an external memory interface, and cannot be employed for any other use. The I/O SSM can interface with soft logic, such as the debug toolkit, via an Avalon-MM bus.
The I/O SSM is clocked by an on-die oscillator, and therefore does not consume a PLL.
Intel Stratix 10 EMIF Architecture: I/O Bank
Each I/O bank resides in an I/O column, and contains the following components:
- Hard memory controller
- Sequencer components
- PLL and PHY clock trees
- DLL
- Input DQS clock trees
- 48 pins, organized into four I/O lanes of 12 pins each
I/O Bank Usage
The pins in an I/O bank can serve as address and command pins, data pins, or clock and strobe pins for an external memory interface. You can implement a narrow interface, such as a DDR3 or DDR4 x8 interface, with only a single I/O bank. A wider interface, such as x72 or x144, can be implemented by configuring multiple adjacent banks in a multi-bank interface. Any pins in a bank which are not used by the external memory interface remain available for use as general purpose I/O pins (of the same voltage standard).
Every I/O bank includes a hard memory controller which you can configure for DDR3, DDR4, or LPDDR3. In a multi-bank interface, only the controller of one bank is active; controllers in the remaining banks are turned off to conserve power.
To use a multi-bank Intel® Stratix® 10 EMIF interface, you must observe the following rules:
- Designate one bank as the address and command bank.
- The address and command bank must contain all the address and command pins.
- The locations of individual address and command pins within the address and command bank must adhere to the pin map defined in the pin table— regardless of whether you use the hard memory controller or not.
- If you do use the hard memory controller, the address and command bank contains the active hard controller.
All the I/O banks in a column are capable of functioning as the address and command bank. However, for minimal latency, you should select the center-most bank of the interface as the address and command bank.
Intel Stratix 10 EMIF Architecture: I/O Lane
Each I/O lane can implement one x8/x9 read capture group (DQS group), with two pins functioning as the read capture clock/strobe pair (DQS/DQS#), and up to 10 pins functioning as data pins (DQ and DM pins). To implement x18 and x36 groups, you can use multiple lanes within the same bank.
It is also possible to implement a pair of x4 groups in a lane. In this case, four pins function as clock/strobe pair, and 8 pins function as data pins. DM is not available for x4 groups. There must be an even number of x4 groups for each interface.
For x4 groups, DQS0 and DQS1 must be placed in the same I/O lane as a pair. Similarly, DQS2 and DQS3 must be paired. In general, DQS(x) and DQS(x+1) must be paired in the same I/O lane.
Group Size | Number of Lanes Used | Maximum Number of Data Pins per Group |
---|---|---|
x8 / x9 | 1 | 10 |
x18 | 2 | 22 |
x36 | 4 | 46 |
pair of x4 | 1 | 4 per group, 8 per lane |
Intel Stratix 10 EMIF Architecture: Input DQS Clock Tree
You can configure an input DQS clock tree in x4 mode, x8/x9 mode, x18 mode, or x36 mode.
Within every bank, only certain physical pins at specific locations can drive the input DQS clock trees. The pin locations that can drive the input DQS clock trees vary, depending on the size of the group.
Group Size | Index of Lanes Spanned by Clock Tree | In-Bank Index of Pins Usable as Read Capture Clock / Strobe Pair | |
---|---|---|---|
Positive Leg | Negative Leg | ||
x4 | 0A | 4 | 5 |
x4 | 0B | 8 | 9 |
x4 | 1A | 16 | 17 |
x4 | 1B | 20 | 21 |
x4 | 2A | 28 | 29 |
x4 | 2B | 32 | 33 |
x4 | 3A | 40 | 41 |
x4 | 3B | 44 | 45 |
x8 / x9 | 0 | 4 | 5 |
x8 / x9 | 1 | 16 | 17 |
x8 / x9 | 2 | 28 | 29 |
x8 / x9 | 3 | 40 | 41 |
x18 | 0, 1 | 12 | 13 |
x18 | 2, 3 | 36 | 37 |
x36 | 0, 1, 2, 3 | 20 | 21 |
Intel Stratix 10 EMIF Architecture: PHY Clock Tree
The relatively short span of the PHY clock trees results in low jitter and low duty-cycle distortion, maximizing the data valid window.
The PHY clock tree in Intel® Stratix® 10 devices can run as fast as 1.3 GHz. All Intel® Stratix® 10 external memory interfaces use the PHY clock trees.
Intel Stratix 10 EMIF Architecture: PLL Reference Clock Networks
Intel® Stratix® 10 external memory interfaces that span multiple banks use the PLL in each bank. The Intel® Stratix® 10 architecture allows for relatively short PHY clock networks, reducing jitter and duty-cycle distortion.
The following mechanisms ensure that the clock outputs of individual PLLs in a multi-bank interface remain in phase:
- A single PLL reference clock source feeds all PLLs. The reference clock signal reaches the PLLs by a balanced PLL reference clock tree. The Intel® Quartus® Prime software automatically configures the PLL reference clock tree so that it spans the correct number of banks.
- The EMIF IP sets the PLL M and N values appropriately to maintain synchronization among the clock dividers across the PLLs. This requirement restricts the legal PLL reference clock frequencies for a given memory interface frequency and clock rate. The Stratix 10 EMIF IP parameter editor automatically calculates and displays the set of legal PLL reference clock frequencies. If you plan to use an on-board oscillator, you must ensure that its frequency matches the PLL reference clock frequency that you select from the displayed list. The correct M and N values of the PLLs are set automatically based on the PLL reference clock frequency that you select.
Intel Stratix 10 EMIF Architecture: Clock Phase Alignment
The clock phase alignment feature effectively eliminates the clock skew effect in all transfers between the core and the periphery, facilitating timing closure. All Stratix 10 external memory interfaces employ clock phase alignment circuitry.

Intel Stratix 10 EMIF Sequencer
The Intel® Stratix® 10 EMIF sequencer is responsible for the following operations:
- Initializes memory devices.
- Calibrates the external memory interface.
- Governs the hand-off of control to the memory controller.
- Handles recalibration requests and debug requests.
- Handles all supported protocols and configurations.
Intel Stratix 10 EMIF DQS Tracking
Intel Stratix 10 EMIF Calibration
The following effects can be compensated for by the calibration process:
- Timing and electrical constraints, such as setup/hold time and Vref variations.
- Circuit board and package factors, such as skew, fly-by effects, and manufacturing variations.
- Environmental uncertainties, such as variations in voltage and temperature.
- The demanding effects of small margins associated with high-speed operation.
Intel Stratix 10 Calibration Stages
The stages of calibration vary, depending on the protocol of the external memory interface.
Stage | DDR4 | DDR3 | LPDDR3 | RLDRAM 3 | QDR-IV | QDR II/II+ |
---|---|---|---|---|---|---|
Address and command | ||||||
Leveling | Yes | Yes | — | — | — | — |
Deskew | Yes | — | Yes | — | Yes | — |
Read | ||||||
DQSen | Yes | Yes | Yes | Yes | Yes | Yes |
Deskew | Yes | Yes | Yes | Yes | Yes | Yes |
VREF-In | Yes | — | — | — | Yes | — |
LFIFO | Yes | Yes | Yes | Yes | Yes | Yes |
Write | ||||||
Leveling | Yes | Yes | Yes | Yes | Yes | — |
Deskew | Yes | Yes | Yes | Yes | Yes | Yes |
VREF-Out | Yes | — | — | — | — | — |
Intel Stratix 10 Calibration Stages Descriptions
Address and Command Calibration
The goal of address and command calibration is to delay address and command signals as necessary to optimize the address and command window. This stage is not available for all protocols, and cannot compensate for an inefficient board design.
- Leveling calibration— Centers the CS# signal and the entire address and command bus, relative to the CK clock. This operation is available for DDR3 and DDR4 interfaces only.
- Deskew calibration— Provides per-bit deskew for the address and command bus (except CS#), relative to the CK clock. This operation is available for DDR4 and QDR-IV interfaces only.
Read Calibration
Read calibration consists of the following parts:
- DQSen calibration— Calibrates the timing of the read capture clock gating and ungating, so that the PHY can gate and ungate the read clock at precisely the correct time—if too early or too late, data corruption can occur. The algorithm for this stage varies, depending on the memory protocol.
- Deskew calibration— Performs per-bit deskew of read data relative to the read strobe or clock.
- VREF-In calibration— Calibrates the VREF level at the FPGA.
- LFIFO calibration: Normalizes differences in read delays between groups due to fly-by, skews, and other variables and uncertainties.
Write Calibration
Write calibration consists of the following parts:
- Leveling calibration— Aligns the write strobe and clock to the memory clock, to compensate for skews, especially those associated with fly-by topology. The algorithm for this stage varies, depending on the memory protocol.
- Deskew calibration— Performs per-bit deskew of write data relative to the write strobe and clock.
- VREF-Out calibration— Calibrates the VREF level at the memory device.
Intel Stratix 10 Calibration Algorithms
Address and Command Calibration
Address and command calibration consists of the following parts:
- Leveling calibration— (DDR3 and DDR4 only) Toggles the CS# and CAS# signals to send read commands while keeping other address and command signals constant. The algorithm monitors for incoming DQS signals, and if the DQS signal toggles, it indicates that the read commands have been accepted. The algorithm then repeats using different delay values, to find the optimal window.
- Deskew calibration—
(DDR4,
QDR-IV, and
LPDDR3 only)
- (DDR4) Uses the
DDR4 address and command parity feature. The FPGA sends the address and
command parity bit, and the DDR4 memory device responds with an alert
signal if the parity bit is detected. The alert signal from the memory
device tells the FPGA that the parity bit was received.
Deskew calibration requires use of the PAR/ALERT# pins, so you should not omit these pins from your design. One limitation of deskew calibration is that it cannot deskew ODT and CKE pins.
- (QDR-IV) Uses the QDR-IV loopback mode. The FPGA sends address and command signals, and the memory device sends back the address and command signals which it captures, via the read data pins. The returned signals indicate to the FPGA what the memory device has captured. Deskew calibration can deskew all synchronous address and command signals.
- (LPDDR3) Uses the LPDDR3 CA training mode. The FPGA sends signals onto the LPDDR3 CA bus, and the memory device sends back those signals that it captures, via the DQ pins. The returned signals indicate to the FPGA what the memory device has captured. Deskew calibration can deskew all signals on the CA bus. The remaining command signals (CS, CKE, and ODT) are calibrated based on the average of the deskewed CA bus.
- (DDR4) Uses the
DDR4 address and command parity feature. The FPGA sends the address and
command parity bit, and the DDR4 memory device responds with an alert
signal if the parity bit is detected. The alert signal from the memory
device tells the FPGA that the parity bit was received.
Read Calibration
- DQSen calibration— (DDR3, DDR4,
LPDDR3,
RLDRAMx and QDRx) DQSen calibration occurs before Read deskew,
therefore only a single DQ bit is required to pass in order to achieve a
successful read pass.
- (DDR3, DDR4,and LPDDR3) The DQSen calibration algorithm searches the DQS preamble using a hardware state machine. The algorithm sends many back-to-back reads with a one clock cycle gap between. The hardware state machine searches for the DQS gap while sweeping DQSen delay values. the algorithm then increments the VFIFO value, and repeats the process until a pattern is found. The process is then repeated for all other read DQS groups.
- (RLDRAMx and QDRx) The DQSen
calibration algorithm does not use a hardware state machine; rather, it
calibrates cycle-level delays using software and subcycle delays using
DQS tracking hardware. The algorithm requires good data in memory, and
therefore relies on guaranteed writes. (Writing a burst of 0s to one
location, and a burst of 1s to another; back-to-back reads from these
two locations are used for read calibration.)
The algorithm enables DQS tracking to calibrate the phase component of DQS enable, and then issues a guaranteed write, followed by back-to-back reads. The algorithm sweeps DQSen values cycle by cycle until the read operation succeeds. The process is then repeated for all other read groups.
- Deskew calibration—
Read deskew calibration is performed before write leveling, and must be
performed at least twice: once before write calibration, using simple data
patterns from guaranteed writes, and again after write calibration, using
complex data patterns.
The deskew calibration algorithm performs a guaranteed write, and then sweeps dqs_in delay values from low to high, to find the right edge of the read window. The algorithm then sweeps dq-in delay values low to high, to find the left edge of the read window. Updated dqs_in and dq_in delay values are then applied to center the read window. The algorithm then repeats the process for all data pins.
- Vref-In calibration— Read Vref-In calibration begins by programming Vref-In with an arbitrary value. The algorithm then sweeps the Vref-In value from the starting value to both ends, and measures the read window for each value. The algorithm selects the Vref-In value which provides the maximum read window.
- LFIFO calibration— Read LFIFO calibration normalizes read delays between groups. The PHY must present all data to the controller as a single data bus. The LFIFO latency should be large enough for the slowest read data group, and large enough to allow proper synchronization across FIFOs.
Write Calibration
- Leveling calibration—
Write leveling calibration aligns the write strobe and clock to the memory
clock, to compensate for skews. In general, leveling calibration tries a variety
of delay values to determine the edges of the write window, and then selects an
appropriate value to center the window. The details of the algorithm vary,
depending on the memory protocol.
- (DDRx, LPDDR3) Write leveling occurs before write deskew, therefore only one successful DQ bit is required to register a pass. Write leveling staggers the DQ bus to ensure that at least one DQ bit falls within the valid write window.
- (RLDRAMx) Optimizes for the CK versus DK relationship.
- (QDR-IV) Optimizes for the CK versus DK relationship. Is covered by address and command deskew using the loopback mode.
- (QDR II/II+/Xtreme) The K clock is the only clock, therefore write leveling is not required.
- Deskew calibration— Performs per-bit deskew of write data relative to the write strobe and clock. Write deskew calibration does not change dqs_out delays; the write clock is aligned to the CK clock during write leveling.
- VREF-Out calibration— (DDR4) Calibrates the VREF level at the memory device. The VREF-Out calibration algorithm is similar to the VREF-In calibration algorithm.
Intel Stratix 10 Calibration Flowchart
Intel Stratix 10 EMIF IP Controller
Intel Stratix 10 Hard Memory Controller Rate Conversion Feature
To facilitate timing closure, you may choose to clock your core user logic at quarter-rate, resulting in easier timing closure at the expense of increased area and latency. To improve efficiency and help reduce overall latency, you can run the hard memory controller and PHY at half rate.
The rate conversion feature converts traffic from the FPGA core to the hard memory controller from quarter-rate to half-rate, and traffic from the hard memory controller to the FPGA core from half-rate to quarter-rate. From the perspective of user logic inside the FPGA core, the effect is the same as if the hard memory controller were running at quarter-rate.
The rate conversion feature is enabled automatically during IP generation whenever all of the following conditions are met:
- The hard memory controller is in use.
- User logic runs at quarter-rate.
- The interface targets either an ES2 or production device.
- Running the hard memory controller at half-rate dpoes not exceed the fMax specification of the hard memory controller and hard PHY.
When the rate conversion feature is enabled, you should see the following info message displayed in the IP generation GUI:
PHY and controller running at 2x the frequency of user logic for improved efficiency.Hardware Resource Sharing Among Multiple Intel Stratix 10 EMIFs
I/O SSM Sharing
When a column contains multiple memory interfaces, the hard Nios-II processor calibrates each interface serially. Interfaces placed within the same I/O column always share the same I/O SSM. The Intel® Quartus® Prime Fitter handles I/O SSM sharing automatically.
I/O Bank Sharing
Rules for Sharing I/O Banks
- A bank cannot serve as the address
and command bank for more than one interface. This means that lanes which
implement address and command pins for different interfaces cannot be allocated
to the same physical bank.
Note: An exception to the above rule exists when two interfaces are configured in a Ping-Pong PHY fashion. In such a configuration, two interfaces share the same set of address and command pins, effectively meaning that they share the same address and command tile.
- Pins within a lane cannot be shared by multiple memory interfaces.
- Pins that are not used by EMIF IP can serve as general-purpose I/Os of compatible voltage and termination settings.
- You can configure a bank as LVDS or as EMIF, but not both at the same time.
- Interfaces that share banks must reside at adjacent bank locations.
The following diagram illustrates two x16 interfaces sharing an I/O bank. The two interfaces share the same clock phase alignment block, so that one core clock signal can interact with both interfaces. Without sharing, the two interfaces would occupy a total of four physical banks instead of three.
PLL Reference Clock Sharing
To share a PLL reference clock, the following requirements must be met:
- Interfaces must expect a reference clock signal of the same frequency.
- Interfaces must be placed in the same column.
- Interfaces must be placed at adjacent bank locations.
Core Clock Network Sharing
You might want to share core clock networks for the following reasons:
- To minimize the area and latency penalty associated with clock domain crossing.
- To minimize consumption of core clock networks.
Multiple memory interfaces can share the same core clock signals under the following conditions:
- The memory interfaces have the same protocol, rate, frequency, and PLL reference clock source.
- The interfaces reside in the same I/O column.
- The interfaces reside in adjacent bank locations.
For multiple memory interfaces to share core clocks, you must specify one of the interfaces as master and the remaining interfaces as slaves. Use the Core clocks sharing setting in the parameter editor to specify the master and slaves.
In your RTL, connect the clks_sharing_master_out signal from the master interface to the clks_sharing_slave_in signal of all the slave interfaces. Both the master and slave interfaces expose their own output clock ports in the RTL (e.g. emif_usr_clk, afi_clk), but the signals are equivalent, so it does not matter whether a clock port from a master or a slave is used.
Core clock sharing necessitates PLL reference clock sharing; therefore, only the master interface exposes an input port for the PLL reference clock. All slave interfaces use the same PLL reference clock signal.
User-requested Reset in Intel Stratix 10 EMIF IP
Description | |
---|---|
Reset-related signals |
local_reset_req (input) local_reset_done (output) |
When can user logic request a reset? |
local_reset_req has effect only local_reset_done is high. After device power-on, the local_reset_done signal transitions high upon completion of the first calibration, whether the calibration is successful or not. |
Is user-requested reset a requirement? |
A user-requested reset is optional. The I/O SSM automatically ensures that the memory interface begins from a known state as part of the device power-on sequence. A user-requested reset is necessarily only if the user logic must explicitly reset a memory interface after the device power-on sequence. |
When does a user-requested reset actually happen? |
A reset request is handled by the I/O SSM. If the I/O SSM receives a reset request from multiple interfaces within the same I/O column, it must serialize the reset sequence of the individual interfaces. You should avoid making assumptions on when the reset sequence will begin after a request is issued. |
Timing requirement and triggering mechanism. |
Reset request is sent by transitioning the local_reset_req signal from low to high, then keeping the signal at the high state for a minimum of 2 EMIF core clock cycles, then transitioning the signal from high to low. local_reset_req is asynchronous in that there is no setup/hold timing to meet, but it must meet the minimum pulse width requirement of 2 EMIF core clock cycles. |
How long can an external memory interface be kept in reset? |
It is not possible to keep an external memory interface in reset indefinitely. Asserting local_reset_req high continuously has no effect as a reset request is completed by a full 0->1->0 pulse. |
Delaying initial calibration. |
Initial calibration cannot be skipped. The local_reset_done signal is driven high only after initial calibration has completed. |
Reset scope (within an external memory interface). |
Only circuits that are required to restore EMIF to power-up state are reset. Excluded from the reset sequence are the IOSSM, the IOPLL(s), the DLL(s), and the CPA. |
Reset scope (within an I/O column). |
local_reset_req is a per-interface reset. |
Method for Initiating a User-requested Reset
Step 1 - Precondition
Before asserting local_reset_req, user logic must ensure that the local_reset_done signal is high.
As part of the device power-on sequence, the local_reset_done signal automatically transitions to high upon the completion of the interface calibration sequence, regardless of whether calibration is successful or not.
Step 2 - Reset Request
After the pre-condition is satisfied, user logic can send a reset request by driving the local_cal_req signal from low to high and then low again (that is, by sending a pulse of 1).
- The 0-to-1 and 1-to-0 transitions need not happen in relation to any clock edges (that is, they can occur asynchronously); however, the pulse must meet a minimum pulse width of at least 2 EMIF core clock cycles. For example, if the emif_usr_clk has a period of 4ns, then the local_reset_req pulse must last at least 8ns (that is, two emif_usr_clk periods).
- The reset request is considered complete only after the 1-to-0 transition. The EMIF IP does not initiate the reset sequence when the local_reset_req is simply held high.
- Additional pulses to local_reset_req are ignored until the reset sequence is completed.
Optional - Detecting local_reset_done deassertion and assertion
If you want, you can monitor the status of the local_reset_done signal to to explicitly detect the status of the reset sequence.
- After the EMIF IP receives a reset request, it deasserts the local_reset_done signal. After initial power-up calibration, local_reset_done is de-asserted only in response to a user-requested reset. The reset sequence is imminent when local_reset_done has transitioned to low, although the exact timing depends on the current state of the I/O SSM. As part of the EMIF reset sequence, the core reset signal (emif_usr_reset_n, afi_reset_n) is driven low. Do not use a register reset by the core reset signal to sample local_reset_done.
- After the reset sequence has completed, local_reset_done is driven high again. local_reset_done being driven high indicates the completion of the reset sequence and the readiness to accept a new reset request; however, it does not imply that calibration was successful or that the hard memory controller is ready to accept requests. For these purposes, user logic must check signals such as afi_cal_success, afi_cal_fail, and amm_ready.
Intel Stratix 10 EMIF for Hard Processor Subsystem
To enable connectivity between the Intel® Stratix® 10 HPS and the Intel® Stratix® 10 EMIF IP, you must create and configure an instance of the Intel® Stratix® 10 External Memory Interface for HPS IP core, and use Platform Designer to connect it to the Intel® Stratix® 10 Hard Processor Subsystem instance in your system.
Supported Modes
The Intel® Stratix® 10 Hard Processor Subsystem is compatible with the following external memory configurations:
Protocol | DDR3, DDR4, LPDDR3 |
Maximum memory clock frequency |
DDR3: 1.067 GHz DDR4: 1.333 GHz LPDDR3: 800 MHz |
Configuration | Hard PHY with hard memory controller |
Clock rate of PHY and hard memory controller | Half-rate |
Data width (without ECC) | 16-bit, 32-bit, 64-bit |
Data width (with ECC) | 24-bit, 40-bit, 72-bit |
DQ width per group | x8 |
Maximum number of I/O lanes for address/command | 3 |
Memory format | Discrete, UDIMM, SODIMM, RDIMM |
Ranks / CS# width | Up to 2 |
Restrictions on I/O Bank Usage for Intel Stratix 10 EMIF IP with HPS
The restrictions on I/O bank usage result from the Intel® Stratix® 10 HPS having hard-wired connections to the EMIF circuits in the I/O banks closest to the HPS. For any given EMIF configuration, the pin-out of the EMIF-to-HPS interface is fixed.
The following diagram illustrates the use of I/O banks and lanes for various EMIF-HPS data widths:
The HPS EMIF uses the closest located external memory interfaces I/O banks to connect to SDRAM. These banks include:
- Bank 2N—used for data I/Os (Data bits 31:0)
- Bank 2M—used for address, command and ECC data I/Os
- Bank 2L—used for data I/Os (Data bits 63:32)
If no HPS EMIF is used in a system, the entire HPS EMIF bank can be used as FPGA GPIO. If there is a HPS EMIF in a system, the unused HPS EMIF pins can be used as FPGA general I/O with restrictions:
- Bank 2M:
- Lane 3 is used for SDRAM ECC data. Unused pins in lane 3 can be used as FPGA inputs only.
- Lanes 2, 1, and 0 are used for SDRAM address and command. Unused pins in these lanes can be used as FPGA inputs or outputs.
- Bank 2N and Bank 2L :
- Lanes 3, 2, 1, and 0 are used for data bits.
- With 64-bit data widths, unused pins in these banks can be used as FPGA inputs only.
- With 32-bit data widths, unused pins in Bank 2N can be used as FPGA inputs only.Unused pins for Bank 2L can be used as FPGA inputs or outputs.
- With 16-bit data widths, Intel® Quartus® Prime assigns lane 0 and lane 1 as data lanes in bank 2N. Unused pins in lane 0 and lane 1 can be used as FPGA inputs only. The other two lanes are available to use as FPGA inputs or outputs.
By default, the Intel® Stratix® 10 External Memory Interface for HPS IP core together with the Intel® Quartus® Prime Fitter automatically implement the correct pin-out for HPS EMIF without you having to apply additional constraints. If you must modify the default pin-out for any reason, you must adhere to the following requirements, which are specific to HPS EMIF:
- Within a single data lane (which implements a single x8 DQS group):
- DQ pins must use pins at indices 1, 2, 3, 6, 7, 8, 9, 10. You may swap the locations between the DQ bits (that is, you may swap location of DQ[0] and DQ[3]) so long as the resulting pin-out uses pins at these indices only.
- DM/DBI pin must use pin at index 11. There is no flexibility.
- DQS/DQS# must use pins at index 4 and 5. There is no flexibility.
- Assignment of data lanes must be as illustrated in the above figure. You are allowed to swap the locations of entire byte lanes (that is, you may swap locations of byte 0 and byte 3) so long as the resulting pin-out uses only the lanes permitted by your HPS EMIF configuration, as shown in the above figure.
- You must not change placement of the address and command pins from the default.
- You may place the alert# pin at any available pin location in either a data lane or an address and command lane.
To override the default generated pin assignments, comment out the relevant HPS_LOCATION assignments in the .qip file, and add your own location assignments (using set_location_assignment) in the .qsf file.
Intel Stratix 10 EMIF Ping Pong PHY
In Intel® Stratix® 10 EMIF, Ping Pong PHY supports both half-rate and quarter-rate interfaces for DDR3, and quarter-rate for DDR4.
Intel Stratix 10 Ping Pong PHY Feature Description
With the Ping Pong PHY, address and command signals from two independent controllers are multiplexed onto shared buses by delaying one of the controller outputs by one full-rate clock cycle. The result is 1T timing, with a new command being issued on each full-rate clock cycle. The following figure shows address and command timing for the Ping Pong PHY.
The command signals CS, ODT, and CKE have two signals (one for ping and one for pong); the other address and command signals are shared.
Intel Stratix 10 Ping Pong PHY Architecture
The hard memory controller I/O bank of the primary interface is used for address and command and is always adjacent and above the hard memory controller bank of the secondary interface. All four lanes of the primary hard memory controller bank are used for address and command.
The following example shows a 2x16 Ping Pong PHY bank-lane configuration. The upper bank (I/O bank N) is the address and command bank, which serves both the primary and secondary interfaces. The primary hard memory controller is linked to the secondary interface by the Ping Pong bus. The lower bank (I/O bank N-1) is the secondary interface bank, which carries the data buses for both primary and secondary interfaces. In the 2x16 case a total of four I/O banks are required for data, hence two banks in total are sufficient for the implementation.
The data for the primary interface is routed down to the top two lanes of the secondary I/O bank, and the data for the secondary interface is routed to the bottom two lanes of the secondary I/O bank.
A 2x32 interface can be implemented similarly, with the additional data lanes placed above and below the primary and secondary I/O banks, such that primary data lanes are placed above the primary bank and secondary data lanes are placed below the secondary bank.
Intel Stratix 10 Ping Pong PHY Limitations
Ping Pong PHY uses all lanes of the address and command I/O bank as address and command. For information on the pin allocations of the DDR3 and DDR4 address and command I/O bank, refer to DDR3 Scheme 1 and DDR4 Scheme 3, in External Memory Interface Pin Information for Stratix 10 Devices, on www.altera.com.
An additional limitation is that I/O lanes may be left unused when you instantiate multiple pairs of Ping Pong PHY interfaces. The following diagram shows two pairs of x8 Pin Pong controllers (a total of 4 interfaces). Lanes highlighted in yellow are not driven by any memory interfaces (unused lanes and pins can still serve as general purpose I/Os). Even with some I/O lanes left unused, the Ping Pong PHY approach is still beneficial in terms of resource usage, compared to independent interfaces. Memory widths of 24 bits and 40 bits have a similar situation, while 16 bit, 32 bit, and 64 bit memory widths do not suffer this limitation.
Intel Stratix 10 Ping Pong PHY Calibration
Calibration of a Ping Pong PHY interface incorporates two sequencers, one on the primary hard memory controller I/O bank, and one on the secondary hard memory controller I/O bank. To ensure that the two sequencers issue instructions on the same memory clock cycle, the Nios II processor configures the sequencer on the primary hard memory controller to receive a token from the secondary interface, ignoring any commands from the Avalon bus. Additional delays are programmed on the secondary interface to allow for the passing of the token from the sequencer on the secondary hard memory controller tile to the sequencer on the primary hard memory controller tile. During calibration, the Nios II processor assumes that commands are always issued from the sequencer on the primary hard memory controller I/O bank. After calibration, the Nios II processor adjusts the delays for use with the primary and secondary hard memory controllers.
Using the Ping Pong PHY
- Configure a single memory interface according to your requirements.
-
Select Instantiate two controllers sharing a Ping Pong
PHY on the General tab in
the parameter editor.
The Intel® Quartus® Prime software replicates the interface, resulting in two memory controllers and a shared PHY. The system configures the I/O bank-lane structure, without further input from you.
Ping Pong PHY Simulation Example Design
Functionally, the IP interfaces with user traffic separately, as it would with two independent memory interfaces. You can also generate synthesizable example designs, where the external memory interface IP interfaces with a traffic generator.
Intel Stratix 10 EMIF and SmartVID
The SmartVID controller allows the FPGA to operate at a reduced Vcc, while maintaining performance. Because the SmartVID controller can adjust Vcc up or down in response to power requirements and temperature, it can have an impact on external memory interface performance. When used with the SmartVID controller, the EMIF IP implements a handshake protocol to ensure that EMIF calibration does not begin until after voltage adjustment has completed.
In extended speed grade devices, voltage adjustment occurs once when the FPGA is powered up, and no further voltage adjustments occur. The external memory calibration occurs after this initial voltage adjustment is completed. EMIF specifications are expected to be slightly lower in extended speed grade devices using SmartVID, than in devices not using SmartVID.
In industrial speed grade devices, voltage adjustment occurs at power up, and may also occur during operation, in response to temperature changes. External memory interface calibration does not occur until after the initial voltage adjustment at power up. However, the external memory interface is not recalibrated in response to subsequent voltage adjustments that occur during operation. As a result, EMIF specifications for industrial speed grade devices using SmartVID are expected to be lower than for extended speed grade devices.
Using Intel® Stratix® 10 EMIF IP with SmartVID
To employ Intel® Stratix® 10 EMIF IP with SmartVID, follow these steps:
- Ensure that the Intel® Quartus® Prime project and Platform Designer system are configured to use VID components. This step exposes the vid_cal_done_persist interface on instantiated EMIF IP, which is required for communicating with the SmartVID controller.
- Instantiate the SmartVID controller, using an I/O PLL IP core to drive the
125MHz vid_clk and the 25MHz jtag_core_clk inputs of the Smart VID
controller.
Note: Do not connect the emif_usr_clk signal to either the vid_clk or jtag_core_clk inputs. Doing so would hold both the EMIF IP and the SmartVID controller in a perpetual reset condition.
- Instantiate the Intel® Stratix® 10 EMIF IP.
- Connect the vid_cal_done_persist signal from the EMIF IP
with the cal_done_persistent signal on the SmartVID controller.
This connection enables handshaking between the EMIF IP and the SmartVID
controller, which allows the EMIF IP to delay memory calibration until after
voltage levels are stabilized.
Note: The EMIF vid_cal_done_persist interface becomes available only when a VID-enabled device is selected.
Intel Stratix 10 EMIF IP End-User Signals
Interface and Signal Descriptions
Intel Stratix 10 EMIF IP Interfaces for DDR3
Interface Name | Interface Type | Description |
---|---|---|
global_reset_n | Reset Input | Global reset interface |
local_reset_req | Conduit | Local reset request interface |
local_reset_status | Conduit | Local reset status interface |
local_reset_req_out | Conduit | IF_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in | Conduit | IF_LOCAL_RESET_STATUS_IN_DESC |
pll_ref_clk | Clock Input | PLL reference clock interface |
pll_ref_clk_out | Clock Output | IF_PLL_REF_CLK_OUT_DESC |
pll_locked | Conduit | IF_PLL_LOCKED_DESC |
pll_extra_clk_0 | Clock Output | IF_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 | Clock Output | IF_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 | Clock Output | IF_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 | Clock Output | IF_PLL_EXTRA_CLK_3_DESC |
oct | Conduit | OCT interface |
mem | Conduit | Interface between FPGA and external memory |
status | Conduit | PHY calibration status interface |
afi_reset_n | Reset Output | AFI reset interface |
afi_clk | Clock Output | AFI clock interface |
afi_half_clk | Clock Output | AFI half-rate clock interface |
afi | Conduit | Altera PHY Interface (AFI) |
emif_usr_reset_n | Reset Output | User clock domain reset interface |
emif_usr_clk | Clock Output | User clock interface |
emif_usr_reset_n_sec | Reset Output | User clock domain reset interface (for the secondary interface in ping-pong configuration) |
emif_usr_clk_sec | Clock Output | User clock interface (for the secondary interface in ping-pong configuration) |
cal_debug_reset_n | Reset Input | User calibration debug clock domain reset interface |
cal_debug_clk | Clock Input | User calibration debug clock interface |
cal_debug_out_reset_n | Reset Output | User calibration debug clock domain reset interface |
cal_debug_out_clk | Clock Output | User calibration debug clock interface |
clks_sharing_master_out | Conduit | Core clocks sharing master interface |
clks_sharing_slave_in | Conduit | Core clocks sharing slave interface |
ctrl_amm | Avalon Memory-Mapped Slave | Controller Avalon Memory-Mapped interface |
ctrl_ecc_user_interrupt | Conduit | Controller ECC user interrupt interface |
hps_emif | Conduit | Conduit between Hard Processor Subsystem and memory interface |
cal_debug | Avalon Memory-Mapped Slave | Calibration debug interface |
cal_debug_out | Avalon Memory-Mapped Master | Calibration debug interface |
generic_clk | Clock Input | IF_GENERIC_CLK_DESC |
generic_reset_n | Reset Input | IF_GENERIC_RESET_DESC |
generic_conduit_reset_n | Conduit | IF_GENERIC_CONDUIT_RESET_DESC |
global_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
global_reset_n | Input | Asynchronous reset causes the memory interface to be reset and recalibrated. The global reset signal applies to all memory interfaces placed within an I/O column. |
local_reset_req for DDR3
Port Name | Direction | Description |
---|---|---|
local_reset_req | Input | Signal from user logic to request the memory interface to be reset and recalibrated. Reset request is sent by transitioning the local_reset_req signal from low to high, then keeping the signal at the high state for a minimum of 2 EMIF core clock cycles, then transitioning the signal from high to low. local_reset_req is asynchronous in that there is no setup/hold timing to meet, but it must meet the minimum pulse width requirement of 2 EMIF core clock cycles. |
local_reset_status for DDR3
Port Name | Direction | Description |
---|---|---|
local_reset_done | Output | Signal from memory interface to indicate whether it has completed a reset sequence, is currently out of reset, and is ready for a new reset request. When local_reset_done is low, the memory interface is in reset. |
local_reset_req_out for DDR3
Port Name | Direction | Description |
---|---|---|
local_reset_req_out | Output | PORT_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in for DDR3
Port Name | Direction | Description |
---|---|---|
local_reset_done_in | Input | PORT_LOCAL_RESET_DONE_IN_DESC |
pll_ref_clk for DDR3
Port Name | Direction | Description |
---|---|---|
pll_ref_clk | Input | PLL reference clock input. Connect this interface to the clock output of the clock source that matches the PLL reference clock frequency value set in the parameter editor. |
pll_ref_clk_out for DDR3
Port Name | Direction | Description |
---|---|---|
pll_ref_clk_out | Output | PORT_PLL_REF_CLK_OUT_DESC |
pll_locked for DDR3
Port Name | Direction | Description |
---|---|---|
pll_locked | Output | PORT_PLL_LOCKED_DESC |
pll_extra_clk_0 for DDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_0 | Output | PORT_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 for DDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_1 | Output | PORT_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 for DDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_2 | Output | PORT_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 for DDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_3 | Output | PORT_PLL_EXTRA_CLK_3_DESC |
oct for DDR3
Port Name | Direction | Description |
---|---|---|
oct_rzqin | Input | Calibrated On-Chip Termination (OCT) RZQ input pin |
mem for DDR3
Port Name | Direction | Description |
---|---|---|
mem_ck | Output | CK clock |
mem_ck_n | Output | CK clock (negative leg) |
mem_a | Output | Address |
mem_ba | Output | Bank address |
mem_cke | Output | Clock enable |
mem_cs_n | Output | Chip select |
mem_rm | Output | Rank multiplication for LRDIMM. Typically, mem_rm[0] and mem_rm[1] connect to CS2# and CS3# of the memory buffer of all LRDIMM slots. |
mem_odt | Output | On-die termination |
mem_ras_n | Output | RAS command |
mem_cas_n | Output | CAS command |
mem_we_n | Output | WE command |
mem_reset_n | Output | Asynchronous reset |
mem_par | Output | Command and address parity. (memory format=RDIMM/LRDIMM) |
mem_dm | Output | Write data mask |
mem_dq | Bidirectional | Read/write data |
mem_dqs | Bidirectional | Data strobe |
mem_dqs_n | Bidirectional | Data strobe (negative leg) |
mem_alert_n | Input | Alert flag |
status for DDR3
Port Name | Direction | Description |
---|---|---|
local_cal_success | Output | When high, indicates that PHY calibration was successful |
local_cal_fail | Output | When high, indicates that PHY calibration has failed. |
afi_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
afi_reset_n | Output | Reset for the AFI clock domain. Asynchronous assertion and synchronous deassertion |
afi_clk for DDR3
Port Name | Direction | Description |
---|---|---|
afi_clk | Output | Clock for the Altera PHY Interface (AFI) |
afi_half_clk for DDR3
Port Name | Direction | Description |
---|---|---|
afi_half_clk | Output | Clock running at half the frequency of the AFI clock afi_clk |
afi for DDR3
Port Name | Direction | Description |
---|---|---|
afi_cal_success | Output | Signals calibration successful completion |
afi_cal_fail | Output | Signals calibration failure |
afi_cal_req | Input | When asserted, the interface is recalibrated |
afi_rlat | Output | Latency in afi_clk cycles between read command and read data valid |
afi_wlat | Output | Latency in afi_clk cycles between write command and write data valid |
afi_addr | Input | Address |
afi_ba | Input | Bank address |
afi_cke | Input | Clock enable |
afi_cs_n | Input | Chip select |
afi_rm | Input | Rank multiplication for LRDIMM |
afi_odt | Input | On-die termination |
afi_ras_n | Input | RAS command |
afi_cas_n | Input | CAS command |
afi_we_n | Input | WE command |
afi_rst_n | Input | Asynchronous reset |
afi_par | Input | Command and address parity |
afi_dm | Input | Write data mask |
afi_dqs_burst | Input | Asserted by the controller to enable the output DQS signal |
afi_wdata_valid | Input | Asserted by the controller to indicate that afi_wdata contains valid write data |
afi_wdata | Input | Write data |
afi_rdata_en_full | Input | Asserted by the controller to indicate the amount of relevant read data expected |
afi_rdata | Output | Read data |
afi_rdata_valid | Output | Asserted by the PHY to indicate that afi_rdata contains valid read data |
afi_rrank | Input | Asserted by the controller to indicate which rank is being read from, to control shadow register switching |
afi_wrank | Input | Asserted by the controller to indicate which rank is being written to, to control shadow register switching |
emif_usr_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion |
emif_usr_clk for DDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_clk | Output | User clock domain |
emif_usr_reset_n_sec for DDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n_sec | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion. Intended for the secondary interface in a ping-pong configuration. |
emif_usr_clk_sec for DDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_clk_sec | Output | User clock domain. Intended for the secondary interface in a ping-pong configuration. |
cal_debug_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_reset_n | Input | Reset for the user clock connecting to the Avalon calibration debug bus. Asynchronous assertion and synchronous deassertion |
cal_debug_clk for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_clk | Input | User clock domain |
cal_debug_out_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_reset_n | Output | Reset for the user clock connecting to the Avalon calibration debug_out bus. Asynchronous assertion and synchronous deassertion |
cal_debug_out_clk for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_clk | Output | User clock domain |
clks_sharing_master_out for DDR3
Port Name | Direction | Description |
---|---|---|
clks_sharing_master_out | Output | This port should fanout to all the core clocks sharing slaves. |
clks_sharing_slave_in for DDR3
Port Name | Direction | Description |
---|---|---|
clks_sharing_slave_in | Input | This port should be connected to the core clocks sharing master. |
ctrl_amm for DDR3
Port Name | Direction | Description |
---|---|---|
amm_ready | Output | Wait-request is asserted when controller is busy |
amm_read | Input | Read request signal |
amm_write | Input | Write request signal |
amm_address | Input | Address for the read/write request |
amm_readdata | Output | Read data |
amm_writedata | Input | Write data |
amm_burstcount | Input | Number of transfers in each read/write burst |
amm_byteenable | Input | Byte-enable for write data |
amm_beginbursttransfer | Input | Indicates when a burst is starting |
amm_readdatavalid | Output | Indicates whether read data is valid |
ctrl_ecc_user_interrupt for DDR3
Port Name | Direction | Description |
---|---|---|
ctrl_ecc_user_interrupt | Output |
Controller ECC user interrupt interface for connection to a custom control block that must be notified when either single-bit or double-bit ECC errors occur. |
hps_emif for DDR3
Port Name | Direction | Description |
---|---|---|
hps_to_emif | Input | Signals coming from Hard Processor Subsystem to the memory interface |
emif_to_hps | Output | Signals going to Hard Processor Subsystem from the memory interface |
hps_to_emif_gp | Input | Signals coming from Hard Processor Subsystem GPIO to the memory interface |
emif_to_hps_gp | Output | Signals going to Hard Processor Subsystem GPIO from the memory interface |
cal_debug for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_waitrequest | Output | Wait-request is asserted when controller is busy |
cal_debug_read | Input | Read request signal |
cal_debug_write | Input | Write request signal |
cal_debug_addr | Input | Address for the read/write request |
cal_debug_read_data | Output | Read data |
cal_debug_write_data | Input | Write data |
cal_debug_byteenable | Input | Byte-enable for write data |
cal_debug_read_data_valid | Output | Indicates whether read data is valid |
cal_debug_out for DDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_waitrequest | Input | Wait-request is asserted when controller is busy |
cal_debug_out_read | Output | Read request signal |
cal_debug_out_write | Output | Write request signal |
cal_debug_out_addr | Output | Address for the read/write request |
cal_debug_out_read_data | Input | Read data |
cal_debug_out_write_data | Output | Write data |
cal_debug_out_byteenable | Output | Byte-enable for write data |
cal_debug_out_read_data_valid | Input | Indicates whether read data is valid |
generic_clk for DDR3
Port Name | Direction | Description |
---|---|---|
clk | Input | PORT_GENERIC_CLK_DESC |
generic_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_RESET_DESC |
generic_conduit_reset_n for DDR3
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_CONDUIT_RESET_DESC |
Intel Stratix 10 EMIF IP Interfaces for DDR4
Interface Name | Interface Type | Description |
---|---|---|
global_reset_n | Reset Input | Global reset interface |
local_reset_req | Conduit | Local reset request interface |
local_reset_status | Conduit | Local reset status interface |
local_reset_req_out | Conduit | IF_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in | Conduit | IF_LOCAL_RESET_STATUS_IN_DESC |
pll_ref_clk | Clock Input | PLL reference clock interface |
pll_ref_clk_out | Clock Output | IF_PLL_REF_CLK_OUT_DESC |
pll_locked | Conduit | IF_PLL_LOCKED_DESC |
pll_extra_clk_0 | Clock Output | IF_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 | Clock Output | IF_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 | Clock Output | IF_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 | Clock Output | IF_PLL_EXTRA_CLK_3_DESC |
oct | Conduit | OCT interface |
mem | Conduit | Interface between FPGA and external memory |
status | Conduit | PHY calibration status interface |
afi_reset_n | Reset Output | AFI reset interface |
afi_clk | Clock Output | AFI clock interface |
afi_half_clk | Clock Output | AFI half-rate clock interface |
afi | Conduit | Altera PHY Interface (AFI) |
emif_usr_reset_n | Reset Output | User clock domain reset interface |
emif_usr_clk | Clock Output | User clock interface |
emif_usr_reset_n_sec | Reset Output | User clock domain reset interface (for the secondary interface in ping-pong configuration) |
emif_usr_clk_sec | Clock Output | User clock interface (for the secondary interface in ping-pong configuration) |
cal_debug_reset_n | Reset Input | User calibration debug clock domain reset interface |
cal_debug_clk | Clock Input | User calibration debug clock interface |
cal_debug_out_reset_n | Reset Output | User calibration debug clock domain reset interface |
cal_debug_out_clk | Clock Output | User calibration debug clock interface |
clks_sharing_master_out | Conduit | Core clocks sharing master interface |
clks_sharing_slave_in | Conduit | Core clocks sharing slave interface |
ctrl_amm | Avalon Memory-Mapped Slave | Controller Avalon Memory-Mapped interface |
ctrl_ecc_user_interrupt | Conduit | Controller ECC user interrupt interface |
hps_emif | Conduit | Conduit between Hard Processor Subsystem and memory interface |
cal_debug | Avalon Memory-Mapped Slave | Calibration debug interface |
cal_debug_out | Avalon Memory-Mapped Master | Calibration debug interface |
generic_clk | Clock Input | IF_GENERIC_CLK_DESC |
generic_reset_n | Reset Input | IF_GENERIC_RESET_DESC |
generic_conduit_reset_n | Conduit | IF_GENERIC_CONDUIT_RESET_DESC |
global_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
global_reset_n | Input | Asynchronous reset causes the memory interface to be reset and recalibrated. The global reset signal applies to all memory interfaces placed within an I/O column. |
local_reset_req for DDR4
Port Name | Direction | Description |
---|---|---|
local_reset_req | Input | Signal from user logic to request the memory interface to be reset and recalibrated. Reset request is sent by transitioning the local_reset_req signal from low to high, then keeping the signal at the high state for a minimum of 2 EMIF core clock cycles, then transitioning the signal from high to low. local_reset_req is asynchronous in that there is no setup/hold timing to meet, but it must meet the minimum pulse width requirement of 2 EMIF core clock cycles. |
local_reset_status for DDR4
Port Name | Direction | Description |
---|---|---|
local_reset_done | Output | Signal from memory interface to indicate whether it has completed a reset sequence, is currently out of reset, and is ready for a new reset request. When local_reset_done is low, the memory interface is in reset. |
local_reset_req_out for DDR4
Port Name | Direction | Description |
---|---|---|
local_reset_req_out | Output | PORT_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in for DDR4
Port Name | Direction | Description |
---|---|---|
local_reset_done_in | Input | PORT_LOCAL_RESET_DONE_IN_DESC |
pll_ref_clk for DDR4
Port Name | Direction | Description |
---|---|---|
pll_ref_clk | Input | PLL reference clock input |
pll_ref_clk_out for DDR4
Port Name | Direction | Description |
---|---|---|
pll_ref_clk_out | Output | PORT_PLL_REF_CLK_OUT_DESC |
pll_locked for DDR4
Port Name | Direction | Description |
---|---|---|
pll_locked | Output | PORT_PLL_LOCKED_DESC |
pll_extra_clk_0 for DDR4
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_0 | Output | PORT_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 for DDR4
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_1 | Output | PORT_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 for DDR4
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_2 | Output | PORT_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 for DDR4
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_3 | Output | PORT_PLL_EXTRA_CLK_3_DESC |
oct for DDR4
Port Name | Direction | Description |
---|---|---|
oct_rzqin | Input | Calibrated On-Chip Termination (OCT) RZQ input pin |
mem for DDR4
Port Name | Direction | Description |
---|---|---|
mem_ck | Output | CK clock |
mem_ck_n | Output | CK clock (negative leg) |
mem_a | Output | Address |
mem_ba | Output | Bank address |
mem_bg | Output | Bank group |
mem_cke | Output | Clock enable |
mem_cs_n | Output | Chip select |
mem_odt | Output | On-die termination |
mem_reset_n | Output | Asynchronous reset |
mem_act_n | Output | Activation command |
mem_par | Output | Command and address parity. (memory format=RDIMM/LRDIMM) |
mem_dq | Bidirectional | Read/write data |
mem_dbi_n | Bidirectional | Acts as either the data bus inversion pin, or the data mask pin, depending on configuration. |
mem_dqs | Bidirectional | Data strobe |
mem_dqs_n | Bidirectional | Data strobe (negative leg) |
mem_alert_n | Input | Alert flag |
status for DDR4
Port Name | Direction | Description |
---|---|---|
local_cal_success | Output | When high, indicates that PHY calibration was successful |
local_cal_fail | Output | When high, indicates that PHY calibration failed |
afi_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
afi_reset_n | Output | Reset for the AFI clock domain. Asynchronous assertion and synchronous deassertion |
afi_clk for DDR4
Port Name | Direction | Description |
---|---|---|
afi_clk | Output | Clock for the Altera PHY Interface (AFI) |
afi_half_clk for DDR4
Port Name | Direction | Description |
---|---|---|
afi_half_clk | Output | Clock running at half the frequency of the AFI clock afi_clk |
afi for DDR4
Port Name | Direction | Description |
---|---|---|
afi_cal_success | Output | Signals calibration successful completion |
afi_cal_fail | Output | Signals calibration failure |
afi_cal_req | Input | When asserted, the interface is recalibrated |
afi_rlat | Output | Latency in afi_clk cycles between read command and read data valid |
afi_wlat | Output | Latency in afi_clk cycles between write command and write data valid |
afi_addr | Input | Address |
afi_ba | Input | Bank address |
afi_bg | Input | Bank group |
afi_cke | Input | Clock enable |
afi_cs_n | Input | Chip select |
afi_odt | Input | On-die termination |
afi_rst_n | Input | Asynchronous reset |
afi_act_n | Input | Activation command |
afi_par | Input | Command and address parity |
afi_dm_n | Input | Write data mask |
afi_dqs_burst | Input | Asserted by the controller to enable the output DQS signal |
afi_wdata_valid | Input | Asserted by the controller to indicate that afi_wdata contains valid write data |
afi_wdata | Input | Write data |
afi_rdata_en_full | Input | Asserted by the controller to indicate the amount of relevant read data expected |
afi_rdata | Output | Read data |
afi_rdata_valid | Output | Asserted by the PHY to indicate that afi_rdata contains valid read data |
afi_rrank | Input | Asserted by the controller to indicate which rank is being read from, to control shadow register switching |
afi_wrank | Input | Asserted by the controller to indicate which rank is being written to, to control shadow register switching |
emif_usr_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion |
emif_usr_clk for DDR4
Port Name | Direction | Description |
---|---|---|
emif_usr_clk | Output | User clock domain |
emif_usr_reset_n_sec for DDR4
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n_sec | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion. Intended for the secondary interface in a ping-pong configuration. |
emif_usr_clk_sec for DDR4
Port Name | Direction | Description |
---|---|---|
emif_usr_clk_sec | Output | User clock domain. Intended for the secondary interface in a ping-pong configuration. |
cal_debug_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_reset_n | Input | Reset for the user clock connecting to the Avalon calibration debug bus. Asynchronous assertion and synchronous deassertion |
cal_debug_clk for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_clk | Input | User clock domain |
cal_debug_out_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_out_reset_n | Output | Reset for the user clock connecting to the Avalon calibration debug_out bus. Asynchronous assertion and synchronous deassertion |
cal_debug_out_clk for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_out_clk | Output | User clock domain |
clks_sharing_master_out for DDR4
Port Name | Direction | Description |
---|---|---|
clks_sharing_master_out | Output | This port should fanout to all the core clocks sharing slaves. |
clks_sharing_slave_in for DDR4
Port Name | Direction | Description |
---|---|---|
clks_sharing_slave_in | Input | This port should be connected to the core clocks sharing master. |
ctrl_amm for DDR4
Port Name | Direction | Description |
---|---|---|
amm_ready | Output | Wait-request is asserted when controller is busy |
amm_read | Input | Read request signal |
amm_write | Input | Write request signal |
amm_address | Input | Address for the read/write request |
amm_readdata | Output | Read data |
amm_writedata | Input | Write data |
amm_burstcount | Input | Number of transfers in each read/write burst |
amm_byteenable | Input | Byte-enable for write data |
amm_beginbursttransfer | Input | Indicates when a burst is starting |
amm_readdatavalid | Output | Indicates whether read data is valid |
ctrl_ecc_user_interrupt for DDR4
Port Name | Direction | Description |
---|---|---|
ctrl_ecc_user_interrupt | Output | Controller ECC user interrupt signal to determine whether there is a bit error |
hps_emif for DDR4
Port Name | Direction | Description |
---|---|---|
hps_to_emif | Input | Signals coming from Hard Processor Subsystem to the memory interface |
emif_to_hps | Output | Signals going to Hard Processor Subsystem from the memory interface |
hps_to_emif_gp | Input | Signals coming from Hard Processor Subsystem GPIO to the memory interface |
emif_to_hps_gp | Output | Signals going to Hard Processor Subsystem GPIO from the memory interface |
cal_debug for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_waitrequest | Output | Wait-request is asserted when controller is busy |
cal_debug_read | Input | Read request signal |
cal_debug_write | Input | Write request signal |
cal_debug_addr | Input | Address for the read/write request |
cal_debug_read_data | Output | Read data |
cal_debug_write_data | Input | Write data |
cal_debug_byteenable | Input | Byte-enable for write data |
cal_debug_read_data_valid | Output | Indicates whether read data is valid |
cal_debug_out for DDR4
Port Name | Direction | Description |
---|---|---|
cal_debug_out_waitrequest | Input | Wait-request is asserted when controller is busy |
cal_debug_out_read | Output | Read request signal |
cal_debug_out_write | Output | Write request signal |
cal_debug_out_addr | Output | Address for the read/write request |
cal_debug_out_read_data | Input | Read data |
cal_debug_out_write_data | Output | Write data |
cal_debug_out_byteenable | Output | Byte-enable for write data |
cal_debug_out_read_data_valid | Input | Indicates whether read data is valid |
generic_clk for DDR4
Port Name | Direction | Description |
---|---|---|
clk | Input | PORT_GENERIC_CLK_DESC |
generic_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_RESET_DESC |
generic_conduit_reset_n for DDR4
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_CONDUIT_RESET_DESC |
Intel Stratix 10 EMIF IP Interfaces for LPDDR3
Interface Name | Interface Type | Description |
---|---|---|
global_reset_n | Reset Input | Global reset interface |
local_reset_req | Conduit | Local reset request interface |
local_reset_status | Conduit | Local reset status interface |
local_reset_req_out | Conduit | IF_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in | Conduit | IF_LOCAL_RESET_STATUS_IN_DESC |
pll_ref_clk | Clock Input | PLL reference clock interface |
pll_ref_clk_out | Clock Output | IF_PLL_REF_CLK_OUT_DESC |
pll_locked | Conduit | IF_PLL_LOCKED_DESC |
pll_extra_clk_0 | Clock Output | IF_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 | Clock Output | IF_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 | Clock Output | IF_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 | Clock Output | IF_PLL_EXTRA_CLK_3_DESC |
oct | Conduit | OCT interface |
mem | Conduit | Interface between FPGA and external memory |
status | Conduit | PHY calibration status interface |
afi_reset_n | Reset Output | AFI reset interface |
afi_clk | Clock Output | AFI clock interface |
afi_half_clk | Clock Output | AFI half-rate clock interface |
afi | Conduit | Altera PHY Interface (AFI) |
emif_usr_reset_n | Reset Output | User clock domain reset interface |
emif_usr_clk | Clock Output | User clock interface |
cal_debug_reset_n | Reset Input | User calibration debug clock domain reset interface |
cal_debug_clk | Clock Input | User calibration debug clock interface |
cal_debug_out_reset_n | Reset Output | User calibration debug clock domain reset interface |
cal_debug_out_clk | Clock Output | User calibration debug clock interface |
clks_sharing_master_out | Conduit | Core clocks sharing master interface |
clks_sharing_slave_in | Conduit | Core clocks sharing slave interface |
hps_emif | Conduit | Conduit between Hard Processor Subsystem and memory interface |
cal_debug | Avalon Memory-Mapped Slave | Calibration debug interface |
cal_debug_out | Avalon Memory-Mapped Master | Calibration debug interface |
generic_clk | Clock Input | IF_GENERIC_CLK_DESC |
generic_reset_n | Reset Input | IF_GENERIC_RESET_DESC |
generic_conduit_reset_n | Conduit | IF_GENERIC_CONDUIT_RESET_DESC |
global_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
global_reset_n | Input | Asynchronous reset causes the memory interface to be reset and recalibrated. The global reset signal applies to all memory interfaces placed within an I/O column. |
local_reset_req for LPDDR3
Port Name | Direction | Description |
---|---|---|
local_reset_req | Input | Signal from user logic to request the memory interface to be reset and recalibrated. Reset request is sent by transitioning the local_reset_req signal from low to high, then keeping the signal at the high state for a minimum of 2 EMIF core clock cycles, then transitioning the signal from high to low. local_reset_req is asynchronous in that there is no setup/hold timing to meet, but it must meet the minimum pulse width requirement of 2 EMIF core clock cycles. |
local_reset_status for LPDDR3
Port Name | Direction | Description |
---|---|---|
local_reset_done | Output | Signal from memory interface to indicate whether it has completed a reset sequence, is currently out of reset, and is ready for a new reset request. When local_reset_done is low, the memory interface is in reset. |
local_reset_req_out for LPDDR3
Port Name | Direction | Description |
---|---|---|
local_reset_req_out | Output | PORT_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in for LPDDR3
Port Name | Direction | Description |
---|---|---|
local_reset_done_in | Input | PORT_LOCAL_RESET_DONE_IN_DESC |
pll_ref_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_ref_clk | Input | PLL reference clock input |
pll_ref_clk_out for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_ref_clk_out | Output | PORT_PLL_REF_CLK_OUT_DESC |
pll_locked for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_locked | Output | PORT_PLL_LOCKED_DESC |
pll_extra_clk_0 for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_0 | Output | PORT_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_1 | Output | PORT_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_2 | Output | PORT_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 for LPDDR3
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_3 | Output | PORT_PLL_EXTRA_CLK_3_DESC |
oct for LPDDR3
Port Name | Direction | Description |
---|---|---|
oct_rzqin | Input | Calibrated On-Chip Termination (OCT) RZQ input pin |
mem for LPDDR3
Port Name | Direction | Description |
---|---|---|
mem_ck | Output | CK clock |
mem_ck_n | Output | CK clock (negative leg) |
mem_a | Output | Address |
mem_cke | Output | Clock enable |
mem_cs_n | Output | Chip select |
mem_odt | Output | On-die termination |
mem_reset_n | Output | Asynchronous reset |
mem_dm | Output | Write data mask |
mem_dq | Bidirectional | Read/write data |
mem_dqs | Bidirectional | Data strobe |
mem_dqs_n | Bidirectional | Data strobe (negative leg) |
status for LPDDR3
Port Name | Direction | Description |
---|---|---|
local_cal_success | Output | When high, indicates that PHY calibration was successful |
local_cal_fail | Output | When high, indicates that PHY calibration failed |
afi_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
afi_reset_n | Output | Reset for the AFI clock domain. Asynchronous assertion and synchronous deassertion |
afi_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
afi_clk | Output | Clock for the Altera PHY Interface (AFI) |
afi_half_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
afi_half_clk | Output | Clock running at half the frequency of the AFI clock afi_clk |
afi for LPDDR3
Port Name | Direction | Description |
---|---|---|
afi_cal_success | Output | Signals calibration successful completion |
afi_cal_fail | Output | Signals calibration failure |
afi_cal_req | Input | When asserted, the interface is recalibrated |
afi_rlat | Output | Latency in afi_clk cycles between read command and read data valid |
afi_wlat | Output | Latency in afi_clk cycles between write command and write data valid |
afi_addr | Input | Address |
afi_cke | Input | Clock enable |
afi_cs_n | Input | Chip select |
afi_odt | Input | On-die termination |
afi_rst_n | Input | Asynchronous reset |
afi_dm | Input | Write data mask |
afi_dqs_burst | Input | Asserted by the controller to enable the output DQS signal |
afi_wdata_valid | Input | Asserted by the controller to indicate that afi_wdata contains valid write data |
afi_wdata | Input | Write data |
afi_rdata_en_full | Input | Asserted by the controller to indicate the amount of relevant read data expected |
afi_rdata | Output | Read data |
afi_rdata_valid | Output | Asserted by the PHY to indicate that afi_rdata contains valid read data |
afi_rrank | Input | Asserted by the controller to indicate which rank is being read from, to control shadow register switching |
afi_wrank | Input | Asserted by the controller to indicate which rank is being written to, to control shadow register switching |
emif_usr_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion |
emif_usr_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
emif_usr_clk | Output | User clock domain |
cal_debug_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_reset_n | Input | Reset for the user clock connecting to the Avalon calibration debug bus. Asynchronous assertion and synchronous deassertion |
cal_debug_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_clk | Input | User clock domain |
cal_debug_out_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_reset_n | Output | Reset for the user clock connecting to the Avalon calibration debug_out bus. Asynchronous assertion and synchronous deassertion |
cal_debug_out_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_clk | Output | User clock domain |
clks_sharing_master_out for LPDDR3
Port Name | Direction | Description |
---|---|---|
clks_sharing_master_out | Output | This port should fanout to all the core clocks sharing slaves. |
clks_sharing_slave_in for LPDDR3
Port Name | Direction | Description |
---|---|---|
clks_sharing_slave_in | Input | This port should be connected to the core clocks sharing master. |
hps_emif for LPDDR3
Port Name | Direction | Description |
---|---|---|
hps_to_emif | Input | Signals coming from Hard Processor Subsystem to the memory interface |
emif_to_hps | Output | Signals going to Hard Processor Subsystem from the memory interface |
hps_to_emif_gp | Input | Signals coming from Hard Processor Subsystem GPIO to the memory interface |
emif_to_hps_gp | Output | Signals going to Hard Processor Subsystem GPIO from the memory interface |
cal_debug for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_waitrequest | Output | Wait-request is asserted when controller is busy |
cal_debug_read | Input | Read request signal |
cal_debug_write | Input | Write request signal |
cal_debug_addr | Input | Address for the read/write request |
cal_debug_read_data | Output | Read data |
cal_debug_write_data | Input | Write data |
cal_debug_byteenable | Input | Byte-enable for write data |
cal_debug_read_data_valid | Output | Indicates whether read data is valid |
cal_debug_out for LPDDR3
Port Name | Direction | Description |
---|---|---|
cal_debug_out_waitrequest | Input | Wait-request is asserted when controller is busy |
cal_debug_out_read | Output | Read request signal |
cal_debug_out_write | Output | Write request signal |
cal_debug_out_addr | Output | Address for the read/write request |
cal_debug_out_read_data | Input | Read data |
cal_debug_out_write_data | Output | Write data |
cal_debug_out_byteenable | Output | Byte-enable for write data |
cal_debug_out_read_data_valid | Input | Indicates whether read data is valid |
generic_clk for LPDDR3
Port Name | Direction | Description |
---|---|---|
clk | Input | PORT_GENERIC_CLK_DESC |
generic_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_RESET_DESC |
generic_conduit_reset_n for LPDDR3
Port Name | Direction | Description |
---|---|---|
reset_n | Input | PORT_GENERIC_CONDUIT_RESET_DESC |
Intel Stratix 10 EMIF IP Interfaces for QDR II/II+/II+ Xtreme
Interface Name | Interface Type | Description |
---|---|---|
global_reset_n | Reset Input | Global reset interface |
local_reset_req | Conduit | Local reset request interface |
local_reset_status | Conduit | Local reset status interface |
local_reset_req_out | Conduit | IF_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in | Conduit | IF_LOCAL_RESET_STATUS_IN_DESC |
pll_ref_clk | Clock Input | PLL reference clock interface |
pll_ref_clk_out | Clock Output | IF_PLL_REF_CLK_OUT_DESC |
pll_locked | Conduit | IF_PLL_LOCKED_DESC |
pll_extra_clk_0 | Clock Output | IF_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 | Clock Output | IF_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 | Clock Output | IF_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 | Clock Output | IF_PLL_EXTRA_CLK_3_DESC |
oct | Conduit | OCT interface |
mem | Conduit | Interface between FPGA and external memory |
status | Conduit | PHY calibration status interface |
emif_usr_reset_n | Reset Output | User clock domain reset interface |
emif_usr_clk | Clock Output | User clock interface |
cal_debug_reset_n | Reset Input | User calibration debug clock domain reset interface |
cal_debug_clk | Clock Input | User calibration debug clock interface |
cal_debug_out_reset_n | Reset Output | User calibration debug clock domain reset interface |
cal_debug_out_clk | Clock Output | User calibration debug clock interface |
clks_sharing_master_out | Conduit | Core clocks sharing master interface |
clks_sharing_slave_in | Conduit | Core clocks sharing slave interface |
ctrl_amm | Avalon Memory-Mapped Slave | Controller Avalon Memory-Mapped interface |
hps_emif | Conduit | Conduit between Hard Processor Subsystem and memory interface |
cal_debug | Avalon Memory-Mapped Slave | Calibration debug interface |
cal_debug_out | Avalon Memory-Mapped Master | Calibration debug interface |
generic_clk | Clock Input | IF_GENERIC_CLK_DESC |
generic_reset_n | Reset Input | IF_GENERIC_RESET_DESC |
generic_conduit_reset_n | Conduit | IF_GENERIC_CONDUIT_RESET_DESC |
global_reset_n for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
global_reset_n | Input | Asynchronous reset causes the memory interface to be reset and recalibrated. The global reset signal applies to all memory interfaces placed within an I/O column. |
local_reset_req for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
local_reset_req | Input | Signal from user logic to request the memory interface to be reset and recalibrated. Reset request is sent by transitioning the local_reset_req signal from low to high, then keeping the signal at the high state for a minimum of 2 EMIF core clock cycles, then transitioning the signal from high to low. local_reset_req is asynchronous in that there is no setup/hold timing to meet, but it must meet the minimum pulse width requirement of 2 EMIF core clock cycles. |
local_reset_status for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
local_reset_done | Output | Signal from memory interface to indicate whether it has completed a reset sequence, is currently out of reset, and is ready for a new reset request. When local_reset_done is low, the memory interface is in reset. |
local_reset_req_out for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
local_reset_req_out | Output | PORT_LOCAL_RESET_REQ_OUT_DESC |
local_reset_status_in for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
local_reset_done_in | Input | PORT_LOCAL_RESET_DONE_IN_DESC |
pll_ref_clk for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_ref_clk | Input | PLL reference clock input |
pll_ref_clk_out for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_ref_clk_out | Output | PORT_PLL_REF_CLK_OUT_DESC |
pll_locked for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_locked | Output | PORT_PLL_LOCKED_DESC |
pll_extra_clk_0 for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_0 | Output | PORT_PLL_EXTRA_CLK_0_DESC |
pll_extra_clk_1 for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_1 | Output | PORT_PLL_EXTRA_CLK_1_DESC |
pll_extra_clk_2 for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_2 | Output | PORT_PLL_EXTRA_CLK_2_DESC |
pll_extra_clk_3 for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
pll_extra_clk_3 | Output | PORT_PLL_EXTRA_CLK_3_DESC |
oct for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
oct_rzqin | Input | Calibrated On-Chip Termination (OCT) RZQ input pin |
mem for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
mem_ck | Output | CK clock |
mem_ck_n | Output | CK clock (negative leg) |
mem_k | Output | K clock |
mem_k_n | Output | K clock (negative leg) |
mem_a | Output | Address |
mem_reset_n | Output | Asynchronous reset |
mem_wps_n | Output | Write port select |
mem_rps_n | Output | Read port select |
mem_doff_n | Output | DLL turn off |
mem_bws_n | Output | Byte write select |
mem_d | Output | Write data |
mem_q | Input | Read data |
mem_cq | Input | Echo clock |
mem_cq_n | Input | Echo clock (negative leg) |
status for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
local_cal_success | Output | When high, indicates that PHY calibration was successful |
local_cal_fail | Output | When high, indicates that PHY calibration failed |
emif_usr_reset_n for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
emif_usr_reset_n | Output | Reset for the user clock domain. Asynchronous assertion and synchronous deassertion |
emif_usr_clk for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
emif_usr_clk | Output | User clock domain |
cal_debug_reset_n for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_reset_n | Input | Reset for the user clock connecting to the Avalon calibration debug bus. Asynchronous assertion and synchronous deassertion |
cal_debug_clk for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_clk | Input | User clock domain |
cal_debug_out_reset_n for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_out_reset_n | Output | Reset for the user clock connecting to the Avalon calibration debug_out bus. Asynchronous assertion and synchronous deassertion |
cal_debug_out_clk for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_out_clk | Output | User clock domain |
clks_sharing_master_out for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
clks_sharing_master_out | Output | This port should fanout to all the core clocks sharing slaves. |
clks_sharing_slave_in for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
clks_sharing_slave_in | Input | This port should be connected to the core clocks sharing master. |
ctrl_amm for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
amm_ready | Output | Wait-request is asserted when controller is busy |
amm_read | Input | Read request signal |
amm_write | Input | Write request signal |
amm_address | Input | Address for the read/write request |
amm_readdata | Output | Read data |
amm_writedata | Input | Write data |
amm_burstcount | Input | Number of transfers in each read/write burst |
amm_byteenable | Input | Byte-enable for write data |
amm_beginbursttransfer | Input | Indicates when a burst is starting |
amm_readdatavalid | Output | Indicates whether read data is valid |
hps_emif for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
hps_to_emif | Input | Signals coming from Hard Processor Subsystem to the memory interface |
emif_to_hps | Output | Signals going to Hard Processor Subsystem from the memory interface |
hps_to_emif_gp | Input | Signals coming from Hard Processor Subsystem GPIO to the memory interface |
emif_to_hps_gp | Output | Signals going to Hard Processor Subsystem GPIO from the memory interface |
cal_debug for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_waitrequest | Output | Wait-request is asserted when controller is busy |
cal_debug_read | Input | Read request signal |
cal_debug_write | Input | Write request signal |
cal_debug_addr | Input | Address for the read/write request |
cal_debug_read_data | Output | Read data |
cal_debug_write_data | Input | Write data |
cal_debug_byteenable | Input | Byte-enable for write data |
cal_debug_read_data_valid | Output | Indicates whether read data is valid |
cal_debug_out for QDR II/II+/II+ Xtreme
Port Name | Direction | Description |
---|---|---|
cal_debug_out_waitrequest | Input | Wait-request is asserted when controller is busy |
cal_debug_out_read | Output | Read request signal |
cal_debug_out_write | Output | Write request signal |
cal_debug_out_addr | Output | Address for the read/write request |
cal_debug_out_read_data | Input | Read data |