Redstone circuits


 * This article is about advanced Redstone circuitry. For the fundamental concepts see Redstone_(Wire)

Redstone circuitry is a feature of Minecraft Alpha Redstone which allows for intricate Redstone wire based mechanisms to be created by players.

Advanced Redstone circuitry may be seen as comparable to the "WireMod" addon popular within Garry's Mod and to digital electronics in real life.

Logic Gates
 This article makes use of diagrams in the MCRedstoneSim format for compactness and clarity. Some of the designs are more than one block high which is represented here by the layers being frames in an animated gif. A logic gate can be thought of as a simple device that taking one or more inputs will return an output decided upon from the inputs according to the rule that that logic gate follows. For example if both inputs on an AND gate are in the 'true'/'on'/'powered' state the gate will return 'true'/'on'/'powered'. Much more in-depth information and a better explanation of this expansive topic is available on Wikipedia.

Below is a list of some of the basic gates with example images and MC Redstone Sim diagrams. There are many different ways to construct them other than those shown below, so use them as guidelines for creating one to fit your needs.

NOT Gate (¬)
A device that inverts the input, as such it is also called an "Inverter" Gate.



OR Gate (∨)
A device where the output is on when at least one of the inputs are on.

A simpler version of the OR gate is design A: merely a wire connecting all inputs and outputs. However, this causes the inputs to become "compromised", so that they can only be used in this OR gate. If you need to use the inputs elsewhere, version B is necessary.

Note that design B is a simple inversion of a NOR gate.



AND Gate (∧)
A device where the output is on when both inputs are on. This behaves in a manner equivalent to a Tri-state buffer, where input B acts like a switch, so that if it is off, input A is disconnected from the rest of the circuit. The discrepancy from real-life tri-state buffers lies in the fact that one cannot drive a low current in Minecraft. (See the Wikipedia article for details.)

An example application would be building a locking mechanism for a door, requiring both the activating button and the lock (typically a lever) to be on.



NOR Gate (⊽)
A device where the output is off when at least one of the inputs are on. In Minecraft, this is the basic logic gate, implemented by a torch. A torch can have as many as 4 mutually isolated inputs (design B), but 3 can fit comfortably (design A), and all are optional. A torch with 1 input is the NOT gate, and with no inputs is the TRUE gate (i.e. a power source). If more inputs than 4 are necessary, one must resort to the non-isolated OR gate with a NOT at the end (at expense of isolation), or multiple NOR gates, according to the formula A ⊽ B ⊽ C = A ⊽ ¬(B ⊽ C) (at the expense of speed, due to the nested gates).



NAND Gate (⊼)
A device where the output is off when both inputs are on.

XOR Gate (⊻)
A device which activates when the inputs are not equal to each other. Pronounced "exor".

This can be made by adding a NOT gate to the end will produce an XNOR gate, which activates when the inputs are equal to each other.

XNOR Gate (≡)
A device which activates when the inputs are equal to each other.

IMPLIES Gate (→)
A device which represents material implication. Returns false only if the implication A → B is false, that is, if the conditional A is true, but the consequent B is false.

Latches and Flip-Flops
Latches and Flip-Flops are 1-bit(Either 'powered' or 'unpowered') memory cells. These usually have two inputs, a 'set' input and a 'reset' input, used to control the value that is stored.

The common feature in every latch or flip-flop is the RS NOR latch, which amounts to two NOT gates whose inputs and outputs are connected (see below). This allows circuits to store data and deliver it at a later time, rather than acting only on the inputs as given. In other words, functions built from these components can give different outputs in subsequent executions even if the inputs don't change. This allows for the design of counters, long-term clocks, and memory, which cannot be created with logic gates alone.

RS NOR latch


A device where Q will stay on forever after input is received by S. Q can be turned off again by a signal received by R.

This is probably the smallest memory device that is possible to make. Note that ~Q means the opposite of Q, e.g. when Q is on, ~Q is off and vice-versa. This means that in certain cases, you can get rid of a NOT gate by simply picking the ~Q output instead of putting a NOT gate after the Q output.

A very basic example of use would be making an alarm system in which a warning light would stay turned on after a pressure plate is pressed, until you hit a reset button.

In the truth table, S=1, R=1 is often referred to as forbidden, because it breaks the inverse relationship between Q and ~Q. Also, some designs where the input is not isolated from the output, such as B and D, will actually result in Q and ~Q both apparently being 1 in this case. As soon as either S or R becomes 0, the output will be correct again. However, if S and R both become 0 on the exact same tick, the resulting state could be either Q or ~Q, depending on quirks of game mechanics. In practice, this input state should be avoided.



RS NAND latch
When ~S and ~R are both off, Q and ~Q are on. When ~S is on, but ~R is off, Q will be on. When ~R is on, but ~S is off, ~Q will be on. When ~S and ~R are both on, it does not change Q and ~Q. They will be the same as they were before ~S and ~R were both turned on.

Since NOR is the basic logic gate in Minecraft, a design for an RS NAND latch is just an RS NOR with inverters applied to the inputs and outputs.

D Flip-Flop
A D flip-flop, or "data" flip-flop, sets the output to D only on certain conditions. The basic level-triggering D flip-flop (design A), also known as a gated D latch, sets the output to D as long as the clock is set to OFF, and ignores changes in D as long as the clock is ON. Design B includes an edge-trigger, and will set the output to D only at the moment the clock goes from OFF to ON.

In these designs, the output is not isolated; this allows for asynchronous R and S inputs (which override the clock and force a certain output state). To get an isolated output, instead of using Q simply connect an inverter to ~Q.

Design C is a one block wide version of A, except for using a non-inverted clock. It sets the output to D as long as the clock is ON (turning the torch off). This design can be repeated in parallel every other block, giving it a much smaller footprint, equal to the minimum spacing of parallel data lines (when not using a "cable"). A clock signal can be distributed to all of them with a wire running perpendicularly under the data lines, allowing multiple flip-flops to share a single edge-trigger if desired. The output Q is most easily accessed in the reverse direction, toward the source of input; ~Q can be inverted to keep information traveling in the same direction and isolate the latch's R line (the ~Q wire serves both purposes, as in design A).

JK Flip-Flop
An unclocked JK Flip-Flop works a lot like a RS NOR Latch. When the input J is ON and the input K is OFF, the output Q is ON. It will then hold that state until only K or both is ON. When only K is ON the Q is OFF. When both inputs are on they will start a race condition. This means that the output will keep changing until one of the inputs is turned OFF (It doesn't race fast enough to burn out the torches).

''NOTE: Some of the illustrated JK Flip-Flops to the right don't include the typical inverse Q output. If you want to use the inverse Q then just add an inverter to the Q.''

T Flip-Flop
T Flip-Flops are also known as "toggles". Whenever T changes from 0 (off) to 1 (on), the output will toggle its state.

A useful way to use T Flip-Flops in Minecraft could for example be a button connected to the input. When you press the button the output toggles (a door opens or closes), and does not toggle back when the button pops out. (Design C does not have an incorporated edge trigger and will toggle multiple times unless the input is passed through one first.)

It is also the core of all binary counters and clocks, as it functions as a "period doubler", turning two input pulses into one output pulse.

Design A (and B, which is a slightly compacted version of A) is essentially a JK flip-flop with the inputs for J and K removed so that it relies on the edge trigger (right side of the diagram) to keep it in the stable state and only allow a single operation per input.

Design C has a smaller footprint and an easily accessible inverse output, but requires a brief pulse of 'high' input in order to operate reliably, whether by routing input through a separate pulse generator to create an edge trigger (design B' seems to work best), or by some other means. If the input is kept high, it will repeatedly toggle on and off, cycling quickly enough to burn out its torches. For example, if the button mentioned above is wired directly to its input, the device can cycle several times before the button shuts off. Even a 4-clock is too slow to reliably result in only one toggle.

''NOTE: Some of the illustrated T Flip-Flops to the right don't include the typical inverse Q outputs. If you want to use the inverse Q then just add an inverter to Q.''

Repeater
Using two Redstone torches in series can effectively extend your running wire length past the 15-block limitation. As of 1.0.2 (the July 6th update), there must be a strip of wire between the two Redstone torches. Repeaters makes it possible to send long-distance signals around the map, but in the proccess slow down the speed of transfer. To reduce delays, you can stretch out the repeater so that some areas of the wire are consistently in the opposite state, but as long as the amount of Redstone torches, or, effectively, NOT Gates is even, the signal will be correct.

Delay Circuit
Sometimes it is desirable to induce a delay in your redstone circuitry. Delay circuits aim to do this in a compact manner. These two delay circuits utilize torches heavily in favor of compactness but in doing so also implements the "quirk" with the game where a torch on a block powering a block above it with a torch attached results in BOTH torches changing state faster. Also, depending on their direction (North/South, West/East) the delay may alter by 1 or 2 ticks, with West/East being the longer delay.

Clock generators
Clock generators are devices where the output is toggling on/off constantly. The simplest stable clock generator is the 5-clock (designs B and C). Using this method, 1-clocks and 3-clocks are possible to make but they will "burn out" because of their speed, which makes them unstable. Redundancy can be used to maintain a 1-clock, even as the torches burn out; the result is the so-called "Rapid Pulsar" (design A). Slower clocks are made by making the chain of inverters longer (designs B'  and C'  show how such an extension process can be achieved).

Using a different method, a 4-clock can be made (design D). A 4-clock is the fastest clock which will not overload the torches.

A 4-clock with a regular on/off pulse width is also possible as seen in design E. This design uses five torches, but has a pulse width of 4 ticks, to do this it utilises a quirk in the game whereby if two torches are placed above one another on alternate blocks facing in a North/South direction they will both change with only a single tick delay (normally there'd be a two tick delay, one per torch). Because of this it is important that the orientation of this design be North/South, South/North.

The customary name x-clock is derived from half of the period length, which is also usually the pulse width. For example, design D will produce a sequence  on the output.

Pulse Generators
A device that creates a pulsed output when the input changes.

Design A will create a short pulse when the input turns off. By inverting the input as shown in B, the output will pulse when the input turns on. The length of the pulse can be increased with extra inverters, shown in B'. This is an integral part of a T flip-flop, as it prevents the flip-flop changing more than once in a single operation. Designs A and B can be put together to represent both the increase of A and the decrease of A as separate outputs, these can then be ORed to show when The input changes, regardless of its state.

A pulse generator which causes a short pulse of low power instead of high can be made by removing the final inverter in design B' and replacing it with a wire connection. This is the type used in designs A and B of the T and JK flip-flops (when J=1 and K=1) to briefly place these devices in the 'toggle' state, long enough for a single operation to take place.

Binary to Decimal
A series of gates that convert a 3bit binary input from inputs into a decimal output from 0-7. Useful in many ways as they are compact 5x5x3 at the largest.

These can be linked in a series from one input source but it is recommended to place an inverter before each input into the circuit to keep them isolated from interacting with the other circuits since some drive a combination of High and Low current.

Need clarification but some of these may also work as Tri State buffers or as close as possible with redstone depending on your setup.

Computation
Using logic gates, we can arrange them to make binary calculations, like in a computer. When using the gates below, mind the inputs and outputs. You may be wondering why there are so many inverted signals being used instead of the regular signal. The adders below use XNOR gates rather than XOR gates because they are more compact. As a result, IMPLIES gates must be used instead of an AND gate, which also happen to be more compact. Therefore for the most compact adder, inverse signals must be used. These adders are too complex to be easily deciphered with 2 layers per square, so each single layer has been drawn separately to ease the building process.

Half Adder


Gates: XNOR, IMPLIES

Torches: 12

Redstone: 7

Blocks: 19

Size: 5X4X4

This adder will take 2 bits and add them together. The resulting bit will be the output of S (sum). If both bits are 1, there will be a carry over, and C will become 1 (~C will become 0). This half adder can be modified to create a non inverted C output, but this configuration is used so that it can be implemented as the start of a chain of full adders.

Full Adder (1 Bit Adder)
AS A FOREWARNING THIS DESIGN IS WRONG! It uses an OR instead of an AND to combine the two half adders.



Gates: XNOR (2), IMPLIES, NOT, OR, AND

Torches: 16

Redstone: 32

Blocks: 48

Size: 6X12X5 Ceiling to floor, including I/O spaces.

This adder will take 2 bits and a carried over bit (actually ~C, rather than C, a value held in the redstone in the bottom left corner on layer 1) and add them all together, producing a sum (S) bit and a carry (actually ~C rather than C).

4 Bit Adder


'''Note! The least significant digit ("ones" digit) is on the left of the diagram so that the progression from half adder to the full adders can be seen more clearly. Reverse the diagram if you want a conventional left to right input.'''

Gates: XNOR (7), IMPLIES (4), NOT (4), OR (3), AND (3)

Torches: 56

Redstone: 108

Blocks: 164

Size: 23X12X5

This adder will take 2, 4 bit numbers (A and B) and add them together, producing a sum (S) bit for each bit added and a carry (C) for the whole sum. The sum bits are in the same order as the input bits, which on the diagram means that the leftmost S output is the least significant digit of the answer. This is just an example of a string of adders; adders can be strung in this way to add bigger numbers as well.

Circuit Applications
Redstone circuits can interact with the environment via doors, tracks, TNT, water and lava, and simply using Redstone torches as a two-state indicator to create interesting mechanisms. Some applications of this include combination locks, traps, subway management systems, and entire microprocessors.

Related pages

 * Redstone
 * Redstone (wire)
 * Redstone (ore)
 * Redstone (dust)
 * Redstone Torch
 * Redstone_circuits/Advanced_circuits
 * Mechanisms
 * Traps

Redstone-Schaltkreise