Как работает калькулятор? Создаём свою вычислительную машину! #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


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

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

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

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

Обновления | 30.08.17: С недавнего времени появилась возможность создавать свои собственные публикации, которые будут отображаться на странице пользователя. Авторы будут иметь возможность создавать посты на главную страницу сайта.



500
800
65
88