yep, memory has more transistors than a CPU, but memory is a very simple circuit (comparing to a CPU), it's just what you saw in the video repeated billions of times, it's incredible and no one talk about it
To be fair, it's _literally_ copy-pasted. A single DRAM DIMM might have, say 16 RAM chips on it, each with maybe 256MB. Each chip will have 256 * 1024 * 1024 of those transistor-capacitor combos on it. The chip will also have some address decode logic and that little circuit that loops through the contents and rewrites it. The trick is, when you make an IC, you're sort of just using a really precise projector to project an image of the chip layout onto the chip itself, then use some fancy chemical stuff to make it do the thing. But in designing that chip layout, it's essentially just a digital image. You can copy and paste it as many times as you want. Doing this same thing without a digital image is just a matter of some traditional printing/darkroom stuff. Perhaps not too far removed from just photographing the design and printing a bunch of copies.
This is even more true for this whole video playlist by Ben, i.e. tiny simple pc compared to what we're watching this on. Well actually in that case... Is he going to build a cell phone on a breadboard next?
Something I read recently about why the '189 inverts the output... The 7489 was an early TTL memory device. Tri-state output wasn't available. Since it was also a big advantage to be able to wire-AND without additional output buffering, open-collector outputs was the obvious choice for devices that might have to share a bus. As you probably know, NPN BJTs were used almost exclusively in those early circuits. (Just look at the schematic for a TTL logic gate.) NPN BJTs are pretty good at sinking current and their open-collector outputs could sink up to perhaps 16mA with the 7489. One of the interests, at the time, was to directly hook up LEDs to the outputs. There was sufficient sinking capability to drive an LED. But.. well, to do that you needed the open-collector to be active. So if you directly hooked up your LEDs (and current limit resistors) to the outputs, then you would see lit LEDs where "1"s were written. And folks liked that feature. So I think the designers of these early memory chips chose, in part, to make the outputs inverted to help support the simpler use of LEDs to represent the bits. Another reason is that these outputs would be wire-ANDed with a pull-up resistor. Before that output could be used again, it needed to be buffered. This buffering was almost always done with a 7404 inverter. Which inverted the signal! (And so you got your "1" back.) When the 74189 came out, I suspect there was a desire to offer tri-state outputs but to also allow it to be used where the 7489 was previously used (tri-state or active-LO mode only, for example.) So they kept the behavior but added tri-stating to it. (I recall that they later put out the 74219, which doesn't invert.) Those issues certainly motivated me when I worked with the 7489 and I think that's the reason that the 74189 originally chose to stay with the earlier design concept. Of course, as things proceeded in time, more became available and for less money and the motivations evolved. Credit goes to "jonk" on electronics.stackexchange (electronics.stackexchange.com/questions/447910/what-is-the-point-of-inverting-ram-output)
I can understand why others are requesting a parts list. Here in the UK, I have to get some chips from Japan.for every order I pay $30 delivery. If I knew what other chips I would need, I could include all in one package. Nevertheless, I am grateful for your quality instruction - I don't forget that you are under no obligation - this is a gift. Thank you.
Every queation I ever had about microcomputer design has been answered so efficiently by you over the years, for some reason I missed this last one and I'm so glad I found it. Always puzzled about memory decoding, but no longer. Thanks Ben
Not really, it was even kind of a joke in the day, that's only 32 pages of 80x25 column text! With no room for OS or word processor. Hardly a gripping novel or indeed it takes quite a bit of imagination to make even a good game in it, and even then it will have severe complexity constraints. What instead happened was people managed their expectations of what a computer could do, and increasing RAM and disc drives allowed people to imagine more sophisticated and complex things to do on the computer.
@@vincenzo3574 no, they did not. The Apollo Guidance Computer had 2048 15 bit + 1 bit parity words of core memory RAM and 36864 words of core rope ROM. Although it was not byte organised this is roughly equivalent to 4kb of RAM and 72kb of ROM, with 1/16th of that used as parity. And it was only one of a suite of computers installed on the entire rocket, not to mention that ground based computers were used whenever possible.
Hey Ben. I think it would be informative to mention that words or cells are frequently arranged in columns and rows, and that's one reason that the DFFs have two load and two enable signals... column select and row select. Thanks for these videos, they are fantastic!
I hope you continue to do more projects after this one, a AM and FM radio would be nice and it would certainly be educational. Maybe explain NFC technology and how it works later or other cool stuff like that.
Yep. Which always makes me think of this picture: pbs.twimg.com/media/EhBssk7XcAUIuSc.jpg, which is Bill Gates showing how one CD-ROM could hold the equivalent of 330,000 sheets of paper (if you look, it's pretty easy to tell that the only actual sheet of paper is the one they stuck on top, the rest seems to be some sort of sculpted object, so no worries about ecological impact of wasting all that paper). That was in 1994; imagine the equivalent today. CD-ROMs can hold about 700 mb; moving up to DVDs got us to 4.7 gb, or over 6 times what's in this picture. Nowadays, my _ram_ has 32 gb, and there are _microSD cards_ that can store 1 terabyte -- www.cnet.com/news/you-can-buy-a-1tb-microsd-card-now/. One terabyte is almost 1,500x the storage space of a CD-ROM, so we would need nearly half a billion sheets of paper to make a similar picture -- except the sd card is the size of your fingernail. It's enough to make you dizzy. However, there are in fact limits to this. In the world of CPUs, we have basically hit the ceiling of Moore's Law. Transistors are so insanely small now (~7-9 nanometers) that we can't make them much smaller, because quantum tunneling becomes an issue (and also because the heat generated by powering them begins to go exponential). We don't need alien tech; we already have it -- except we made it, which is pretty damn cool.
You generally don't want to use flip-flops for the individual bits in an SRAM, latches are enough. A flip-flop is typically built out of two latches, one that is transparent when the clock is low and then one that is transparent when the clock is high, to be able to capture the input at the rising edge of the clock (master-slave D flip-flop). But when you have an SRAM with many words, and you're only going to write one of them at a time, only the second latch needs to be individual for each bit. You can share the first latch between different words, so if you have an 8 bit wide SRAM then you only need 8 of the latches that are transparent when the clock is low. That removes almost half of the latches compared to using a flip-flop per bit. But Ben's flip-flops are really pulsed latches, sp they're not doubled. I can't tell whether it's a good idea to build an SRAM out of pulsed latches, but unlike the flip-flop case, you don't save a lot of latches by going with the pulsed option.
oh cool, I used to build CPUs in those simulation programs, and I always had an enable bit on my RAM that would then send the memory address if enabled, I didn't know that was a thing that people would normally do, cool
Paul K - Get rolls of 22 AWG solid core wire in as many colors as you can on eBay. Buy good strippers, medium length but very thin needle nose pliers, and a pair of Klip-Snips. Don't go cheap on tools. Great Scott has a good tool video. Don't let anyone make you feel silly with newbie questions. 47 Years ago I was, and still am a newbie. Ben is the only master I've seen on this channel. We're all here to learn.
It is a bit pity that the WRITE and ENABLE wires have the same color which makes it sligtly harder to folow when testing / explaining how it works. However, I can understand that they are both control lines so it makes sense to have them with the same color for a bigger picture.
So, since you already know where we are going to end up. Could you provide a parts list of at least the IC's you are using? That way we can order them before hand all together and build this as the videos come? This will save me money, and i don't have to wait for the long order times of ebay. Ow, And how many breadboards is this going to take? By the way, very nice videos. Keep em coming.
I feel that every programmer needs to see this at least once (how the CPU 'works' and related stuff) , dont just learn x language with x framework and don't know what even a bit is.
12:28 Why not using some less wacky SRAM chip instead? E.g. CY7C199-15VC, which already has an 8-bit data bus and the three-state buffer on its output, which - moreover - is not inverted at all, so you could just go with a single chip instead of four (two 4-bit SRAMs, one 8-bit inverter and one 8-bit three-state buffer) :q This chip has also much more memory onboard: 32 kilobytes! That's much more than a measly 16 bytes ;J Or something like the AS6C1008 which is a 55-PIN DIP32 chip with 128 kilobytes :) Or the classic 62256 chip which is a 256 kilobits (or 32 kilobytes) SRAM in a DIP28 dice. I use the latter in my own 8-bit computer project for its operational memory :)
Bon Bon I think he mentioned in some video that they were laying around. Also using more than 16 bytes would require a bigger program counter register and thus larger (multibyte) instructions. And that would require a more complex instruction fetch and execution implementation. And using more than 8 bit for the address (aka > 256 bytes) would also require a larger bus to transfer the address. Although I suppose you could copy the address in multiple microinstructions.
Fabian Neundorf Yeah, but this simplicity comes with a great cost: there's not many programs one can write within only 16 instructions :q And the complexity of multi-byte instructions is also an important part of modern computer architectures. They don't have to be much more complex, though: one can use a similar approach the ARM processors use, with all instructions being the same length (32 bits for ARM). It can actually simplify the design too - e.g. in ARM every instruction can be a made into a conditional (conditional jumps being just a special case) by setting the "check flags" bitmask in the instruction. For jumps, the part of the instruction where usually the literal data goes into, is used for the jump offsets.
Well it is more for illustration purposes so I think it's fine with only 16 instructions. Using more would made it more complex and wouldn't really show that much more. I mean if you wanted to have a bigger instruction set you could use one of the already existing CPU architectures. But yeah it'd be cool if the CPU could do more and I'd love to actually be able to build this CPU and improve it.
I was just browsing through the comments to see if someone else had the idea that I was about to write here. I would also think that inverting the inputs to the RAM chips is easier, plus it saves us from having to use the extra bus interface chip with its wiring. Who cares if things are stored inverted in the memory, as long as the data that comes out of the memory module is what was written into it earlier? ;-)
At 3:00, when you had only one register, you had separate data in signal and separate data out signal. But when you built (basically) many rows of that register, you have them in a single line. I don't understand that. Please clarify.
At 8:21 how would the AND gate turn on if all the inputs are 0? The AND gate truth table says that AND gates only output a 1/ turn on when all inputs are 1 right? I'm kinda confused, help me out here.
It sounds very strange. Must be a lot more common that you want the uninverted value. And should be simple to add inverters at the outputs inside the chip.
What if instead of electricity the capacitors and transistors used pulses? Static Ram is perfect for holding an entire Operating System, they could make 512GB static RAM and hold the entire OS in it, for faster loading.
Yes buying another pair of 74189 will work but will have to add additional logic in front of your second pair For instance 1st pair = address = 0-15 and Memory first 16 Bytes 2nd pair = address = 16-31 and Memory is the second 16 Bytes from the datasheet of the 74189 it is clear that the address range is 0 to15 for the 74189, So will need additional logic to translate the 2nd pair address of 16-31 back to the original 0-15 of the 74189. So your CPU will address the 1st 16bytes to 0-15 ( address range) and will address the 2st 16bytes to 16-31
@@varunraj690 It's really simple to translate from 16-31 down to 15-0: You just ignore the top bit (a4). But you would need to set the chip select based on a4, and if you add even more of those chips, you will need a bigger decode that chooses one chip select to activate based on the address bits a4 and up.
What's with the funky pinouts? I can see why you want your input and output pins paired together, but... why on earth is A0 and A1-A3 on different sides of the chip?
Yeah the same thing is really annoying on the 6502 project when you go from the 6502 to the ROM chip. But at least the RAM and ROM have the same pin out so you can use all straight wires when you add that. It even makes laying out a PCB for it annoying.
I'll never understand why he went with the 74LS189... its difficult to find, plus its expensive at around $5 each when you do, . Then the regular 7489 and 189 and 74S189 version inverts the output data. It Would have been a lot easier for everyone if he went with a single ubiquitous 6116 2K SRAM that has an 8-bit data bus
Might be a silly question, but why prefer RAM rather than another EEPROM ? So that once you've programmed something to compute in it, it would compute it even after power off and on ? So that you don't need to reprogram it each time...
Frédéric Lidove EEPROM typically has a limited number of writes. It also takes a longer amount of time to write to it. Think of it as the difference between RAM and a Hard Drive in a computer. Ram is much faster, but can't store data long term without power.
RE: time index 9:28- I understand your "spelling" everything out for your example, which is really good idea for someone new. But could you not use a 74HC154 to decode which EN line of "RAM" you are using? There are a lot of cool uses for the 74HC154. Also in one of your examples you use a 74HC04 Hex inverter to NOT the output of your Ram. Would it not be easier to use 74HC540? The cool thing about the 540 is one side of the DIP is your input the other side is your output. It also means you are using one Chip per 8 IO, not 2 Chips and have some left over gates/pins (which technically unused input needs to be tied high or low OR you can wind up with excessive power draws) . Plus, You don't have to dance all over the place to wire your hex NOT gate (74HC04).
Blacklab412294 hi, I have a question to your post: you spit out the chip numbers like you know them by heart, where do you get that information? I cannot guess the 74 numbers, browse for a datasheet and continue to the next one. Is there a wiki or list of chips available e.g. for adders or xor gates or such stuff from the 74 family?
Basically, when I need something like this, I "browse" electronics shop DigiKey To find something like 74 XX 540 (and you don't know the name), i would go to Digikey subsection "Logic - Buffers, Drivers, Receivers, Transceivers" Use filters: "Logic Type - Buffer, inverting", "Number of bits per element - 8", "Mounting Type - Through hole" you'll get a lot of them then, they all work, they all have datasheets and you can browse everything.:) for decoders, encoders and similar, you go "Logic - Signal Switches, Multiplexers, Decoders"... there's thousands of parts and you can browse as much as you like, you can find anything you want. If you don't know that something exist, it might take some time because you won't know what to search in the first place, but if you invest the time, you will find it; that's what being an engineer is all about.:) To create custom electronics and SOC stuff (if you don't count microcontrolers, transceivers, WLAN, BT, RFID and other specific chips), I use level converters 90% of time (74HCT08 or 74HCT04 for general use, find custom stuff if you need to be more specific), buffers 5% of the time and everything else is in the last 5%.
ferrari2k I know i'm late for class, but here's the list you requested: en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits and here's one for the 4xxx series of CMOS chips: en.wikipedia.org/wiki/List_of_4000-series_integrated_circuits
Buy a bigger SRAM is probably easiest. But I get the feeling that this computer will be designed to work with 4 bit addresses, if that is the case then more things will need to be redesigned to be able to make use of the extra memory.
RAM loses its contents when the power is turned off, but the contents can be changed quickly. EEPROM keeps its contents when the power is off, but it takes a long time to change the contents - often you only do it when the computer is turned off.
theres a lot of websites online that let you buy bulk chips and circuitry components of basically any type. I would say just go to Radioshack, which with out a doubt had the most electronics components for a good price. You could buy resistors, capacitors, diodes, 555 timers etc.
Hi Ben, I looked up the 7400 series for a 64-bit RAM with non-inverting, three-state outputs and there is one called 74219 but it doesn't seem to be available anywhere. Do they not make this chip anymore? Why would they discontinue that but continue making a 74189 with its non-intuitive inverted output? To pass on the cost of adding a 7404 onto the consumer to get correct output from the RAM? Also, did you use NAND gates in this video for simplicity? Will you be using a 74173 for the MAR in the implementation? Thanks, love your series! It's the clearest and most well-presented on this topic on TH-cam.
How about the good old 62256 SRAM chip? web.mit.edu/6.115/www/document/62256.pdf You can buy those on eBay for around six dollars: tinyurl.com/SRAM-na-eBay (P.S.: If you're Polish, you are probably laughing your ass off right now after reading the URL ;) )
Given an SRAM chip with a capacity of 32Kbytes (32K words with 8bit word length). Outline a block diagram for such a chip, explain what inputs and outputs such a chip would normally have.
By Definition Hi. Right now am progressing thru all the video’s and building the thing myself as I go along, thereby reading all comments given by people. Am now at this video and saw your question. Besides Malvino, mentioned by Ben Eater, others have on various places recommended below two books. But How Do It Know? - The Basic Principles of Computers for Everyone - J Clark Scott Code - Charles Petzold. I now own a copy from Malvino. It is quite technical and to the point. Petzold’s book looks less deep and more broadspoken but offers all kind of other interesting and useful info. Decades back I bought another book of him which I enjoyed very much. Therefor I have ordered now a secondhand copy of the Code book.
16 gb i doubt that is ram that sounds more like solid state/hard drive and in the case you are building it in the way to make ram so saying 16 gb would not be nice this way is and is better with this so my computer probably uses this is wrong solid state stores stuff by trapping it in a place but like you said it will run out after a bit and it needs to keep refreshing so it cant do that when a computer is off hence why they use it for ram.
The idea that it's this much work and circuitry for memory as low as this and that my PC has 16 gb of ram is mind-blowing.
yep, memory has more transistors than a CPU, but memory is a very simple circuit (comparing to a CPU), it's just what you saw in the video repeated billions of times, it's incredible and no one talk about it
To be fair, it's _literally_ copy-pasted. A single DRAM DIMM might have, say 16 RAM chips on it, each with maybe 256MB. Each chip will have 256 * 1024 * 1024 of those transistor-capacitor combos on it. The chip will also have some address decode logic and that little circuit that loops through the contents and rewrites it. The trick is, when you make an IC, you're sort of just using a really precise projector to project an image of the chip layout onto the chip itself, then use some fancy chemical stuff to make it do the thing. But in designing that chip layout, it's essentially just a digital image. You can copy and paste it as many times as you want. Doing this same thing without a digital image is just a matter of some traditional printing/darkroom stuff. Perhaps not too far removed from just photographing the design and printing a bunch of copies.
actually it isnt much mind-blowing because from what i know ram is copying and pasting the same small simple circuit
the size is mind-blowing though
This is even more true for this whole video playlist by Ben, i.e. tiny simple pc compared to what we're watching this on.
Well actually in that case... Is he going to build a cell phone on a breadboard next?
Something I read recently about why the '189 inverts the output...
The 7489 was an early TTL memory device. Tri-state output wasn't available. Since it was also a big advantage to be able to wire-AND without additional output buffering, open-collector outputs was the obvious choice for devices that might have to share a bus.
As you probably know, NPN BJTs were used almost exclusively in those early circuits. (Just look at the schematic for a TTL logic gate.) NPN BJTs are pretty good at sinking current and their open-collector outputs could sink up to perhaps 16mA with the 7489.
One of the interests, at the time, was to directly hook up LEDs to the outputs. There was sufficient sinking capability to drive an LED. But.. well, to do that you needed the open-collector to be active. So if you directly hooked up your LEDs (and current limit resistors) to the outputs, then you would see lit LEDs where "1"s were written. And folks liked that feature. So I think the designers of these early memory chips chose, in part, to make the outputs inverted to help support the simpler use of LEDs to represent the bits.
Another reason is that these outputs would be wire-ANDed with a pull-up resistor. Before that output could be used again, it needed to be buffered. This buffering was almost always done with a 7404 inverter. Which inverted the signal! (And so you got your "1" back.)
When the 74189 came out, I suspect there was a desire to offer tri-state outputs but to also allow it to be used where the 7489 was previously used (tri-state or active-LO mode only, for example.) So they kept the behavior but added tri-stating to it. (I recall that they later put out the 74219, which doesn't invert.)
Those issues certainly motivated me when I worked with the 7489 and I think that's the reason that the 74189 originally chose to stay with the earlier design concept. Of course, as things proceeded in time, more became available and for less money and the motivations evolved.
Credit goes to "jonk" on electronics.stackexchange
(electronics.stackexchange.com/questions/447910/what-is-the-point-of-inverting-ram-output)
I can understand why others are requesting a parts list. Here in the UK, I have to get some
chips from Japan.for every order I pay $30 delivery. If I knew what other chips I would need, I could include all in one package.
Nevertheless, I am grateful for your quality instruction - I don't forget that you are under no obligation - this is a gift. Thank you.
@@hipposhark he has a full parts list on his website
@@H_Industries317 He might not have had one four years ago...
Thank you for continuing with this project. You explanantions are very clear and concise. I look forward to watching more from you.
Fap fap fap fap fap fap fap
Just incredibly lucid explanations… Thank you
thanks for the money
Every queation I ever had about microcomputer design has been answered so efficiently by you over the years, for some reason I missed this last one and I'm so glad I found it. Always puzzled about memory decoding, but no longer. Thanks Ben
Now I can see why they said that 64k of memory is way more than enough for a regular user.
Not really, it was even kind of a joke in the day, that's only 32 pages of 80x25 column text! With no room for OS or word processor. Hardly a gripping novel or indeed it takes quite a bit of imagination to make even a good game in it, and even then it will have severe complexity constraints.
What instead happened was people managed their expectations of what a computer could do, and increasing RAM and disc drives allowed people to imagine more sophisticated and complex things to do on the computer.
@@MrGoatflakes we sent people on the moon with that
@@vincenzo3574 no, they did not. The Apollo Guidance Computer had 2048 15 bit + 1 bit parity words of core memory RAM and 36864 words of core rope ROM. Although it was not byte organised this is roughly equivalent to 4kb of RAM and 72kb of ROM, with 1/16th of that used as parity.
And it was only one of a suite of computers installed on the entire rocket, not to mention that ground based computers were used whenever possible.
c o m m o d o r e .
Nerd @@MrGoatflakes
Thanks so much for making these videos! I'm learning a ton and enjoying putting together this breadboard computer. Keep up the great work.
Hey Ben. I think it would be informative to mention that words or cells are frequently arranged in columns and rows, and that's one reason that the DFFs have two load and two enable signals... column select and row select. Thanks for these videos, they are fantastic!
Hi, can you explain this further?
I hope you continue to do more projects after this one, a AM and FM radio would be nice and it would certainly be educational.
Maybe explain NFC technology and how it works later or other cool stuff like that.
Started studying Computer Science Engineering this year and my goal is to watch all of your videos they are very helpful :)
does not get more clearer than this! Thank you!
Mind Blown, this is the best example of how memory works I have ever seen.
I’m starting to realize the greatest innovation in technology is being able to fit more and more into a smaller space.
Yep. Which always makes me think of this picture: pbs.twimg.com/media/EhBssk7XcAUIuSc.jpg, which is Bill Gates showing how one CD-ROM could hold the equivalent of 330,000 sheets of paper (if you look, it's pretty easy to tell that the only actual sheet of paper is the one they stuck on top, the rest seems to be some sort of sculpted object, so no worries about ecological impact of wasting all that paper). That was in 1994; imagine the equivalent today. CD-ROMs can hold about 700 mb; moving up to DVDs got us to 4.7 gb, or over 6 times what's in this picture. Nowadays, my _ram_ has 32 gb, and there are _microSD cards_ that can store 1 terabyte -- www.cnet.com/news/you-can-buy-a-1tb-microsd-card-now/. One terabyte is almost 1,500x the storage space of a CD-ROM, so we would need nearly half a billion sheets of paper to make a similar picture -- except the sd card is the size of your fingernail. It's enough to make you dizzy.
However, there are in fact limits to this. In the world of CPUs, we have basically hit the ceiling of Moore's Law. Transistors are so insanely small now (~7-9 nanometers) that we can't make them much smaller, because quantum tunneling becomes an issue (and also because the heat generated by powering them begins to go exponential).
We don't need alien tech; we already have it -- except we made it, which is pretty damn cool.
You generally don't want to use flip-flops for the individual bits in an SRAM, latches are enough.
A flip-flop is typically built out of two latches, one that is transparent when the clock is low and then one that is transparent when the clock is high, to be able to capture the input at the rising edge of the clock (master-slave D flip-flop).
But when you have an SRAM with many words, and you're only going to write one of them at a time, only the second latch needs to be individual for each bit. You can share the first latch between different words, so if you have an 8 bit wide SRAM then you only need 8 of the latches that are transparent when the clock is low. That removes almost half of the latches compared to using a flip-flop per bit.
But Ben's flip-flops are really pulsed latches, sp they're not doubled. I can't tell whether it's a good idea to build an SRAM out of pulsed latches, but unlike the flip-flop case, you don't save a lot of latches by going with the pulsed option.
12:20
This chip is so cute on the connection diagram. Now I can't unsee it, and this distracts me.
It's awesome knowing how a computer works! I'm so exited to see how u built all of it! And I like how u explain it! Logic gates! Awesome!!
oh cool, I used to build CPUs in those simulation programs, and I always had an enable bit on my RAM that would then send the memory address if enabled, I didn't know that was a thing that people would normally do, cool
Someday somehow this video will reach 1 giga views. Ben Eater will be remembered
Someday somehow I will have my 8 bit computer
Thanks Ben, your videos explain everything so well, even I understand it :)
Love your videos! So helpful and detailed.
Will you be making a video detailing DRAM?
I just love this guy
Great explanation sir.. Thanks a lot for deeper knowledge.
Cool! Excited to see how this develops
1:55 you know a shortcut is coming whenever you see [...] in a diagram
@Samuel Dunlap Still, it's 16-word. So you don't need to worry about it, imagine that the rows are going from 0 to 15.
1:08 A register on a breadboard - a bregister.
Best channel in youtube !!!
for completeness... at 8:00, the circuit is also know as a 4 x 16 Decoder which select one of output based on 4 bit input
You can invert the inputs instead of outputs (although I'm not sure you can actually take advantage of *that* )
Paul-Stelian Olaru I was thinking the same. By inverting the inputs and store the inverse data you can make good use of the tri-state outputs.
It's funny the address decoding might be a perfect application for kmap logic reduction
+Ben Eater I have got a question: How do you make the wires for your circuits? Do you precut them, because they always fit very good?
Paul K you can buy wires for breadboards, it looks like that's what he's done
Paul K - Get rolls of 22 AWG solid core wire in as many colors as you can on eBay. Buy good strippers, medium length but very thin needle nose pliers, and a pair of Klip-Snips. Don't go cheap on tools.
Great Scott has a good tool video.
Don't let anyone make you feel silly with newbie questions. 47 Years ago I was, and still am a newbie.
Ben is the only master I've seen on this channel. We're all here to learn.
It is a bit pity that the WRITE and ENABLE wires have the same color which makes it sligtly harder to folow when testing / explaining how it works. However, I can understand that they are both control lines so it makes sense to have them with the same color for a bigger picture.
So, since you already know where we are going to end up. Could you provide a parts list of at least the IC's you are using? That way we can order them before hand all together and build this as the videos come? This will save me money, and i don't have to wait for the long order times of ebay. Ow, And how many breadboards is this going to take?
By the way, very nice videos. Keep em coming.
Judging by the already built one, 16 breadboards.
I agree
Thanks from Texas
Another excellent video
When I was in high school, they said transistor changed the world but I didn't believe in that... Now I see why😱
I feel that every programmer needs to see this at least once (how the CPU 'works' and related stuff) , dont just learn x language with x framework and don't know what even a bit is.
i cant help but picture the diagram at @3:46 as a bunch of frogs all rowing a boat in unison ...
If I wanted 2 ram modules would I just need to all ways have one of the chip selects high
Yo.
I was trying to simulate in protius. But could not find the 74ls189. There is no library available for this in the internet.
Help me out. 😞
very nice video sir! could you make more playlist to make it easier to watch?
12:28 Why not using some less wacky SRAM chip instead? E.g. CY7C199-15VC, which already has an 8-bit data bus and the three-state buffer on its output, which - moreover - is not inverted at all, so you could just go with a single chip instead of four (two 4-bit SRAMs, one 8-bit inverter and one 8-bit three-state buffer) :q This chip has also much more memory onboard: 32 kilobytes! That's much more than a measly 16 bytes ;J Or something like the AS6C1008 which is a 55-PIN DIP32 chip with 128 kilobytes :) Or the classic 62256 chip which is a 256 kilobits (or 32 kilobytes) SRAM in a DIP28 dice. I use the latter in my own 8-bit computer project for its operational memory :)
I'm not certain but I think the memory chips he have already have tri-state buffers built in.
Bon Bon I think he mentioned in some video that they were laying around. Also using more than 16 bytes would require a bigger program counter register and thus larger (multibyte) instructions. And that would require a more complex instruction fetch and execution implementation. And using more than 8 bit for the address (aka > 256 bytes) would also require a larger bus to transfer the address. Although I suppose you could copy the address in multiple microinstructions.
Fabian Neundorf Yeah, but this simplicity comes with a great cost: there's not many programs one can write within only 16 instructions :q And the complexity of multi-byte instructions is also an important part of modern computer architectures. They don't have to be much more complex, though: one can use a similar approach the ARM processors use, with all instructions being the same length (32 bits for ARM). It can actually simplify the design too - e.g. in ARM every instruction can be a made into a conditional (conditional jumps being just a special case) by setting the "check flags" bitmask in the instruction. For jumps, the part of the instruction where usually the literal data goes into, is used for the jump offsets.
Well it is more for illustration purposes so I think it's fine with only 16 instructions. Using more would made it more complex and wouldn't really show that much more. I mean if you wanted to have a bigger instruction set you could use one of the already existing CPU architectures.
But yeah it'd be cool if the CPU could do more and I'd love to actually be able to build this CPU and improve it.
Better to invert the inputs so the OE still functions with the bus.
I was just browsing through the comments to see if someone else had the idea that I was about to write here. I would also think that inverting the inputs to the RAM chips is easier, plus it saves us from having to use the extra bus interface chip with its wiring. Who cares if things are stored inverted in the memory, as long as the data that comes out of the memory module is what was written into it earlier? ;-)
I am sooooooo happy
your video still helpful
keep up the videos!
Each bit in a RAM is stored in a capacitor that is controlled by a transitor
hello sir are you using standard pins of ic for AND, OR, XOR gates that you shown us on the screen?
At 3:00, when you had only one register, you had separate data in signal and separate data out signal. But when you built (basically) many rows of that register, you have them in a single line. I don't understand that. Please clarify.
I might have missed something here but what is the point in having both inverted and non-inverted outputs in the address decoder?
Who the hell is Ben Eater and why is he now my favorite You Tuber? I want to know more.
At 8:21 how would the AND gate turn on if all the inputs are 0? The AND gate truth table says that AND gates only output a 1/ turn on when all inputs are 1 right? I'm kinda confused, help me out here.
Question: why use two 4-bit chips instead of one 8-bit? MCM6810 is a 128 × 8-bit and can be found quite cheaply.
because the 4-bit chips are 7400 series
I really don’t understand about AND gate on how it enable when there is a zero from the source?
+Ben Eater Can you please make a Video about how to build a dynamic RAM?
I finished this today 😀
How much time takes self-closing of an open MOSFET after it was disconnected? Is it possible to store one bit in one transistor without a flip-flop?
Good~
What's the use case for the chip to output the reverse value?
It sounds very strange. Must be a lot more common that you want the uninverted value. And should be simple to add inverters at the outputs inside the chip.
You are really amazing....:D
What if instead of electricity the capacitors and transistors used pulses?
Static Ram is perfect for holding an entire Operating System, they could make 512GB static RAM and hold the entire OS in it, for faster loading.
the problem is that not even mouser van deliver the 74LS198
Cant find the 74ls189 or the 74189 is their other chip i could use
@Ben Eater Can you show us a memory controller instead of direct sram access?
11:49 what do you mean _most_
How come you don't use the memory bits in the Scott CPU or the book "But How Do It Know", it seems to be simpler than a D latch
If I wanted to increase RAM to 32 bytes, do I just buy 2 more of the 74189?
Yes buying another pair of 74189 will work but will have to add additional logic in front of your second pair
For instance
1st pair = address = 0-15 and Memory first 16 Bytes
2nd pair = address = 16-31 and Memory is the second 16 Bytes
from the datasheet of the 74189 it is clear that the address range is 0 to15 for the 74189, So will need additional logic to translate the 2nd pair address of 16-31 back to the original 0-15 of the 74189.
So your CPU will address the 1st 16bytes to 0-15 ( address range) and will address the 2st 16bytes to 16-31
@@varunraj690 It's really simple to translate from 16-31 down to 15-0: You just ignore the top bit (a4).
But you would need to set the chip select based on a4, and if you add even more of those chips, you will need a bigger decode that chooses one chip select to activate based on the address bits a4 and up.
You can, or you can buy a bigger memory. 64 bits is tiny.
Please make videos tutorial on 8085 Microprocessor please🙇🙇🙇🙇
What's with the funky pinouts? I can see why you want your input and output pins paired together, but... why on earth is A0 and A1-A3 on different sides of the chip?
Yeah the same thing is really annoying on the 6502 project when you go from the 6502 to the ROM chip. But at least the RAM and ROM have the same pin out so you can use all straight wires when you add that. It even makes laying out a PCB for it annoying.
I'll never understand why he went with the 74LS189... its difficult to find, plus its expensive at around $5 each when you do, . Then the regular 7489 and 189 and 74S189 version inverts the output data. It Would have been a lot easier for everyone if he went with a single ubiquitous 6116 2K SRAM that has an 8-bit data bus
Might be a silly question, but why prefer RAM rather than another EEPROM ? So that once you've programmed something to compute in it, it would compute it even after power off and on ? So that you don't need to reprogram it each time...
Frédéric Lidove EEPROM typically has a limited number of writes. It also takes a longer amount of time to write to it. Think of it as the difference between RAM and a Hard Drive in a computer. Ram is much faster, but can't store data long term without power.
Is there any simulation software I can use instead of buying parts?
yes. Logisim. I made a full replica of this entire computer in Logisim, that s super easy to use.
and Logisim is free, by the way.
12:35 designed to give active low output to enable things. bcoz everything is mostly active low lol
RE: time index 9:28- I understand your "spelling" everything out for your example, which is really good idea for someone new. But could you not use a 74HC154 to decode which EN line of "RAM" you are using? There are a lot of cool uses for the 74HC154. Also in one of your examples you use a 74HC04 Hex inverter to NOT the output of your Ram. Would it not be easier to use 74HC540? The cool thing about the 540 is one side of the DIP is your input the other side is your output. It also means you are using one Chip per 8 IO, not 2 Chips and have some left over gates/pins (which technically unused input needs to be tied high or low OR you can wind up with excessive power draws) . Plus, You don't have to dance all over the place to wire your hex NOT gate (74HC04).
Blacklab412294 hi, I have a question to your post: you spit out the chip numbers like you know them by heart, where do you get that information? I cannot guess the 74 numbers, browse for a datasheet and continue to the next one. Is there a wiki or list of chips available e.g. for adders or xor gates or such stuff from the 74 family?
Basically, when I need something like this, I "browse" electronics shop DigiKey
To find something like 74 XX 540 (and you don't know the name), i would go to Digikey subsection
"Logic - Buffers, Drivers, Receivers, Transceivers"
Use filters: "Logic Type - Buffer, inverting", "Number of bits per element - 8", "Mounting Type - Through hole"
you'll get a lot of them then, they all work, they all have datasheets and you can browse everything.:)
for decoders, encoders and similar, you go "Logic - Signal Switches, Multiplexers, Decoders"... there's thousands of parts and you can browse as much as you like, you can find anything you want.
If you don't know that something exist, it might take some time because you won't know what to search in the first place, but if you invest the time, you will find it; that's what being an engineer is all about.:)
To create custom electronics and SOC stuff (if you don't count microcontrolers, transceivers, WLAN, BT, RFID and other specific chips), I use level converters 90% of time (74HCT08 or 74HCT04 for general use, find custom stuff if you need to be more specific), buffers 5% of the time and everything else is in the last 5%.
ferrari2k
I know i'm late for class, but here's the list you requested:
en.wikipedia.org/wiki/List_of_7400-series_integrated_circuits
and here's one for the 4xxx series of CMOS chips:
en.wikipedia.org/wiki/List_of_4000-series_integrated_circuits
do you think if I use the sn74hc595n it would work ?
I THOUGHT A WORD WAS 8 BITS LONG, THATS HALF A WORD, ALSO HOW MUCH WORK IS IT TO WRITE DATA & OUTPUT ON THE PAPER, WHERES THE CLOCK ON CHIP
cool
hello so what if I want to include more than 16 byte what can I do?
Buy a bigger SRAM is probably easiest. But I get the feeling that this computer will be designed to work with 4 bit addresses, if that is the case then more things will need to be redesigned to be able to make use of the extra memory.
Any one can tell difference between ram and eeprom I think both are same...?
RAM loses its contents when the power is turned off, but the contents can be changed quickly.
EEPROM keeps its contents when the power is off, but it takes a long time to change the contents - often you only do it when the computer is turned off.
Where do you get your parts from?
theres a lot of websites online that let you buy bulk chips and circuitry components of basically any type. I would say just go to Radioshack, which with out a doubt had the most electronics components for a good price. You could buy resistors, capacitors, diodes, 555 timers etc.
Rs-components, Farnell/element14, digikey, mouser
yeah i use digikey
Google jaycar electronics if you live in aus/nz
Banggood, eBay, Ali Express in that order. After exhausting those, DigiKey. Also EEVblog did a video on parametric searching.
build this computer in minecraft using redstone, or use sandblocks and signs
Ben, why do we need 16 words?
Good, now do it with tubes, relays and hand wired core memory made with washers.
^4 bit addressed 8 bit worded memory ;)
Hi Ben, I looked up the 7400 series for a 64-bit RAM with non-inverting, three-state outputs and there is one called 74219 but it doesn't seem to be available anywhere. Do they not make this chip anymore? Why would they discontinue that but continue making a 74189 with its non-intuitive inverted output? To pass on the cost of adding a 7404 onto the consumer to get correct output from the RAM? Also, did you use NAND gates in this video for simplicity? Will you be using a 74173 for the MAR in the implementation? Thanks, love your series! It's the clearest and most well-presented on this topic on TH-cam.
How about the good old 62256 SRAM chip?
web.mit.edu/6.115/www/document/62256.pdf
You can buy those on eBay for around six dollars:
tinyurl.com/SRAM-na-eBay
(P.S.: If you're Polish, you are probably laughing your ass off right now after reading the URL ;) )
Nice. The datasheet says it's directly TTL compatible. I could use this for a system with 16-bit address bus. Thanks for the link!
Given an SRAM chip with a capacity of 32Kbytes (32K words with 8bit word length).
Outline a block diagram for such a chip, explain what inputs and outputs such a chip would normally have.
nice try.
jean-marc Lol figured it out a long time ago party pooper
If someone read this, Can you please recommend me a book to study this?
Digital Computer Electronics by Malvino (he talks about it in the first video in this series)
A book that I read that helped me is Code by Petzold
By Definition Hi. Right now am progressing thru all the video’s and building the thing myself as I go along, thereby reading all comments given by people. Am now at this video and saw your question. Besides Malvino, mentioned by Ben Eater, others have on various places recommended below two books.
But How Do It Know? - The Basic Principles of Computers for Everyone - J Clark Scott
Code - Charles Petzold.
I now own a copy from Malvino. It is quite technical and to the point. Petzold’s book looks less deep and more broadspoken but offers all kind of other interesting and useful info. Decades back I bought another book of him which I enjoyed very much. Therefor I have ordered now a secondhand copy of the Code book.
Computer have become trillions of times more powerful and the people have more than compensated for that by becoming trillions of time stupider.
Captain
I am disappointed. I hoped to see how you assemble it using latches.
Is there an alternative to the 74LS189?
4:00 HAHAHAHAHA
16 gb i doubt that is ram that sounds more like solid state/hard drive and in the case you are building it in the way to make ram so saying 16 gb would not be nice this way is and is better with this so my computer probably uses this is wrong solid state stores stuff by trapping it in a place but like you said it will run out after a bit and it needs to keep refreshing so it cant do that when a computer is off hence why they use it for ram.
You probably have a very low amount of RAM
@@megamer2340 reading my old comment gives me a stroke but idk what I was talking about
ts not wordtkthox, or inters or uninteresx,ts not play, just uses
EHSr
1:09 :D
first
No one cares.
Can the 74F189 be used as an alternative to the 74ls189?