I can't seem to find this information anywhere. I need to design a PCB that has a DDR3 memory socket and and FPGA that would interact with the RAM memory plugged into the socket. Now my problem is: the memory controller offered in Quartus expects the memory timings to be put in before I generate the IP. I know that the memory timings can be read from the EEPROM doing an SPD test. Is it possible to dynamically reconfigure the Memory Controller IP, and is it possible at all to interface with RAM sticks with different memory timings?
I'm Adzim. Thanks for using the Intel Community.
May I know which device that you're used?
Based on your question, do you want to create your own custom memory controller?
"is it possible at all to interface with RAM sticks with different memory timings"
I'm not clear about this. Where is the memory timings here refer to?
Sorry for being ambiguous.
I am planning to use the Quartus Arria 10 EMIF IP. When I configure the EMIF IP in Qsys, I have to specify the memory timings:
The problem is: these values are specific to a memory chip. However, I would like to be able to use a range of DDR3 DIMM memory sticks (that might have different memory chips on it, therefore different memory timings) with this EMIF IP. The question is: Does the DDR3 controller provided in Quartus re-adjust the memory timings dynamically, or would I have to regenerate the IP for each memory stick that I plan to use?
Let me know if this clarified things a bit
Thanks for clarifying your intentions.
Basically every memory timing must be configured according to the datasheet of the memory device.
Then the IP can be generated for the device.
If everything is configured correctly, the memory device should be working.
If the device is using the different memory timings, your design might encounter some errors such as timing violations or calibration error.
So I think generating each IP for your memory devices should be the best way to simulate your project.
I don't think that re-adjust the memory timings internally is a good way because you might be setting the value wrongly.