Minecraft Maps / Redstone Device

SkittleBits Redstone Computer

  • 4,549 views, 1 today
  • 342 downloads, 0 today
  • 11
  • 6
  • 10
n00b_asaurus's Avatar n00b_asaurus
Level 46 : Master Engineer
75
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.
Progress100% 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

Create an account or sign in to comment.

Iredstone7648
07/29/2016 10:03 pm
Level 1 : New Network
Iredstone7648's Avatar
Hey n00b_asaurous I absolutely love your new computer its so cool! I like to build redstone computers in Minecraft too but I cant seem to figure it out completely. I use the Project Red integrated circuits so you can have a 64x64 circuit in one block. I have a computer with memory and things but I don't know how to build the CPU. Any tips you could share?
1
n00b_asaurus
07/31/2016 11:03 am
Level 46 : Master Engineer
n00b_asaurus's Avatar
so if you're starting out entirely new, I would start small (believe me I know the feeling of needing the first one to be jam-packed with features, trust me - you'll overwhelm yourself fast!) as far as the cpu is concerned, just start with the ALU and registers - I have a tutorial on my youtube channel for a really compact ALU and swiftx16 has a tutorial for dual read ram that works perfectly as general purpose registers for the ALU. I can't say I know much about project red, so if the circuits in there differ from vanilla redstone, just extract the concept from each video and recreate the circuit in project red. from there you'll need a control circuit to time the read and write pulses to the general purpose registers, as well as give the ALU the function control signals. just use a timer and decoder to create these pulses. An instruction register can be used to change the pulses - just remember to reserve cycle of the timer to bring information from memory to the instruction register.




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!
1
Iredstone7648
08/06/2016 4:29 pm
Level 1 : New Network
Iredstone7648's Avatar
Thanks for responding to my question. I watched several of your videos and build an ALU. I will continue to try on your guideline. I understand the basics of how a computer works and will continue to learn. I would really love a video on it and cant wait to watch. Ill stick with a basic ALU design and registers for now. With project red I made 1k (1024 bytes) RAM module with dual read RAM. I don't really understand how the clock works. Is it for every pulse an instruction is carried out or data read/written to memory? Thanks for helping! :)
1
n00b_asaurus
10/12/2016 10:59 pm
Level 46 : Master Engineer
n00b_asaurus's Avatar
you know I totally didn't realize there was a question in your comment, terribly sorry! It depends on the computer you make... most computers (mainly RISC based) will perform one move-based instruction per clock cycle.... SISC computers, such as skittlebits, will have instructions comprised of multiple move-based instructions, and thus use multiple clock cycles... though the clock does not do the reading and writing, it's used to synchronize everthing!
1
hugecameron
06/07/2016 8:58 pm
Level 7 : Apprentice Crafter
hugecameron's Avatar
So useless
1
n00b_asaurus
07/02/2016 5:31 pm
Level 46 : Master Engineer
n00b_asaurus's Avatar
you know the irony is... you're commenting on my useless computer... that's based on the cpu... that's used in the computer you used to comment on my useless computer...
1
Kyoko Tomato
06/06/2016 8:28 pm
Level 13 : Journeyman Cake
Kyoko Tomato's Avatar
Nice
1
BPD
06/05/2016 1:33 pm
Level 24 : Expert Engineer
BPD's Avatar
• A 16-bit WatchDog Timer with interrupt capabilities

love that
1
n00b_asaurus
07/02/2016 5:29 pm
Level 46 : Master Engineer
n00b_asaurus's Avatar
thanks! gotta have that watchdog!
1
NotAnArchitect
06/04/2016 9:46 am
Level 1 : New Crafter
NotAnArchitect's Avatar
This is cool! Keep up the great work.
Loving it you deserver a diamond.
1
Planet Minecraft

Website

© 2010 - 2024
www.planetminecraft.com

Welcome