Welcome to Ken's Computer Parts Shop!


For my programming project, I decided to implement something simple that I could realistically do. So, I designed a 8x8-bit memory module using LogicSim, a shareware software program that allows people to create logic diagrams and run a simulation using that design. The memory module I created uses 688 logic gates. There are couple layers of abstraction in the design. I did this for two reasons. First, I wanted to keep the diagram as well organized and as understandable as possible. The other reason was LogicSim does not have a big desktop. Abstraction allowed me to put more words into the memory module.

Initially I tried implementing a 7x8-bit memory module (see below). However, that used 938 logic gates. It was a monster. Then I tried at 12x8-bit module. When I tried to run a simulation using the circuit, it crashed the program, so I abandoned that idea. So I settled on the 8x8-bit memory module. This diagram of this module is simpler and easier to follow, compared to my original 7x8-bit module. By the way, the goliath fell hard. This memory module contains 688 logic gates, a far cry from 938. The goliath also suffered from a major flaw. A word in memory was purged when either the RW or CE inputs were changed. I believe I fixed that bug. Please look at my design for a 8x8-bit memory module and tell me what you think. I included the circuit diagrams for the custom modules used in the main circuit diagram.

This is my original design


This is my new design. And it works!

Let me try to explain this diagram so it is less confusing. On the left are many switches. The switches labeled L0-L7 are data input switches. The switches labeled A0-A2 are address switches. CE, RW, and OE stand for chip enable, read/write, and output enable, respectively. The address lines feed into a 3-8 decoder, which determine which word is to be enabled for reading or writing. The output from the decoder feeds into the 4x4-bit memory modules, which are custom-made. The data lines, as well as CE, RW, and OE, also feed into the memory modules. The modules are labled W0-W3 and W4-W7. That means the module W0-W3 are used to store words 0 through 3 and likewise with W4-W8. Two modules are used to store 4 8-bit words. The output from the memory modules are the values for bits 0 to 7. I should note that although the memory modules have their inputs marked as 0 through 3 and their outputs marked as 0 through 3, only one pair of modules actually stores the values for bits 0 through 3. The other pair stores the values for the bits 4 through 8. The output from the memory modules, are paired and the pair is run through an OR gate. The result is the value memory would send to the CPU.

I hope that clears up some things. I tried running a simualtion of the circuit on a PowerMac 7100/80. The circuit diagram you see above is a snapshot of a simulation of the circuit. I have also include circuit diagrams of the custom made modules which are also snapshots of simulations. Enjoy!


Copyright © 1997, Robert K. Innes
Last Modified on 14 January, 1998
Questions, Comments, Suggestions?
Send email to innesro@earlham.edu