PLL Auto Calibration Flow

Upon power-up, the AXI wrapper block io_arw_ready is deasserted to avoid taking any requests from the AXI master before calibration completes. The calibration master module sends the default setting of configuration register 0 and configuration register 1 to the HyperRAM and follows by writing 512 bytes of data on address ‘h00000000. The calibration slave module starts reading data from the HyperRAM continuously and adjusts the delay by providing different dynamically shifted clock (incrementing from 0 to 7, on recommended PLL settings each step is 45° (degree) delayed). This value changes the:
  • hbramClk_cal phase (PLL auto calibration)—The hbramClk_cal is used to register the input of data and read/write data strobe (RWDS) in double-data rate I/O (DDIO) mode.
  • Mux delay module (soft logic calibration)—The mux delay module is a chain of mux to emulate the delay path to DQ and RWDS.

Once the calibration slave module receives matched data from the HyperRAM, it stores the delay value, you can refer the delay values from hbc_cal_debug_info[15:8]. It keeps testing by incrementing the delay value and eventually chooses the optimum value to lock on. The HyperRAM Controller core asserts hbc_cal_pass high once to exit calibration and assert io_arw_ready signal.

If there is no matching data from the HyperRAM after 8 (eight) delays, calibration is failed and hbc_cal_pass remains 0 with hbc_cal_done becomes 1.

The HyperRAM Controller core performs a one-off initial calibration. It is recommended to perform periodic recalibration by resetting the HyperRAM Controller core to maintain the optimal settings on the interface between the controller and the memory, or you may experience errors or unexpected behavior.

Figure 1. Calibration Flow Diagram