Jump to content

An Old Fashioned RedPower Computer


BestFleetAdmiral

Recommended Posts

Many people take computers for granted, as they use them to maintain their very lives. Few people realize how complex computers really are:

juBRR.jpg

This is the Industrial Arithmatic Computing Unit! It was made by me, without the use of WorldEdit, buildcraft, etc. It is by definition a computer. It is entirely made from RedPower Wires, bundled cables, and RP logic gates. I also didn't use any Wireless Redstone. It Contains 17,506 Meters of Wiring, and 1,258 Logic Gates...

As in any computer, it is made of several Units, all interconnected by a tangled spiderweb of wireing. The Different Units are as follows:

wHANh.png

The Adder

0Qfsf.jpg

The Adder is a device that takes two 8-bit numbers in Binary Code, adds them together, then outputs another 8-bit number. 8-bits means that it cannot handle any numbers over 255, and cannot comprehend decimals, fractions, or negative numbers.

The Subtraction Units

cqXHZ.jpg

These units, when used in conjunction with the adder, allow the computer to subtract. There are a few of these units, which are as follows:

The Selective Inverter: (Diamond Blocks) This will invert an 8-bit number, or not invert it, depending on the state of a separate bit.

The Subtraction Unit: (Gold Blocks) This makes the first and only the first 1 bit of an 8-bit number a zero.

The Special Adder: (Wood Blocks) This takes an 8-bit number in, adds one to it, then outputs it.

The bypass: (Red wool) This allows the computer to bypass these units when it doesn't want to subtract.

The Program Counter

llubj.jpg

(The Program counter is the Nether Brick thing in the front, the sandstone is the Program Memory) The Program Counter Is a simple device that outputs a 5-bit number, that increases by one each time it receives a pulse. This is used to keep track of where the computer is in its program. (Like a finger in a book)

The Program Memory

2EPu6.png

Yes, those are all levers. They are carefully switched to a binary code in 24 "bytes" of 5-bits each. (I know a byte is supposed to be 8-bits, but for conveinence I refur to any bundle of bits that specifies a single positive integer to be a byte.) These bytes are essentially ROM, Read-Only Memory, that contains the instructions for the computer. The program I have here will be explained later.

The Control Rooom

Exterior

kNWW3.jpg

Main Section

vo5S1.jpg

Looking down the room

3nryw.png

This room controls the computer. Simple as that. Most of the controls are labeled. In the last picture, all the lamps running down the left side display the state of the 13 bytes of RAM. The last set of levers on the Far wall are for manual input of data into the computer.

The RAM

HZiu0.jpg

If the processor was a person, the RAM would be his scratch-pad where he did his calculations. In my computer, it also serves as the permenant memory for all data.

The Multiplying Units

MzDj6.jpg

These three units permit the computer to multiply.

The Multiplication Unit: (Obsidian) This multiplies two 4-bit numbers, and them out puts four different 4-bit numbers. This is done in 4-bit, because multiplication doubles the number of bits. Multiplying two 4-bit numbers, gives you an 8-bit number.

The offset Unit: (Cobblestone) This takes the 4 4-bit numbers from the previous unit, and offsets them each by one. So, the first 4 bits aren't touched, but the second, if it was 0011, becomes 0110. 0110, becomes 1100. Etc.

The Multiplication Control: (Wooden Planks) This unit tells the System to output the final four 8-bit numbers to the RAM. Then, these four bytes must be added together by the Adder, and then you will have your answer.

The Processor Decoders

3xzAj.jpg

Arguably Part of the Processor, these take the Commands from the Program Memory, and then does something with it. There are 45 of them, each one set to a different code. When the a 6-bit byte is inputed, only the decoder that matches, will output a 1. This will then tell the processor to do.. whatever that bit was connected to.

The Processor Itself

Ncm5g.jpg

The Workhorse of the computer. It is remarkabley simply, if not huge. It (mostly) just flips on and off switches. These switches can connect any 13 of the RAM bytes to the first two of the Processors "Buses", and the first 10 bytes of RAM to the third Bus. The first two buses go to the adder and the multiplier, the third is the result that comes back from the adder. By controling this, the computer can do alot.

So... How does all this work?

Well... Lets go through this simple 11 step program.

a =(b + c)- d

a = e - d

Add a number, then subtract another. 11 Steps, and with a 0.2 Hz Clock speed, that takes exactly 55 seconds. So lets look at the steps.

1) Clear: We want to make sure the processor doesn't have any lingering data on it, also makes sure we are going to add.

2) RAM Byte 2 to Bus 1: Connect the second byte of RAM to the first bus of the processor (Adder Input)

3) RAM Byte 3 to Bus 2: Same as above, but with second bus and third byte.

4) RAM Byte 5 to Bus 3: This adds bytes 2 and 3, and puts the result on Byte 5. byte 5 holds b+c, in our formula.

5) Clear: Resets the processor for a new operation

6) Subtract: Make sure we will be subtracting

7) Byte 5 to Bus 1

8) Byte 4 to Bus 2

9) byte 1 to Bus 3: This last one subtracts Byte 4 from Byte 5, and outputs the answer to byte 1.

10) Clear: Keep things tidy.

11) Done: This command stops the clock, rings a bell, and resets the Program counter.

For those who are curious, this is the Binary Equivalent of that program:

100101 001100 011000 100000 100101 100110 001001 010111 100100 100101 101010

Weph! You Don't wanna see the 22 step program to solve the famous y=mx+b formula! O_O

In any case, the computer is a Private SSP world on tekkit, and you can't have it. :)

I would like to see any similar computers you guys have made, or anything similar to this (I didn't find anything when I looked... not with this scale) So Happy Tekkiting!

Link to comment
Share on other sites

That's very impressive. People have made logic units entirely from vanilla redstone, but I think it's more dealing with the intricacies of vanilla redstone rather than the pure theory of it. I'll bet it took you a while to math up all of your cable lengths huh? Or did you just estimate them?

I'm in the process of designing my own theory-computer right now. I'm a little stuck at the ALU controller, but I'll get past it eventually.

I really like your work. I respect your decision to not share it, but I'd certainly download it if you did :D

EDIT: And I TOTALLY agree with your statement about taking computers for granted. I hate it when a computer breaks down or freezes and the owner of it starts cussing at it like it is at fault. In reality, we should realize that a modern computer is nothing less than miraculous, and took billions of man-hours to achieve what we have today.

I don't think I'd ever make my computer in Tekkit, so I commend you for doing so. I'm planning on having a direct hardware interpreter(using a language like FORTH or something).

EDIT2: How much memory(bits) does the program memory have? I'm guessing the program memory is like the BIOS that starts up when you turn it on? Also, I don't think you mentioned the memory you can store in the RAM? I'm also curious, did you make a way to script things to happen(i.e: program it to add 3+4 on a specific program load?), or is it manual inputs the whole way?

In addition to this, have you ever heard of Binary Coded Decimal?

Link to comment
Share on other sites

I think to say that my mind is blown looking at this would be a serious understatement.

Perhaps you could have a display of some sort, used by lighting up lamps. Sorry if you already have one, there's so much there I probably missed something...

Link to comment
Share on other sites

I think to say that my mind is blown looking at this would be a serious understatement.

Perhaps you could have a display of some sort, used by lighting up lamps. Sorry if you already have one, there's so much there I probably missed something...

Judging by the pictures of the interior, I'd say everything is in binary only. You would have to convert it to decimal first, which requires more math than most simple math operations, then translate that to numbers on a screen.

..Or you could just use binary coded decimal as previously mentioned ^^

Link to comment
Share on other sites

You would need to convert it to decimal? I was thinking of a single colour monitor screen, where each lamp is a single on/off bit of data...

Oh haha, misunderstood. I think in his 9th picture it shows the results of every math operation(but they're very unclear still).

Link to comment
Share on other sites

In addition to this, have you ever heard of Binary Coded Decimal?

Yes, I have. I didn't use it because it is a bit of a pain to perform math with, unless you constantly convert back and forth, which is even more of a pain. :P

I think to say that my mind is blown looking at this would be a serious understatement.

Perhaps you could have a display of some sort, used by lighting up lamps. Sorry if you already have one, there's so much there I probably missed something...

I was originally thinking of a display much like that, but I later decided that the systems and memory needed to work with that are overly complex. Keep in mind, the computer (at this stage) only has half of an ALU (Arithmatic Logic Unit), ie. it has no logic capibilities.

EDIT2: How much memory(bits) does the program memory have? I'm guessing the program memory is like the BIOS that starts up when you turn it on? Also, I don't think you mentioned the memory you can store in the RAM? I'm also curious, did you make a way to script things to happen(i.e: program it to add 3+4 on a specific program load?), or is it manual inputs the whole way?

Well, It has no Operating system, and the clock is stopped most of the time. So the program memory is actually the memory that stores a single program to run, up to 24 commands, each made of 6 bits. This is here a program is stored. To run it, you turn on the clock. It stops automatically, or you could stop it with the stop button, so there really isn't a "start up" or anything like that. As far as getting data into the computer, it is purly manual input, but programs can then manipulate that. The RAM stores any data that can be practically used, and is only 13 bytes, and bytes 10, 11, 12, and 13 are used for multiplication. As a result, there is really only 9 bytes to actually work with. Each of the RAM bytes is a real byte, so 8 bits each.

Oh and the 9th pic, That shows the state of all 13 bytes of RAM.

Anyways guys, I'm gonna be adding some new things including a totally rebuilt Program Counter and Program Memory with 90 Bytes (each of 6 bits...) to utilize loops, and a 8-bit Comparator for logic-oriented conditional loops. And that will allow for square roots and division! (Yes, I said Square Roots :) )

Link to comment
Share on other sites

It doesn't sound like much, but you look at this, and realise just how much that actually means.

As a matter of interest, approximately how large(In blocks) would a RAM module for this computer for one kilobyte be?

Link to comment
Share on other sites

how large would a RAM module for this computer for one kilobyte be?

I think that would depend on your form of storage. You can string repeaters together to have "disk" memory(hard drive, DVD, etc), but then you need a circuit to be able to access it. Although the more repeaters you strung together the higher density of bits you could attain. As far as flash RAM like the sticks you plug into your USB ports, they need reset lines, address selectors AND sequencers(or equivalent) for each byte of memory. I've tried to make my own RAM modules, it takes around 48blocks per byte(8 bits), would leave you around 48000blocks squared per 1KB. Maybe I just really suck at compact circuits though lol.

..Program Memory with 90 Bytes (each of 6 bits...) to utilize loops, and a 8-bit Comparator for logic-oriented conditional loops.

You love to stray from the 8-bit = byte standard don't you? :D I understand, actually. It's your own standard, and it works for you. I bet whatever my computer architecture looks like, it'll end up not even being close to standard computers now.

I thought square root involved a series of division and checking to see if the two halves equal eachother, and if one was higher than the other it would offset the number and try to divide some more. I know in languages like C++ there isn't a processor command for it, you have to utilize a library command like sqrt() to do it for you.

Link to comment
Share on other sites

You love to stray from the 8-bit = byte standard don't you? :D I understand, actually. It's your own standard, and it works for you. I bet whatever my computer architecture looks like, it'll end up not even being close to standard computers now.

I thought square root involved a series of division and checking to see if the two halves equal eachother, and if one was higher than the other it would offset the number and try to divide some more. I know in languages like C++ there isn't a processor command for it, you have to utilize a library command like sqrt() to do it for you.

lol "byte" is just for conveinence. The Number of bits is determined by just how large any practical uses are. I don't need a 8-bit program counter becasue I i'll never have 255 commands strung together. :)

As for square roots, I have a bit of code for that. I learned it from using an abacus (You know, those ancient things with the beads that slide on the rods, yeah, I kno how to use those to calculate square roots). The code only works for perfect squares like 4, 9, 16, 25, 36, etc. But is fairly efficient for the computer's use. It does involve division, Which is what i'm working to build as we speak type. Square Roots will be a series of commands, though, not a single command.

Also, I just now realized what you comment on doing the math for wire lengths was about (the statistic of 17,506 meters of wireing). I did use WorldEdit to get that number, but I didn't use it for anything else, lol. That number is actually a bit smaller than it really is, because if you put a wire on the floor, then up onto a wall, it counts that corner as just one wire, when its actually two.

EDIT: By my calculations, a kilobyte of RAM would be 384,000 Cubic Blocks. This means a cube shape about 73 blocks long, 73 blocks tall, and 73 blocks deep. O_O

Link to comment
Share on other sites

computertalk

Your calculation is my calculation, but with 8 blocks high. Oops! I forgot to add in the 3D element of it all hah. (speaking of cubic square-roots lol..). That's about 4.5 chunks in every direction, which would take 8 railcraft world anchors to keep loaded unless you were present.

When it comes to computers, I've always been scared that some voltage line will fail(I mean, there are millions of them!), or some logic gate won't throughput(like an AND never, ever giving a true output). I bet each logic gate in the new Intel i7 is like a couple nanometers in length. It would probably only take a AA battery to completely fry those individually :o

At the same time, anything larger(think... your map, lifesize ALU/2), and it would take like 10 Mega Watts of electric juice to power the whole thing at a good clock rate.

Guh, no wonder computers break down. I feel bad for mine right now. I must have fried the GPU, no amount of software will fix it >.<

Link to comment
Share on other sites

  • 9 months later...

Great looking stuff! It's good to find some digital circuits using redpower, seems to be nearly all the hardcore digital minecrafters use vanilla... Is this project still ongoing? What did you base your arithmetic logic on?

I found your design via the allmaster google while hunting ALU's. I've been experimenting with modulated signals myself, using a combination of repeaters plus and gates with some considerable success. I have almost completed a 5x5 animated display with 2 fps frame rate( with a theoretical improvement to 4fps) and 3 image caches. I can post images later this week if your interested?

Link to comment
Share on other sites

Great looking stuff! It's good to find some digital circuits using redpower, seems to be nearly all the hardcore digital minecrafters use vanilla... Is this project still ongoing? What did you base your arithmetic logic on?

I found your design via the allmaster google while hunting ALU's. I've been experimenting with modulated signals myself, using a combination of repeaters plus and gates with some considerable success. I have almost completed a 5x5 animated display with 2 fps frame rate( with a theoretical improvement to 4fps) and 3 image caches. I can post images later this week if your interested?

I, for one, am very interested in seeing what kind of system you have set up for handling images. How are you generating the image to be displayed?

Link to comment
Share on other sites

I'll see about getting some print screens out from it in a mo.

The UI is made from a 5x5 grid of levers, directly connected to an adjacent image preview screen. When mem write for a cache is triggered a 2 tick pulse is generated by each pixel then delayed by 2/4/6/8/10 ticks to produce a 5 bit modulated signal(one for each row). The decoder at the other end uses the same idea but with a staggered delay on the time line(synced to the first pulse by a signal request state circuit) instead of the data.

____________Modulated Signal

I I I I I

I I I I /

I I I //

I I /// <-Staggered repeaters

I ////

/////

&&&&&-<-<-<-<-<-<-<-Pulse into & gate grid

l l l l l <- Lever Grid

Each signal can be stored easily using a bit of wire and 7/8 repeaters, can stick an & and NOT gate into the circuit to act as a clear function.

I have no idea if anyone else uses similar designs, I came up with the concept as an extension of an old telegraph design I had last year.

Link to comment
Share on other sites

e8abnq.jpg

User Interface

25tb241.jpg

Modulator

2zpnptw.jpg

Caches(front is active)

11qqttg.jpg

Overview.

The right half is mostly pointless atm; its for comparing a cache that has already been sent to the screen with an inputting signal and some control lines for the load order/delay circuit that needs to be built still! Completely functional but requires some well timed switching to get a signal to a screen right without the loader.

Link to comment
Share on other sites

  • 3 months later...

Is this project still ongoing? What did you base your arithmetic logic on?

Well, for one. This is not still ongoing, sadly.  Basically, I started working on having multiple sequences of ROM, so that it could utilize logic and loops, but I kinda lost the will halfway through. After a while, I updated to new versions of minecraft, and red-power didn't...  I (probably) still have the world, but I don't even remember the modpack I made it with, and I don't have much desire to continue with it.

 

As for the arithmetic, it was basically a ton of searching on Google images for logic schematics. Some parts (like the multiplier and the subtraction system) I had to just come up with myself. (btw, in these pictures the subtraction system is not properly done; I honestly don't remember what was wrong, but don't copy it exactly if you're gonna use it.)

 

As for that display, it is very impressive.  Modulated signals are beyond my level of work. Very cool.

 

PS. If I sound somewhat uninformed, here's why:  I don't have a clue how computers work.  I made this up as I went along.  I just kinda came up with this design myself, without knowing how computers really work.  I knew some things, like the clock and the RAM, the ROM, and basic binary logic, but the way you can turn that into a functioning computer was beyond me.  As such, many of my systems might seem unorthodox or inefficient to you because they're just some system I came up with off the top of my head.

 

EDIT: PPS: I actually started to make this computer in real life, using electromechanical relays...  never finished, but it was still fun.

Edited by BestFleetAdmiral
Link to comment
Share on other sites

  • 4 weeks later...
  • 1 month later...

Wow, I remember this project. Year and a half later!

 

I ended up scrapping my project. Oh well, at least the fun of it lasted a ways. And I don't know anything about computers either. *wink*

Edited by Mercalyn
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...