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

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

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


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

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

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



Вдохновлённый примером компьютера из домино и механических калькуляторов из конструктора Lego, программист C++ под ником lapinozz вместе со своими младшими сестричками решил соорудить в домашних условиях нечто подобное для школьного научного проекта одной из сестёр. Он задумал и реализовал полностью функциональный четырёхбитный калькулятор LOGIC (Logic cardbOard Gates Inpredictable Calculator). Для изготовления этой вычислительной машины не требуется ничего кроме картона и клея, а работает она не на электричестве, а на шариках и земной гравитации. Калькулятор умеет складывать числа от 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, автор реализовал полусумматор — комбинационную логическую схему, имеющую два входа и два выхода. Полусумматор позволяет вычислять сумму A + B, при этом результатом будут два бита S и C, где S — это бит суммы по модулю 2, а C — бит переноса. В нашей картонной конструкции это означает, что если на входе у нас 1 шарик, то он попадает на выход C, а если на входе 2 шарика, то 1 шарик попадает на выход S, а второй никуда не попадает.

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

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


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


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

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


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


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


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



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

Комментарии (43)


  1. 25080205
    24.11.2016 18:33
    +1

    Пачинко же!


  1. RussDragon
    24.11.2016 18:43
    +7

    Вот Вам ещё компьютер из домино, если любите подобное:


    1. RussDragon
      24.11.2016 19:13
      +1

      Да, прошу прощения, это я глупый и невнимательный, не заметил ссылку в статье. Можете заслуженно поминусить ;)


    1. Siroejka
      24.11.2016 20:48

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


      1. RussDragon
        24.11.2016 20:52

        Я больше размышлял о электромагнитной доске с костяшками. Но почему-то мне кажется, что будут проблемы с магнитным полем и стоять нормально они после выключения доски не смогут.


        1. killik
          25.11.2016 17:20

          Какие проблемы? Плиту сверху сделать, поле плавно уменьшать.


      1. kot9pko
        25.11.2016 15:42

        Костяшки можно снизу привязать к грузикам, чтобы под их весом костяшки ставали на место (по типу игрушек-зверушек, где снизу нажимаешь на кнопку и она падает, отпускаешь — встает). В рабочем режиме второй пол будет поддерживать грузики, а для сброса — убираться ниже.


  1. FuzzyWorm
    24.11.2016 18:56
    +2

    А ведь такой же почти полноценный компьютер (ну ладно — калькулятор) могли изобрести и растиражировать еще в Древней Греции, если не в Древнем Египте. И история пошла бы по значительно другой траектории.
    Это к мысли о влиянии абсолютно абстрактного знания (в данном случае — бинарной логики) на повседневную жизнь.
    Интересно, через пару тысяч лет не выяснится ли, что нечто такое же простое, объясняемое практически на пальцах, не было известно в наше время?


    1. mukizu
      24.11.2016 19:26

      Ну, в те времена (ну, не совсем не, но не суть), тоже были определенные устройства для вычислений. https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%BA%D0%B8%D1%82%D0%B5%D1%80%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC тот же.


    1. Siroejka
      24.11.2016 20:23

      Например, что ИИ можно реализовать на костяшках домино)



    1. D_Starikov
      24.11.2016 20:48

      Возможно квантовые вычисления можно провести и на апельсинах. Просто мы не знаем как.)


      1. catharsis
        24.11.2016 22:43
        +1

        Зато знаем, как некоторые квантовые эффекты можно проиллюстрировать капельками на поверхности вибрирующей жидкости.


    1. Kardy
      24.11.2016 21:29
      +1

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


      1. lgorSL
        24.11.2016 23:06
        +1

        Очень интересно подумать над тем, что бы могли сделать древние греки, но не стали.


        • Например, они для передачи сигналов на расстояния догадались использовать огонь, но эффективного оптического телеграфа не сделали. вот их вариант Ждать, когда до следующего сигнала пройдёт от 0 до 24 тактов — не лучшая идея. Получается, о кодировании информации они даже и не думали. (Наверно, для чего-то важного было достаточно голубиной почты).


        • Паровой двигатель вроде бы и был, но котел с выбросом пара в атмосферу несколько далёк от реального применения.


        • Они вполне бы могли использовать фьючерсы и другие финансовые инструменты, но почему-то не додумались до них. (Я хотел упомянуть акции, но не смог найти, когда они были изобретены). Наличие финансовых инструментов потребовало бы быстрой и эффективной передачи информации, что привело бы к улучшению телеграфа и развитию шифрования.


        1. impetus
          25.11.2016 12:08

          да, это действительно очень интересно — вещи, которые можно сделать и на техноогиях античности, но до которых додумались гораздо, гораздно позднее… ну там косой парус, (а там и летающий планер недалеко) «резинопупырчатые перчатки», морзянка, глаза на задницах коров, блочный лук, каменные своды, гигиена, водка опять же… И прочая, и прочая, и прочая…
          Что показывает с одной стороны — отсутствие «вмешательсвта извне»/«прогрессорства» в историю Человечества, а с другой стороны — в принципе саму такую возможность, (напр, географическую) — огромное количество современных очень сложных знаний, типа позиционной записи числа или формы профиля крыла, (не гjворя уже о Е=mc2) — легко уносятся в одной голове или записываются на простом носителе


        1. hdmi
          25.11.2016 13:34

          По поводу первых акции. Если источники вики не врут — была такая Голландская Ост-Индская компания в XVII веке. Занимательный кейс.


        1. killik
          25.11.2016 17:27

          котел с выбросом пара в атмосферу несколько далёк от реального применения.
          — а как же паровозы? Что касается финансовых «инструментов», то они прямое следствие спорной идеи брать проценты на проценты, то есть дифференциального исчисления.


    1. mcsimm
      25.11.2016 09:52

      В какой-то книжке давно читал про фонограф. Что в принципе материалы и технологии, необходимые для его изготовления, были уже в Древнем Риме. Но не было запроса, что ли, на такое устройство. А так бы Цицерона могли бы послушать.


    1. APLe
      25.11.2016 15:47

      Изобрести калькулятор вообще не проблема. Сложно сделать его достаточно надёжным и дешёвым, чтобы он пошёл в массы.
      Собственно, экспериментальные образцы механических калькуляторов (арифмометры Лейбница) появились ещё в XVII веке — а в быт они вошли только в начале XX.


  1. Aleksandr_Zh
    24.11.2016 20:25

    я, недавно интересующийся логикой, построенной не на электрических сигналах, просто в восторге ))


  1. Beholder
    24.11.2016 21:44
    +15

    Вот более аккуратно сделанная вещь:


  1. RigelNM
    24.11.2016 22:49

    Эта статья просто открытие для человека не понимающего в логике процессора. Спасибо. Но все-таки не понял, поясните пожалуйста кто может: по какой логике «021 и 2» превратились в 0111 и 0101? Сначала решил что вторая ячейка служит для разряда и двоек и четверок, но тогда второе число с этой логикой не бьется.


    1. staticlab
      25.11.2016 01:13

      Наверху 4 ячейки — три слева, одна справа (особенность реализации). Шарики битов для обоих операндов кладутся в битовые ячейки вместе, т.е.


      0101
      0111

      При реализации для младшего разряда нужно реализовать полусумматор (А0, B0) -> (S0, C0), где Ai, Bi — исходные биты, Si — бит суммы, Ci — бит переноса, а для остальных разрядов — полные сумматоры (Ai, Bi, Ci-1) -> (Si, Ci)`.


      Таким образом, полусумматор должен пропустить один шарик по пути S, если на входе он был один, и по пути C — если их было изначально два. Сумматор же должен работать так (намеренная почти копипаста из статьи):


      • один шарик на входе — один шарик по пути S;
      • два шарика на входе — один шарик по пути C;
      • три шарика на входе — один шарик по пути S, и ещё один по пути C.


      1. staticlab
        25.11.2016 01:22

        Даже правильнее было бы сказать, что внутренняя реализация калькулятора основана на унарной системе счисления


      1. ankh1989
        25.11.2016 09:19

        "(А0, B0) -> (S0, C0)" — это кхм… "отображение"? Это как человек не знакомый с физикой попросит рассказать в двух словах в чём суть гравитации в современном представлении, а ему в ответ начнут говорить про 4-х мерные тензоры.


    1. abberati
      25.11.2016 09:49

      это не «021 и 2», это 0212, т.е. 0+0, 1+1, 1+0, 1+1, иначе — 0111 + 0101


    1. stdenis
      25.11.2016 09:49

      Числа подаются последовательно т.е. сначала 0111, потом сверху 0101. Выглядит это так
      0101
      0111
      А вправо последний разряд смещен т.к. детали механизма не слишком компактны.


    1. watashiwaale
      25.11.2016 09:49
      +2

      Там на самом деле два бинарных числа, если читать построчно:


    1. reimai
      25.11.2016 09:49

      0111
      0101
      ----
      0212


  1. zomby
    24.11.2016 23:32
    +6

    — О боже, да вы промокли насквозь! Принести вам посуду для горячего напитка?
    — Да, чашку OR кружку. Можно и то и другое.
    — Сахар, ложка нужны?
    — Сахар AND ложка. Сахар мне бесполезен без ложки, и наоборот, если сахар закончился, за ложкой можно не ходить.
    — Наливаем вам в чашку/кружку чай или кофе?
    — Чай ХOR кофе. Если это смешать, получится гадость.
    — Лимон, молоко?
    — Лимон NAND молоко. С удовольствием попью чай просто так, от добавки лимона или молока не откажусь, но не то и другое сразу!
    — …
    — Э… Официант! Вы NOT заснули? Скажите «да»!


    1. RussDragon
      25.11.2016 13:42

      Спасибо, сохранил для объяснения базовых логических операций людям :D


  1. potan
    25.11.2016 01:15
    +3

    Представляю, как он правильность задержек отлаживать…


  1. artskep
    25.11.2016 09:46

    «Самым известным» механическим калькулятором является не Антикерский Механизм, а старый добрый абакус.
    Самым распространенным тоже.

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


  1. akun
    25.11.2016 09:47
    +1

    А еще есть такая интересная штука, как пневмоника .
    Позволяет создавать автоматику, работающую на сжатом воздухе. В составе элементной базы весь базовый набор логики. Скорость переключения элементов — до нескольких тысяч в секунду. Размеры — на уровне транзисторных компьютеров второго поколения. Можно штамповать несколько логических элементов на одной пластине. При этом почти полная независимость от температуры, электромагнитных помех и радиационного фона…
    P.S. Калькулятор замечательный. Автору респект за смекалку!


    1. lgorSL
      25.11.2016 12:39

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


      Если верить википедии, в процессоре 8008 было около 3500 транзисторов — теоретически, что-нибудь похожее можно было бы сделать и на пневмонике, только частота была бы меньше.


      1. akun
        25.11.2016 19:11

        Я тоже, когда прочитал пару лет назад о пневмонике (а это как раз была статья в «Науке и жизни» 1965 года), сразу подумал, какая это была бы классная фишка в рамках стимпанка.
        В принципе, можно даже дисплей для такого компьютера придумать. Матрица из отверстий, закрытых легкими белыми клапанами. Когда воздух выходит из отверстия, клапан поднимается и видится черная точка. Когда воздух не идет — белая.

        Кстати, в 4004 было еще меньше транзисторов — 2300. А некоторые энтузиасты и сейчас разрабатывают и строят четырехбитные процессоры на дискретной логике.


    1. APLe
      25.11.2016 15:50

      Вы, кстати, случайно не знаете, существуют ли по пневмонике современные книги?
      Интересно было бы почитать — благо, с появлением 3D принтеров ей можно было бы придать вторую жизнь.


      1. akun
        25.11.2016 18:51
        +1

        Она сейчас называется «струйная логика», или «струйная техника». Книжки и статьи есть сравнительно свежие.
        Вот, например, доклад на конференции. 2013 год.
        Книжек не очень много, но тоже есть.
        Из классики.
        Чудиков А.Д. Цифровые устройства пневмоники. // М. Энергия, 1971. Есть здесь
        Чаплыгин Э.И. и др., Опыт разработки и внедрения струйных систем управления. // Пневмоавтоматика .- М.: Наука, 1974.
        Из относительно свежих книг:
        А.М. Касимов, Развитие пневматических средств автоматизации. / Институт проблем управления им. В.А.Трапезникова // — Москва .- 2000
        Кулешова Н.А., Власов Ю.Д., Леладзе И.С. Атлас конструкций элементов систем пневмоавтоматики. Часть 2 Элементы струйной системы ВОЛГА // — М.: .- 1996 г.

        Да, а еще есть настоящий пневматический процессор. Это правда не струйная логика и скорость его работы весьма невысока, но сам факт!


  1. cazebo
    25.11.2016 11:52
    +1

    А ещё гидротрансформаторная АКПП работает на гидрологике. Там за это отвечает гидроблок.


  1. UluMulu
    29.11.2016 14:07

    Зачем разряд повысили на выходе? 5 разряд — в мусорку. 4 бит на входе, 4 бит на выходе. Остальное — потеря при вычислениях =)
    Отечественная микроэлектроника именно такие сумматоры пытается создать. Правда 8 разрядные.


  1. SaltWater
    30.11.2016 15:12
    +1

    Основы Булевой алгебры описывается и объясняется на 2-3 страницах. Без всяких мудровствований. И зачем нужна физическая интерпретация абстрактному набору правил? Какая между ними связь? Элементарные булевы операции нужно просто запомнить — их очень мало, меньше десятка.


    Более мутного объяснения булевой алгебры и представить трудно.
    Всё это придумывается только с одной целью — задурить детям голову и привить им отвращение к математике и логике. Вижу процесс идёт.


  1. Bvp254
    01.12.2016 21:28

    Большое спасибо! Мне, как человеку, которому часто важно «потрогать, чтобы лучше понять», подобные примеры очень полезны!