Step 4: Logic Gates

A computer consists of thousands of logic gates arranged to carry out certain functions. A logic gate is a component in digital electronics whose output depends on the state of its inputs. Most logic gates have two inputs and one output. You can think of logic gates as the decision-makers in digital electronics. The six main logic gates used in digital electronics are:

AND Gate: Output is high when all if its inputs are high.

OR Gate: Output is high when any of its inputs are high.

NOT Gate: Only has one input. Output is high when its input is low.

NAND Gate: Output is high unless all of its inputs are high.

NOR Gate: Output is high when none of its inputs are high.

XOR Gate: Output is high when an odd number of inputs are high.

Tri-State Buffer: A buffer that is controlled by a third logic signal.

It is important to mention now the difference between a high "1" signal and a low "0" signal. A high signal can either be a connection to positive voltage or it can be a floating input. A floating input is one that is not connected to any output. An example of a floating input would be one that is not connected at all or one that is connected to the output of a 3-state buffer that is not activated. A low signal is present when an input is at ground.

Logic gates can be fed into each other to produce almost any function imaginable. For instance, two NOR gates can be fed into each other to store one bit of data in a RS_NOR latch while power is supplied to the circuit.
<p>Great manual!</p><p>I've made it using Your design, but on an unusual medium: pixels :D Here's the simulator if you wanna see this in motion operating: <a href="https://realhet.wordpress.com/2015/09/02/bitmap-logic-simulator/" rel="nofollow">https://realhet.wordpress.com/2015/09/02/bitmap-lo...</a></p><p>I programmed it to calculate the Fibonacci series, it has an extra 16 byte ROM for the program, the fetch is only 2 cycles and different instructions can break the micro-word sequence earlier as when they finish, so instruction times are ranging from 3 to 5 cycles.</p><p>It was fun to input a program only using switches, like in ancient sci-fi movies. Well, it was fun for the 1st time... After I rather made a ROM.</p>
<p>Good job bro...Nice software</p>
<p>Realhet, that is spectacular! I really like your idea of using simple CA rules to make a logic sim. It is almost like Redstone in Minecraft, but so much more powerful and less latent (and also devoid of a jungle of wires, that must be nice). Congrats on the great project. Do you know of any other users of your program yet? I'll make sure to keep an eye on your site for updates, and I'll share your work with my friends. I'm sure they will really enjoy it.</p>
<p>How do I use the CD4029 as a ring counter? I bought it and all I've been able to get it to do is count up/down in binary, resetting at either 15 or 9. Any help?</p>
<p>and what do you do with the carry out of the lasy 1-bit adder?</p>
<p>I just got a product key from <a href="http://www.vinhugo.com" rel="nofollow"> www.vinhugo.com</a>. it worked perfectly. I'm so excited to share my experience here.their customer service is 1st class and I will definitely be recommending the site and I will be using the site again.</p>
<p>I am looking forward to making this project! I couldn't find anything like it no matter how hard I looked! Thank you for making this project available. :3</p>
<p>How do you ensure that the program counter starts out at zero?</p>
Got a little ahead of yourself there eh? What an utter disaster. If you need to use a breadboard and premade leads you are way out of your league here. Congratulations on your hairball. Time to cough it up.
<p>What type of PROM are you using? I didn't see any parts listed for the PROM?</p>
<p>good jop, i motivated by your project, i am gonna make one sooner . i want to know how much this projects coast you ? is there any additional advice to build one like any mistakes must avoid or things that may save time ?</p>
Sure! Try using shorter breadboard wires, and plan out the layout of your computer beforehand. This will save you a bunch of grief in the future of dealing with EMF related issues and dirty clock signals.
<p>Very well structured into topics. Very well explained and crafted. Awesome job!</p>
<p>your funny</p>
<p>i want to ask about about the uses of this 8 bit computer</p>
<p>Since its 8-bit, you can do anything that requires 16 bytes of memory ( depending on your RAM ). Unless you add some external drive... which would allow you to do so much more. But just with 16 bytes of RAM you can probably do operations like:</p><p>A+B=C, then</p><p>C+B=D,then</p><p>D+A=Z,</p><p>I think.</p><p>But with an external drive of some sort your 8 bit computer will be able to do stuff like this https://www.youtube.com/watch?v=qYvr0b8jqbg ...i think?-e-dah-puzi-1998</p>
<p>16 bytes? How did you get that? Surely an 8-bit address buffer should be able to address 2^8=256 bytes of memory?</p>
<p>Yeah....some people like to have a 4 bit memory address and 4 bit op code...I would personally do an 8 bit op code and memory address.</p>
<p>I mean I guess if you're not addressing much memory then it's Ok, but it would severely limit what you could do with the thing. With 256 bytes, you could even do some kind of really simple pong game.</p>
<p>Yeah....some people like to have a 4 bit memory address and 4 bit op code...I would personally do an 8 bit op code and memory address.</p>
<p>I think someone forgot to cable manage :P</p>
<p>Im guessing your a linus fan. ( By your picture and your comment).</p>
<p>Yes I am definitely a Linus fan :) But, my image is not a parody of Linus's image, rather its a parody of Steve Jobs famous image, so is Linus's. The comment inspiration is more Luke, not Linus. </p>
<p>thanks for all the info and references. <br>your 8 bit computer looks like a pile of wires lol. <br>its cool though. </p>
It is awesome! One question though, I didn't quite understand what your computer is capable of doing. What can it actually do?
<p>Presumably execute simply binary programs. Adding numbers, subtracting numbers, multiplication, division, maybe some more complex things like calculating square roots or powers. Anything that a standard computer can do within the limited memory it has (256 bytes).</p>
Thanks for letting me know.
<p>Are logical operations like AND , OR, NOR, or XOR essential in performing complex operations like square rooting, or a game. I just wanna know if they are needed. If so, which operation is used the most.</p>
<p>Every single kind of computation your computer does relies fundamentally on the operations of AND, OR, NOR, NOT and XOR. Actually, even AND, XOR and NOR can be composed simply of OR and NOT gates.</p>
<p>What ROM ic's did you buy.</p>
<p>Can anyone tell me which RAM IC I should buy?</p>
<p><a href="http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74189&langId=-1&storeId=10001&productId=49883&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView" rel="nofollow">http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74189&amp;langId=-1&amp;storeId=10001&amp;productId=49883&amp;search_type=jamecoall&amp;catalogId=10001&amp;ddkey=http:StoreCatalogDrillDownView</a>...</p><p>Two of these chips can be your 16x8 RAM</p>
<p>i like your instructable and i'am building it i'am wondering if it's possible to calculate big numbers with this computer or i am limited to 8 bit numbers only?</p><p>in 32 bit computer you can calculate bigger number than 32 bit, i think it's a software thing but anyone can make it clear how it's done ?</p><p>Sorry for my english.</p>
<p>You certainly can, you just have to do the calculations over a series of operations, also storing and loading from RAM. As opposed to having the CPU's ALU do it all for you. Just like how you would have to manually calculate Floating Point operations on old CPUs. Yes it is much slower!</p>
lots of registers and a big ALU would allow bigger number calculations to be done.
<p>how many wires do I need? </p>
just an idea, couldn't you use a decoder for the binary to decimal conversions, instead of using an arduino (using another computer I think is technically cheating)?
<p>haha sonic screwdriver. This is awesome</p>
<p>this is so awesome i am about to cry. congrats</p>
<p>This is amazing will try this hmm.. maybe next year</p>
<p>I love it. Thanks a lot. Nicely explained. Awesome. :D</p>
cool, you've made the Apollo flight computer (not really but still cool :p)
<p>cost to make computer?</p>
<p>Where can i buy those nice leds? :D</p>
<p>I clicked this link, saw the image of the bread boards swathed with a gazillion wires, and literally laughed out loud. Clearly not an easy task, but clearly you've shown it is achievable. Thanks a lot for sharing this! </p>
<p>such skill</p>
<p>Check out my new YouTube Channel for Computers...</p><p><a href="https://www.youtube.com/channel/UCWj5yoeXf12zUWZl8ziNSDA" rel="nofollow">https://www.youtube.com/channel/UCWj5yoeXf12zUWZl8...</a></p><p>Like... </p><p>Share... </p><p>Comment... </p><p>Subscribe...</p><p>Request any computer related tutorials for hardware and software... <br>c.m.c.firerat@gmail.com</p>
<p>Check out my new YouTube Channel for Computers...</p><p><a href="https://www.youtube.com/channel/UCWj5yoeXf12zUWZl8ziNSDA" rel="nofollow">https://www.youtube.com/channel/UCWj5yoeXf12zUWZl8...</a></p><p>Like... </p><p>Share... </p><p>Comment... </p><p>Subscribe...</p><p>Request any computer related tutorials for hardware and software... <br>c.m.c.firerat@gmail.com</p>
<p>This is an amazing project, thank you for sharing!</p><p>Would it make sense to replace the JMP instruction with some kind of conditional jump? Such as &quot;Jump to a certain instruction in memory at the specified address *if* the accumulator is non-zero&quot;? Otherwise I cannot figure out how to program conditionals (such as a program which outputs 0 if the accumulator contains the value 0, and 1 otherwise). In particular, I can't figure out how to program multiplication with your instruction set (which would be easy with a conditional jump). All of the arithmetic tricks that I know for getting a conditional jump out of a non-conditional jump require multiplication, such as encoding &quot;if A then B else C&quot; with A*B+(1-A)*C in the case that A is either 0 (false) or 1 (true).</p><p>Am I missing something obvious? Thanks again!</p>
Incredible instructable!<br>

About This Instructable


874 favorites


Bio: All of my life I have been interested in learning the way things work. It was always hard for me to use something and just ... More »
More by spel3o: How to Build an 8-Bit Computer Make a Pocket Watch Chain for Your iPod How To Change Your MAC address (Snow Leopard)
Add instructable to: