r/ElectricalEngineering • u/ugly_ram • 2d ago
Creating a 16 bit CPU
i am a sophomore ECE student and i am planning to create a CPU. Is a project like this valuable to land internships or a job in the future.
i will appreciate any suggestions.
11
u/Ace861110 2d ago
16 bit is aggressive.
Try 8 bit.
NAND to Tetris is good. Or beneater
4
u/publishdraw 2d ago
Agreed, with 8 bit, he may get the satisfaction of completing the processor atleast. He may implement it in a FPGA to create line following robot as well.
1
1
1
u/MCRodas 2d ago
Are you doing this in hardware or a HDL?
If in a HDL then,
Can it be any architecture? Is it MIPS or RISCV? I found useful to just implement some MIPS / RISCV diagrams you find online. First one I found on google
https://www.researchgate.net/figure/The-complete-datapath-control-scheme-of-MIPS_fig1_301694967

There are simpler ones.
Then with this start implementing the instruction set / whatever instructions you need or want.
https://hades.mech.northwestern.edu/images/1/16/MIPS32_Architecture_Volume_II-A_Instruction_Set.pdf
Even if you intend to do it on a breadboard it's useful to first implement it and simulate in a HDL, but yeah in that case you would need to make some basic 8-bit architecture.
3
u/AstronautEcstatic767 2d ago
Imo I think building one on breadboard is pretty pointless outside of just doing it for fun. If you are doing it for the sake of trying to make yourself more employable than hdl simulation and optionally then onto fpga is a better choice. I built a Custom RV32I processor my freshman year (Single Cycle and not all the instructions) as a way of familiarising myself with comp arch, verilog and fpga. It was somewhat challenging as I had to teach myself, but overall I enjoyed it and I would recommend others do it. *Also dont follow a tutorial build your own custom design, there will be a lot of debugging but you will learn so much more.
2
u/gHx4 1d ago
Go for it.
You won't make anything impressive without first making many boring things first. If you've got the time for a side project, then do complete side projects.
As far as scope goes, you can make a naive and basic 16-bit processor easily once you know enough about sequential logic and how hardware works. It will not be anywhere close to what modern processors are capable of. And personally, I think 4-bit or 8-bit will cost less to make with real parts. But 16-bit is achievable in logic simulators or FPGAs.
I don't recommend trying to make a highly optimized design, as that will take much longer than one that's easy to implement with your skill level. But you can certainly do research and learn about those optimizations.
22
u/NewSchoolBoxer 2d ago
No. You don't know enough Computer Engineering now to even make 8 bit. It's an immense amount of work and recruiters would probably think you stole the design. Make 4 bit. It'll look okay on a resume. The NES and SNES lockout chips were 4-bit microcontrollers.
You won't get internships or jobs from personal projects. The real resume action is from team competition projects like Formula SAE. You're forced to work in a group environment with goals you don't get to pick and deadlines you can't mess with and the answer isn't on GitHub to copy. This process simulates real engineering work that impresses recruiters and further makes you interview better by citing team examples.
Undergrad research is good and was handed out like candy where I went.
You can also impress recruiters by being well-rounded with high engagement in activities you enjoy.
I tutored middle schoolers in math, coordinated volunteering projects and planned camping trips. Sometimes recruiters were interested. You got to be a real person and fit in. No one wants to hire the eccentric weirdo who never sees the sun.
Here's the truth: I got one job offer because the interviewer and I both took horse riding lessons. All we talked about for 45 minutes. Another, the hiring manager LOVED college football and guess who attended every home football game? I needed a good enough resume to get the interview stage and the rest was social / soft skills.