I need to interface some sort of RAM with an ARM processor for my embedded project. Around 128 MB to be exact. I found a computer RAM which claims to be DDR and 1 GB. As I only need 128 MB of RAM for my project, can I just get those individual chips from the RAM and use it in my project? Or is some sort of external circuitry a must? I want to access it through the address and the data bus.
-
3\$\begingroup\$ Which STM32? You must check first if it has DDR support before you can connect it. \$\endgroup\$– JustmeCommented Jul 8, 2020 at 17:45
-
1\$\begingroup\$ First you need to find a CPU with a RAM controller. Then find a open source SBC design as a starting point. But why not just buy something off the shelf from vendors like olimex? \$\endgroup\$– user3528438Commented Jul 8, 2020 at 17:46
-
\$\begingroup\$ If the speed isn't too important, I would look for something easy to interface, like SPI RAM. DDR RAM is designed for speeeeeeed so it's a bit complicated. \$\endgroup\$– Criticizing Israel not allowedCommented Jul 8, 2020 at 18:18
-
\$\begingroup\$ @user253751 The speed is important, but not too much. I am looking for something around 480 mhz. \$\endgroup\$– James B. ReeseCommented Jul 8, 2020 at 19:06
-
\$\begingroup\$ If you're married to an STM32, then the only ones which wall talk to DDR SDRAM are the STM32MP1 devices. However if you can manage with non-DDR SDRAM then an STM32H7 can talk to a pair of Winbond W989Dxxx devices which will give you a total of 128MB (1Gb). I hope you're confident routing high-speed PCBs ... \$\endgroup\$– brhansCommented Jul 9, 2020 at 0:39
1 Answer
The individual chips are 128M × 4 bits, so the number of chips you need would depend on how wide you want your data bus to be. For example, if you want an 8-bit data bus, you'd need 2 chips.
If you want a full 32-bit data bus, you'll need 8 chips — half the chips on the module — so you might as well just get a module socket and plug the whole thing in.
You can get SDRAM chips that are up to 16 bits wide; you'd only need two of those to fill up the width of a 32-bit bus.