- Как работает калькулятор? Создаём свою вычислительную машину! #1
- Вторая часть статьи.
- Булева логика
- Двоичный сумматор через логические операции
- Транзистор
- Логические операции с помощью транзисторов
- Вторая часть статьи.
- 10. Логические основы построения вычислительной машины. Элементы алгебры логики. Логический синтез вычислительных схем.
- Информационно-логические основы построения вычислительных машин
Как работает калькулятор? Создаём свою вычислительную машину! #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
Подписался на канал только от этого видеоролика, не смотря другие понял, что канал надо поддержать.
А ещё хотелось бы получить возможность посмотреть на схему из этого видео. К примеру я не знаю, как сделать исключающее или. А по схеме я тоже самого собрать сумматор.
——————————————————
Спасибо за поддержку Дата: 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
Мои курсовые | 30.11.2019: Выложил мои курсовые в открытый доступ. Теперь они отображаются в колонке слева под новостями.
Для будущих авторов | 12.10.18: Если вы хотите стать автором статей на сайте и получить подтвержденный аккаунт, то обращайтесь на почту! support@ilinblog.ru
Обновления | 21.08.18: Добавлена возможность комментировать статьи. Сайт адаптирован под мобильные устройства.
Обновления | 19.01.18: Добавлена возможность добавления математических формул в статьи посредством языка latex. Пример использования тут. Также добавлена возможность редактирования статей.
Информация о пользователях | 28.10.17: Расширена функциональность страницы пользователей, теперь можно добавить статус и личную информацию.
10. Логические основы построения вычислительной машины. Элементы алгебры логики. Логический синтез вычислительных схем.
Логические основы построения ВМ.
В вычислительных машинах коды нуля и единицы представляются электрическими сигналами, имеющими два различных состояния. Наиболее распространенными способами физического представления информации являются импульсный и потенциальный:
— импульс или его отсутствие;
— высокий или низкий потенциал;
— высокий потенциал или его отсутствие.
При импульсном способе отображения код единицы идентифицируется наличием электрического импульса, код нуля — его отсутствием (впрочем, может быть и наоборот). Импульс характеризуется амплитудой и длительностью, причем длительность должна быть меньше временного такта машины. При потенциальном способе отображения код единицы — это высокий уровень напряжения, а код нуля — отсутствие сигнала или низкий его уровень. Уровень напряжения не меняется в течение всего такта работы машины. Форма и амплитуда сигнала при этом во внимание не принимаются, а фиксируется лишь сам факт наличия или отсутствия потенциала. Вышесказанным обусловлено то, что для анализа и синтеза схем в компьютере
широко используется математический аппарат алгебры логики, оперирующий также двумя понятиями «истина» или «ложь». Алгебра логики применяется и при алгоритмизации и программировании решения задач
Элементы алгебры логики
Алгебра логики — это раздел математической логики, значение всех элементов (функций и аргументов) которой определены в двухэлементном множестве: О и 1. Алгебра логики оперирует с логическими высказываниями.
Высказывание — это любое предложение, в отношении которого имеет смысл утверждение о его истинности или ложности. При этом считается, что высказывание удовлетворяет закону исключенного третьего, то есть каждое высказывание или истинно, или ложно, и не может быть одновременно и истинным и ложным.
— «Сейчас идет снег» — это утверждение может быть истинным или ложным ;
— «Вашингтон — столица США» — истинное утверждение ;
— «Частное от деления 10 на 2 равно 3 » — ложное утверждение .
В алгебре логики все высказывания обозначают буквами а, b , с и т. д. Содержание высказываний учитывается только при введении их буквенных обозначений, и в дальнейшем над ними можно производить любые действия, предусмотренные данной алгеброй. Причем, если над исходными элементами алгебры выполнены некоторые разрешенные в алгебре логики операции, то результаты операций также будут элементами этой алгебры.
Простейшими операциями в алгебре логики являются операции логического сложения (иначе — операция ИЛИ ( OR ), операция дизъюнкции) и логического умножения (иначе — операция И ( AND ), операция конъюнкции). Для обозначения операции логического сложения используют символы + или V,а логического умножения — символы • или ^. Правила выполнения операций в алгебре логики определяются рядом аксиом, теорем и следствий. В частности, для алгебры логики применимы законы:
3.Распределительный:
Справедливы соотношения, в частности:
Также существует инверсия.
Логический синтез вычислительных схем.
Рассмотрим логический синтез (создание) вычислительных схем на примере одноразрядного двоичного сумматора (полусумматора), имеющего два входа (а и Ь) и два выхода (5 и Р) и выполняющего операцию сложения.
Информационно-логические основы построения вычислительных машин
ГЛАВА 3 Информационно—логические основы построения вычислительных машин
Информационно-логические основы построения вычислительных машин охватывают круг вопросов, связанных с формами и системами представления информации в компьютерах, а также с логико-математическим синтезом вычислительных схем и схемотехникой электронных компонентов компьютера. Поскольку последние вопросы представляют интерес в основном для специалистов технического профиля, в данном разделе рассмотрены только базовые понятия логического синтеза.
Представление информации в вычислительных машинах
Информация в компьютере кодируется в двоичной или в двоично-десятичной системах счисления.
Система счисления — способ наименования и изображения чисел с помощью символов, имеющих определенные количественные значения. В зависимости от способа изображения чисел, системы счисления делятся на следующие:
В позиционной системе счисления количественное значение каждой цифры зависит от ее места (позиции) в числе. В непозиционной системе счисления цифры не меняют своего количественного значения при изменении их расположения в числе. Количество (Р) различных цифр, используемых для изображения числа в позиционной системе счисления, называется основанием системы счисления. Значения цифр лежат в пределах от 0 до Р — 1.
В общем случае запись любого смешанного числа в системе счисления с основанием Р будет представлять собой ряд вида:
Нижние индексы определяют местоположение цифры в числе (разряд):
а положительные значения индексов — для целой части числа (т разрядов);
Q отрицательные значения — для дробной (s разрядов).
Минимальное значащее, не равное 0 число, которое можно записать в s разрядах дробной части:
Максимальное целое число, которое может быть представлено в т разрядах:
Имея в целой части числа т, а в дробной — 5 разрядов, можно записать всего Рт *5 разных чисел.
Двоичная система счисления имеет основание Р = 2 и использует для представления информации всего две цифры: 0 и 1. Существуют правила перевода чисел из одной системы счисления в другую, основанные в том числе и на соотношении (1).
Например, двоичное число 101 равно десятичному числу 46,625.
Практически перевод из двоичной системы в десятичную можно легко выполнить, надписав над каждым разрядом соответствующий ему вес и сложив затем произведения значений соответствующих цифр на их веса.
Двоичное число (2) равно 65(10). Действительно, 64-1 + 1-1-65.
Таким образом, для перевода числа из позиционной системы счисления с любым основанием в десятичную систему счисления можно воспользоваться выражением (1). Обратный перевод из десятичной системы счисления в систему счисления с другим основанием непосредственно по формуле (1) для человека весьма затруднителен, ибо все арифметические действия, предусмотренные этой формулой, следует выполнять в той системе счисления, в которую число переводится. Обратный перевод может быть выполнен значительно проще, если предварительно преобразовать отдельно целую и дробную части выражения (1) к виду:
Алгоритм перевода числа из десятичной системы счисления в систему счисления с основанием Р, основанный на этих выражениях, позволяет оперировать с числами в той системе счисления, из которой число переводится, и может быть сформулирован следующим образом.
При переводе смешанного числа следует переводить его целую и дробную части отдельно.
1. Для перевода целой части числа его, а затем целые части получающихся част
ных от деления следует последовательно делить на основание Р до тех пор, пока
очередная целая часть частного не окажется равной 0. Остатки от деления, за
писанные последовательно справа налево, образуют целую часть числа в систе
ме счисления с основанием Р.
2. Для перевода дробной части числа его, а затем дробные части получающихся
произведений следует последовательно умножать на основание Р до тех пор,
пока очередная дробная часть произведения не окажется равной 0 или не будет
достигнута нужная точность дроби. Целые части произведений, записанные
после запятой последовательно слева направо, образуют дробную часть числа в
системе счисления с основанием Р.
Рассмотрим перевод смешанного числа из десятичной в двоичную систему счисления на примере числа 46,625. Переводим целую часть числа: 46 : 2 = 23 (остаток : остаток 1). И : 2 * 5 (остаток 1). 5 : остаток 1). 2 : остаток 0). 1: остаток 1). Записываем остатки последовательно справа налево — то есть 46(10)= 101110(2) . Переводим дробную часть числа: 0,625 • 2 = — 1,250.0,250 • 2 = 0,500.0,500 • 2 — 1,000. Записываем целые части получающихся произведений после запятой последовательно слева направо— 0,101, то есть 0,625(,1012. Окончательно 46,625(10)= 1012.
Представление чисел с фиксированной и плавающей запятой
В вычислительных машинах применяются две формы представления двоичных чисел:
а естественная форма или форма с фиксированной запятой (точкой); а нормальная форма или форма с плавающей запятой (точкой).
В форме представления с фиксированной запятой все числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной.
Например: в десятичной системе счисления имеется 5 разрядов в целой части числа (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, записанные в такую разрядную сетку, имеют вид:
+00721,35500; +00000,000328; -10301,20260.
Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому чаще всего не приемлема при вычислениях. Диапазон значащих чисел n в системе счисления с основанием Р при наличии т разрядов в целой части и 5 разрядов в дробной части числа (без учета знака числа) будет:
Например, при P=2,m=10 и s = 6 числа изменяются в диапазоне: 0,015 в -(2 — к» в ПК будет представлено: а в упакованном формате:
Код ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией) имеет основной стандарт и расширение (рис. 3.5). Основной стандарт для кодирования символов использует шестна-дцатеричные коды 00-7F, расширение стандарта — коды 80-FF.
Основной стандарт является международным и используется для кодирования управляющих символов и букв латинского алфавита; в расширении стандарта кодируются символы псевдографики и буквы национального алфавита (естественно, в разных странах разные). Пользоваться таблицей достаточно просто. Следует приписать шестнадцатеричную цифру номера строки справа к шестнад-цатеричной цифре номера столбца. Так получится шестнадцатеричный код символа.
Любой символ, представленный в этой таблице, при работе в DOS может быть введен в ПК с клавиатуры набором его десятичного кода (соответствующего шестнадцате-ричному ASCII-коду) на малой цифровой клавиатуре при нажатой клавише Alt.
Наряду с кодом ASCII в ВС, в частности в сети Интернет, используется общий для всех стран мира универсальный код — Уникод (Unicode). Этот код основан на паре байт — машинном слове. Шестнадцати бит хватает для отображениязнаков. Такого количества достаточно для всех существующих алфавитов (то есть алфавиты большинства стран мира размещаются в основном стандарте этого кода).
Логические основы построения вычислительной машины
Несколько слов о физических формах представления информации в компьютерах.
Рис. 3.5. Таблица кодов ASCII
В вычислительных машинах коды нуля и единицы представляются электрическими сигналами, имеющими два различных состояния:
Q импульс или его отсутствие;
а высокий или низкий потенциал;
а высокий потенциал или его отсутствие.
Наиболее распространенными способами физического представления информации являются импульсный и потенциальный.
При импульсном способе отображения код единицы идентифицируется наличием электрического импульса, код нуля — отсутствием его (впрочем, может быть и наоборот). Импульс характеризуется амплитудой и длительностью, причем длительность должна быть меньше временного такта машины.
При потенциальном способе отображения код единицы — это высокий уровень напряжения, а код нуля — отсутствие сигнала или низкий его уровень. Уровень напряжения не меняется в течение всего такта работы машины. Форма и амплитуда сигнала при этом во внимание не принимаются, а фиксируется лишь сам факт наличия или отсутствия сигнала.
Для анализа и синтеза схем в компьютере широко используется математический аппарат алгебры логики, оперирующир с двумя понятиями: истина и ложь.
Алгебра логики — это раздел математической логики, значение всех элементов (функций и аргументов) которой определены в двухэлементном множестве: 0 и 1. Алгебра логики оперирует с логическими высказываниями.
Высказывание — это любое предложение, в отношении которого имеет смысл утверждение о его истинности или ложности. При этом считается, что высказывание удовлетворяет закону искдюченногр третьего, то есть каждое высказывание или истинно, или ложно и не может быть одновременно и истинным и ложным.
Q «Сейчас идет снег»— это утверждение может быть истинным или ложным;
а «Вашингтон — столица США» — истинное утверждение;
Q «Частное от деления 10 на 2 равно 3» — ложное утверждение.
В алгебре логики все высказывания обозначают буквами а, Ь, с и т. д. Содержание высказываний учитывается только при введении их буквенных обозначений и в дальнейшем над ними можно производить любые действия, предусмотренные данной алгеброй. Причем если над исходными элементами алгебры выполнены некоторые разрешенные в алгебре логики операции, то результаты операций также будут элементами этой алгебры.
Простейшими операциями в алгебре логики являются операции логического сложения (иначе: операция ИЛИ, операция дизъюнкции) и логического умножения (иначе: операция И, операция конъюнкции). Для обозначения операции логического сложения используют символы + или V» а логического умножения — символы • или /\. Правила выполнения операций в алгебре логики определяются рядом аксиом, теорем и следствий. В частности, дли алгебры логики выполняются следующие законы.
Справедливы соотношения, в частности:
Наименьшим элементом алгебры логики является 0, наибольшим элементом — 1. В алгебре логики также вводится еще одна операция — отрицания (операция НЕ, инверсия), обозначаемая чертой над элементом.
Справедливы, например, такие соотношения:
Функция в алгебре логики — алгебраическое выражение, содержащее элементы алгебры логики а, 6, с, связанные между собой операциями, определенными в этой алгебре.
Примеры логических функций:
Согласно теоремам разложения функций на конституанты (составляющие), любая функция может быть разложена на конституанты 1:
и т. д. Эти соотношения используются для синтеза логических функций и вычислительных схем.
Логический синтез вычислительных схем
Рассмотрим логический синтез (создание) вычислительных схем на примере одноразрядного двоичного сумматора, имеющего два входа (а и Ь) и два выхода (5 и Р) и выполняющего операцию сложения в соответствии с заданной табл. 3.3.
В этой таблице/1(я,— значение цифры £уммы в данном разряде;/2(я, Ь) = Р — цифра переноса в следующий (старший) разряд.
Согласно соотношению (4), можно записать:
Логическая блок-схема устройства, реализующего полученную функцию, представлена на рис. 3.6.
Рис. З.6. Логическая блок-схема сумматора
На рис. 3.7 изображены логические блоки в соответствии с международным стандартом.
В ряде случаев перед построением логической блок-схемы устройства по логической функции последнюю, пользуясь соотношениями алгебры логики, следует преобразовать к более простому виду (минимизировать). Для логических схем «ИЛИ», «И» и «НЕ» существуют типовые технические схемы, реализующие их на реле, электронных лампах, дискретных полупроводниковых элементах. Для построения современных компьютеров обычно применяются системы интегральных элементов, у которых с целью большей унификации в качестве базовой логической схемы используется всего одна из схем: «И — НЕ» (штрих Шеффера), «ИЛИ — НЕ» (стрелка Пирса) или «И — ИЛИ — НЕ».
Выполнение логических операций в компьютере
В перечень машинных команд, которые используются при программировании, обязательно входят и некоторые логические операции. Чаще всего это операции OR (ИЛИ), AND (И), NOT (HE) и XOR (исключающее ИЛИ).
Команда выполняет поразрядную дизъюнкцию (логическое сложение — операцию
«ИЛИ») битов двух чисел; устанавливает 1 в тех битах результата, в которых была 1
хотя бы у одного из исходных операндов,
а 0011
Команда выполняет поразрядную конъюнкцию (логическое умножение — опера
цию «И») битов двух чисел; устанавливает 1 в тех битах результата, в которых у
обоих исходных операндов были 1.
а 0011″
Команда выполняет операцию сложения по модулю 2 (отрицание равнозначности),
устанавливает 1 в тех битах результата, в которых исходные числа отличались друг
Команда устанавливает обратное значение битов в числе (операция инверсии),
а 0 1
1. Что такое система счисления?
2. Какие системы счисления используются для представления информации в ком
пьютерах?
3. Дайте краткую характеристику форм представления информации с фиксиро
ванной и плавающей запятой (точкой).
4. Дайте краткую характеристику кодов алгебраического представления чисел
(прямого, обратного, дополнительного).
5. Выполните ряд операций сложения и умножения чисел в дополнительных ко
дах с фиксированной и плавающей запятой (точкой).
6. Назовите наименования основных двоичных совокупностей в компьютерах
и определите их размер.
7. Что такое поля данных постоянной и переменной длины? Какова их разряд
ность в персональных компьютерах?
8. Что такое ASCII-коды? Приведите их структуру и укажите назначение.
9. Что такое алгебра логики и какова область ее использования?
10. Выполните логические операции OR, AND, XOR и NOT над двоичными числами.