Цифровая логика — Компьютерные системы, часть 3

Цифровая логика — Компьютерные системы, часть 3

Оглавление

3. Цифровая логика

Транзисторы

Транзистор является ключевым устройством, которое позволяет построить логический элемент. Существует несколько видов транзисторов, мы рассмотрим МОП-транзисторы (от слов металл-диэлектрик-полупроводник), как наиболее популярные. Что бы понять их детальное устройство требуются предварительные знания физики, поэтому тут мы рассмотрим лишь функциональную модель, которой будет вполне достаточно для наших целей. Существует два типа МОП-транзисторов: P-тип и N-тип. Что бы понять их использование, рассмотрим сначала простую электрическую цепь.

Транзисторы

Тут мы видим источник  тока, лампу и также переключатель. Если переключатель закрыт, то мы имеем замкнутую цепь, по которой идет ток, если открыт – то цепь незамкнута и, соответственно, тока не возникает. Что бы проще изображать цепь, можно не показывать каждый раз источник питания целиком, а изобразить сверху место высокого напряжения (условно – 1.2 вольта), а снизу – место низкого (0 вольт).

Схема

Так вот, полезное для нас свойство транзистора заключается в том, что его можно использовать в качестве переключателя. Рассмотрим схему транзистора N-типа.

Схема транзистора N-типа

У него есть три терминала. Верхний называется сток, нижний исток, средний – затвор.

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

Рассмотрим тебе транзистор P-типа.

Схема транзистора P-типа

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

Логические элементы

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

NOT-гейт

Самым простым гейтом является NOT-гейт. Он принимает на вход один бит и выдает на выход противоположный.

NOT-гейт

A

Z

0

1

1

0

Его электрическая схема выглядит так.

Электрическая схема NOT-гейта

Если на вход подается высокое напряжение, то на выход низкое и наоборот.

OR-гейт

OR-гейт (от английского OR – или) принимает на вход два значения, если какое-либо из них равно единице, то и на выход подается единица, если оба нуля, то на выходе мы имеем ноль.

OR-гейт

A

B

Z

0

0

0

0

1

1

1

0

1

1

1

1

Электрическая схема.

Электрическая схема OR-гейта

NOR-гейт

NOR-гейт работает как OR наоборот. То есть, если на обоих входах нули, то на выходе будет единица, во всех остальных случаях на выходе будет ноль.

NOR-гейт

A

B

Z

0

0

1

0

1

0

1

0

0

1

1

0

Электрическая схема.

Электрическая схема NOR-гейта

AND-гейт

AND-гейт (от английского and – или) выдает единицу только если на обоих его входах единицы. В остальных случаях он выдает ноль.

AND-гейт

A

B

Z

0

0

0

0

1

0

1

0

0

1

1

1

Электрическая схема.

Электрическая схема AND-гейта

NAND-гейт

NAND-гейт является обратным к AND. Он выдает ноль, если на обоих его входах единицы. В других случаях он выдает единицу.

NAND-гейт

A

B

Z

0

0

1

0

1

1

1

0

1

1

1

0

Электрическая схема.

Электрическая схема NAND-гейта

Комбинационные логические схемы

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

Декодер

Декодер – это такая схема, которая имеет несколько выходов, но только один ее выход всегда выдает единицу (какой именно – зависит от входных значений), а остальные всегда выдают ноль. Рассмотрим декодер 2x4.

Декодер 2x4

2 означает количество входов, а 4 – количество выходов. 2 бита могут образовывать четыре комбинации, соответственно каждому возможному входу соответствует уникальная выходная комбинация. Таким же образом можно создавать и более большие регистры, например 3x8, 4x16 и т.д.

Мультиплексер

Мультиплексер имеет несколько входов и один выход.

Мультиплексер

Его смысл в том, что из нескольких входных сигналов (I0, I1, I2, I3) один и только один он пропускает на выход. Какой именно – мы можем выбрать с помощью входов A и B. Можно создавать мультиплексеры и с большим количеством входных сигналов.

Сумматор

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

Первый бит

Второй бит

Входящий перенос

Сумма

Перенос

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

0

0

1

0

0

1

1

0

0

1

1

0

1

1

0

1

0

1

1

1

1

1

1

Теперь построим такую схему с помощью логических элементов.

Схема из логических элементов

Последовательные логические схемы

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

R-S триггер

Возьмем два NAND-гейта и соединим таким образом.

2 NAND-гейта

Представим, что на A и на B поданы единицы, какие значения будут на C и на D? На самом деле мы будем иметь неопределенность, поскольку значение C зависит от значения D, а мы не знаем не того не другого.

Теперь подадим единицу на A и ноль на B.

Подача значений

Как работает NAND-гейт? Он выдает ноль, только если на обоих его входах единицы. То есть в данном случае у нас уже есть ноль на входе B, значит нижний NAND будет выдавать единицу. Тогда верхний гейт будет выдавать ноль.

Подадим теперь единицу на B. Как видно, это никак не повлияет на значения C и D

Подача значений

Теперь подадим ноль на A и единицу на B.

Подача значений

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

Теперь подадим единицу на A. Верхний и нижний гейт продолжат выдавать предыдущие значения!

Подача значений

Как видно, при единицах на A и B, гейты сохраняют свои предыдщие выходные значения.

Сохранение гейтами предыдущих выходных значений

Такая схема называется R-S триггером. Ее свойство, позволяющее хранить предыдущее состояние и используется для создания запоминающего элемента. У гейтов может быть два варианта выходных значений, один из будет использовать для хранение единицы, другой – для хранения нуля.

R-S триггер

В зависимости от того, какое значение мы хотим записать мы либо подаем ноль на A и единицу на B – либо наоборот. Если после этого подать единицу на тот вход, на котором до этого был подан ноль, входные значения сохранятся.

Теперь можно сделать полноценный запоминающий элемент

Полноценный запоминающий элемент

Если на S единица, то на B мы также будем иметь единицу, а на A – либо единицу (если на i – ноль), либо ноль (если на i – единица). Таким образом мы записываем нужное нам значение, которое гейт выдает на C. Если на S ноль – то в независимости от значения i схема будет сохранять предыдущее значение, которое было записано, когда на S была единица. Таким образом, с помощью входа S мы открывает схему для записи, с помощью входа i записываем какое-либо значение. Такое устройство может хранить 1 байт.

Регистр

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

Регистр

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