So this was all just simulated? Where are the pictures of the build?
Back in the day i built a 4-bit CPU on a breadboard (it was huge actually spanned 3 breadboards). Programming the ROM by hand like cavemen (to be fair it was the cave ages). We didn’t carry cameras in our pockets so sadly we didn’t get a picture.
intrasight 1 days ago [-]
My "back in the day" project, which everyone in class (could work in team up to 3) had to do was a wirewrapped breadboarded 8-bit CPU. We had to demonstrate it solving some problem. Extra points for doing something with an I/O channel.
At the end, my team drew straws to see who would get to keep it. Alas, I didn't win.
CMU in 1986.
CorRupT9 15 hours ago [-]
We actually made it on breadboards, since it was hardwired the bread-borad is now a sea of wires everywhere, and some things are not working too. I am thinking of getting a custom PCB just for the control unit to make it presentable.
variaga 1 days ago [-]
I did the same (4-bit cpu, 11 instructions) in my Microprocessors class, out of 74-series logic, one GAL20V8 to handle the SLE instruction and an EPROM (not an EEPROM - one with the clear window you exposed to UV light to erase.
That was also where I learned about ground-bounce & dynamic IR-drop effects due to those long looping wires between breadboards.
That was a fun class.
floxy 18 hours ago [-]
Raise your hand if you still have a UV eraser at the bottom of a cabinet somewhere.
osigurdson 2 days ago [-]
A 2nd year project back in the day was to build a 4 bit CPU on a breadboard. We had the advantage of having an ALU IC but was still quite tough to get working!
tralarpa 1 days ago [-]
You were in good company. The Xerox Alto CPU used four 74181 ALUs.
pjc50 1 days ago [-]
This is also very well documented. Probably as part of the assessment, but it's nice to see.
It doesn't appear to have any kind of interrupts, which is quite a limitation for actual usecases, but also makes the architecture much simpler.
The use of dual phase clocking is interesting. The document describes it as having the control and data paths operating on opposite phases. I'm curious as to where you got this technique from, since it's not common (apart from the use of both edges by DDR RAM). I also suspect that it would go away if you had better tooling for managing setup and hold violations (does logisim do that for you, or did you have to manage it manually somehow?). Not all FPGA tools like nonstandard clock architectures.
CorRupT9 16 hours ago [-]
Actually this was my very first implementation, even in simulation it had to be made on boards someday keeping timing skew and capacitance of boards in mind i decided to flip the clock, this will give the control unit a head start of half a cycle and get everything ready before the clock reached the next high, this trick was also used in one of the projects I mentioned at last page in the document. I had to probe and check every signal keeping the standard gate delays of 74 series in equation too!
ninalanyon 1 days ago [-]
Not having interrupts isn't necessarily a problem. In fact if you want to be sure that the processor behaves deterministically then you might choose to not have interrupts. I remember seeing an article about the British RAF commissioning a CPU design and explicitly forbidding interrupts for that reason. Unfortunately I don't remember where I saw it so I can't check to see if my memory is faulty.
sehugg 1 days ago [-]
The dual phase clocking is perhaps inspired by the 6502.
sarmadgulzar 5 hours ago [-]
Are you from Pakistan? I have an Alchitry Cu FPGA board for my personal use if you want to borrow it for implementation. Awesome project btw!
CorRupT9 3 hours ago [-]
Sure! will mail you.
peterus 2 days ago [-]
Awesome project, re fpga implementation one option you might want to explore are used Bitcoin miner control boards if you want the best logic units/$ ratio. I've used the EBAZ4205 (zynq 7010) control boards with a cheap/generic FT2232HL dev board and it works great. Of course it's a bit more of a pain compared to a regular dev board
wildzzz 2 days ago [-]
If they are taking digital design classes, they'll probably be given something like a DE0-Nano that can run this just fine.
CorRupT9 15 hours ago [-]
If I tell what we got for our projects you would be disappointed at my university. We get nothing not even a single FPGA kit is available in the whole department.
CorRupT9 15 hours ago [-]
This is a nice idea! I never knew of this will look into it. Actually our university did not even provide us with chips to make breadboard version we had to source everything ourselves.
throwaway2016a 18 hours ago [-]
I hd to do a 4-bit version of this back in 2006 for my Computer Science undergrad. Interesting to see EE students doing it as well. Like many people here, we had to build it on actual breadboards. Which I think adds a ton to the experience.
gsliepen 1 days ago [-]
Very nice. I wonder if implementing a one-instruction set computer (for example something that implements Adrian Cable's subleq VM, see https://www.ioccc.org/2025/cable/) would be educational and whether it can make the design of a computer from discrete logic chips simpler or more complex. Though it would very likely not be as efficient.
jecel 1 days ago [-]
The simplest processors use one clock per instruction with a Harvard architecture. This allows their control unit to be a combinational circuit instead of a Finite State Machine (and depending on how your memories work you might even avoid having an instruction register).
Most one-instruction processors take multiple clocks and often need extra registers (for fetching 16 bit addresses from an 8 bit wide memory, for example) [1].
The four instruction MCPU [2] is not as bad to program as the one-instruction computers (it still needs 10 times as many instructions as a RISC-V, for example) while being very simple. Making it Harvard allows it to be slightly simpler and making it 16 bits allows it to run non trivial programs [3].
Computer architecture (I think my uni named it comp org) was one of my toughest courses in undergrad! It steered me away from hardware. I now wonder if that is still the case today? ARM has exploded onto he scene and I'm fascinated by the sheer amount of development going on in the chip space.
RetroTechie 37 minutes ago [-]
Many principles in computer architecture were discovered loooong ago. Pipelining, multi-core cpu's, virtual memory, various types of caching, etc etc. It's just that today's tech squeezes orders of magnitude more logic into a mm^2. So the scale of what's considered a small or big project has changed.
Obviously that requires a more rigorous approach. So I'd expect courses in this field to put more emphasis on testing & validation methods (and tools to do that).
> ARM has exploded onto he scene
ARM is mature tech now. I'd say most excitement is around RISC-V these days. Well that and GPUs, AI accelerators, FPGAs, manycore cpus, photonics, quantum computing, ...
jdw64 2 days ago [-]
I did something similar for a school capstone project. It brings back memories. Writing Verilog, working with FPGAs, that sort of thing. But this goes even further and actually gets into hardwired implementation, which is really impressive. Actually, using if else statements just creates MUXes, so you don't have fanout issues to worry about. But for something like this, you would have to handle timing calculations for rising and falling edges. It is really remarkable.
momoraul 2 days ago [-]
the rom-to-ram bootstrap is a nice touch. after it hands over, what stops
the bootloader from writing to I-SRAM again? a mode flag in the control matrix?
CorRupT9 16 hours ago [-]
Actually it writes again after every hard reset. but i added a push button to stop it, logically speaking we only turn our computer on once and then run it till our tasks are done. Similarly we do it here, but still the best option for me was to use a separate ROM address in Program counter and use it. It was a simple use case where you Just copy everything the the RAM from permanent memory.
alfienightshift 11 hours ago [-]
Nice developments, keep going
dreamcompiler 2 days ago [-]
"This makes the machine transparent in a way that microcode-based designs cannot be."
Every output bit m of microcode can be equivalently expressed as a logic function of n inputs where the microcode has n incoming address lines. This no less transparent than pure logic if you know the contents of the microcode. Microcode is often preferred because changing it is much easier than changing a bunch of gate logic. IMHO factoring your design into registers vs. control signals and putting the control signals into microcode makes the design more transparent than having a giant sea of gates.
CorRupT9 15 hours ago [-]
[dead]
chrisakoury 1 days ago [-]
Logisim was the shit back in Uni
Very implressive tbh
You should include a screenshot of the logisim diagram
CorRupT9 15 hours ago [-]
Added it to readme on GitHub at the start!
hahooh 1 days ago [-]
amazing 2nd year i was playing starcraft all day
casey2 1 days ago [-]
You'd learn a similar amount doing this project with AI
bcjdjsndon 1 days ago [-]
That ipc lol were all 8bit CPUs less than1 instruction per cycle?
HerbManic 2 days ago [-]
With all the talk about developers being lazy and younger folk not understanding the technology they use, it is always great to see examples of core foundational work still being done. Makes the rest of that talk feel like fear mongering.
wl 2 days ago [-]
I did an undergraduate electrical engineering degree some years ago. Building a CPU much like this one was the final project in our second digital design class. The difference here from the usual approach, as they point out, is that this is a gate-by-gate design you could assemble out of 74-series logic gates on a breadboard rather than the more common Verilog/VHDL designs that target FPGAs. Definitely a more tedious, time consuming approach, but I'm not convinced it's more conceptually difficult. By the time you're building a CPU, you've probably already built the component parts like the adders out of pure logic gates, anyway.
Not to say that this is easy, but I think you'd find that a whole lot more people are doing this kind of thing than you might think.
CorRupT9 15 hours ago [-]
[dead]
throwaway2016a 18 hours ago [-]
Every generation in history has said the younger generation is lazy. Didn't make it true when I was a young xenial / millennial and I suspect it's not true for Gen Z and Gen Alpha either.
CorRupT9 15 hours ago [-]
Actually I am lazy but I love to do what I do and see it through!
andrewvu0203 1 days ago [-]
[flagged]
roshiya 3 days ago [-]
[dead]
rahadbhuiya 1 days ago [-]
[dead]
19 hours ago [-]
hypfer 1 days ago [-]
Neat!
Now do it the other way round and make the 8 bit cpus become a 2nd year EE student.
assimpleaspossi 1 days ago [-]
>>me and my friends ...
My friends and I...
jen729w 1 days ago [-]
If you're going to be a pointless language pedant, it really helps if you don't fuck it up.
OP said:
> me and my friends together built an 8 bit CPU…
– and if one replaces that with your suggestion:
> My friends and I together built an 8 bit CPU…
– you'll find that you are, gleefully, wrong.
For those unaware, the simplest test for 'me and x' vs. 'x and I' is that, in the latter case, you should be able to remove 'x and', and have the sentence still make sense.
For example, 'Me and Lucy went to the shops' is technically incorrect, because 'Lucy and I went to the shops' makes sense if we remove Lucy. 'I went to the shops'.
The pendant's adjustment fails this test:
> I together built an 8 bit CPU
wl 1 days ago [-]
I downvoted the original comment because grammar pedantry adds nothing here. But if you're going to correct a pedant, you've got to be right. You're applying a test you don't understand and you messed it up.
"I" is the subject of the sentence, or the person who is doing the thing. "Me" is the object of the sentence, or the thing that is receiving the action. Since he and his friends are the ones who did the building, "I" is the correct pronoun.
Going back to the test you gave, the correct way to apply it is to replace entire the noun phrase with "I" or "me". The noun phrase here was "me and my friends together". "I built an 8 bit CPU" vs "Me built an 8 bit CPU". The former is the obviously correct one.
assimpleaspossi 1 days ago [-]
Obviously one needs a lesson in English sentence construction. I had those lessons beginning in grade school and ended in college. I'm not sure you've had anything beyond the internet.
https://en.wikipedia.org/wiki/Simple-As-Possible_computer
Back in the day i built a 4-bit CPU on a breadboard (it was huge actually spanned 3 breadboards). Programming the ROM by hand like cavemen (to be fair it was the cave ages). We didn’t carry cameras in our pockets so sadly we didn’t get a picture.
At the end, my team drew straws to see who would get to keep it. Alas, I didn't win.
CMU in 1986.
That was also where I learned about ground-bounce & dynamic IR-drop effects due to those long looping wires between breadboards.
That was a fun class.
It doesn't appear to have any kind of interrupts, which is quite a limitation for actual usecases, but also makes the architecture much simpler.
The use of dual phase clocking is interesting. The document describes it as having the control and data paths operating on opposite phases. I'm curious as to where you got this technique from, since it's not common (apart from the use of both edges by DDR RAM). I also suspect that it would go away if you had better tooling for managing setup and hold violations (does logisim do that for you, or did you have to manage it manually somehow?). Not all FPGA tools like nonstandard clock architectures.
Most one-instruction processors take multiple clocks and often need extra registers (for fetching 16 bit addresses from an 8 bit wide memory, for example) [1].
The four instruction MCPU [2] is not as bad to program as the one-instruction computers (it still needs 10 times as many instructions as a RISC-V, for example) while being very simple. Making it Harvard allows it to be slightly simpler and making it 16 bits allows it to run non trivial programs [3].
[1] https://github.com/jeceljr/SBN/blob/master/sbn.pdf
[2] https://github.com/cpldcpu/MCPU
[3] https://github.com/jeceljr/digitalCPUzoo/tree/main/MCPU
Obviously that requires a more rigorous approach. So I'd expect courses in this field to put more emphasis on testing & validation methods (and tools to do that).
> ARM has exploded onto he scene
ARM is mature tech now. I'd say most excitement is around RISC-V these days. Well that and GPUs, AI accelerators, FPGAs, manycore cpus, photonics, quantum computing, ...
Every output bit m of microcode can be equivalently expressed as a logic function of n inputs where the microcode has n incoming address lines. This no less transparent than pure logic if you know the contents of the microcode. Microcode is often preferred because changing it is much easier than changing a bunch of gate logic. IMHO factoring your design into registers vs. control signals and putting the control signals into microcode makes the design more transparent than having a giant sea of gates.
Very implressive tbh
You should include a screenshot of the logisim diagram
Not to say that this is easy, but I think you'd find that a whole lot more people are doing this kind of thing than you might think.
Now do it the other way round and make the 8 bit cpus become a 2nd year EE student.
My friends and I...
OP said:
> me and my friends together built an 8 bit CPU…
– and if one replaces that with your suggestion:
> My friends and I together built an 8 bit CPU…
– you'll find that you are, gleefully, wrong.
For those unaware, the simplest test for 'me and x' vs. 'x and I' is that, in the latter case, you should be able to remove 'x and', and have the sentence still make sense.
For example, 'Me and Lucy went to the shops' is technically incorrect, because 'Lucy and I went to the shops' makes sense if we remove Lucy. 'I went to the shops'.
The pendant's adjustment fails this test:
> I together built an 8 bit CPU
"I" is the subject of the sentence, or the person who is doing the thing. "Me" is the object of the sentence, or the thing that is receiving the action. Since he and his friends are the ones who did the building, "I" is the correct pronoun.
Going back to the test you gave, the correct way to apply it is to replace entire the noun phrase with "I" or "me". The noun phrase here was "me and my friends together". "I built an 8 bit CPU" vs "Me built an 8 bit CPU". The former is the obviously correct one.
See https://en.wikipedia.org/wiki/Muphry%27s_law