Dear All, help me please in a trouble.
I have a custom board with CycloneV (including Hard-IP DDR) and DDR3 (MT41J128M16JT-125). In Quartus II v14.1.0 (64bit) I created SoC (NIOSII + block ram + hard SDRAM Uniphy controller + external DDR3):
![]()
![]()
Program for NIOS loaded from the internal block RAM and should check DDR3 memory. But all hangs after attempting DDR3 memory access (before it code is running ok). It seems that DDR calibration fails. Signals local_init_done and local_cal_success are deasserted. The local_cal_fail is asserted.
RTL testbench generated by QSYS works fine (local_init_done and local_cal_success asserted, local_cal_fail is deasserted, I can see transactions).
PLL in memory controller is locked (pll_sharing_pll_locked is asserted on real board).
External Memory Interface Toolkit can see memory and able to connect (so Avalon transactions is ok?). In this tool I can make memory reset. After this local_cal_fail is deasserted for the moment and then asserted again. External Memory Interface Toolkit reports told that calibration fails at the stage Write Calibration - Per-bit write deskew failure.
Memory frequency is 400MHz. I obtained timing settings from presets for MT41J128M16HA-125 (my chip is MT41J128M16JT-125 but they differs only by the type of package, isn't it?).
The board settings for this custom board is unknown. So I leave default values.
Actually I have two x16 DDR3 MT41J128M16JT-125 chips connected to my FPGA with the same address and command buses. But I connected to DDR3 controller only one of these chips. So the DDR3 controller drives address and command bus of another memory chip but not the data. May it be an issue?
Thanks in advance for any kind of help!
I have a custom board with CycloneV (including Hard-IP DDR) and DDR3 (MT41J128M16JT-125). In Quartus II v14.1.0 (64bit) I created SoC (NIOSII + block ram + hard SDRAM Uniphy controller + external DDR3):
Program for NIOS loaded from the internal block RAM and should check DDR3 memory. But all hangs after attempting DDR3 memory access (before it code is running ok). It seems that DDR calibration fails. Signals local_init_done and local_cal_success are deasserted. The local_cal_fail is asserted.
RTL testbench generated by QSYS works fine (local_init_done and local_cal_success asserted, local_cal_fail is deasserted, I can see transactions).
PLL in memory controller is locked (pll_sharing_pll_locked is asserted on real board).
External Memory Interface Toolkit can see memory and able to connect (so Avalon transactions is ok?). In this tool I can make memory reset. After this local_cal_fail is deasserted for the moment and then asserted again. External Memory Interface Toolkit reports told that calibration fails at the stage Write Calibration - Per-bit write deskew failure.
Memory frequency is 400MHz. I obtained timing settings from presets for MT41J128M16HA-125 (my chip is MT41J128M16JT-125 but they differs only by the type of package, isn't it?).
The board settings for this custom board is unknown. So I leave default values.
Actually I have two x16 DDR3 MT41J128M16JT-125 chips connected to my FPGA with the same address and command buses. But I connected to DDR3 controller only one of these chips. So the DDR3 controller drives address and command bus of another memory chip but not the data. May it be an issue?
Thanks in advance for any kind of help!