You are browsing as a guest. Sign up (or log in) to start making projects!

SAM32: Super Awesome Machine 32-Bit

  • 6 Devlogs
  • 50 Total hours

Engineering a complete 32-bit personal computer from scratch, featuring a custom ISA, homebrew compiler, and UNIX-style OS on an FPGA

Open comments for this post

1h 43m 2s logged

SystemVerilog Update

I haven’t had too much time to work on my project lately, but I have some updates:

  1. SystemVerilog is officially done! The project, at it’s current state (I got a lot of stuff planned to add later) is officially done! The CPU is Turing Complete, and can do all of your basic operations, read/write to/from memory, and even has a BIOS mode that redirects memory reads to ROM to load an actual BIOS! This means I can program an OS to be loaded by the BIOS!
  2. Inputs and Outputs can now be provided to the CPU by the user! Previously, if you wanted to, for example, see the output of an instruction or provide dynamic data to the CPU, you would have to rewrite the ENTIRE program and hardcode those details into it. Now, with the new UART transciever that runs at a measly Baud Rate of 9600, things like ASCII characters can be both send or recieved to/from the CPU!
  3. A bunch of minor upgrades, such as (but not limited to): MMIO (no uses as of right now, but the wiring exists in the CPU), CPU stalls (so that you don’t accidentally read memory that hasn’t been written), an entire interrupt system (with a hardware timer interrupt!), etc.

Things I have planned:

  1. A Standard Library (as of right now, still on paper :(. Making a list of modules and functions)
  2. More MMIO uses (a display output!)
  3. VGA drivers (part of the goal for a display output)
  4. Emulator Update (for UART experiments)
  5. USB drivers? (zero progress currently, but maybe a far-off goal; UART is good enough for now)
0
0
6
Open comments for this post

15h 16m 47s logged

Update: C Compiler and SystemVerilog Done!
I’ve been working on my SystemVerilog, and just happened to work on the C– (C-Minus-Minus) compiler on the side! The C compiler is able to take actual C-like code (with a couple caveats) and turn it into assembly code that can then be compiled fully into machine code and run on a SAM32 Chip!

0
0
8
Open comments for this post

3h 2m 34s logged

I’m officially working on my SystemVerilog. I finished the ALU, PC Register, and the Register File, with tests for all of them using AMD Vivado (I plan on flashing to an Artix 7). They have a cool new dark mode, which is way easier on my eyes. I’ve also done a lot of research, specifically on the DMAC, which I plan to add. It’s basically a really small and specialized mini-core of sorts, and its sole purpose is to read from storate and write to memory, then interrupt, and vice versa (this way, the CPU doesn’t waste millions of cycles for the slow hard drive). I’ve already thought about how I want to make mine, and have started drawing one out.

0
0
6
Open comments for this post

3h 16m 30s logged

I made the Assembler for my CPU!
The assembler takes assembly instructions and turns it into actual machine code!
I know I said I would work on the SystemVerilog, but I needed a way to test everything first, so I need an emulator and an assembler first…

0
0
7

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…