Introduction: DIY CMOS RAM Memory

About: I like to make things that move, sense, calculate, compute, blink, and make noise. I like making things that create high voltages, electrical arcs, and can light fluorescent bulbs at a distance. I like to d...

If you have seen my other instructable on ram memory, you probably know that I used transistors to make a register. In this instructable I will show you how to make a register using CMOS gates.

If you haven't seen my other instructable, check it out

Step 1: What Is CMOS?

CMOS stands for Complementary Metal Oxide Semiconductors.  Its a form of logic that uses very little current and requires no resistors.  It uses MOSFETs in a complementary arrangement, so you use a P-channel and an N-channel MOSFET at one time.  The cool thing about CMOS is that when one MOSFET is on, the other is off, so gates don't use very much current. Another thing about MOSFETs is that the gate is not connected in any way to the drain or source so it requires no resistor, unlike ordinary bipolar transistors.

Step 2: Why Use CMOS?

Now the question becomes, why use CMOS? The other circuit used half the number of transistors, and wasn't as complex. Well a reason for using CMOS is power consumption. The CMOS circuit uses less than 5 milliamps per bit maximum (when both switches are off and the LED is off, it uses less that a microamp). The other circuit used 15-25 milliamps per bit (depending on the switches and LEDs. Now let's put that into perspective, an 8-bit CMOS register would use less than 40 mA, but an 8-bit RTL (resistor-transistor logic) registe would use 120-200 mA!! Thats a huge difference.

Step 3: What You Will Need

There is a very simple parts list for this project:

***These are per-bit numbers***

8 2N7000 Small signal n-channel mosfet
8 BS250 Small signal p-channel mosfet
2 Pushbutton switches
2 10K ohm resistors
1 1K ohm resistor (or whatever value is needed for your LED)
***These are necessary no matter how many bits you make***
5V power
pliers (not necessary, but very very close)

Step 4: How It Works

This version uses a conventional Data Latch (D-Latch). Its basically a shortcut version of the Master-Slave D-Flip Flop. It uses 4 NAND gates to operate. When the clock goes high, the Q output will follow any changes from Data. When the Clock goes low again, the bit is latched. Now the Q output will not change states, even when Data does.

Step 5: The NAND Gate

The basis of this circuit is the NAND gate. Its function is the not of A and B (~A*B):

A    B    Y
0    0    1
0    1    1
1    0    1
1    1    0

It requires 4 MOSFET to operate, 2 P-channels and 2 N-channels in the configuration below. The P-channel FETs are in parallel, but the N-channel FETs are stacked up, in a "Totem Pole" configuration. If either A or B is low, then current can flow through one of the the P-channel FETs, making Y logic 1. This is true to the truth table. If both A and B are high, then the P-channel FETs turn off and both N-channel FETs turn on, making Y logic 0. As true to the table.

Step 6: Building the Circuit

The complexity of this circuit is much greater than that of the last one, so I am not going to make a schematic for it. But don't fret, because you know how to arrange the MOSFETs to make a NAND gate, and you know how to connect the NAND gates together, so you can build it. To connect the switches, you need to tie the side of the switch connected to the first NAND gates to ground with a 10K ohm resistor. The other side of the switch can be tied directly to positive 5 volts.

Step 7: Finished It

I hope you did well with building this (if you attemped it) and you learned something new. This very stuff is in our computers, iPods, and Xboxs. These circuit may be impractical in their current state, but this is the exact same circuitry used in little tiny ICs!



    • Clocks Contest

      Clocks Contest
    • Water Contest

      Water Contest
    • Creative Misuse Contest

      Creative Misuse Contest

    70 Discussions


    8 months ago

    this is a really cool project. Could it run at 1kHz?

    Any tests on the frequency you can achieve with this? (i'm not thinking of any practical use, I'm just curious)

    4 replies

    I think the main limiter of frequency for this would be the capacitance of the breadboard its self, i managed to get about 60khz out of a 555 timer cleanly driving a mosfet, remembering that if a mosfet isnt driven properly, it heats up due to being stuck between cut off and saturation :) Crossing wires also add capacitance.

    I agree. In addition I also think that the plastic encapsulation of the MOSFETS (epoxy) would play a role in slowing it down. Even though it's not very much (maybe a couple nf). But still, it's worth considering.

    I didn't think of that, but it would definitely play a factor in speed. Thanks for that information.

    Oh yeah, nice project!!! I'm currently working on some I2C ROM for my Arduino. Do you have any thoughts on it? Have you done something similar in the past?

    I am looking for a schematic so I can make my own ssd even if it is 1 to 8 bits big. Where could I find one or an instructable. I want it to remember the bits even with no power.

    3 replies

    It's possible, just not with a transistor. You can accomplish it using a technology called "Magnetic Core Memory" (not to be confused with core-rope memory). Basically it uses a ferromagnetic core and saves a binary value of zero or one based on the direction of the magnetization (clockwise or counter-clockwise). I must warn you though that the current difference between the two states is very low, meaning that the amplifier stage must be extremely sensitive.

    The problem with an electronic circuit that remembers its data when the power is lost is that it requires a floating-gate transistor. Floating-gate transistors have a gate, source and drain like regular fets, but there is also a second gate that isn't connected to anything, hence it's floating. Putting a large charge on the gate will put a small charge on the floating gate, just enough to turn on the transistor. Then a large charge of the opposite polarity on the gate to remove the charge on the floating gate. The best option you would have is a really big capacitor on the gate and a transmission gate between the transistor-capacitor pair and the rest of the circuit. It won't be permanent, but it will last for a long time (depending on the size of the capacitor.)

    So is that how it works in a flash drive and a ssd and there is no permanent soultion? I am planing on making a computer from scrach and making my own parts this is the only part i am having trubbles with. sry for bad spelling i dont have spell check on my tablit


    Wonderful instructable and really helps understand logic gates. Though I have a question about the cmos inverter. Why do you need the n-type mosfet in it? As, when HIGH is given to the gate of the p channel mosfet it is off (no connection between the drain and source) and so the output is LOW. When LOW is given to the gate of the p channel mosfet it is on (connection between the drain and source) and so the output is HIGH. So why do you need the n channel mosfet in the cmos inverter?


    How do you program it? I think its really cool.

    I have GOT to find that article I had (it was an April Fools article in an electronics magazine) that showed how to construct a one BIT memory with tubes......foot print, about the length and width of an large encyclopedia, and the height off the table, about 14 inches. :-) It worked too, if you could find a USE for a single BIT LOL

    Technically yes, it is computer memory, but it is ram, not a hard drive. A hard drive saves memory even when it loses power, this will lose its data after the power is removed.

    And as takide said, it would take trillions of transistors.