Close
0%
0%

Baffa-1 Homebrew CPU Minicomputer

The Baffa-1 is an 8-bit CPU created from scratch using 74 series logic gates and built using custom printed circuit boards.

Similar projects worth following
The Baffa-1 is an 8-Bit CPU built from scratch using 74-Series logic gates and made using custom printed circuit boards. It's based on Sol-1 wirewrap computer architecture proposed by Paulo Constantino (http://sol-1.org).

Some of the project requirements are:
* Support for user and kernel priviledge modes, with up to 256 processes running in parallel.
* Support for paged virtual memory, such that each process can have a total of 64KB RAM.
* Two serial ports (16550), a real time clock(M48T02), 2 parallel ports(8255), a programmable timer(8253), an IDE hard-drive interface(2.5 Inch HDD), and a soundboard(AY-3-8910).
* The CPU supports 8 prioritized external interrupts, and a DMA channel.
* The sequencer is microcoded, with 15 ROMS operating horizontally. It has 401 instructions implemented, and up to 768 possible by using escape codes.
* Support for 8/16-Bit MUL and DIV instructions.
* Fast indexed string instructions in the spirit of x86's (REP) MOVSB, CMPSB, LODSB,

REGISTER TABLE

General Purpose Registers
AAH/ALAccumulator
BBH/BLBase Register (Secondary Counter Register)
CCH/CLCounter Register (Primary Counter)
DDH/DLData Register / Data Pointer
GGH/GLGeneral Register (For scratch)
Special Purpose Registers
PC-Program Counter
SP-Stack Pointer
SSP-Supervisior Stack Pointer
BP-Base Pointer (Used to manage stack frames)
SI-Source Index (Source address for string operations)
DI-Destination Index (Destination address for string operations)
TDRTDRH/TDRLTemporary Data Register
PTB-Page Table Base
MSWFlags/StatusMachine Status Word

CPU ARCHITECTURE

Microcontroller commands the entire CPU. It converts the opcodes to chip selections and output enable/disable.
This is the arithmetic logic unit. Calculates arithmetic operations and bit shifts
All registers from "register table" above.
Rom, 32KB base memory and 4MB pageable memory.
Controls 8 bit interruptions and generates clock.
Control Panel
"Baffa-1 Superbus" was created to add peripherals to the project. It's now called "Baffa-Backplane" and it's also used in "Baffa-2 Project".

Peripheral Boards

Serial interface
8-Bits Disk Interface
Parallel I/O Ports
Programmable Timer and Real Time Clock module. M48T02 has an internal memory also used to boot/bios settings.

Baffa-1_Schematics.pdf

Baffa-1 Schematics - Last Revision (untested). Based on original project and notes by Paulo Constantino (for Sol-1 Homebrew CPU MiniComputer)

Adobe Portable Document Format - 22.65 MB - 03/01/2022 at 19:15

Preview

View project log

Enjoy this project?

Share

Discussions

Dan Julio wrote 04/20/2023 at 00:07 point

Very cool.  It's neat to see people taking more modern ideas and exploring what they might have looked like in early machines.

  Are you sure? yes | no

kaimac wrote 07/20/2022 at 19:53 point

Impressive! I haven't seen a homebrew with virtual memory before.

  Are you sure? yes | no

Augusto Baffa wrote 01/12/2022 at 13:33 point

I used an old eagle version 7.0 but last Kicad version 6.0 can import eagle files.

  Are you sure? yes | no

Con Cunningham wrote 01/05/2022 at 17:25 point

Hi there, looks most impressive.  I too have been down the Ben Eater Homebrew CPU  route, and last year decided to build a 6502 clone in standard 74LS TTL. I only get to work on it when real life allows, so I am progressing much more slowly than you. I have built about 80% of the circuit in LogiSim, and also written a Microcode compiler for my machine.

I would dearly love to see the circuit diagrams, since I faced many challenges, and would love to see how you approached the same. But I cannot open the "main.sch" from the GitHub repo. I downloaded the current "free" Eagle, but it doesn't like the file. It seems Eagle expects an XML file, and main.sch is not XML. Can you help at all?

Many thanks for sharing this, and re-kindling my interest in this project!

  Are you sure? yes | no

barelyelectric wrote 01/05/2022 at 23:15 point

You could try Altium, that one exports to Eagle. I think he's using Kicad.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates