- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Четырёхбитный калькулятор из картона и шариков - 2
Логическая операция AND в компьютере из 10 000 костяшек домино

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

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

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

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

Цель проекта

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

Внешний калькулятора

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

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

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

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

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

Устройство калькулятора

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

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

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

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

1 на входе, 0 на выходе
Четырёхбитный калькулятор из картона и шариков - 6

2 на входе, 1 на выходе
Четырёхбитный калькулятор из картона и шариков - 7

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

Логический вентиль XOR
Четырёхбитный калькулятор из картона и шариков - 8

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

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

Один шарик на входе полусумматора
Четырёхбитный калькулятор из картона и шариков - 9

Два шарика на входе полусумматора
Четырёхбитный калькулятор из картона и шариков - 10

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

Один шарик на входе — один шарик по пути 1
Четырёхбитный калькулятор из картона и шариков - 11

Два шарика на входе — один шарик по пути 2
Четырёхбитный калькулятор из картона и шариков - 12

Три шарика на входе — один шарик по пути 1, а другой по пути 2
Четырёхбитный калькулятор из картона и шариков - 13

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

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

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

Автор: alizar

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/213353

Ссылки в тексте:

[1] антикитерский механизм: https://ru.wikipedia.org/wiki/Антикитерский_механизм

[2] компьютер из 10 000 костяшек домино: https://www.youtube.com/watch?v=OpLU__bhu2w

[3] математическая теория: http://youtu.be/lNuPy-r1GuQ

[4] архитектура: http://think-maths.co.uk/sites/default/files/downloads/think_maths_domino_computer_worksheets.pdf

[5] примеров таких калькуляторов: https://www.youtube.com/results?search_query=Lego+calculator

[6] lapinozz: https://github.com/lapinozz

[7] LOGIC (Logic cardbOard Gates Inpredictable Calculator): https://lapinozz.github.io/learning/2016/11/19/calculator-with-caordboard-and-marbles.html

[8] полусумматор: https://ru.wikipedia.org/wiki/Полусумматор

[9] Источник: https://geektimes.ru/post/282990/