14:45: I really appreciate the honesty here. Too many "school projects" are stage-parented in a way that's very dishonest. Also, props to your dad for teaching you well.
Great series Lev, don't give up! We are waiting for your next video. Hey, it doesn't matter if it works or not, we can learn a lot from mistakes, even more than from well done things. So, please, give us just an update about what you are working on. Keep on and take care! Thanks for sharing.
hi, i just discovered this amazing series. but i was pretty disappointed the last update to it was 9 months old. i hope you can come back to youtube in the future:) take care
Ahhh eXXXciting stuff! Unbelievable how you gained this understanding of programming, hardware in so little years! Kudos, hope you never lose track! Cheers!
Please don't stop making these videos, I really want to do something similar and this is inspiring, I almost built an alu in my digital logic class but I never went this far. This is super inspiring, thanks for this wonderful series 👍
First Harvard, then NVIDIA snatched him, so he didn't have time anymore. I thought about making a joke like this, but it's actually true. Well, it was pretty obvious this was miles above the average amateur.
It makes me sad that not that many people are into this stuff, us computer architects need to stick together ya know. Pretty soon I'm thinking about building a 16 or 32 bit cpu that has multiple core on a idea I want to patient. I appreciate you sticking up and making a video stay safe bud. Regards, Morty.
I really love this project so far! Of course the recursive printing is just for demonstration, but one thing you could do, is only jump to the print function at the end rather than jump to subroutine. Then, when you find the null terminator, you could use return from subroutine and it would immediately go back to where it left off rather than going through every layer of recursion first. Essentially tail recursion optimization.
I'm glad you're enjoying it! I think that's just the normal way to print a string, since that's essentially a loop. I'm pretty sure it's also the most efficient way to print a string using my instruction set.
Lev Kruglyak I’m surprised that I just happened to have come up with the correct way by accident though I guess it makes sense. I love seeing these types of projects of building things from scratch. I’ve had one of my own sitting on my ideas list for a while now. I wanted to try building a hardware BF interpreter that is expandable both in memory and looping depth. Good luck with yours!
Lev, this used to be part of the BSEE undergraduate education. I hope that it still is. You sound like you're having fun. I certainly did, 45 years ago! Best wishes.
I'm in the planning stages of a similar project (although less ambitious on the speed/interfacing front and more ambitious on the architecture front). I look forward to future updates from you!
Very impressive work! And you were only in high school then? How far we’ve come! I hope you continued on the path of exploration and continue to challenge yourself. You’ve undoubtedly learned much more than you could just reading books and taking tests!
Interesting project, but I'm not sure about 14:40 - why the "RTS" instruction pops out all recursive calls at once? If you were using "23 jmp print_msg" instead of "JSR", then it would be a classic tail-call optimisation. But in that architecture, it seems you can't have more than one on-going subroutine. Am I missing something important here?
Very cool. I have been building a 4 bit computer from transistors. Very similar to what you are doing except smaller in scale and a bit simpler in design. Not using pre printed boards but still a lot of soldering. Using several data registers, alu, control logic (not in a rom), program counter, command register and an input panel. A few of my own commands, just trying to add and subtract a few numbers at first. Basically have it all in my head. Version 2 to add memory and more complex commands. Trying to do every thing with transistors, from registers to alu to logic to clock. Only problem is memory, since a computer of this time would have used core memory. Can't use transistors because that would be a heck of a lot of transistors for a small amount of memory. Oh well, will most likely use a sram chip, that should be the only compromise. Nearing version 1. All modules are working just need to tie it all together.
That's very interesting stuff. I want to learn more about computer architecture and build my own computer as well. Maybe you would like to share a video about your project progress😀. That would be a nice thing👍
Stay tuned, I’ve been very busy with work during the year, so I had to pause the project for about half a year. I started working on it again recently and I’ve already finished soldering all 3,000 transistors all that’s left is a bunch of wire wrapping
What kills these projects is memory and storage. The 4004 CPU had 2300 transistors. SRAM uses 6 transistors per bit while DRAM uses 1 transistor and a capacitor. 2KB of memory would require 12,288 transistors. It's cool but would probably be better as an educational series that just focuses on particular components and some theory or using an emulator. One of my projects in college for a digital design class was building a 4 bit ALU. It was all done with a piece of software for emulating digital circuits down to the logic gates rather than down to transistors. Even with low power transistors, eventually it gets ridiculous just to power something this complex.
Nice using through hole where you can get to the pins something magical about them. You can probably create a graphics processor unit for display that does rotation and such in hardware. Though that's a project too.
Really impressive and such commitment! Can’t wait for the next one. One question though: why not use SMD SOT323 MOSFETS? They can still be easily soldered and saves a lot of space.
The main reason was price and familiarity; I found a pretty good deal for bulk 2N7000s and I used them throughout the prototype phase so I was pretty familiar with their specs. Also I think they’re easier to solder for me, I’ve never done any smd soldering
Ive done some SMD soldering and it’s actually faster for bulk smd soldering, would save a ton on soldering but then again you wont have access to the back board for quick wire connections
Great job! Can’t imagine how much effort it takes to design and solder a whole computer just of a bag of 2N7000s. Just curious why didn’t you implement some peripheral registers based on arduino placed directly to the address bus. Though it’s never too late to attach such register implementing virtually any peripheral device.
@@douro20 It requires about twice as many transistors and more expensive transistors but virtually no resistors or diodes so less components overall. I've learned a lot since then and CMOS mainly just saves power. I really like it though and I'm going to make my design mainly CMOS despite the extra cost.
Terrific! This is way down into the 'bare metal' where every bit is built from analog. When you get around to talking about the MOSFETs, I'd like to hear about the decision you made defining levels for 1 and 0. How much can you minimize power (voltage, really) before the values become ambiguous?
where is the digital circuit design app you are using to demonstrate the circuits? It looks a little like Sabastians Digital Logic Sim app but I like the layout much better. Is it downloadable from somewhere?
it’s a Java project I made quite a while back, here’s a link to the GitHub: github.com/LevKruglyak/CircuitSimulator Just warning that this was coded by 10th grade me so it will have bugs and use way too much RAM
Technically you need at least the machine language of the target device in order to create another language that compiles to it; with that said, the first assemblers (to avoid manually keeping track of memory addresses in the code and to provide mnemonics for opcodes) were written in machine language, and the first compilers were written in assembly language.
You could, but shouldn't. You would need a current limiting resistor for the base and could drop the pulldown. The main downside to transistors is the constant current draw from the base that doesn't exist on a mosfet gate
You should be able to make the ‘readAddress’ much faster by reading entire Arduino input channels instead of just one bit at a time. I mean you can have just two 8 bit reads in order to get your computer 16 bit address, no loop required. Also use an Union to just place these 8 bit values in a 16 bit address with zero overhead.
14:45: I really appreciate the honesty here. Too many "school projects" are stage-parented in a way that's very dishonest. Also, props to your dad for teaching you well.
that is right, and let me say f*** his dad. god. the lie.
Great series Lev, don't give up! We are waiting for your next video.
Hey, it doesn't matter if it works or not, we can learn a lot from mistakes, even more than from well done things.
So, please, give us just an update about what you are working on.
Keep on and take care!
Thanks for sharing.
hi, i just discovered this amazing series. but i was pretty disappointed the last update to it was 9 months old. i hope you can come back to youtube in the future:) take care
1 year later and still nothing
I discovered it just right now.... I am really curious now...
just now : (
@@bonta4671 same
From doing some research, he seems to be in college at Harvard atm
I hope there’s more on this series! It’s beautifully simple yet complex. Also great management!
Ahhh eXXXciting stuff! Unbelievable how you gained this understanding of programming, hardware in so little years! Kudos, hope you never lose track! Cheers!
This looks awesome, I am exited to watch this project evolve.
Just in case anyone actually stumbled upon this comment, please take the time to report the two spam bots that replied to the parent comment.
😢
Amazing series!!!!!!! I’m so excited for the next video
Yea me too!!! ...
It's been 2 years :(
yea i would like to see it play tetris i hope he comes back to this project and doesnt abandon this channel
Must have gave up. It’s been 2 years….
@@josephwilliamcosta Lev got accepted into Harvard. I'm assuming he is now too busy to maintain this TH-cam channel.
Please don't stop making these videos, I really want to do something similar and this is inspiring, I almost built an alu in my digital logic class but I never went this far. This is super inspiring, thanks for this wonderful series 👍
I m really impressed. I m myself an Electronics Engineer. Really loved your work. You are a super Engineer brother. Keep it up.
"I'll probably release the third episode in a month or two"
Said he, 24 months ago
Me.
First Harvard, then NVIDIA snatched him, so he didn't have time anymore. I thought about making a joke like this, but it's actually true. Well, it was pretty obvious this was miles above the average amateur.
48 months
Your populated pcbs are beautiful! Truly a work of art. This is a spectacular project, Lev. I hope you continue with this design. Subscribed.
Ahh! You got me hooked! I hope you're doing well and you come back to this project.
Nice work Lev.
Great educational project. Trough I guess you didnt finish it as there arent any updates for 4 years..?! :(
It makes me sad that not that many people are into this stuff, us computer architects need to stick together ya know. Pretty soon I'm thinking about building a 16 or 32 bit cpu that has multiple core on a idea I want to patient. I appreciate you sticking up and making a video stay safe bud.
Regards,
Morty.
NOOO I THOUGHT THE SERIES WAS COMPLETED
Well done mate! Awesome job! I am really excited while waiting for your next videos!
Watching the stack pointer jump back after finishing recursion was really neat!
Hi!
Great project!
We are waiting for the next part, I hope it will be soon
Best wishes
Part 3??????
😂
I really love this project so far! Of course the recursive printing is just for demonstration, but one thing you could do, is only jump to the print function at the end rather than jump to subroutine. Then, when you find the null terminator, you could use return from subroutine and it would immediately go back to where it left off rather than going through every layer of recursion first. Essentially tail recursion optimization.
I'm glad you're enjoying it! I think that's just the normal way to print a string, since that's essentially a loop. I'm pretty sure it's also the most efficient way to print a string using my instruction set.
Lev Kruglyak I’m surprised that I just happened to have come up with the correct way by accident though I guess it makes sense. I love seeing these types of projects of building things from scratch.
I’ve had one of my own sitting on my ideas list for a while now. I wanted to try building a hardware BF interpreter that is expandable both in memory and looping depth.
Good luck with yours!
And here i thought i was gonna see this entire series only to realise you havent posted for 2 years..
Yeah... it's a pity. Maybe he enrolled to college, and now doesn't have time for real professional stuff, like this - been there, done that
Excellent video and start to a transistor computer! I'll definitely look out for your next video!
this channel will explode
Lev, this used to be part of the BSEE undergraduate education. I hope that it still is. You sound like you're having fun. I certainly did, 45 years ago! Best wishes.
I'm in the planning stages of a similar project (although less ambitious on the speed/interfacing front and more ambitious on the architecture front). I look forward to future updates from you!
Very impressive work! And you were only in high school then? How far we’ve come! I hope you continued on the path of exploration and continue to challenge yourself. You’ve undoubtedly learned much more than you could just reading books and taking tests!
Interesting project, but I'm not sure about 14:40 - why the "RTS" instruction pops out all recursive calls at once? If you were using "23 jmp print_msg" instead of "JSR", then it would be a classic tail-call optimisation. But in that architecture, it seems you can't have more than one on-going subroutine. Am I missing something important here?
At least you owe us an explanation as to why we do not see a third and fourth... video.
Great stuff so far, I'm looking forward to seeing the next video you make, whatever it may be
Looks like it is using an FFTs to do the division the algorithm is found in the Numerical Recipes in C/C++.
Great work, but; 7:55 When will the future video come? It's 2 years later now. 😁
Very cool. I have been building a 4 bit computer from transistors. Very similar to what you are doing except smaller in scale and a bit simpler in design. Not using pre printed boards but still a lot of soldering. Using several data registers, alu, control logic (not in a rom), program counter, command register and an input panel. A few of my own commands, just trying to add and subtract a few numbers at first. Basically have it all in my head. Version 2 to add memory and more complex commands. Trying to do every thing with transistors, from registers to alu to logic to clock. Only problem is memory, since a computer of this time would have used core memory. Can't use transistors because that would be a heck of a lot of transistors for a small amount of memory. Oh well, will most likely use a sram chip, that should be the only compromise. Nearing version 1. All modules are working just need to tie it all together.
That's very interesting stuff. I want to learn more about computer architecture and build my own computer as well. Maybe you would like to share a video about your project progress😀. That would be a nice thing👍
TNice tutorials helped sooo much!
I find it weird you have so little subscribers because you are amazing
More than half a year has passed, and I have been waiting for your third video.
Stay tuned, I’ve been very busy with work during the year, so I had to pause the project for about half a year. I started working on it again recently and I’ve already finished soldering all 3,000 transistors all that’s left is a bunch of wire wrapping
@@levkruglyak did you enter MIT?
@@levkruglyak i am going to enjoy it and i will try to make it
@@levkruglyak Even a year on were still waiting (but take your time).
@@levkruglyak could you give us a update
Still waiting for the next video :3
Would be really interesting to see this project made with SMD and no floating wires
What kills these projects is memory and storage. The 4004 CPU had 2300 transistors. SRAM uses 6 transistors per bit while DRAM uses 1 transistor and a capacitor. 2KB of memory would require 12,288 transistors. It's cool but would probably be better as an educational series that just focuses on particular components and some theory or using an emulator. One of my projects in college for a digital design class was building a 4 bit ALU. It was all done with a piece of software for emulating digital circuits down to the logic gates rather than down to transistors.
Even with low power transistors, eventually it gets ridiculous just to power something this complex.
Love the thanks to your Dad.
Will you make a part 3 any time in the future?
props to dad for making the assembler !!
Hey Lev,
What happened at the end? no more videos?
What program is he using At 7:05 I want to see it or use it
hey, will you continue this series?
If you had used 74 series logic chips or maybe smd instead of through hole, would it be easier to make it run faster?
Most definitely, it would be possible to get it to run in the megahertz range then.
Amazing work.I'll try it out in a minute, because you've given the gerbers file.
what program did you use at 6:37?
Nice using through hole where you can get to the pins something magical about them. You can probably create a graphics processor unit for display that does rotation and such in hardware. Though that's a project too.
What a neat project! Did you continue it or have to put it on indefinite hold?
What types of electronic components do you use?
Really Nice Architecture!
Hope you get through college using that!
Carry in+carry out is not a half adder, but a full adder. Half adder only has carry out
Really impressive and such commitment! Can’t wait for the next one. One question though: why not use SMD SOT323 MOSFETS? They can still be easily soldered and saves a lot of space.
The main reason was price and familiarity; I found a pretty good deal for bulk 2N7000s and I used them throughout the prototype phase so I was pretty familiar with their specs. Also I think they’re easier to solder for me, I’ve never done any smd soldering
Ive done some SMD soldering and it’s actually faster for bulk smd soldering, would save a ton on soldering but then again you wont have access to the back board for quick wire connections
Part 3 when it reaches 100k Views? 🥺👉👈
What program is that Digital Circuit Simulator? I can't seem to find it
its a custom program I made a few years back: github.com/LevKruglyak/CircuitSimulator
@@levkruglyak when will the next video in this series come out
No part 3 yet? :(
Cool project and video! Here's to hoping you will get around to doing the rest of it :)
How about using STM32 to replace arduino mega, so you can run it faster than 4khz?
but a stm32 is 3.3 volts so a lot of level shifters are needed
I build TTL from bjt once but never sucess to build CMOS. seem like FET inside CMOS has very high ON-resistant so it not worry about shoot-through.
Hopefully this gets continued!
what program is it at 6:44
Hello friend can you create a video about the gates and create the projects with gate
You are really inspiring.......
What the program you use 6:12 ? Thanks)
It’s a program I made myself in Java, which I haven’t released publicly yet
@@levkruglyak wow, ok, thanks)
What program are you using to simulate all this appears in multiple points in this video and I don’t know what the problem is
7:21 what software are you using
Any one?
@@1frīja i read his quora ands its something hes made himself, which im guessing isnt available unless you contacted him
It might be possible to have it built using SMDs and make the whole unit smaller.
Great job! Can’t imagine how much effort it takes to design and solder a whole computer just of a bag of 2N7000s.
Just curious why didn’t you implement some peripheral registers based on arduino placed directly to the address bus. Though it’s never too late to attach such register implementing virtually any peripheral device.
Cool! Still waiting for the next episode, though
Very interesting, keep going!
Hey great video why did you go with MOSFET's? Are you planning on doing CMOS?
He said one day. It would be good to go to CMOS eventually as it doesn't require as many transistors.
@@douro20 It requires about twice as many transistors and more expensive transistors but virtually no resistors or diodes so less components overall. I've learned a lot since then and CMOS mainly just saves power. I really like it though and I'm going to make my design mainly CMOS despite the extra cost.
Terrific! This is way down into the 'bare metal' where every bit is built from analog. When you get around to talking about the MOSFETs, I'd like to hear about the decision you made defining levels for 1 and 0. How much can you minimize power (voltage, really) before the values become ambiguous?
when will the part 3 come out?
never
@@Mizai y :[
@@Mizai hopfully not
Did you using putty to connect with it?
where is the digital circuit design app you are using to demonstrate the circuits? It looks a little like Sabastians Digital Logic Sim app but I like the layout much better. Is it downloadable from somewhere?
it’s a Java project I made quite a while back, here’s a link to the GitHub: github.com/LevKruglyak/CircuitSimulator
Just warning that this was coded by 10th grade me so it will have bugs and use way too much RAM
@@levkruglyak Do not apologize you should be proud of what you have done. Thank you for sharing.
Which specific mosfets are you using?
Jamon Terrell I’m using 2N7000s
Awesome project!
Looks amazing
Wow. Impressive.
ayo how are you going to do the control word??
please,, come back when you got time, i'm really curious
No part 3 in a year... Owell 2 good videos anyeay
wow. i accidently found this awesome channel . pls consider making a simple os for a simple processor in the feature.
Been two.years buddy, what's the hold up?
How can we make our oun programing language in my oun device without any other computer language 😊
Technically you need at least the machine language of the target device in order to create another language that compiles to it; with that said, the first assemblers (to avoid manually keeping track of memory addresses in the code and to provide mnemonics for opcodes) were written in machine language, and the first compilers were written in assembly language.
how do i bookmark this video?
I wish i had the time to learn and understand all of these things.
this is the greatest computer homemade i have ever seen with transistors i am waiting for more parts and excelent job.Also can i use bc547?
You could, but shouldn't. You would need a current limiting resistor for the base and could drop the pulldown. The main downside to transistors is the constant current draw from the base that doesn't exist on a mosfet gate
Keep up the good work!
Where is Part 3?!?!?!
where is the new series?
Mind-blowing. I see you used Powder Toy to simulate the computer.
Not exactly, I coded this logic gate simulator myself. Powder toy seems really cool though, so thanks for the reference.
You should be able to make the ‘readAddress’ much faster by reading entire Arduino input channels instead of just one bit at a time. I mean you can have just two 8 bit reads in order to get your computer 16 bit address, no loop required. Also use an Union to just place these 8 bit values in a 16 bit address with zero overhead.
Where are you now?
Second ... and last episode ?
Really informative content!
And then he passed to surgeon classes and dropped the project. The end.
Very amazing!!!!
no part 3 whyyyyy :D