Published Jun 3rd, 2016, 6/3/16 10:51 pm
- 4,751 views, 1 today
- 354 downloads, 0 today
76
After learning from past mistakes, and thoroughly studying the architecture of popular real-life CPU’s, SkittleBits has been made to be the most powerful and versatile CPU ever made out of redstone. Faster, with more instructions and more expandability, SkittleBits is the superior successor to Bluewave that will easily blow your mind!
CPU feature include – but certainly are not limited to:
• 3 General Purpose Working Registers, one acting as an accumulator
• An 8 Function ALU with functions that include ADD with carry for multi-byte arithmetic and Rotate Right to simulate divide by 2
• An 8-bit Flag Register
• Compatibility with external address control units to allow for an address bus up to 64 bits wide
• Capable of writing to or reading from up to 256 IO peripherals
• Compatibility with external programmable interrupt controllers to allow for a virtually infinite amount of interrupts
• Runs an extremely simple RISC-based instruction set
• Instruction set expandable to include up to 64 13-byte long instructions called micro-codes
• Includes 1 discrete input and 1 discrete output that can serve as serial lines or user flags and controls
• Capable of executing instructions one at a time using singlestep mode
• Clock speeds up to 2hz known to work
The CPU is also part of a pre-built computer system with features like:
• A Micro-code reference bank with 36 pre-programmed instructions
• An 8-bit latch for IO addressing
• A 16-bit Address Control Unit
• A software or user controlled Clock Pre-Divider
• An 8-bit Random-Number Generator
• A 16-bit Timer
• A 16-bit WatchDog Timer with interrupt capabilities
• 8 Programmable GPIO pins with interrupt capabilities
• A Programmable Interrupt Controller with 8 interrupt pins
• An 8-bit programmable Interrupt Mask
• 2 2-digit hexadecimal displays capable of displaying 2 8-bit numbers or 1 16-bit number
• 64 Bytes of RAM expandable up to 65,536 Bytes with the current Address Control Unit configuration
• A User Interface with access to the hexadecimal displays, 8 GPIOs, Clock Controls, Direct CPU Controls, 3 Interrupt pins, Memory Expansion Controls, and Memory Read/Program Interface
• An IO Expansion Port for adding your own IO peripherals
SkittleBits download includes the worldsave file as well as user manuals for the CPU and computer system.
CPU feature include – but certainly are not limited to:
• 3 General Purpose Working Registers, one acting as an accumulator
• An 8 Function ALU with functions that include ADD with carry for multi-byte arithmetic and Rotate Right to simulate divide by 2
• An 8-bit Flag Register
• Compatibility with external address control units to allow for an address bus up to 64 bits wide
• Capable of writing to or reading from up to 256 IO peripherals
• Compatibility with external programmable interrupt controllers to allow for a virtually infinite amount of interrupts
• Runs an extremely simple RISC-based instruction set
• Instruction set expandable to include up to 64 13-byte long instructions called micro-codes
• Includes 1 discrete input and 1 discrete output that can serve as serial lines or user flags and controls
• Capable of executing instructions one at a time using singlestep mode
• Clock speeds up to 2hz known to work
The CPU is also part of a pre-built computer system with features like:
• A Micro-code reference bank with 36 pre-programmed instructions
• An 8-bit latch for IO addressing
• A 16-bit Address Control Unit
• A software or user controlled Clock Pre-Divider
• An 8-bit Random-Number Generator
• A 16-bit Timer
• A 16-bit WatchDog Timer with interrupt capabilities
• 8 Programmable GPIO pins with interrupt capabilities
• A Programmable Interrupt Controller with 8 interrupt pins
• An 8-bit programmable Interrupt Mask
• 2 2-digit hexadecimal displays capable of displaying 2 8-bit numbers or 1 16-bit number
• 64 Bytes of RAM expandable up to 65,536 Bytes with the current Address Control Unit configuration
• A User Interface with access to the hexadecimal displays, 8 GPIOs, Clock Controls, Direct CPU Controls, 3 Interrupt pins, Memory Expansion Controls, and Memory Read/Program Interface
• An IO Expansion Port for adding your own IO peripherals
SkittleBits download includes the worldsave file as well as user manuals for the CPU and computer system.
Progress | 100% complete |
Tags |
9 Update Logs
A Little Improvement to The CPU : by n00b_asaurus 01/06/2020 6:30:46 pmJan 6th, 2020
Just out of curiosity, I decided to rebuild my first revision of the skittlebits CPU to see if I couldn't use a state machine to clean up the control logic.
Short story: it does!
Long story: my initial understanding of the control unit of any CPU was to take an instruction word and translate it into signals that the execution unit could use to execute the instruction.
While this is correct in a broad sense, there was one aspect that everyone seemed to brush over that is vastly important to the control units operation - sequencing.
It's not enough for the control unit to know what to do... it also needs to know when to do it.
I sort of understood this when I built the first version of the skittlebits CPU, I did have timing signals going all throughout the computer, but the logic that branched from those timing signals was anything but clean and understandable, and the logic used to make those timing signals was even worse.
So eventually I figured out that all the execution unit really needs was a sequence of microcode signals given to it at a constant interval.
Most people achieve this using a counter and a lookup table. Where the microcode is determined by referencing the timer register and the instruction register. This works wonders for creating linear sequences of microcodes, but skittlebits was not linear!
We had interrupts to worry about, and various conditions were evaluated at multiple points during the execution of an instruction.
Which is why I ended up settling on a state machine. Something that could produce a sequence of outputs based on both time and conditions.
It's really not too difficult, the state machine simply evaluates the state of the execution unit (things like flags, status bits, interrupts, etc) and the state of the instruction register, and on each clock cycle it produces a microcode that tells the execution unit what to do during that cycle. Conceptually it's very simple, circuit wise it's also very simple. The only complicated bit is programming the state machine... fortunately that only needs to be done once.
As of now, this was only an experimentation, so I don't exactly intend on releasing this model. But I may change my mind at a later date.
LOAD MORE LOGS
3708686
2
Create an account or sign in to comment.
Also, this design can change slightly depending on what style of computer you create - the 3 most common ones are sort of a microcontroller style (this is where the program and data are in two separate memory blocks and the program is read-only, most computers follow this style) I would recommend this as a start. the 2nd style mimics the intel 4004 (my first redstone computer mimicked this cpu, programs and data were stored in one memory block, and the program was tracked by one of 8 counter-registers, the register used to track the program was selected by the stack pointer register) just google 4004 architecture. The 3rd style mimics a true x86 CPU, (skittle bits is an example of this, everything is in memory, data, programs, and stack frames, which is why you need a lot of memory for these CPU's) Have an idea of what style you are going for before you design the CPU. Otherwise you're in for a lot of "fun"!
I get reading this might be confusing! If need be, there's a possibility I will be posting a tutorial along these lines in the near future on my youtube channel ( https://www.youtube.com/user/n00basaurous ) I hate to be a subscription whore, but feel free to subscribe to be notified when the video is released!
love that
Loving it you deserver a diamond.