Bus architecture and how register transfers work - 8 bit register - Part 1
Vložit
- čas přidán 1. 05. 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 CZcams was a thing. 😂
did you finish your course?
This guy's channel is a gold mine for CE/EE students! omg!
I wish I had watched this video 20 years ago when I took my first computer architecture class, thanks!
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.
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 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!
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.
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
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. ❤
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 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!
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.
One of the best tutorials ever seen in my entire life..... you are amazing ...... awesome !!
This series is a masterpiece
The way you’ve demonstrated it’s awesome
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.
Boom! And now I understand why clock speed is important. This video series is pure gold.
I remember assembly programming class was so confusing to everyone in CS class, after watching those videos, everything just makes so much sense
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've been waiting on this for months THANK YOU
This is how they should teach basic Computer System and Architecture in schools man! Loved it! Thank You Ben Eater!
Great visual evidence of how thing works, pretty much first time I saw a Bus and Register. Thanks, subscribed and appreciated
these videos are so great! thanks for uploading them, you're a fantastic teacher!
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
I love the way you explain how the bus works
Excellent, thank you Ben. Found this very helpful in understanding what the bus system actually does.
i don't think this guy knows how smart he is, love your videos man keep it up
Love you for making these videos, really easy to follow and great explanations. Looking forward to getting my own one built! :D So exciting.
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.
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
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😎
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!
It's amazing how organized is his work on the bread board
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.
not only computers organized around the bus but also factorio megabases
Thank you for another great tutorial!
you are a genius Mr.Ben. Im a Huge Fan. thanks for publishing all these.
Amazing quality and easy to learn.
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.
very good tutorial actually
pictorial presentation is best and easily understandable.... Thanks Sir..
Amazing work! Very good tutorial!
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.
I was always wondering what is a difference between D latch and D Flip-flop.
Now i understood it.
Thanks.
Quality content... quite charming
great job with these videos
Thanks from Texas.
just awesome !!!!! Very good keep it up.
Great video
This is the coolest cpu I've ever seen.
Very good!
I wish I had had access to your videos when I was studying EE, I probably would have had much better grades :-)
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
3 years of day release C&G 224 condensed into your videos 😂👍😇
Amazing, Thank you.
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?
Thanks I am your fan
cool! hats off!!!
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.
This kinda reminds me of a factorio buss where instead of data its resources
cowcannon I played a similar game
this is great
it all seems so basic, but it connected so many things I understood vaguely before...
Amazing
this is golden masterpiece.. I want this guy to be the president of the United States !
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.
I had breadboards lying around for at least 10 years, but I never knew I could detach the power rails...
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
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
Genius!
Rainbow bus all the way!
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!
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
Final exam in 4 hours let’s goooo!
8:40 ahhhh ... the magic of language. 😏
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
謝謝!
I made it!
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 (czcams.com/video/ba1d1FhcfEg/video.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!
Is it possible to nade microcintroller from ICs registers and counters latchs...?
Respect...
0:27 I can't believe you just flipped me off, bro. This vid's really good though so I'll let it slide
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.
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?
Ben would be great at factorio
it's all connected dude ●_●
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?
Are there current-limiting resistors on those LEDs you're using to show the register contents? I don't see any.
What is the awg size of the wires?
Hi Ben 74F189PC (74189 (64-bit random access memory)) is obsolete do you know of equivalent IC?
that was soo fucking cool
i can't believe i actually understood that
what are A, B, C, D modules, the only two I'm aware of are CPU and memory?
If you are meaning in the drawing, those are just example modules and could be anything.
I was thinking of replacing the RAM chip with an EEPROM but I
found out that it would be way more complex.
is the 74ls245n similar to sn74ls245n ? im confused can any one help
What happens if two enable is activated at same time
What is clock role? Any video on clock importance
Basically synchronisation; which is crucial for an "organised" functionning. Different actions ( exp: transmissions) only happen during a particular signal of the clock so that everything can evolve smoothly according to a certain rythm. If the clock wasn't there multiple actions might take place at random times and things will get mixed up. I advise you to check a course about sequential logic and differentiate between synchronised and asynchronised systems.