Greetings MCXBLA community, (and the Minecraft community in general) I give to you the
documentation of my most ambitious creation yet. The title of this project pays homage
to the Xbox 360 console, which uses a custom CPU designed by IBM, named Xenon. This build
will be a data processing monster, capable of all standard logic functions, comparative functions,
basic mathematical functions, and the algorithms that come with these abilities.
I find that looking at a full redstone computer may be overwhelming for some people. Hopefully
showing the entire process, step by step, will help give more people a greater understanding
of redstone. Any feedback or constructive criticism is greatly appreciated.
HELP WANTED!
I'm looking for a fairly decent programmer to help out with software design, as I'm terrible when it comes to writing programs. It can't just be any programmer, I need someone who has experience with low-level, or at least intermediate-level languages. If you have experience with machine code, APL, assembly language, C++, or something similar, please send me a message here or add me on Xbox LIVE.
Planned Specs:
16-bit data words [Official]
ALU (15 functions) [Official]
AND
NAND
OR
NOR
XOR
XNOR
IMPLIES (a AND !b)
CON-IMPLIES (!a AND b)
NIMPLIES (a NAND !b)
CON-NIMPLIES (!a NAND b)
NOT
ADD
SUB (a - b)
L. Shift
R. Shift
8 locations of 16-bit general registers (That's 128 memory cells.) [Official]
One 32-bit input register for improved efficiency [Official]
The 16-bit binary comparator is installed. It outputs a specified signal, determining if A = B, A > B, or A < B.
My instant AND gate and ohmgane3sha's instant ripple carry adder are installed. Sorry, I guess I forgot to take a screenshot of the adder by itself. That or the photo didn't send when I hit the share button. Has anyone else seen that glitch besides myself?
With some tricky redstone maneuvering, I manage to squeeze the XOR gate behind the AND gate and in front of the comparator.
Yeah... it's apparent now that some of my screenshots never made it to Facebook. Photos of my OR gate and my accumulator are missing as well. 4J should probably fix that. Anyway, this is a shot of the mostly complete ALU.
After completing the functions, I realized I was the derpiest of all derps. I had completely forgotten the toggle-able inverters for the inputs. I didn't want to rebuild that whole bit of the ALU, so I improvised. Basically I still had to break a lot of stuff, but not nearly as much. I destroyed all of the input lines, rebuilt the detection for A = B and molded vertical XOR gates around the comparator.
Obviously, this caused even more issues. The control bits for the inverters blocked the inputs for the comparator. That's how I ended up with the hideous abominations in the above photo. The only way I would be able to reach the inputs is from the bottom. So I jimmy rigged it into what you see above, slowing the comparator down by another two ticks. X_____X And because of that, I had to slow down the control bits for inverting input A by an insane amount to avoid interference.
Here she is, all finished. Sadly, the comparator's A > B function takes a full 36 ticks to negate all B inputs less than the most significant bit. I believe this will be the limiting factor for the speed of my program counter's clock cycle. But, the slowest logical/mathematical function in my ALU is a full ripple carry, which only takes 13 ticks! This is insanely fast for an ALU as large as this one.
^^^ Detailed progress ^^^
Phase 2:
Construction of General Purpose Registers
Complete!
This is the D flip flop I've designed, which will be used in the general purpose registers, as well as the W register. The cell in the screenshot uses dual-read memory functions, which will be used to form two reading buses that will feed back into the ALU.
EDIT: It has come to my attention that the dual-read RAM cells used in this build are almost identical to those created by properinglish19. All credit goes to him, and be sure to check out his YouTube channel, you'll find some pretty amazing things.
Finally started actually implementing the registers into the CPU. This is just the beginning, 14 out of 256 bits of data storing power. They also sit quite neatly atop the ALU. The data is inverted to be more compact, the system itself is also inverted. Because of this, reading is a bit tricky and presents a rather difficult problem. But I've developed a feature, in the screenshot below, which solves this issue.
I introduce to you a revolutionary patented innovation, which I like to call, SmartMUX™ technology. Because of the data being inverted, an accumulated enabler is required across all bits on both of the reading buses. I've added a detection feature to all read lines, turning the enabler into an automatic multiplexer. When any register is read from, the mux is automatically enabled.
And finally here she is, in all her magnificent glory. 128 bits of capacity for all your data storing needs, 8 registers each capable of holding 2 bytes of information. The original plan was 16 locations, but the size of this array of RAM was already ridiculous. And quite frankly, I'm sick of building D flip flops.
^^^ Detailed Progress ^^^
Phase 3:
Construction of Program Memory (RAM)
10%
I'm starting with what will be the last type of opcode, which is Din, or data input. This is how the user will be able to put information into the machine. Eventually program memory will read into the lines in the image above. The enabler for these lines will be controlled by a decoder, whose input will determine the kind of opcode the instruction bits will follow.
The output bit from the decoder that activates the enabler will also toggle the C input on the register you can see on the left side of this screenshot. This will be called D-REG, (short for data register) which will hold information that can be written to the ALU's input register at any specified time.
I have to say, you always amaze me with every little bit of redstone intelligence you have. I'd be glad to help, if only I knew a thing or two about advanced redstone...
I think you can do this man! You've got it for sure. If you ever need some idiot to come help out with some derping, I'd be glad to help with that! =P
Dunno how your derp will affect, if at all, the rest of your project but I'd recommend actually doing things right even if it means starting at step 1. I'm confident you've spent hours already but to be the "most ambitious creation ever", it better shine. :D.
I am but a spectator however.
Good luck, I, for one, will be checking up.
Rollback Post to RevisionRollBack
If anyone wants to play Bauldur's Gate (1, 2, or enhanced) or Icewind Dale PLEASE PM me. I'd like to play.
I have to say, you always amaze me with every little bit of redstone intelligence you have. I'd be glad to help, if only I knew a thing or two about advanced redstone...
I think you can do this man! You've got it for sure. If you ever need some idiot to come help out with some derping, I'd be glad to help with that! =P
Well I have a couple of guys that are going to be helping me out. I just want to get the ALU out of the way first, since that's the most complex part of the build and there is no room for error. A bug in another component will wreck the machine as well, but it's easy to locate a bug elsewhere, such as a special or general purpose register. When you have an error in the ALU, you then have to play a huge game of "Where's Waldo?" and it's just not very fun.
I don't really want more than 3-man team. In fact, I made an exception for the second person. But, if you wanted you could fill in for someone when they're not available. And I wouldn't be opposed to you joining and watching the build evolve. No offense, I just don't want too much going on at once. When that happens, people end up overlooking mistakes that we have to track down later. And I know for a fact mistakes will happen, I make countless building errors during these projects. And it really sucks when you don't find one until after the build is complete.
Don't be too impressed yet, this is only maybe 5% of the entire build.
Dunno how your derp will affect, if at all, the rest of your project but I'd recommend actually doing things right even if it means starting at step 1. I'm confident you've spent hours already but to be the "most ambitious creation ever", it better shine. .
I am but a spectator however.
Good luck, I, for one, will be checking up.
The derp only really affected the comparator. I am a bit bummed about it, as I'm pretty sure the comparator is going to be the slowest mechanism to begin with, and the limiting factor to the entire CPU's clock speed. It also slowed down the control bit for inverting input A, but that's completely negated by how slow the comparator is. Other than that, everything is still completely functional, just 1/5 of a second slower.
Yeah, I've a suggestion... Make it play pong! Haha, kidding.
Looking good so far.
While that is possible, I'm not doing it. For one, it would be too slow to be playable, and two.. just.. no. xD
Btw, I didn't forget about you guys, I just want to get the ALU out of the way first. You'll thank me later. ALU's are complicated and you have to think ahead several steps to build one that's compact and efficient. Just look at how badly my failure in planning effected the design. I didn't think it was the best area for someone to just jump into. I'll still show you how it works and explain everything though.
I don't understand how you can make "computers" on Minecraft. can someone explain how this works?
It works in the same way a real-life computer works. It can perform the same operations and functions in the same way. The only difference is these are redstone interpretations of electronic machines.
Real life circuitry involves things like sending electric current to a pin, altering the path information takes by changing the path of least resistance. In redstone, the same tasks are achieved by physically altering the path with pistons, or using torches to create mechanisms with multiple states.
It may be a lot to take in, but there are threads floating around and sites out there that can explain it much better than I can.
I'm not good enough to do redstone that complicated but if you don't mind I'd like to join once in a while just to see if I can learn anything new from it.
While that is possible, I'm not doing it. For one, it would be too slow to be playable, and two.. just.. no. xD
Btw, I didn't forget about you guys, I just want to get the ALU out of the way first. You'll thank me later. ALU's are complicated and you have to think ahead several steps to build one that's compact and efficient. Just look at how badly my failure in planning effected the design. I didn't think it was the best area for someone to just jump into. I'll still show you how it works and explain everything though.
Oh, I know, the pong thing was a joke.
Also, take your time, I've had to put my projects on hold because my friends want "this" or "that" added to their servers. All of this easy stuff is a nice way to clear my head and potentially find new and compact ways of making things.
I'm not good enough to do redstone that complicated but if you don't mind I'd like to join once in a while just to see if I can learn anything new from it.
Awesome! I going to be following this one! Mind if I could come see it one of these day? Maybe over the weekend?
Surely!
It depends on the timing though. I don't want to be explaining things and giving tours while we're trying to build, it's just kind of rude. Once this thing is complete... whenever that is :P... I'll have a lot more time to give tours and share the details.
Also, take your time, I've had to put my projects on hold because my friends want "this" or "that" added to their servers. All of this easy stuff is a nice way to clear my head and potentially find new and compact ways of making things.
You'll be learning all sorts of ways to make things compact. After awhile, knowing which mechanism design to use becomes natural, but squeezing them together without interference is always a challenge. We'll build things, have to destroy them, and build them again on many occasions, all in the name of science!
You'll be learning all sorts of ways to make things compact. After awhile, knowing which mechanism design to use becomes natural, but squeezing them together without interference is always a challenge. We'll build things, have to destroy them, and build them again on many occasions, all in the name of science!
Sounds good, just send me a friend request whenever you're ready and we'll see what we can do.
It depends on the timing though. I don't want to be explaining things and giving tours while we're trying to build, it's just kind of rude. Once this thing is complete... whenever that is :P... I'll have a lot more time to give tours and share the details.
That's okay I'm more of a visual learner so I'd rather just watch what you guys are doing than get a detailed explanation of everything.
All of the projects you post go way over my head. So, what does this one do?
+1
Oh... a lot. The base machine will have similar architecture to my original redstone CPU, just oriented vertically. But, the ALU will be 7 times as powerful internally, as for algorithms it will be infinitely more powerful. In terms of data, it has access to 65,536 different 16-bit words, where as my old CPU could only use 256 8-bit words.
It can process data based on 14 different logical, mathematical, and comparative functions. In layman's terms, that means this can perform nearly any algebraic function you could think of. It will also have a GPU capable of simple shapes, and performing scan-line rendering. You could use it to graph, perform geometric algorithms, or simply to draw a pretty picture. It will also have a two-color printer, which you could use any block for as your "ink cartridge". I'll probably just use snow and obsidian... or something... not too sure yet.
Oh... a lot. The base machine will have similar architecture to my original redstone CPU, just oriented vertically. But, the ALU will be 7 times as powerfully internally, as for algorithms it will be infinitely more powerful. In terms of data, it has access to 65,536 different 16-bit words, where as my old CPU could only use 256 8-bit words.
It can process data based on 14 different logical, mathematical, and comparative functions. In layman's terms, that means this can perform nearly any algebraic function you could think of. It will also have a GPU capable of simple shapes, and performing scan-line rendering. You could use it to graph, perform geometric algorithms, or simply to draw a pretty picture. It will also have a two-color printer, which you could use any block for as your "ink cartridge". I'll probably just use snow and obsidian... or something... not too sure yet.
Wow man. I don't even know how to respond to what your building... just... wow.
Rollback Post to RevisionRollBack
Heh - And I used to be the one saying "Really? You're playing NerdCraft??"
Wow man. I don't even know how to respond to what your building... just... wow.
Why, thank you! It is a bit insane, now that I think about it. But I've been planning this out for a couple months now and I have a pretty good idea of how to accomplish everything.
Just an update here, I've put around 2 more hours into the ALU today. I'd say it's at about 45% right now, meaning the whole project is at 5.625% completion! Have a screeny!
Progress:------------------[35% Overall]
Phase 1 (ALU)----------------------------------------[100%]Phase 2 (Registers)----------------------------------[100%]Phase 3 (PRAM)--------------------------------------[10%]
Phase 4 (External ROM HDD)-------------------------[0%]
Phase 5 (Decimal display)-----------------------------[0%]
Phase 6 (Synchronization & debugging)-------------[0%]
Video Updates:
I think you can do this man! You've got it for sure. If you ever need some idiot to come help out with some derping, I'd be glad to help with that! =P
~SmileyyyFaceee
Dunno how your derp will affect, if at all, the rest of your project but I'd recommend actually doing things right even if it means starting at step 1. I'm confident you've spent hours already but to be the "most ambitious creation ever", it better shine. :D.
I am but a spectator however.
Good luck, I, for one, will be checking up.
Looking good so far.
Well I have a couple of guys that are going to be helping me out. I just want to get the ALU out of the way first, since that's the most complex part of the build and there is no room for error. A bug in another component will wreck the machine as well, but it's easy to locate a bug elsewhere, such as a special or general purpose register. When you have an error in the ALU, you then have to play a huge game of "Where's Waldo?" and it's just not very fun.
I don't really want more than 3-man team. In fact, I made an exception for the second person. But, if you wanted you could fill in for someone when they're not available. And I wouldn't be opposed to you joining and watching the build evolve. No offense, I just don't want too much going on at once. When that happens, people end up overlooking mistakes that we have to track down later. And I know for a fact mistakes will happen, I make countless building errors during these projects. And it really sucks when you don't find one until after the build is complete.
Don't be too impressed yet, this is only maybe 5% of the entire build.
The derp only really affected the comparator. I am a bit bummed about it, as I'm pretty sure the comparator is going to be the slowest mechanism to begin with, and the limiting factor to the entire CPU's clock speed. It also slowed down the control bit for inverting input A, but that's completely negated by how slow the comparator is. Other than that, everything is still completely functional, just 1/5 of a second slower.
While that is possible, I'm not doing it. For one, it would be too slow to be playable, and two.. just.. no. xD
Btw, I didn't forget about you guys, I just want to get the ALU out of the way first. You'll thank me later. ALU's are complicated and you have to think ahead several steps to build one that's compact and efficient. Just look at how badly my failure in planning effected the design. I didn't think it was the best area for someone to just jump into. I'll still show you how it works and explain everything though.
It works in the same way a real-life computer works. It can perform the same operations and functions in the same way. The only difference is these are redstone interpretations of electronic machines.
Real life circuitry involves things like sending electric current to a pin, altering the path information takes by changing the path of least resistance. In redstone, the same tasks are achieved by physically altering the path with pistons, or using torches to create mechanisms with multiple states.
It may be a lot to take in, but there are threads floating around and sites out there that can explain it much better than I can.
Oh, I know, the pong thing was a joke.
Also, take your time, I've had to put my projects on hold because my friends want "this" or "that" added to their servers. All of this easy stuff is a nice way to clear my head and potentially find new and compact ways of making things.
Surely!
It depends on the timing though. I don't want to be explaining things and giving tours while we're trying to build, it's just kind of rude. Once this thing is complete... whenever that is :P... I'll have a lot more time to give tours and share the details.
You'll be learning all sorts of ways to make things compact. After awhile, knowing which mechanism design to use becomes natural, but squeezing them together without interference is always a challenge. We'll build things, have to destroy them, and build them again on many occasions, all in the name of science!
+1
Sounds good, just send me a friend request whenever you're ready and we'll see what we can do.
That's okay I'm more of a visual learner so I'd rather just watch what you guys are doing than get a detailed explanation of everything.
Oh... a lot. The base machine will have similar architecture to my original redstone CPU, just oriented vertically. But, the ALU will be 7 times as powerful internally, as for algorithms it will be infinitely more powerful. In terms of data, it has access to 65,536 different 16-bit words, where as my old CPU could only use 256 8-bit words.
It can process data based on 14 different logical, mathematical, and comparative functions. In layman's terms, that means this can perform nearly any algebraic function you could think of. It will also have a GPU capable of simple shapes, and performing scan-line rendering. You could use it to graph, perform geometric algorithms, or simply to draw a pretty picture. It will also have a two-color printer, which you could use any block for as your "ink cartridge". I'll probably just use snow and obsidian... or something... not too sure yet.
Why, thank you! It is a bit insane, now that I think about it. But I've been planning this out for a couple months now and I have a pretty good idea of how to accomplish everything.
But your creation made it come back, so good job.