Bus architecture and how register transfers work - 8 bit register - Part 1
HTML-код
- Опубликовано: 1 май 2016
- Before we build the registers for our 8-bit computer, this video describes the basic operation of the bus and how data moves from one module to another across the bus. See eater.net/bbcpu8-registers for more.
Support me on Patreon: / beneater
I think one of the reasons why Ben started this video series is to demonstrate his awesome colorful set of ball pens.
nah ... he just moved and couldnt find his legos but he did find all these bits and bobs from the old days so decided to make something with them ;)
I too enjoy color coding my notes. You should see my physics notes. Every variable and coefficient has its own color. I think its kind of like OCD, but I just like everything to be neat.
I respect Ben for his use of color. My brain processes it better for some reason.
All Pilot G2's, too. Gotta say, I envy him
😂xD
That he built on breadboards.
I recommend this channel so often to my classmates. I think they are beginning to think I am a little crazy by how much I enjoy learning the meat of the machinery.
Most students these days just want to learn the higher level abstractions, and learn them fast to graduate ASAP and get a good job. I want to build this 8 bit computer out of transistors!
Most "students" these days are not students in the old-way, that is an apprentice to mastery within the community. If a blacksmith died his kin took up the anvil, and if they were incompetent the entire community faltered. I believe there used to be more honor and integrity associated with *mastering* your craft, instead of simply making it financially viable to commercial interest (the bare minimum). Somewhere along the line I think these two were conflated: ie degree (piece of paper) = mastery.
@@Retrofire-47 That point is when you stopped having workers be valued by their employers. If your employer only cares about how much value you can produce for them, then you stop caring about learning the deeper information for them.
Transistors would be fun
don't make it with only transistors
It's been said before, but I will add, "your breadboarding skills are a work of art".
Taking a computer architecture course, and this is just what the doctor ordered. Thanks!
Roger Co
Same Here
I took Computer Architecture 10 years before RUclips was a thing. 😂
did you finish your course?
This guy's channel is a gold mine for CE/EE students! omg!
I love these kind of tutorials that are clear but very complex at the same time so I can understand a lot but it is still not too hard to understand. Thanks!
The data on the bus goes round and round, round and round, round and round, the data on the bus goes round and round, all day long!
Loved it. As a Embedded Software Developer, It was not easy to understand it fully as you have to assume since we can't see it with eyes. But, this made me feel so good. Learning Electronics is fun 😀. Wish I watched when the video was uploaded. Better late than never!!!
I wish I had watched this video 20 years ago when I took my first computer architecture class, thanks!
2:26 Since I mentioned that I had build a Minecraft CPU on the previous video... I'll add that having separately build a primitive ALU, D-flop-flop registry, some sort of program memory (i.e. where the program is stored), and a clock with a manual cycle button and then connecting it all together with a bus... Just manually turning bits on and off in the program memory and hitting that 1-cycle button on the clock; to see the data go from the memory, to the registry, change a few bits, hit 1-cycle, and see the ALU slowly work through it. Beautiful.
@Graystripe Oh I only work with what you can do in survival. In fact, I had to look up what structure blocks even are xD
Hi Ben, in the off chance you see this, I just finished building the clock module and I'm about to build the register and ALU kit. So far it's been a lot of fun! looking forward to finishing this computer. I wish this were how electronics were taught in school. It's a lot more engaging.
I love how you say "just take it on faith" :)) Thank you very much for making these videos, they are extremely helpful! Especially for a concrete learner like me.
This is great. It's basically what I knd of figured out when building my first kit computer in 1980. It's really useful even today because it's still the way things work you just dont see it anymore.
This coloful board finally makes me understand how bus, ram, register work. These concepts are so abstract that I could never understand without the demostration of the real circuits board. Thank you so much for making these video!
oh my god. i always had a hard time getting T-states and how an instruction cycle works. cycle by cycle, how reading and writing is done according to control signals. this is sooo good. i cannot stress this enough. this has helped me so much with my academics.
thanks from the bottom of my heart. because what you teach, not even my professors do and that is what i'm paying for. ❤
Excellent! Everybody studying computer science must watch these video series. Thank you so much for your effort and time. Kindly think about to do more related to this topic. You are an extraordinary teacher.Thank you again Ben.
Your videos are an amazing resource for my computer architecture class. Im a visual/tactile learner so seeing a well done physical representation of these concepts is so helpful.
One of the best tutorials ever seen in my entire life..... you are amazing ...... awesome !!
This is quite understandable even for a 14-year-old guy here thanks to you and your presentation. Human brains are more capable of to read and to understand visual representation of things, rather than logic. I was really confused how systems work because I just started assembly, until now.
Great visual evidence of how thing works, pretty much first time I saw a Bus and Register. Thanks, subscribed and appreciated
these videos are awesome ben I'm having a lot of fun learning about how computers work on the small scale and I hope to order all the parts soon to follow along with the build process
Boom! And now I understand why clock speed is important. This video series is pure gold.
This series is a masterpiece
This is how they should teach basic Computer System and Architecture in schools man! Loved it! Thank You Ben Eater!
this is really exciting! colleges should be indebted to people such as you. I am following along with your breadboard computer series as I embark in CS170. What was once a dreary black and white bullet point list of to-dos and completed has transformed into a bird's eye of this shining city on a hill.
I've been waiting on this for months THANK YOU
The way you’ve demonstrated it’s awesome
Love you for making these videos, really easy to follow and great explanations. Looking forward to getting my own one built! :D So exciting.
i don't think this guy knows how smart he is, love your videos man keep it up
I remember assembly programming class was so confusing to everyone in CS class, after watching those videos, everything just makes so much sense
Excellent, thank you Ben. Found this very helpful in understanding what the bus system actually does.
these videos are so great! thanks for uploading them, you're a fantastic teacher!
I wish I could go way back in time and show these videos to my electronics teacher at school... He would have said "woah! Let's make one of those!"
I should have just paid my $35,000 college tuition to you.
Only 35k?
Try *80*
@@pichass9337 80 dollars? HELL YEAH!
@@heh2393 i wish...
@@pichass9337 I am lucky, India's best colleges offer nearly full scholarship
That's really too much 😱
But I am quite lucky dude😎
I love the way you explain how the bus works
Finally, my idiotic misunderstanding of how a data bus works, is broken. In my defence, from childhood i was fed pictures, graphics and animations of data 'travelling' on a road, like cars on a street. This picture never made much sense to me, but since I ended up working in 'IT', it was never challenged and I never fully examined it. The data bus works exactly like you would expect in the real world of wires - it is used to make one transmission and then another..tick tock, tick-tock as the clock ticks and tocks. Thank you - your series is an absolute gem.
you are a genius Mr.Ben. Im a Huge Fan. thanks for publishing all these.
This is so educational, thank you so much for this awesome content!
This actually reminds me so much of my factorio Factory. I greet all of you who understand this message! For all of you that don't... Play Factorio
It's amazing how organized is his work on the bread board
not only computers organized around the bus but also factorio megabases
pictorial presentation is best and easily understandable.... Thanks Sir..
Thank you for another great tutorial!
Amazing quality and easy to learn.
Amazing work! Very good tutorial!
I was always wondering what is a difference between D latch and D Flip-flop.
Now i understood it.
Thanks.
Now I see how a computer clock works! An action - read/write/execute - takes place with each pulse of the clock!
dempends on the design, but most take multiple cycles to preform any action.
great job with these videos
Quality content... quite charming
very good tutorial actually
just awesome !!!!! Very good keep it up.
Thanks from Texas.
I wish I had had access to your videos when I was studying EE, I probably would have had much better grades :-)
Thanks for the video. I have an old dream about building smth like a computer inside some games, as you may have seen already (Minecraft, Factorio), but until this time I had very poor knowledge about its architecture. You've inspired me greatly! :) Also, I've partially read Tanenbaum's book, so I already now some basics about architecture, but I got stuck at a question which is not well covered there actually. Many sources in Internet tell us about 3 main "sub"-busses inside the bus: control-, address- and data-buses. Ok, that seems reasonable. The 8-bit bus in your example seems to be the data-bus when speaking in these terms. But, what I'm looking for, is the answer: how does cpu tell which exactly "device" it is going to communicate with? Using control-bus? As you said in your example, some control wires enable/load specific registers. So, concerning my question, I suppose, control bus is usually used to address specific device, so as I suppose there should be some "address" lanes inside it, which specify the "address" (a number in other words) of a specific device (assuming all devices have predefined number, which is "hardcoded" in the architecture - just for simplicity). Is that correct understanding?
using this guide to make minecraft computer
Vincensius A have fun with the repeaters.
+StarTrek123456 Thats why the project red mod is usefull
I presume that you've found Super Circuit Maker. If you want to do minecraft redstone, it's better with SCM.
Instant repeaters are a thing, they are fucking amazing, i have 2kB of RAM and can access any data within a few seconds
It's working fine with redstone hahaha
Great video
1 + 1 is no longer 2! Rather, it's 0 (carry the 1).
It's also 2. It's like if you're adding 9+9 on paper, the answer is 8 carry the 1, but that's the same thing as 18
Amazing, Thank you.
3 years of day release C&G 224 condensed into your videos 😂👍😇
This is the coolest cpu I've ever seen.
Very good!
I had breadboards lying around for at least 10 years, but I never knew I could detach the power rails...
Would a similar machine with separate data and instruction memory with 2 buses, ie. a Harvard architecture be much more complicated than your current design?
Though a Harvard architecture would be completely different, I think It could be done very close to as simply as this machine.
it all seems so basic, but it connected so many things I understood vaguely before...
Thanks I am your fan
cool! hats off!!!
This kinda reminds me of a factorio buss where instead of data its resources
cowcannon I played a similar game
I haven't seen the following videos (doing right now), so if you if you talked about this in the following video, please ignore my comment; but I think an explanation of the tri-state concept at this point would be very helpful at solving the naturally occurring riddle "yes but what does it even mean 'enable the output', is the output of register-X's Nth bit high or low?? And how does the bus handle two registers outputting different values on the same bit?"
That being said, thanks for this series, I have so badly wanted to make it myself
[EDIT] Loool, you had already addressed exactly this point in the following video, as suspected xD
this is golden masterpiece.. I want this guy to be the president of the United States !
this is great
Amazing
I was wondering why the new sum at 5:18 is not fed into register A again, since I remembered Ben explaining D flip-flops as essentially sampling at the rising edge of the clock for a tiny amount of time. So if the tiny amount of time was long enough and the adder was fast enough this would result in a feedback loop doing two or more consecutive additions here ((a+b)+b). I found a detailed video on how D flip-flops actually work (ruclips.net/video/ba1d1FhcfEg/видео.html): They sample continuously at clock low and at the rising edge disable sampling and enable output. This way it makes much more sense, since the output enable from the adder is set at the falling clock edge, the value is on the bus before the rising edge occurs and will be sampled by the D flip-flop only until the rising clock edge occurs. Hope this helps someone who was wondering about the same thing!
BTW Thank you very much Ben for these awesome videos!
謝謝!
Rainbow bus all the way!
8:40 ahhhh ... the magic of language. 😏
Just an idea, you could use priority encoders to activate the load or enable signal. The way they work is you give it a binary number for input and it sets the corresponding output pin high. So you can even have a binary address for the devices corresponding to whatever pin they're on. That's how they address multiple RAM chips.
I think you're thinking of a demultiplexer, which is kind of the inverse of a priority encoder?
A priority encode takes in a number of signals and e g gives you a binary number that says which was the lowest numbered one that was high.
A demultiplexer takes in a binary number and pulls exactly one of its output signals high. That could indeed be very useful if you know that you only want to activate one of the loads and one of the enables, and you want a compact way to represent which one.
For enable, you definitely only want to activate one at a time. For load, there are some tricks you can pull by loading the same value into several registers at the same time, I've used that in a design I did which had a multiply-adder that was fed from three registers: R = B*C + D. Every instruction was implemented in microcode that manipulated these registers to make computations, but looking at the instruction set, there was only one register, A. I let the last cycle of each instruction that updated A write its result to B, C, and D at the same time, so no matter which instruction came next, and if it needed the last result to be in B, C, or D, it would be able to find it in the right place.
@@possible-realities Nah, you've got it backwards. Priority encoders only activate one output at a time, depending on the input. While MUXes output a binary number equal to the input into whatever channel has been selected via your select pins.
I was gonna post wiki links that explain how these work, and so you don't have to take my word for it, like so many commenters expect you to. But instead I'll provide links to interactive examples of each circuit presented in an analog/digital circuit simulator that runs conveniently in your browser. Then you can both not have to take my word for it, and you can play around with them and perhaps remember some stuff you may have forgotten. Or find some stuff I was mistaken about. Either way, you can't go wrong. Plus it's great software to have around:
[edit] After playing around with it, I realized what I was actually talking about was a 1 of n encoder. Not a priority encoder. So I take back what I said about the priority encoder's output and just pretend I was talking about 1 of n encoders instead. You'll see what I mean in the links.
So here's the 1 of n encoder that I MEANT to be talking about:
tinyurl.com/yeua4a3r
Here's a priority encoder, which is what I THOUGHT I was talking about:
tinyurl.com/yhgrtkj2
And the only example the had for a de/mux used discrete parts, so I just threw together my own circuit using chips instead and included a MUX and DEMUX for good measure:
tinyurl.com/yeaqo5kv
Genius!
I love these videos, I just cant find the right order. I just finished the clock videos and I don't know what is next
Gary Cunningham , I recommend go to the "videos" tab of Ben's channel and watch them in the order they were uploaded.
From what I've seen, they each build on previous work in a logical manner.
Just wondering, what breadboards are you using? All the cheap breadboards that can be pulled apart like that I can find have horrible holes that are either too tight or too loose, and they're warped so they don't sit flat when you connect them to each other. The only ones I've found that work properly are made by Pro'skit and they're expensive and don't come apart, instead of an adhesive bottom they're solid plastic. Thanks for the great videos!
Respect...
So the bus is pretty much a distributed multiplexer/demultiplexer ;)
Also it's quite interesting that the internal structure of a CPU is pretty much the same as the structure of the entire computer itself - just instead of RAM/ROM memory, peripheral I/O devices and the CPU, there are registers, status/control words and the ALU. Turtles all the way down...
Bon Bon very smart Ponus
Is it possible to nade microcintroller from ICs registers and counters latchs...?
Can you give me a parts list or an estimate of how many chips I should buy and which (I'm German sorry for bad English)
go to Eater.net, thats his website with all the info you wanted
Are the load/enable operations essentially the same thing as read/write operations, just at the hardware level? Or does other, non-memory hardware also use the load/enable nomenclature with maybe some subtle differences?
It's definitely related, but I wouldn't say it's the same. Load reads the value from the input (e.g. the bus) into a register. You could say that enable writes the value in a register onto the bus, but you need to remember that the bus doesn't have any memory itself, so the value only stays on the bus for as long as the enable is high (and the value in the register driving it stays the same).
Another difference is that there might be many more enable and load signals in the hardware than the kinds of reads and writes that you see at a software level, a lot of it is just needed under the hood to make things work.
In software, you can speak of doing a read from memory or a write to memory. But if you're communicating over a bus, you need to both enable the source that will drive the bus and enable the load from the bus in the same cycle transfer anything. On the other hand, if you have a dedicated connection to a register, then a load signal is enough to read the incoming data.
Final exam in 4 hours let’s goooo!
I've been googling but i can't find what is an 8 stage shift-store bus register. Is it the same as 8 bit bus register?
0:27 I can't believe you just flipped me off, bro. This vid's really good though so I'll let it slide
it's all connected dude ●_●
I made it!
I was thinking of replacing the RAM chip with an EEPROM but I
found out that it would be way more complex.
Ben would be great at factorio
is the 74ls245n similar to sn74ls245n ? im confused can any one help
What is the awg size of the wires?
What happens if two enable is activated at same time
What you need to know about refunds and their anticipated actions
Nice tutorials, just try puzzle how it works. from start you have memory set to 0 and data has 1F that means instruction load A from F address, 1 clock cycle that data goto (control register or what ever that is) then next cycle it change memory to location F. then it loads it to A. then program counter change memory to 1 and there is 2E(load B from memory E) after it has load to B register. why databus is getting data from APU it wasnt do that when load A i not understand why it go to A? when controll register still have instruction load B :)
so you have build that just do that ADD function. will it continue for memory 3 after that?
I checked and this is handed by the clock pulse. The A register will latch the result on the rising edge of the clock pulse, before the ALU has a chance to output the updated addition.
So long as the A register's load pin goes inactive before the next clock pulse comes around, it won't keep on adding and adding and adding.
See the 18th video in this series entitled "Testing the computer's ALU"
Are there current-limiting resistors on those LEDs you're using to show the register contents? I don't see any.
I think one important piece of basic information missing is why an 8 wire bus is used instead of 1 wire.
Hi Ben I really like your channel and I especially like that very colorful bus drawing at the end of this video. Is there a way I could support your channel by purchasing that design on a t-shirt, or perhaps a similar design on a tie?
Hi Ben 74F189PC (74189 (64-bit random access memory)) is obsolete do you know of equivalent IC?