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

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

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

Кстати, у меня есть замечательная школа математики для программистов – Академия вектозавров. Первую, бесплатную, главу пройти обязательно всем! :)


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




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

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

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

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


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

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

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





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





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


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

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




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




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




Действительно, сумма двух цифр равна единице, если одна из них равна единице, а другая нулю. В случае, когда обе цифры равны нулю или единице сумма будет нулевая (возможно 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

Не анонимно:

Подписался на канал только от этого видеоролика, не смотря другие понял, что канал надо поддержать.
А ещё хотелось бы получить возможность посмотреть на схему из этого видео. К примеру я не знаю, как сделать исключающее или. А по схеме я тоже самого собрать сумматор.
------------------------------------------------------
Спасибо за поддержку <3

Есть вторая часть статьи, где есть все схемы :)


Дата: 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

Анонимно:

9абавно


Дата: 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

Анонимно:

afdfadfsdf


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

Анонимно:

\


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

Анонимно:

Класс


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

Анонимно:

Круть


Дата: 16-10-2021 в 14:26

Анонимно:

Хуй


Дата: 22-04-2022 в 15:23

Анонимно:

22


Дата: 22-06-2022 в 00:48

Анонимно:

очень круто


Дата: 07-07-2022 в 22:26

ваше кайф:

а как вычитать та?


Дата: 21-09-2022 в 17:11

Анонимно:

А полевой с изолированы затвором и встроенным каналом n типа в качестве элемента не использовать не как?


Дата: 27-10-2022 в 19:31

Аноним:

Спасибо за объяснение, я делаю калькулятор в майнкрафте и мне очень помогли ваши схемы, чтобы сконструировать логические блоки и смог уже сделать 2-х битный калькулятор!


Дата: 06-01-2023 в 00:29

Анонимно:

e


Дата: 06-03-2023 в 09:15

Анонимно:

Здорово! Интересно бы было посмотреть на умножатор))


Дата: 17-03-2023 в 23:46

Анонимно:

Класс


Дата: 02-06-2023 в 16:53

Анонимно:

мать ебал но тихо


Дата: 13-06-2023 в 23:55

Анонимно:

Спс, наконец нашел схему сумматора с переносом разряда, сделаю калькулятор в майнкрафте


Дата: 24-09-2023 в 22:11

Анонимно:

Не плохо. Но хорошо бы добавить более простые (колхозные) объяснения. И наглядности, типа калькулятор на коленке...


Дата: 02-10-2023 в 06:23

Анонимно:

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


Дата: 03-10-2023 в 13:38

Анонимно:


Дата: 12-10-2023 в 00:42

Анонимно:

Answer


Дата: 16-10-2023 в 18:00

Русик:

Я сделал такой же в майнкрафте :)


Дата: 04-11-2023 в 00:03

Анонимно:

Спасибо, можно сказать, что я понял


Дата: 19-11-2023 в 00:58

Анонимно:

украдено ! U_U


Дата: 13-02-2024 в 18:08


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

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

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

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

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

Мои статьи и исследования:

Измерение спектра квантовой эффективности полупроводникового фотокатода на основе арсенида галлия (курсовая)
Исследование индукционного метания цилиндрических проводников импульсным магнитным полем (курсовая)
Броуновское движение
Температура и методы её измерения
Исследование механики движения мячей