3
\$\begingroup\$

How feasible is it that I could connect the pins of some garden variety "computer RAM" to a micro controller for use as external RAM?

Is there specific hardware used on computer motherboards that help interface the RAM with the rest of the system, or is it just as simple as finding timing/transaction information about the memory module and implementing/writing a driver somehow?

\$\endgroup\$
  • 4
    \$\begingroup\$ While I love this question, I have a distinct feeling the answer should be that this is not feasible for a microcontroller design. Needing that amount of memory would definitely have me looking at other platforms. \$\endgroup\$ – Sean Boddy Feb 28 '15 at 8:38
  • 2
    \$\begingroup\$ This looks like an AVR with a computer DRAM module: dmitry.gr/index.php?proj=07.+Linux+on+8bit&r=05.Projects \$\endgroup\$ – jippie Feb 28 '15 at 9:11
  • 2
    \$\begingroup\$ While DRAM interface is possible, socketed DIP-packaged static RAMs pulled out of the cache banks of 486/early pentium motherboards may be a lot easier to work with, as they will not require refresh cycles. If you have a project that needs large amounts of RAM, carefully weigh the cost of using an off-the-shelf embedded board already having a few hundred MB of DRAM on-board (and substantial compute power too), compared to trying to graft a large memory bank onto something more limited. \$\endgroup\$ – Chris Stratton Feb 28 '15 at 17:05
6
\$\begingroup\$

It is 'just' DRAM, so you can interface it exactly like you would interface any other DRAM. Note though, that parallel DRAM is significantly more I/O intensive and very tough on simple microcontrollers as compared to SRAM. Also, 'computer' DRAM always has multiple packages of multiple banks of many pages, so you need to implement a bank/package aware driver. Otherwise you will only be able to address one of the chips (inside one of the packages).

As for timings: that's really easy. There is an i2c EEPROM on every bank that stores the timing data in a fairly straightforward manner (see the DDRx specification and search for SPD).

I would like to note, though, that although it's a cool little project, it wouldn't really be useful in a practical design. Computer DRAM is significantly more expensive to use and way overspecced for any microcontroller platform. An overview of the cost:

  • DRAM socket ($2 in small quantities)
  • Immensely large microcontroller ($15+ on top of whatever you have to get enough I/Os)
  • Fast, fairly beefy 1.8V DC/DC converter ($2.50 for a switcher)
  • Termination regulator ($1 for a Richtek part)
  • quite a bit of board space for the module

If you really need gigabytes of RAM, this may be the only economical option. However, if you only need a couple (tens of) megabytes, there are some excellent PSRAM chips (e.g. https://octopart.com/is66wve4m16bll-70bli-issi-21833083) that work on (less than) 48 I/Os (i.e. small microcontroller package sizes), cost sub-$5, require almost no board space and still have ample performance for any microcontroller.

\$\endgroup\$
  • \$\begingroup\$ "An overview of the cost" - of course, this omits the cost of the memory module itself. On Best Buy it looks like these are $10 and up per GB. \$\endgroup\$ – Random832 Feb 28 '15 at 15:17
5
\$\begingroup\$

Various ARM-based microcontrollers have an external bus designed to interface to DDR2 memory, similar to that used in PCs and laptops.

One of these is the ARM926EJ-S based AT91SAM9G45 from Atmel. Here is an application note on the implementation of DDR2 memory on AT91SAM9G45 devices.

There is an evaluation kit available from Mouser. It includes 128 MB of external DRAM. Even if you don't want to buy one (it's expensive), the datasheet I linked to has all of the reference schematics which would be a good place to get started from.

\$\endgroup\$
  • \$\begingroup\$ Note that this is an interface for single-die DDR2 DRAM, computer module-type computer memory is multiple-die, multiple-package. \$\endgroup\$ – user36129 Feb 28 '15 at 10:45
  • \$\begingroup\$ @user36129 The application note linked to in my answer indicates it can support 4 banks of memory. Looking at the schematic for the evaluation board. it uses two 64MB MT47H64M8CF chips. In any case, I updated my answer to "similar to" instead of "same as". \$\endgroup\$ – tcrosley Feb 28 '15 at 10:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.