Introduction: DIY CMOS RAM Memory

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!



  • Epilog Challenge 9

    Epilog Challenge 9
  • First Time Author Contest 2018

    First Time Author Contest 2018
  • Paper Contest 2018

    Paper Contest 2018

We have a be nice policy.
Please be positive and constructive.




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)

No tests, but the MOSFETs are rated at a few MHz so it should be theory...

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.

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.)