Anyone know how to use DRAM (30 pin SIMMs)?
Dennis Ferron
Posts: 480
Despite all advice to the contrary, I've decided to go ahead and use DRAM rather than SRAM for my Propeller-XT project, at least initially. After this I may decide to go with SRAM instead anyway, but at least then I would know better why not to use DRAM. (I'm trying to make the Propeller emulate a PC-XT using a real 8088 and real RAM, with the Propeller emulating every other chip on an XT motherboard, hence "Propeller XT".) A local electronics surplus store was selling SIMMs for $2 each and 8086 processors for 79 cents (unfortunately no 8088s), so I figured it's worth a try.
They are 1MB (1 million words by nine (parity)) I.B.M. modules. I soldered pins to them so that I can breadboard them. I got the pinout from the internet but so far have been unable to locate the actual procedure for operating them. Do I do the column select first, or the row select first? How much time is required for it? What do I actually have to do to refresh? Do I have to read and rewrite every byte, or is it enough just to select an entire row or column? Is there an example circuit for turning the 20 address lines of the 8086 into 10 bit row and column addresses?
It's difficult to Google for information on using SIMMs in a circuit because there's so much information about installing & using SIMMs in PC motherboards and computer mods projects that I don't have a favorable signal-to-noise ratio for getting hits on actually using SIMMs in an electronics project.
They are 1MB (1 million words by nine (parity)) I.B.M. modules. I soldered pins to them so that I can breadboard them. I got the pinout from the internet but so far have been unable to locate the actual procedure for operating them. Do I do the column select first, or the row select first? How much time is required for it? What do I actually have to do to refresh? Do I have to read and rewrite every byte, or is it enough just to select an entire row or column? Is there an example circuit for turning the 20 address lines of the 8086 into 10 bit row and column addresses?
It's difficult to Google for information on using SIMMs in a circuit because there's so much information about installing & using SIMMs in PC motherboards and computer mods projects that I don't have a favorable signal-to-noise ratio for getting hits on actually using SIMMs in an electronics project.
Comments
-Phil
It is possible, but to keep the data on the ram, you have to do several things all at once...
1) It has to have a steady power source with a well regulated voltage..
2) The ram HAS to be refreshed to keep the data from being degraded..
3) Use good circuit design, as the ram chips are easily damaged by static/ voltage spikes ect..
Even though the ram is low cost, it will cost to design the support ciruitry.
It is better to use NvRam that doesn't have to be refreshed...
Bob
-Phil
http://forums.parallax.com/forums/default.aspx?f=21&m=111885
Or use the forum search for "SIMM".
It was much easier than I'd anticipated. All that was needed for refresh was to raise one, then the other, then drop the two address multiplex pins in the opposite order than for when actually latching an address, and it didn't need to be done all that frequently. You don't have to address any location specifically; the SIMM itself keeps internal counters that do that. All you have to do is toggle the lines often enough.
I don't know exactly how the 8088 addresses map to the SIMM; I just took an address and split it into low and high parts.
I learned how to operate the SIMM by pretty much the same method as what you're doing - by scouring the web for actual datasheets, and look at how others have done it. The hardest part was that every data sheet seemed to focus on some exotic addressing scheme that made that particular manufacturer's memory chip stand out, and so didn't say much about the standard addressing supported by every PC out there. But the standard SIMM memory access and refresh was quite straightforward, when you get down to details - apply the low address, latch it, apply the high address, latch it, then read or write your data.
David