Loading 3D model… large boards can take a moment.
The am29xx series of bitslice CPU parts were a big thing when they arrived, and they have been used in many vintage designs. I find them interesting because they are still reasonably simple to understand, and they do replace a large amount of TTL logic for a homebrew CPU. I got a few of these parts from different places and decided to play with them to get an idea on how they work.
To do that the plan is to build some parts for a real CPU. It is not intended to be finished, it is intended to teach me and help me understand these parts, and to help me understand what is important in a CPU design using them.
NONE OF THIS IS READY FOR ANYTHING!! DO NOT ORDER BOARDS, they will not work ;)
I am starting with the ALU part as I got 4 am2901's in my parts bin ;) I want to make a 16 bit ALU out of them, and the 2901's would also contain the generic register set (r0..r15). I did consider breadboarding that, but 16 bits is a lot of wires, reliable breadboards are pretty expensive, and I really, really did not feel like wiring that all up... So instead I created a Kicad schematic hoping that I would not be too far off, and I created a PCB using the Autorouter to route most traces so that I would not waste time on that. It is a 2 layer board so making fixes for the mistakes I've undoubtedly made should not be too difficult.
The board has 4x am2901, some glue logic to detect condition codes, a lot of leds to show ALU function inputs, and two sockets for my 8 bit bus to hex display so that we can easily follow what is happening.
The board uses two 40 pin double row pin headers (female) as a connector to a later possible backplane, as these are cheap and relatively reliable. And they make it easy to exercise the board using an Arduino Mega 2560.
A picture of the completed board:
The wires into the connectors are breadboard patch wires, and they prove to be useless, so the next try is to make real pin header wires to the Arduino.
After creating proper cabling between the Arduino and the ALU board:
at least everything worked consistently. But writing Arduino programs makes it a bit hard to do a lot of testing. So the next part is to make the Arduino a slave board that gets commands over USB Serial from a Java program. The Java program sends simple packets consisting of a command code, parameter values and a checksum. The Arduino waits for commands on its bus, decodes the packets, then executes the command. After that it sends either an error packet or a response packet back with any results for the command.
These are the programs under aluboard-controller and aluboard-arduino.
I am using the following documents to make sense of everything.
No comments yet. Be the first to ask about this board.