External Memory Interface Handbook Volume 3: Reference Material: For UniPHY-based Device Families

ID 683841
Date 3/06/2023
Public
Document Table of Contents

1.2. Reset and Clock Generation

At a high level, clocks in the PHY can be classified into two domains: the PHY-memory domain and the PHY-AFI domain.

The PHY-memory domain interfaces with the external memory device and always operate at full-rate. The PHY-AFI domain interfaces with the memory controller and can be a full-rate, half-rate, or quarter-rate clock, based on the controller in use.

The number of clock domains in a memory interface can vary depending on its configuration; for example:

  • At the PHY-memory boundary, separate clocks may exist to generate the memory clock signal, the output strobe, and to output write data, as well as address and command signals. These clocks include pll_dq_write_clk, pll_write_clk, pll_mem_clk, and pll_addr_cmd_clk. These clocks are phase-shifted as required to achieve the desired timing relationships between memory clock, address and command signals, output data, and output strobe.
  • For quarter-rate interfaces, additional clock domains such as pll_hr_clock are required to convert signals between half-rate and quarter-rate.
  • For high-performance memory interfaces using Arria V, Cyclone V, or Stratix V devices, additional clocks may be required to handle transfers between the device core and the I/O periphery for timing closure. For core-to-periphery transfers, the latch clock is pll_c2p_write_clock; for periphery-to-core transfers, it is pll_p2c_read_clock. These clocks are automatically phase-adjusted for timing closure during IP generation, but can be further adjusted in the parameter editor. If the phases of these clocks are zero, the Fitter may remove these clocks during optimization.Also, high-performance interfaces using a Nios II-based sequencer require two additional clocks, pll_avl_clock for the Nios II processor, and pll_config_clock for clocking the I/O scan chains during calibration.

For a complete list of clocks in your memory interface, compile your design and run the Report Clocks command in the Timing Analyzer.