Четырёхбитный калькулятор из картона и шариков



Внешний вид картонного четырёхбитного калькулятора из картона. Хорошо видны полусумматор вверху и три сумматора в средней и нижней части калькулятора

Давным-давно, до изобретения электроники, люди изготавливали механические компьютеры из подручных материалов. Самым известным и сложным примером такой машины является антикитерский механизм[1] — сложнейшее устройство из не менее чем 30 шестерёнок использовалось для расчёта движения небесных тел и позволяло узнать дату 42 астрономических событий.

В наше время механические компьютеры (калькуляторы) — скорее предмет развлечения гиков и повод устроить забавное шоу. Например, как компьютер из 10 000 костяшек домино, который складывает произвольные четырёхзначные бинарные числа и выдаёт пятизначную двухбитную сумму (математическая теория этого калькулятора и архитектура). Такие перфомансы позволяют детям лучше понять, как работают битовые логические операции в программировании, как устроены логические вентили. Да и вообще сделать маленький компьютер своими руками из подручных материалов очень интересно, тем более если вы делаете это вместе с ребёнком.


Логическая операция AND в компьютере из 10 000 костяшек домино
[2][3][4]

Для изготовления механического калькулятора отлично подходит конструктор Lego. На YouTube можно найти немало примеров таких калькуляторов[5].

Калькулятор из компьютера Lego

Вдохновлённый примером компьютера из домино и механических калькуляторов из конструктора Lego, программист C++ под ником lapinozz[6] вместе со своими младшими сестричками решил соорудить в домашних условиях нечто подобное для школьного научного проекта одной из сестёр. Он задумал и реализовал полностью функциональный четырёхбитный калькулятор LOGIC (Logic cardbOard Gates Inpredictable Calculator)[7]. Для изготовления этой вычислительной машины не требуется ничего кроме картона и клея, а работает она не на электричестве, а на шариках и земной гравитации. Калькулятор умеет складывать числа от 0 до 15 с максимальной суммой 30.

В отличие от костяшек доминов и кубиков Lego, в производстве этого калькулятора не использовались никакие фабричные компоненты. Все элементы калькулятора склеены из картона с нуля, что хорошо понятно по фотографиям устройства. В этом смысле данное устройство можно считать уникальным.

Наглядное представление, как складывать бинарные числа. Обучение школьника навыкам перевода из десятичной в двоичную систему счисления и обратно. Изучение битовых логических операций и основных логических схем.

Как можно рассмотреть на фотографии калькулятора, в верхней части располагается зона для ввода данных. После прохождения всех логических операций шарики показывают результат операции внизу.

Ввод данных осуществляется шариками. Шарик есть — 1, шарика нет — 0. Бит справа — это наименьший бит числа. Перед началом работы некоторые части калькулятора следует привести в исходное положение. После указания исходных значений отодвигается полоска картона, которая удерживает шарики в исходном положении — и начинается процесс сложения.

Например, так выглядит исходное положение шариков для операции 7+5 (0111 + 0101).

Логические операции картонного калькулятора осуществляется схожим образом, как и в вышеупомянутом компьютере из домино.

Схематически логические вентили для всех логических операций показаны на схеме.

То есть логический вентиль «И» (AND) означает, что при поступлении 0 шариков на входе получается 0 на выходе. При поступлении 1 шарика на входе получается 0 на выходе. При поступлении 2 шариков на входе получается 1 на выходе.

1 на входе, 0 на выходе

2 на входе, 1 на выходе

Логический вентиль XOR сделать немного сложнее. В этом случае если поступает один шарик, он должен пройти. А если поступает два шарика, то они должны аннулировать друг друга, то есть на выходе будет 0. Автор показывает, как это делать, через вертикально висящий кусочек картона с узким горлышком. Если два шарика приходят одновременно, то они блокируют друг друга — и таким образом эффективно реализуют логическую операцию XOR.

Логический вентиль XOR

Чтобы оптимизировать систему и не городить массу логических вентилей AND и XOR, автор реализовал полусумматор[9] — комбинационную логическую схему, имеющую два входа и два выхода. Полусумматор позволяет вычислять сумму A + B, при этом результатом будут два бита S и C, где S — это бит суммы по модулю 2, а C — бит переноса. В нашей картонной конструкции это означает, что если на входе у нас 1 шарик, то он попадает на выход C, а если на входе 2 шарика, то 1 шарик попадает на выход S, а второй никуда не попадает.

Программист придумал довольно простую и эффективную схему для полусумматора. В ней 1 шарик на входе спокойно продолжает свой путь, переворачивая барьер, и проходя в отверстие C. Но если поступают два шарика, то второй шарик уже не может пройти через барьер, перевёрнутый первым шариком — и проваливается в отверстие, прибивая новый путь S. Это и есть полусумматор.

Один шарик на входе полусумматора

Два шарика на входе полусумматора

Наконец, настоящим шедевром является сумматор. Обычно его делают из двух полусумматоров и логического вентиля «ИЛИ», но автор реализовал другую конструкцию, которая фактически является небольшой модификацией полусумматора.

Один шарик на входе — один шарик по пути 1

Два шарика на входе — один шарик по пути 2

Три шарика на входе — один шарик по пути 1, а другой по пути 2

Весь калькулятор целиком состоит из одного полусумматора и трёх сумматоров.

Калькулятор выдаёт корректный результат вычислений в случае, если шарики падают с правильной скоростью, не слишком быстро и не слишком медленно, и не отскакивают друг от друга. Сама логика безупречна, но на практике калькулятор иногда глючит.

[8]

По теме: ( из рубрики )

    Оставить отзыв

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    *
    *

    восемь + шестнадцать =

    Top