Electronic – SDRAM structure for Cortex-M7

cortex-mmemorymicrocontrollersdram

I'm looking into designing a custom board based on a Microchip / ATMEL SAM S70 or STM32F7 / STM32H7. The SAMS S70 appears to be the cheapest option and offers roughly the same as the ST competitors.

I'm now trying to figure out how much SDRAM I can attach to these MCUs.

  1. The datasheet of the S70 does not specify what type of SDRAM (DDR2, DDR3) etc. it can handle. How do I know what memory chips are compatible?

  2. Browsing through digitec, I noticed that almost all (?) 1G memory chips have 8 banks, which is more than the SAM S70 can handle (4 banks max). And all the chips that I found that offer 1G on 4 banks are DDR1 only. Is the amount of data per bank somehow limited?

  3. Also I am unsure how much data the memory controller on the SAMS S70 can adress per bank (row / column adresses) and in total. If I read the datasheet correctly, the biggest address is 13 bits of row address, 11 bits of column address + 1 bit byte offset + 2 bit bank address, i.e. 27 address bits in total.. that would be 1/8 of 1G, i.e. 128M?

  4. Where does Page size play into this?

I know that these are many questions but I am quite overwhelmed by the amount of memory configurations and the limited information in the datasheets doesn't help.

Best Answer

The type of memory you need is SDRAM. It is not the same as DDR SDRAM. I don't think I've seen a Cortex-M device that supports DDR memory yet. You would typically go for Cortex-A family, if you need that kind of capability.

You can easily find SDRAM chips on digikey or any other distributor site.

At this point, the rest of you question is probably irrelevant, but let me give you some extra points.

Both of the chips support 256MB of RAM. If you look at the digikey link above, the largest amount in a single chip is 512 Mbits (64 MBytes). This is where the data bus width comes into play. You can see that 512Mb chips come in three configurations:

  • 16M x 32bit
  • 32M x 16bit
  • 64M x 8bit

One way to increase the memory capacity would be to use two 512Mb devices in 32M x 16bit configuration, and wire them up as shown in this Atmel app note, for a total of 128MB of RAM:

enter image description here