Simple CPU Design
The SimpleCPU project enhances computer architecture education through hands-on CPU design using Xilinx's ISE tools, emphasizing fundamental concepts and including networking modules for practical experience with Raspberry Pi systems.
Read original articleThe SimpleCPU project aims to enhance the understanding of computer architectures through hands-on experience. Inspired by the challenges of teaching this subject, the creator emphasizes the importance of grasping fundamental concepts in computer science, which are often overlooked in traditional curricula. The SimpleCPU architecture allows students to design and implement a CPU using Xilinx's ISE schematic tools, enabling them to visualize the hardware connections rather than just working with hardware description languages (HDLs). The project includes various versions of the SimpleCPU, each designed to teach different aspects of CPU design and functionality, including image processing and game development. The creator believes that building a CPU provides a deeper understanding of how software interacts with hardware, which is crucial for effective programming. Additionally, the project features a series of educational materials and labs that cover both computer architecture and networking, allowing students to gain practical experience in designing and troubleshooting networks using Raspberry Pi systems. The updates on the project indicate ongoing development and enhancements to both the SimpleCPU and networking modules.
- The SimpleCPU project focuses on teaching computer architecture through hands-on design and implementation.
- It emphasizes the importance of understanding fundamental computer science concepts.
- Students use Xilinx's ISE tools to visualize hardware connections in CPU design.
- The project includes various versions of the SimpleCPU for different educational purposes.
- Networking modules are also included, providing practical experience with Raspberry Pi systems.
Related
Baking Pi – Operating Systems Development
Baking Pi is a tutorial course for ages 16+, teaching basic operating system development on Raspberry Pi. It includes practical exercises, requires specific hardware, and encourages community contributions via GitHub.
I don't know how CPUs work so I simulated one in code (2019)
The author simulated an 8-bit CPU to understand computer architecture, learning about bits, ALU functions, and I/O communication, while planning to explore advanced topics like RISC architectures and modern CPU features.
Mental-1, a Brainfuck CPU
MENTAL-1 is a minimalist CPU designed to run Brainfuck, built with 7400 series components, operating at 3MHz, featuring a PS/2 keyboard and display, aimed at educating CPU design.
Computer Organization, free online textbook
The "Computer Organization" e-book by Stephen Marz provides a comprehensive guide on computer organization, covering binary numbers, CPU instructions, digital logic, and RISC-V assembly programming to support student learning.
Show HN: Program a robot to solve a maze on a CPU emulator
Lukas developed a CPU emulator using Python and Web Assembly, featuring arithmetic operations and an assembler for easier coding, inspired by the game "Turing Complete" and emphasizing logic gates' importance.
My favorite two models are:
The Scott CPU
https://www.youtube.com/watch?v=cNN_tTXABUA (great book, website is now offline unfortunately: https://web.archive.org/web/20240430093449/https://www.butho...)
An extremely simple non-pipelined 8 bit CPU. The emulator lets you step through tick by tick and see how the machine code is driving an operation. I spend one lecture showing each tick of a bitwise AND and following the data around from the instruction into the instruction register, how the instruction selects the general purpose registers, runs it through the ALU and then moves the data back from the accumulator into a register. It's one of my favorite lectures of the year.
The Little Man Computer - https://www.101computing.net/LMC/
A higher level Von Neumann style computer that helps introduce students gently to assembly where they can fully understand the "machine code" since it's just decimal. We then build an emulator, assembler and compiler for an extension to LMC that introduces the notion of a stack to support function calls.
It's a fun one semester class, not as intense as NAND-to-Tetris but still an overview of how computing works.
nandgame, in particular, is really easy to get started with and has been updated quite a lot over the year. If you looked at it a while ago check for new updates!
nand2tetris goes into a bit more detail around some things, I like it too but harder to get started with.
This one is a 4-stage pipelined CPU: https://github.com/wyager/Lambda16
This one is a superscalar out-of-order CPU: https://github.com/wyager/Lambda17
Both are written in Clash, which is a subset of Haskell that compiles to target FPGAs. It's an incredibly OP HDL.
I don't think I ever ran the second one on an actual FPGA, because at the time values of type `Char` wouldn't synthesize, but I think the Clash compiler fixed that at some point.
I'm not active there any more, but I used to be when I was developing my own toy CPU: https://github.com/robinsonb5/EightThirtyTwo
Related
Baking Pi – Operating Systems Development
Baking Pi is a tutorial course for ages 16+, teaching basic operating system development on Raspberry Pi. It includes practical exercises, requires specific hardware, and encourages community contributions via GitHub.
I don't know how CPUs work so I simulated one in code (2019)
The author simulated an 8-bit CPU to understand computer architecture, learning about bits, ALU functions, and I/O communication, while planning to explore advanced topics like RISC architectures and modern CPU features.
Mental-1, a Brainfuck CPU
MENTAL-1 is a minimalist CPU designed to run Brainfuck, built with 7400 series components, operating at 3MHz, featuring a PS/2 keyboard and display, aimed at educating CPU design.
Computer Organization, free online textbook
The "Computer Organization" e-book by Stephen Marz provides a comprehensive guide on computer organization, covering binary numbers, CPU instructions, digital logic, and RISC-V assembly programming to support student learning.
Show HN: Program a robot to solve a maze on a CPU emulator
Lukas developed a CPU emulator using Python and Web Assembly, featuring arithmetic operations and an assembler for easier coding, inspired by the game "Turing Complete" and emphasizing logic gates' importance.