Disclaimer: I am trying to be technically accurate but please send any comments or corrections and I will update this blog post.
This blog entry is going to be about RAM. There are 5 main types I am going to cover and discuss their applicability to some of the projects I am working on.
We have two families of RAM - Dynamic RAM (DRAM and SDRAM) and Static RAM (SRAM, NVRAM, PSRAM).
When the Apple II was in it’s heyday, DRAM was popular because it was cheaper then most other types of memory. There were a few memory cards made with SRAM later in the cycle but the predominant memory used inside the Apple and on expansion cards was DRAM. It came in various bit configurations 1x64Kbits, 1x256Kbits 1x1024Kbits, 4x64Kbits etc … eventually chips were mounted on a simm vs being socketed or directly soldered. One of the side effects of DRAM’s are they have to be constantly refreshed and that was accomplished on the Apple II during the video display cycle (read Jim Sathers – Understanding the Apple II or Iie for the best technical description of how this works). DRAM also worked with a multiplexed address bus where usually the row addresses was applied followed by the column address to get the final bit location in a chip
When SyncronousDRAM (SDRAM) started appearing, the simm/dimm started having BGA (ball grid array) chips mounted on the simm’s vs DIP or other SMT form factors. While SDRAM’s are more complicated to design in a system because they require a synchronized clock signal and they need to be initialized before they can be used after power up, they also have the benefit of having much higher bit densities then previous DRAM’s. Single chips can have 64, 128 and 256M bits and being DRAM they still need to be refreshed although some SDRAM have auto refresh circuitry built in.
SRAM started to be come more prevalent in the late? 80′s. The Applied Engineering Pocket Rocket was one example of a static ram based RAM card. Static rams come in various bit densities today, you can get 4, 8 and even 16Mbit single chips. These are nowhere near the densities of SDRAM and quite a bit more expensive. Some additional benefits of SRAM are that you can find high speed SRAMS typically used for cache or you can find low power srams used in embedded systems. In fact most microcontrollers today come with some amount of internal SRAM. SRAM can be battery backed in order to retain it’s bits or you could employ a specific type of SRAM called NVRAM which is in most cases a SRAM with a battery in a single package. Cypress does make an actual NVSRAM chip that uses something called QuantumTrap cell vs a battery but these along with NVRAM are expen$ive.
PSRAM‘s (Pseudo Static Ram) are kind if like the best of both worlds. It is typically SDRAM memory packaged with a SRAM like interface (non multiplexed address lines) and auto refresh circuitry. You get the benefit of simple SRAM interface, higher bit densities (128Mbits) and typically lower power consumption. These chips were designed for cell phones (it’s called Cellular RAM by some companies) and only comes in VFBGA (very fine BGA) packages which make it hard to use in prototypes or small runs. It is more expensive then SDRAM but significantly cheaper when compared to regular SRAM in terms of actual chip cost and PCB board space.
Projects that need RAM
My IIcmxp project for the IIc started out as a mass storage solution for the memory expandable Iic and above but it quickly became apparent to me that folks might not want to toss out a perfectly good 1MB ram card in order to replace it with a mass storage solution. So I started working on a 1MB SRAM add-on for the IIcxmp. If you want more details about that project (and where it stalled) read some of my older blog posts.
While I have implemented SRAM, I have also been wanting to see if some of these other types of RAM could be applied to this and other projects.
So as a sub/side project I am working on a 16MB slinky project. Why slinky vs AUX style memory you say … well I would like my research to be applicable to that style or Iigs Ram cards as well but Slinky is the simplest to implement as a test fixture, using different memory modules. Once these various modules are tested and understood then work on using them can begin to be applied to these other designs. Possible uses could be Ram expansion for existing Ramworks and Ramfactor cards or complete replacements for Iigs memory cards, Ramworks, Ramfactor, Slinky etc,
Slinky Base card (test fixture)
The base card consists of a XC95144XL CPLD, 74LVCC4245 transceiver and a 8KB EEPROM. The CPLD and 245 are 3.3v devices but are 5v tolerant. I am still waffling on using a 5v vs a 3.3v EEPROM (I was hoping to use my wilem EPROM programmer vs doing it in system but we’ll see).
I plan on testing 4 memory modules.
Basic SDRAM: First one is a 32MB SDRAM memory module originally developed for Parallax Propeller based systems. You can find a link here. I ordered this module a few weeks ago. Still waiting for it to arrive. I expect the CPLD to be setup to do the initial configuration and linear to R/C address conversion.
XAVR Coprocessor: Second one is the nice module I mentioned earlier which can be the basis for any number of projects. This time around it will mainly be used to serve up RAM from the SDRAM module. Might possibly be considered a prototyping option for the Iicmxp as well.
XRAM: The 3rd option is a multichip smorgasbord of Cypress RAM totaling 4MB. This module will let me test various SRAM modules a) CY14B104L NVSRAM – 512K (will use 2 for a total of 1MB), b) CY62158EV30LL – SRAM 1MB and c) CY62167DV30LL – SRAM 2MB
EZFlash 3n1: I plan to investigate the possibility of repurposing of this module to access the 16MB of PSRAM and possibly the 512K of battery backed SRAM. If this module was used on a Iigs memory card it’s possible? it could be configured to provide 8MB RAM and 8MB of ROM(Flash).
The basic SDRAM module is already pre-built but the others I am going to have to bring to life on some prototyping board.