Minecraft Wiki
Advertisement

A mathematical analog circuit is a circuit which operates on signal strength, such as arithmetic and comparison.

Analog addition

Introduction

Since there is no redstone adder in Minecraft, we need to convert addition into subtraction.

a + b = a + b - 15 + 15
      = - 15 + a + b + 15
      = - (15 - a - b) + 15
      = 15 - (15 - a - b)

However, as signal strength cannot be higher than 15, we need to have sum and carry out outputs on the adder. Then we have:

sum = / a + b if a + b < 16
      \ a + b - 16 if a + b ≥ 16
    = / 15 - (15 - a - b) if a + b < 16 (hereinafter omitted)
      \ a + b - 15 - 1 if a + b ≥ 16
    = a - 15 + b - 1
    = - (15 - a) + (b - 1)
    = (b - 1) - (15 - a)
carry out = / 0 if a + b < 16
            \ 1 if a + b ≥ 16

In an adder, there is also a carry in input (denoted by c below) on the adder, called a full adder, so we have the following equations:

sum = a + b + c
    = / 15 - (15 - a - b - c) if a + b + c < 16 (hereinafter omitted)
      \ (b + c - 1) - (15 - a) if a + b + c ≥ 16
    = (b - 1 + c) - (15 - a)
    = b - (1 - c) - (15 - a)
carry out = / 0 if a + b + c < 16
            \ 1 if a + b + c ≥ 16

If a + b + c > 15, 15 - (15 - a - b - c) will be 15 in terms of comparators. If a + b + c < 16, b - (1 - c) - (15 - a) will be 0 in terms of comparators. This runs a problem: if a + b + c = 15 or 16, then 15 - (15 - a - b - c) will be 15 and b - (1 - c) - (15 - a) will be 0, making impossible to distinguish whether the first expression or second expression should be the final output. So this method didn't work. We can spilt the full adder into two half adders, but it increases the circuit delay. See the next section for the workaround.

Designs

Seiterarch's analog full adder
Newomaster's analog full adder

Disadvantages

These adders are called ripple-carry adders. However, the ripple-carry adder is relatively slow, since each full adder must wait for the carry out to be calculated from the previous full adder. We may use the carry cancel adder, which have less circuit delay than the ripple-carry adder. See the next section for more details.

Carry cancel adder

The carry cancel adder (CCA) is based on comparator XOR gates. A 4-hexdecimal digit carry cancel adder have a lower circuit delay than ripple-carry adders by a factor of 4, since the carry is computed in parallel. Currently, the only analog carry cancel adder is designed by YellowBunny.

Analog subtraction

Introduction

Although we have a redstone subtractor that can be achieved by a comparator in subtract mode, there are no negative signal strength in Minecraft. Our first approach is to convert subtraction into addition using the NOT operation.

diff = a - b - c where c is the borrow in
     = a + (NOT b + 1) + (NOT c + 1)
     = a + (15 - b) + (1 - c + 2)
     = a + (15 - b) + (1 - c) since the final borrow/carry in can only have values 0 or 1

Then we can apply an analog inverter before the "b" input. See the next section for more information about analog inverters.

Analog inverter

Signal strength Inverter

An signal strength inverter is a circuit that inverts the signal strength, for example a signal with the strength of 6 will be changed to 9, and a full strength signal will be 0. This can be achieved by placing a redstone block or redstone torch at the back of a redstone comparator and the input signal will be at the side of the comparator, and the output signal will be at front of the comparator, or by making a signal strength repeater wire, but instead of the wire in front of the repeater, place a block with a redstone torch attached to the front. place a wire in front of every torch, and the bottom-left redstone dust is the output. Note that the signal strength inverter works as a 4-bit bitwise NOT operation.

Design

Analog comparison

Comparison within 0 and 15

A is equal to B (A=B)
A is greater or equal to B (A≥B)
B
A
Analog comparison (A≥B)
2×3×1 (6 block volume)
flat, silent
circuit delay: 1 tick
Earliest Known Publication: January 9, 2013[1]

This design directly use the comparison mode of the comparator that if A is greater or equal to B then it will output A, otherwise turns off the output.

A is greater than B (A>B)
A
B
Analog comparison (A>B)
3×5×1 (15 block volume)
flat
circuit delay: 2 ticks
Earliest Known Publication: January 9, 2013[1]

When A is lesser or equal to B, the left comparator turns on and activates the sticky piston, thus disabling the output. When A is greater than B, the left comparator turns off and outputs A.

A is lesser or equal to B (A≤B)
A
B
Analog comparison (A≤B)
3×5×1 (15 block volume)
flat
circuit delay: 2 ticks
Earliest Known Publication: January 9, 2013[1]

When A is lesser or equal to B, the left comparator turns on and activates the sticky piston, thus enabling the output and outputs A. When A is greater than B, the left comparator turns off and disabling the output.

A is lesser than B (A<B)
A
B
Analog comparison (A<B)
3×4×1 (12 block volume)
flat, silent
circuit delay: 3 ticks
Earliest Known Publication: January 9, 2013[1]

When A is greater or equal to B, the the subtractor turns off the output. When a is lesser than B, the subtractor outputs B - A.

X is between A and B (A≤X≤B)
A
B
X
Analog comparison (A≤X≤B)
5×4×1 (20 block volume)
flat, silent
circuit delay: 4 ticks
Earliest Known Publication: August 2, 2017[2]

When X is greater or equal to A, then the torch at the left will turn off. When X is smaller or equal to B, the redstone line at the right will turn on. If both conditions are met, then the output torch will turn on.

Variations: To change "greater or equal to" to "greater than" at the left or the right, set the comparator to subtraction mode at the respective sides.

Comparing larger numbers

One may use an analog subtractor and the following facts to compare larger numbers:

A > B: A > B
       A - B > 0 (borrow out is off)
A < B: A < B
       A - B > 0 (borrow out is on)
A = B: A = B
       A - B = 0

For A = B, one may also chain all the outputs of the analog equality detector to an AND gate.

Comparing larger numbers equal or not
(n+1)×3×2
flat, silent
circuit delay: n ticks

References

  1. a b c d seiterarch (January 9, 2013): "Minecraft Beyond Binary 01: All the Comparisons (13w01b)"
  2. RedstoneParadox (January 9, 2013): "Hexadecimal Based Redstone "Between" Gate"
Advertisement