Как сделать вычислительную машину своими руками

Как работает калькулятор? Создаём свою вычислительную машину! #2

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

Первая часть статьи.

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

Этим я и занялся. Сначала я собирал из транзисторов и резисторов каждый отдельный логический элемент, а затем соединял все эти логические элементы между собой. Может показаться, что это достаточно сложный процесс, но привыкнув к программе, через минут 30 я уже без труда верстал схему. Более того, многие участки схемы повторялись и поэтому можно было быстро копипастить. Пару часов и схема готова.

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

Когда все элементы расставлены нужно провести все дорожки между компонентами. Дорожки на плате очень напоминают фрактальные узоры. Советую, кстати, посмотреть мой ролик, посвященный фракталам, он реально интересный.
По сути, плата готова. Только посмотрите, как она красиво выглядит. По-моему, получилось очень даже прикольно!

Плату даже можно просмотреть в 3D и понять, как она будет выглядеть в реальной жизни.
Сначала я думал изготовить её сам из куска текстолита, используя лазерно-утюжную технологию. Но мой перфекционизм сказал мне «нет», да и мороки много со всеми химикатами, которые нужно для этого разводить. Ещё мне хотелось, чтобы на плате была шелкография, а этого так сам не нарисуешь.

Поэтому я решил заказать плату у китайцев. Единственное, что я не понял, это как производить симуляцию и проверку схемы. Ведь если я ошибся, то узнаю об этом только через месяц-полтора, а это очень критично, если я не хочу писать статью полгода. Подумал я «эх, была-не была» и решил рискнуть, не разбираясь особо. Заказал я так 10 плат и стал ждать.

Так же я заказал несколько сотен транзисторов и много-много резисторов разного номинала, чтобы наверняка.

Через месяц пришла небольшая коробка, вот они мои платы. Я удивился, как всё герметично и аккуратно запаковано. Сами платы очень хорошего качества. Вот это дело: и красивые картинки, и аккуратно. Очень похоже на плату какого-нибудь сложного устройства и даже не верится, что я её сам сконструировал.

Естественно, я сразу сел всё впаивать. Очень уж интересно было: заработает это чудо инженерии или нет.
И как вы думаете, заработала ли эта плата или нет. Дам вам несколько секунд подумать.
Короче, не заработала. Ну или смотря как это воспринимать. На первый взгляд всё было хорошо и плата прошла несколько проверок, однако на один из трёх ответов она давала неправильный результат. Сумму она считала правильно, но почему-то переносила единицу в следующий разряд, хотя делать этого не должна была (Когда на один вход подавал единицу, а на другой — ноль).
Эту проблему я назвал «R16». Почему? – Узнаете позже.
А пока, я начал разбираться, в чём же может быть дело. Первое, что пришло в голову, это некачественная пайка.

Я начал досконально изучать места спайки и перепаивать элементы, чтобы всё было максимально аккуратно.
Ошибка ведь могла быть в чём угодно. Например, при спайке оловом могли случайно соединиться два каких-нибудь контакта. В том числе, я подумал о том, что паяльная кислота могла проводить небольшой ток и сильно влиять на схему.
Естественно, я всё почистил и проверил, и, как не печально, плата работать не захотела. Вылезала всё та же R16.
Я подумал, что возможно какой-то из резисторов или транзисторов палёный и просто вышел из строя. Это не приятная ситуация, ведь в таком случае нужно выпаивать все элементы, проверять их и опять впаивать.
Я начал этим заниматься. И на самом деле, и это не самая приятная работа я вам скажу: постоянно обжигаешься, пытаясь вытащить нагретые элементы.

Я всё проверил – все элементы, как не печально, оказались исправными.
Ещё немного подумав, я решил, что скорее всего проблема была в том, что я впаял транзисторы не той стороной. И на самом деле нужно было впаивать их задом-наперёд. Примерно в ту же степь можно отнести теорию о том, что ножки транзисторов нужно было как-то перекрутить и только потом впаять обратно.
В интернете я посмотрел документацию для этого транзистора. Забавно то, что на разных сайтах я находил разные данные об одном и том же транзисторе. Ну, тогда, правда, мне это было не забавно.

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

Читайте также:  Как сделать кофр для хранения своими руками

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

Я смотрю на него, и вижу, что он ведёт в никуда. То есть в контакт ведёт провод, но другой конец резистора находился в вакууме и не был соединён с чем-то ещё.
Я сразу понял, что это не здоровая штука и пошёл смотреть на плату в том место, где находится резистор под номером 16. И знаете, что я там увидел? Оказалось, что программа, в которой я разводил плату, ошиблась и не соединила два элемента, которые я соединил.

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

Естественно, после этого весь сумматор работал правильно.

Забавная история, кстати, произошла, когда я уже отчаялся и решил обратится за помощью к другим людям. Да не к кому попало, я пошёл в институт к зав кафедре радиоэлектронной физики НГУ. Я пришёл там, нарисовал ему схему, рассказал, что да как, что пытаюсь сделать. А он посмотрел на схему и сразу такой говорит: так это вообще брехня какая-то – это работать никогда не будет, не удивительно, что оно у тебя не работает. И тогда я уж подумал, что всё, реально неправильно я сделал и только чистая случайность помогла мне решить эту проблему. Так что и профессионалы иногда могут ошибаться.

Один сумматор – это скучно, и я соединил два таких, чтобы уже по-настоящему почувствовать, что всё работает правильно. Получился такой вот бутерброд. Все нужные контакты для управления и вывел в один пучок.

Для управления этим сумматором я сделал своеобразный пульт управления, состоящий из четырех тумблеров (Два тумблера на первое число и два тумблера на второе) и трёх лампочек, на которых и выводится результат суммы в двоичном виде.

Я всё собрал, соединил и всё, наконец-таки, заработало. Для этого сумматора возможно 2 в четвёртой = 16 возможных комбинаций. Все из них я проверил и всё работает правильно.

На этом, конечно, можно было остановиться, но я потратил настолько много времени, а результат не то, чтобы завораживает сознание. Ну да, всё работает и суммирует, но выглядит это так себе: много проводов и на полочку это красиво не поставишь.
Я решил делать 4х битный сумматор на одной микросхеме. Чтобы не было огромного количества проводов и можно было спокойно складывать относительно большие четырёхзначные числа.
Очередной раз я засел делать теперь уже четырёхбитный сумматор. По большей мере, это был копипаст старой схемы и разводка элементов конструирования.
Получилась такая вот схема. Здесь верхние четыре блока – это копии сумматора. Внизу расположились элементы управления: 8 выключателей по четыре на каждое число и экран, состоящий из пяти светодиодов. На этих лампочках и будет выводится результат суммы в двоичном виде.

После этого привычная разводка платы, сейчас, правда, это было чуть сложнее, чем в первый раз с маленькой схемой, но спустя некоторое время плата была готова! И просто посмотрите, как же это круто выглядит!

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

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

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

Они даже положили мне небольшую линзу. Кстати, кто знает, как работает линза Френеля? Если интересно, то в одной из следующих статей могу рассказать, как работает такая вот плоская линза.

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

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

К счастью, работает он полностью исправно. В этот раз, перед тем как заказать, я на несколько раз перепроверил все контакты, чтобы не получить брак. Шансов на ошибку у меня не было.

Читайте также:  Как отреставрировать старинный стол своими руками

Для 4х битного сумматора возможно 2 в восьмой, то есть 256 возможных вариантов положения тумблеров. Я перепробовал все возможные и все работает отлично. Это не может не радовать.

Такой вот получился проект. На самом деле, я очень рад тому, что всё-таки решил отложить выпуск этой статьи, но вставить в неё всё, что хотел. Я надеюсь, что вы, как и я получили удовольствие при чтении. Всем продуктивной недели!

На эту тему на моём YouTube канале есть видеоролик, посвященный этой теме, советую подписаться и узнавать о таких масштабных проектах первым 🙂

Первая часть статьи.

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

Если у вас остались вопросы или пожелания, то вы можете оставить комментарий (регистрироваться не нужно)

Подскажи, пожалуйста, в какой программе ты «разводил» схемы?
А проект крутой, конечно, тут без комментариев! Браво)))
————————————————————
EasyEDA, там же их и заказывал 🙂

Дата: 15-08-2019 в 13:39

А что, если построить троичный сумматор — то получится троичный калькулятор?

Дата: 16-11-2019 в 01:34

Было очень интересно)

Дата: 29-11-2019 в 17:59

Транзисторы 2N2222A использовались, верно? Если да, то какие именно использовать?(есть к примеру KSP2222ABU или KSP2222ATA)

Дата: 26-02-2020 в 22:15

Привет, подскажи, ты разводил землю на плате, или просто соединил все радиоэлементы?

Дата: 28-04-2020 в 13:08

Комментарий вряд ли уже актуален, но схемы можно довольно неплохо симулировать в программе Proteus и разводить платы можно там же.

Дата: 14-10-2020 в 19:33

Дата: 26-10-2020 в 19:18

Здравствуйте не могли бы вы выложить в открытый доступ геребер файл плат(тех, которые складывают по одному разряду)

Дата: 02-12-2020 в 07:21

Я правильно понимаю, что плюс светодиода индикации надо подключить на вывод суммы, а его минус на минус питания через резистор?

Дата: 03-12-2020 в 16:20

Кто же использует кислоту при пайке?
Канифоль есть!

Дата: 04-12-2020 в 04:44

скинь гербер файл плиз

Дата: 09-09-2021 в 15:10

Мои курсовые | 30.11.2019: Выложил мои курсовые в открытый доступ. Теперь они отображаются в колонке слева под новостями.

Для будущих авторов | 12.10.18: Если вы хотите стать автором статей на сайте и получить подтвержденный аккаунт, то обращайтесь на почту! support@ilinblog.ru

Обновления | 21.08.18: Добавлена возможность комментировать статьи. Сайт адаптирован под мобильные устройства.

Обновления | 19.01.18: Добавлена возможность добавления математических формул в статьи посредством языка latex. Пример использования тут. Также добавлена возможность редактирования статей.

Информация о пользователях | 28.10.17: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.

Источник

Как работает калькулятор? Создаём свою вычислительную машину! #1

В данной статье я расскажу об основах цифровой схемотехники. Мы рассмотрим базовые логические элементы, работающие на основе транзисторов и соберём свой собственный калькулятор!

Вторая часть статьи.

Важно понимать, что любое электронное устройство, типа калькулятора, компьютера или телефона, выполняет одни и те же функции (математические вычисления и работа с памятью). Получается, что и устройство всех электронных приборов очень похожее.

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

А начнем мы с самого важного.

Булева логика

Булева логика — это очень простая штука, знакомая практически всем. Её хорошее понимание нужно для того, чтобы однозначно и ясно понимать алгоритм построения компьютера.
Начнём с главного определения:
Высказыванием называется любое утверждение, для которого можно сказать истинно оно или ложно.
Примеры:
Высказывание \(A\) гласит, что \(3 — 2 = 1\). Очевидно, что \(A\) верно.
Высказывание \(B\) гласит, что \(3 — 2 = 2\). Понятно, что \(B\) не верно.

Высказывания можно комбинировать.
Самые важные и часто используемые комбинации — это операция «ИЛИ», операция «И» и операция «НЕ».
Для них я приведу так называемые таблицы истинности.

Таблица истинности нужна для того, чтобы определить истинность операции при разных значениях параметров:

Булева логика очень удобна в схемотехнике: истина — напряжение высокое, ложь — низкое.
Высокому напряжению сопоставляют \(1\), низкому — \(0\).
Помимо высказываний, мы можем работать с двоичными числами, ведь последовательности из ноликов и единичек можно сопоставить последовательность высоких и низких напряжений:

Двоичный сумматор через логические операции

Почему для того, чтобы суммировать нужны логические операции (вентили)? Всё дело в том, что логические операции — это очень просто и удобно, ведь они позволяют делать проверки и в зависимости от результата выполнять разные действия. Это очень похоже на условные операторы в программировании.

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

Для сложения двух двоичных чисел нужно несколько раз сложить цифры из одинаковых разрядов. Разберёмся с тем, как это сделать с помощью логических элементов.
Сумма двух цифр равна единице, если одна из них равна единице. В случае, когда обе цифры равны нулю или единице сумма будет нулевая:

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

Читайте также:  Как сделать logic своими руками

Действительно, сумма двух цифр равна единице, если одна из них равна единице, а другая нулю. В случае, когда обе цифры равны нулю или единице сумма будет нулевая (возможно 4 варианта):

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

Сейчас лучше, но в завершение нужно учесть перенос единицы из предыдущего разряда.

Схема получилась достаточно громоздкая, но пугаться её не стоит, ведь происходит следующее: мы результат сложения \(A\) и \(B\) складываем с тем, что было перенесено из предыдущего разряда. То есть мы просто дублируем схему сложения:

Единица для переноса в следующий разряд получается либо если \(A\) и \(B\) равны единице, либо если сумма \(A+B\) с единицей из предыдущего разряда равна единице.
Все возможные комбинации:

Теперь мы умеем складывать цифры поразрядно, учитывая переносы в следующий разряд:

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

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

Транзистор

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

Почему для построения операций удобно использовать транзистор? Дело в том, что транзистор — единственный простой способ собрать логический элемент (А значит и любое вычислительное устройство).

Логические операции с помощью транзисторов

Начнём с операции отрицания (НЕ).

Если на входе единица, то транзистор открыт и ток идет от питания к земле по пути наименьшего сопротивления. Чтобы на выходе было большое сопротивление нужен резистор на входе следующего элемента. У нас они будут на \(10 kOm\). Резистор на \(1 kOm\) нужен для того, чтобы не происходило короткого замыкания. На выходе получаем ноль.
Если на входе ноль, но транзистор заперт и ток от питания идёт на выход. То есть на выходе единица.
Получилось как раз то, что нужно.

Для построения операции «И» нужно поставить два транзистора последовательно. Таким образом элемент сможет пропускать ток только при условии, что оба транзистора открыты:

Для построения операции «ИЛИ» нужно поставить два транзистора параллельно. Таким образом элемент сможет пропускать ток, если один из транзисторов (или оба) открыт:

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

На эту тему на моём YouTube канале есть видеоролик, посвященный этой теме, советую подписаться и узнавать о таких масштабных проектах первым 🙂

Вторая часть статьи.

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

Если у вас остались вопросы или пожелания, то вы можете оставить комментарий (регистрироваться не нужно)

Крутяк, продолжай в том же духе!

Дата: 22-07-2019 в 00:58

Дата: 01-08-2019 в 16:38

Дата: 14-08-2019 в 00:20

А как соеденять суматоры я не понял
———————————-
Нужно подключить их так, чтобы перенос в следующий разряд предыдущего сумматора был соединён с переносом из предыдущего разряда следующего сумматора 🙂

Дата: 14-08-2019 в 00:48

Полезная вещь для молодых ребят.

Дата: 22-08-2019 в 19:48

Подписался на канал только от этого видеоролика, не смотря другие понял, что канал надо поддержать.
А ещё хотелось бы получить возможность посмотреть на схему из этого видео. К примеру я не знаю, как сделать исключающее или. А по схеме я тоже самого собрать сумматор.
——————————————————
Спасибо за поддержку Дата: 03-11-2019 в 05:15

Дата: 26-01-2020 в 18:08

О боже, я научился строить модули алгебры логики, а затем и калькулятор в майнкрафт

Дата: 05-05-2020 в 15:35

В какой программе ты чертил эти схемы?

Дата: 31-05-2020 в 17:40

какая маркировка тронзистора

Дата: 08-07-2020 в 20:41

Дата: 13-07-2020 в 20:57

Откуда берётся сигнал в элементе «не», если на входе его нет?

Дата: 29-07-2020 в 00:46

привет. я уже много раз прочитал. помоему БУМ-БУМ!

Дата: 30-10-2020 в 01:47

Дата: 06-11-2020 в 10:56

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

Дата: 03-12-2020 в 16:29

Дата: 24-12-2020 в 22:55

Я скачал, меня ебали!

Дата: 01-02-2021 в 12:09

Дата: 01-03-2021 в 18:24

Дата: 20-03-2021 в 21:43

Дата: 26-05-2021 в 11:59

Мои курсовые | 30.11.2019: Выложил мои курсовые в открытый доступ. Теперь они отображаются в колонке слева под новостями.

Для будущих авторов | 12.10.18: Если вы хотите стать автором статей на сайте и получить подтвержденный аккаунт, то обращайтесь на почту! support@ilinblog.ru

Обновления | 21.08.18: Добавлена возможность комментировать статьи. Сайт адаптирован под мобильные устройства.

Обновления | 19.01.18: Добавлена возможность добавления математических формул в статьи посредством языка latex. Пример использования тут. Также добавлена возможность редактирования статей.

Информация о пользователях | 28.10.17: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.

Источник

Оцените статью