You must login before you can post a comment.
Author: tom arnall
Forked from: SDC/SIMPLE COMPUTER
Project access type: Public
Description:
If you have any questions about this or other designs, feel free to shoot me an email at [email protected]. I don't check it very often (since it's a secondary account), and you may not receive a reply for around a week.
A simple computer with an added RAM module. A work in progress, with much more I want to add, such as bitwise operators, a larger bus size, data type support including unsigned and signed integers, floating point numbers, conditional instructions, and more. There are two programmed versions, one that calculates the fibonacci sequence, and the other uses conditional instructions to determine whether it should increment a number, or halt the program. And there is also the first design I've made, which has a lot of unneeded parts in it.
UPDATE 1: added a jump instruction to allow loops and other useful applications.
UPDATE 2: Made a second version of the design, and made a better instruction set for it, removed the Memory register, since it's totally unnecessary with a RAM module. The second version also calculates the Fib sequence.
UPDATE 3: Added signed integer addition and subtraction support to version 2. Of course, this limits the positive range of integers to 127, rather than 255, but c'est la vie, I'm going to expand the size of the bus anyway.
UPDATE 4: Version 2 is temporarily down, since I'm finally adding bitwise operator functions to the ALU.
UPDATE 5: Version 2 is now back in action, with some added functions such as increment and decrement by 1, as well as left bit shifting. The ALU still needs some more work, since I'm having trouble implementing a right bit shift function. Once I have bit shifting working, I might make a program that can multiply using the shift/add method.
UPDATE 6: Version 2 now has magnitude comparison and bit-shifting functions. Conditional jumps still in the works.
UPDATE 7: Version 2 finally has a conditional jump register. It can be loaded with a Boolean from either RAM or the ALU, or directly set to either 1 or 0 by way of a set instruction. I still need to add a flag register to the design, so it can detect overflows (and maybe in the future, interrupts).
BONUS UPDATE: After a few months of studying processor and computer design, I discovered that I've unwittingly designed a Von-Neumann architecture computer (as opposed to the Harvard architecture. Reference Wikipedia if these terms are unfamiliar). Frankly, I went into this project relatively blind, and just a week ago discovered that this kind of design had a name. Well, the more you know.
UPDATE 8: I've created a new CPU design, some of which I will implement into this main circuit later this summer. Here's the link to that design: https://circuitverse.org/users/3464/projects/19687. Also, I plan to overhaul the entire design to minimize cycle inefficiencies.
UPDATE 9 (2023): After many a long year, I've finally graduated. I've decided to come back for a little while to play around with some old toys I left behind, and it looks like I had a lot to learn.
I updated another old project of mine, the Bit-wise operation only computer, and I'm attempting to develop an algorithm that allows it to add binary numbers using only basic bit-wise logical operators. I may or may not work on this project here, but if you want to check out something new, I suggest you go over there to take a look at the challenge at hand! Link is in Update 8.
UPDATE 10: Decided I'll work on this after all. Started on a new design, it's going to have some new hardware, some new software, and a bit more organizational structure to it. And who doesn't like wire hiding?
For the most part, I'm following the general design patterns used by ATMEL's line of microchips, with some of my own flavoring sprinkled in here and there in V3. In particular, I'm going to add several instructions that allow 16 bit addressing using X, Y, and Z registers (yeah, we're getting a big memory module now, not sure if I'll just spam ROM's or if I'll even begin to attempt using the awful EEPROM's, I hate working with those on here).
Created: Sep 21, 2024
Updated: Sep 21, 2024
Comments