matthewbeach , 10-27-2018, 12:11 PM
Hi everyone,
I'l getting ready to start a project in which I'm going to try and use 8 DDR3 DIMMS instead of the 4 used on the iMX6 Rex. I'm going to write this post on the perspective of what I, at the moment, think needs to be done to accommodate the extra memory, and would like feedback on anything I'm missing or will be doing wrong.
From looking into Jedec DDR3 modules, this looks like it is done by using DRAM_CS0/DRAM_CS1 pins [Y16/AD17], to select between DIMMS that share the same data bank. In addition to using both CS* pins, they must also be accompanied by the other CKE* and SDODT* pins, as well as the two differential clocks.
So for expanding the iMX6 schematics for the extra memory, I just plan on using the existing 4 DIMMS on the top layer using all of the data banks, and CS0, CKE0, SDOTD0, and SDCLK_0, and making a copy for the bottom layer that will use CS1, CKE1, SDOTD1, and SDCLK_1. All 8 DMMS will get the same A*, SDBA*, RAS, CAS, and WE pins.
For routing the board, I plan on using a Fly-By topology, and to make the layout easier, I was hoping to use Memory Mirroring like used in some Jedec DDR3 modules. From what I've looked at, it seems like memory mirroring is supported by the iMX6, but i'm not sure and would like to confirm before starting. I also have no idea how to tell the processor that is is dealing with mirrored DIMMS. Are their any extra steps in hardware to do the memory mirroring? What would the firmware steps be?
Thanks for the help!
Best,
Matthew Beach