Let's Make Robots!

Creating a Microcontroller from Scratch

So i want to make a basic first robot and i understand what to do with an already built microcontroller but as a challenge i actually want to build a microcontroller from SCRATCH.

Yes i understand that it's a tough thing to start off with but my plan is to understand how everything works by actually doing it. I'm currently working towards an electrical engineering degree so i know basic terminology or i can look up anything new.

Basically, can anyone provide links/videos/books/comments that i should read to understand how to start building a microcontroller from scratch. I know that once i get going or when i get in the 'zone' i will get the hang of it, but starting is the hard part right now because i have no idea where to start. I have coded before in plenty of languages so programming is definitely not a problem too.

Thanks

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

 

If this makes sense to you, you can make each "block" out of discrete logic. Over your head yet? Start simple.

What features do you want to start with on your microcontroller (MCU)? You will need to build each part in isolation, verify its operation, and then put them together.

If you plan to make one comparable to a basic MCU such as an Atmel AVR ATtiny13 it will be one giant and expensive microcontroller.  Have you considered using discrete parts in conjunction with a field programmable gate array? Read this datasheet:

http://www.atmel.com/dyn/resources/prod_documents/doc2535.pdf

Thanks for the replies guys. I think i used 'from scratch' incorrectly. I definitely don't want to recreate each part literally from scratch, i'm not reinventing the wheel here :)

I understand how transistors are made. I took VLSI courses, and i know what everything in the above picture is.

rogue's answer is probably what i'm thinking of doing actually (but I didn't word my question properly): " Have you considered using discrete parts in conjunction with a field programmable gate array?"

The main problem for me right now is that it still hasn't 'clicked' in my brain yet. Can i go out and purchase a kit with pretty much everything that i need, then kinda "rip out" the mcu and introduce an fpga that i manually program myself? Does that make any sense or does anyone have an idea? 

I want to use this for a school project, but i don't want to go and purchase everything already premade and then put it together in a week and that's that. I want to reprogram a central part of the kit somehow but i don't have the knowledge to express myself properly. Any comments?

This must be one of the most ambiguous projects in here.
I’m not saying that it can’t be done, but after months of work and lots of money you might be able to do some simple tasks that is nowhere near what you would get out of a $1,- microcontroller.
To illustrate, have a look at the Transistor clock http://www.transistorclock.com/ and that’s far from a microcontroller.

 

Thanks for the replies guys. I think i used 'from scratch' incorrectly. I definitely don't want to recreate each part literally from scratch, i'm not reinventing the wheel here :)

I understand how transistors are made. I took VLSI courses, and i know what everything in the above picture is.

rogue's answer is probably what i'm thinking of doing actually (but I didn't word my question properly): " Have you considered using discrete parts in conjunction with a field programmable gate array?"

The main problem for me right now is that it still hasn't 'clicked' in my brain yet. Can i go out and purchase a kit with pretty much everything that i need, then kinda "rip out" the mcu and introduce an fpga that i manually program myself? Does that make any sense or does anyone have an idea? 

I want to use this for a school project, but i don't want to go and purchase everything already premade and then put it together in a week and that's that. I want to reprogram a central part of the kit somehow but i don't have the knowledge to express myself properly. Any comments?

 

I think you should learn the basics of fpga programming and take it one step at a time... eventually you can implement basic uarts, display drivers, digital signal processing, etc! Awesome stuff

Thanks for the comments everyone. Rogue's comments put me on the right track and now i know what i'm doing. No 'from scratch' headaches for now :) Instead i'll do what Rogue suggested and go from there.

I guess the FPGA way is the most appropriate.

Have a look at Opencores (opencores.org). They have open source elements for FPGA.

Search for microcontrollers.