This is an old picture I found from around early 2001. In the 2nd semester of my degree we were given lot’s of components in our ‘lab kit.’ One of these components was a static 2k RAM chip. I later found out that we were never intended to actually use this chip for class…too little time for such a complicated chip or something… But to me, this was the most interesting chip (maybe because it had the most pins, who knows).
With no direction on what to do with this chip, I just started by reading the datasheet (would have been either from Microchip or Fairchild). This datasheet had everything I needed to know (as they would). I believe the addressing was 11 bit and each address was an 8 bit value. Each bit had a pin. There was another pin for whether you wanted to be in read/write mode. I believe there was a chip-select pin and many other obligatory pins.
Step I (PoC):
I wired this thing up to power and ground, set it to write-mode, and zeroed out the address line (effectively the first address). I put in a value by manually wiring Vcc to each bit I wanted set. I then read (LEDs) from those pins (after removing the Vcc wires) and still had my corresponding values. Cool, I was able to write a byte to memory.
Step II (Loading it up):
I used DIP switches for both the address lines and the input values. For output, I hooked up to some LEDs (with resistors). I started to manually load up each address with different bytes. I thought that if I could cycle through these addresses fast enough, I could achieve kind of a light show; displaying patterns like flashing, phasing left to right, counting, etc… Once this thought crossed my mind, I was reminded of the counter (7400 series) chip that we just learned about, and a 555 timer chip I only heard about at this point. I set the 555 timer up to cycle at about 10 Hz, then the black wiring (off camera) feeds into a few cascaded counter chips, of which feed directly into the address line of the 2k RAM chip. With all of this set up, I disable the counters and start addressing manually through most of the RAM, setting patterns.
Step III (press play):
With all of the RAM filled up, I connect the counters back to the address line and watch the show (in read-mode). I was kind of amazed at how easy this was (technically easy, though tedious). What you see in this picture is the 555 at the bottom of the breadboard, some DIPs, and the RAM chip smothered in wiring. Off to the left you see my Altera FPGA, I wasn’t actually using it for anything other than the DIPs and 5v power supply (I didn’t have a 5v power supply lying around at the time…).
Step IV (be reminded of the meaning of volatile):
I decided that I wanted to bring this to my schools lab, so I did. I plugged my circuit in and realized that everything was gone…it’s RAM; not persistent storage. I loaded a simple pattern just to show some people the PoC. My professor for that class then told me that we wouldn’t end up using this chip in class. He then asked me how I learned to access the RAM programmer….say what?
This was a good early example for me regarding layers of abstraction. This was a couple classes before learning assembly on the Motorola HC11 microcontroller. What I learned is that as long as you don’t mind doing some tedious things, using technology at a low level is not very difficult. I should point out that nearly a year before this, I failed all of my assignments in basic electronics for my high-school physics class. And by basic electronics, I mean simple parallel/series resistor network math. Although, at that time it was just theory, it all gelled in my mind when I actually got to play with this stuff in a lab (PoC). Reading the datasheet for this RAM was straight forward, and fortunately I didn’t have any preconceived notions that “this was the hard way” or “this chip is too complicated for this class” (it was the most complicated in our kit). I just dug in thinking that everything was reasonable, which turns out to be the case for many things that seem challenging (another lesson I was able to reflect on early on).