Логический элемент — это устройство, реализующее одну из логических операций. Логические элементы, используемые в вычислительной технике и системах автоматики, основаны на использовании самых различных физических явлений и свойств. Наиболее часто применяются электронные устройства в виде интегральных микросхем. Промышленность выпускает серии интегральных схем, выполняющих самые разнообразные логические операции. Например, широко применяемые серии К155, К555, К1533 и ряд других включают в себя более 150 микросхем, в том числе около 50 схем логических элементов различного функционального назначения. Любую логическую функцию можно выполнить с помощью логических операций И, ИЛИ, НЕ. Эти операции называются элементарными, а устройства для их реализации называются элементарными логическими элементами. На рис. 1 показаны условные обозначения логических элементов НЕ, ИЛИ, И.
Все логические элементы изображаются в виде прямоугольников с линиями, по которым подводятся входные и отводятся выходные сигналы. Обычно слева располагаются линии входных сигналов, а справа — выходных. В прямоугольнике ставится знак логической операции: & — И, 1 — ИЛИ. Если выход обозначен окружностью, то элемент производит логическое отрицание результата операции, указанной внутри прямоугольника. Логическое отрицание называют инверсией, а выход, обозначенный окружностью, называют инверсным выходом. На рис. 1 входные сигналы обозначены буквой X, а выходные — Y. Работу элементов НЕ, ИЛИ, И поясняют табл. 1-3, в которых показано соответствие выходного сигнала любой возможной комбинации входных сигналов. Такие таблицы называются таблицами истинности, или таблицами переключений.
Входные и выходные сигналы могут принимать одно из двух значений: логическая 1 и логический 0. При конкретной реализации эти сигналы представляются различными физическими величинами (например, электрическим напряжением или потенциалом). Знание абсолютной величины сигнала при этом не требуется, достаточно различать более положительную и менее положительную величину. Сигнал может иметь и отрицательную полярность. На рис. 2 эти два значения обозначены латинскими буквами Н (от англ. high — высокий) и L (от англ. low — низкий). Указанные значения называют логическими уровнями. Один из них принимается за 1, другой — за 0 (в зависимости от договоренности, соглашения). Различают соглашение положительной логики (при котором логический уровень Н принимают за 1, а логический уровень L — за 0) и соглашение отрицательной логики (при котором Н принимают за 0, a L — за 1). Обычно принимают единое соглашение для всей схемы, или используют указатели полярности сигналов.
Логические элементы И и ИЛИ обладают свойством двойственности — один и тот же элемент в зависимости от принятого соглашения может выполнять функции либо элемента И, либо ИЛИ. Как уже отмечалось, любая сложная логическая функция может быть выполнена с помощью элементарных логических элементов И, ИЛИ, НЕ. Но есть возможность выполнить любую сложную логическую функцию и с помощью некоторого количества совершенно однотипных элементов, реализующих только одну операцию. Например, есть серии микросхем, построенных на основе составной логической схемы И-НЕ, а есть серии, построенные на основе составной логической схемы ИЛИ-НЕ. Условные обозначения логических элементов И-НЕ и ИЛИ-НЕ показаны на рис. 3. Применение единого базового элемента для всей серии позволяет использовать единую технологию для всей серии микросхем, увеличить объем выпуска и, следовательно, снизить стоимость каждого элемента.
По виду входных и выходных сигналов логические элементы делятся на потенциальные и импульсные. В потенциальных элементах сигналы 1 и 0 представляются двумя уровнями (рис. 2), а в импульсных — наличием или отсутствием импульсов (или импульсами разной полярности). Наиболее распространены потенциальные элементы.
Полученную в результате логических операций информацию в виде двоичных кодовых слов необходимо запоминать и хранить. Для этой цели служат устройства памяти (триггеры и регистры).
Благодаря наличию элементов памяти на работу цифрового устройства могут оказывать влияние не только результаты преобразования информации в комбинационных схемах, но и результаты ранее выполненных операций. Такое автоматическое устройство называется уже не комбинационным, а конечным автоматом. Если про комбинационный автомат говорят, что он «не помнит», то конечный автомат «помнит». Использовать результат предыдущей операции, выполненной комбинационным устройством, можно и с помощью специального элемента, который называется элементом задержки. Такой элемент реализует операцию, описываемую простым уравнением: Yt = Хt-1. Это означает, что выходной сигнал схемы в некоторый момент времени t равен входному сигналу, поступившему на эту схему в момент времени t-1. Другими словами, входная величина задерживается в этой схеме на некоторую единицу времени, которую иногда называют тактом задержки. Такая схема носит также название линия задержки. На рис. 4 показан элемент задержки, т.е. однотактная линия задержки. При необходимости получить задержку на несколько тактов (условных единиц времени) последовательно включают соответствующее количество таких элементов.
Триггеры
Основным устройством, которое способно запоминать цифровую информацию, является триггер. Он имеет два устойчивых состояния, одно из которых принимается за 1, а другое – за 0. В вычислительной технике наибольшее распространение получили полупроводниковые триггеры, выпускаемые в виде интегральных микросхем. Они, как правило, являются двухкаскадными усилителями постоянного тока с положительной обратной связью (выход усилителя соединен с его входом).
Схема простейшего статического триггера показана на рис. 1. Из двух транзисторов один обязательно открыт, а другой закрыт. Если закрыт транзистор VT1, то положительный потенциал с его коллектора подается на базу транзистора VT2, и наоборот. Соединение коллектора одного транзистора с базой другого и обеспечивает положительную обратную связь. Несмотря на полную симметрию схемы, такое ее состояние, когда оба транзистора открыты, является неустойчивым и практически невозможным. Даже незначительное случайное увеличение коллекторного тока одного транзистора вызывает уменьшение положительного потенциала на его коллекторе и соответственно на базе другого транзистора. Это приводит к уменьшению коллекторного тока другого транзистора, увеличению потенциала на его коллекторе и соответственно на базе первого транзистора. В итоге первый транзистор еще больше открывается, а второй еще больше закрывается. Этот процесс протекает очень быстро (лавинообразно) и заканчивается тогда, когда первый транзистор полностью открывается (режим насыщения), а второй транзистор полностью закрывается, поскольку на его базу будет подан практически нулевой потенциал.
Перевод триггера из одного устойчивого состояния в другое осуществляется подачей положительных или отрицательных импульсов на коллектор одного или другого транзистора. При этом один из входов принимают устанавливающим триггер в состояние 1 и называют S (от англ. set — установить) а другой, устанавливающий (сбрасывающий) триггер в состояние 0, называют входом R (от англ. reset — сбросить). Такой триггер называют RS-триггером.
Его условное обозначение показано на рис. 2. В сериях микросхем RS-триггеры обычно построены на двух базовых логических элементах, на которых основана вся серия, т.е. либо на двух ИЛИ — НЕ, либо на двух И —НЕ.
Поясним работу RS -триггера на базе элементов ИЛИ — НЕ (см. рис. 3, а) с помощью диаграммы, показанной на рис. 3, б. После поступления сигнала 1 на вход S триггер переключается в состояние 1, если он был в состоянии 0, или сохраняет 1 на выходе Q, если он уже находился в этом состоянии. Соответственно при поступлении 1 на вход R триггер переключается в 0 или сохраняет это состояние. Исходное состояние триггера (сразу после включения и при отсутствии сигналов 1 на входах S и R) не определено, оно является случайной величиной. В отличие от схемы, представленной на рис. 3, а, в схеме, представленной на рис. 3, в, используется отрицательная логика, т.е. 1 имеет менее положительный потенциал, чем 0.
По способу записи информации различают асинхронные и синхронные триггеры. Состояние (выходной сигнал) асинхронного триггера может измениться в любой момент — тогда, когда придет входной сигнал. В синхронном триггере состояние может меняться только в определенные моменты времени — тогда, когда поступает дополнительный синхронизирующий сигнал. RS-триггер является асинхронным. На его базе может быть построен синхронный D-триггер (рис. 4, а).
Сигналы, предназначенные для записи в триггер, поступают на информационный вход D. Сигналы, определяющие момент записи, поступают на вход С. Изменение состояния статического D-триггера возможно только в течение того времени, когда С = 1. Если же на вход С поступает сигнал 0, то изменение сигнала на выходе триггера не происходит, он сохраняет предыдущее состояние. На диаграмме сигналов (рис. 4, б) видно, что по окончании первого синхроимпульса на информационный вход D поступал уже сигнал 0, однако состояние триггера, соответствующее этому сигналу, возникло только тогда, когда пришел второй синхроимпульс. Аналогичным образом состояние 1 на выходе Q сохранялось от третьего до пятого синхроимпульса, хотя сигнал 1 на входе D сменился на сигнал 0 раньше, чем пришел пятый синхроимпульс. Поскольку такой триггер задерживает выходной сигнал до прихода очередного синхроимпульса, он и получил название «D-триггер» (от англ. delay — задержка). В динамическом синхронном D-триггере информация записывается только в момент перепада напряжения на входе С, т. е. передним фронтом синхроимпульса.
Регистры
Регистр представляет собой упорядоченную последовательность (совокупность) триггеров, число которых соответствует числу разрядов в слове. Регистр используется для хранения n-разрядного слова и выполнения логических преобразований над ним. В регистре могут выполняться следующие микрооперации: прием (запись) слова; передача слова в другой регистр; поразрядные логические операции; сдвиг слова влево или вправо на заданное число разрядов; преобразование последовательного кода слова в параллельный и обратно; установка регистра в начальное состояние (сброс). Кроме того, регистр может осуществлять преобразование двоичного кода из прямого в обратный (когда единицы заменяются нулями, а нули — единицами), и наоборот.
Поскольку регистр предназначен для хранения двоичного числа (слова), то основу его составляют запоминающие элементы — триггеры. В каждом из них должна храниться цифра разряда числа.
В зависимости от способа ввода и вывода разряда числа различают регистры параллельные, последовательные и параллельно-последовательные.
В параллельном регистре ввод или вывод слова осуществляется в параллельной форме — одновременно для всех разрядов, в последовательном регистре разряды числа вводятся и выводятся последовательно один за другим, в параллельно-последовательном регистре ввод числа осуществляется в параллельной форме, а вывод — в последовательной, или наоборот.
4.4.1. Параллельный регистр. Функциональная схема параллельного регистра на RS-триггерах при однофазном способе приема числа хn...х2 x1 приведена на рис. 1. Поскольку сигналы, поступающие только на входы S, могут установить соответствующие триггеры только в состояние 1, но не в состояние 0, то перед приемом числа все триггеры регистра обнуляются. С этой целью по шине 0 подается сигнал на входы R всех триггеров регистра для их предварительной установки в состояние 0. Подготовка к приему новой информации составляет первый такт. Во втором такте по сигналу 1, подаваемому по шине П (Прием), двоичное число хn...х2х1, всеми разрядами одновременно (параллельно) через конъюнкторы (элементы И) записывается разряды регистра. Выдача числа в прямом коде осуществляется по сигналу 1, подаваемому по шине Впр, а в обратном — по сигналу 1, подаваемому по шине В0бр.
Ввод и вывод информации в рассматриваемом регистре может осуществляться однофазным и парафазным способами. При однофазном число представляется в прямом или обратном коде; при парафазном — одновременно в прямом и обратном кодах. При парафазном вводе числа его i-й разряд в прямом и обратном кодах (хi и ) необходимо подавать на оба входа i-го триггера. Этим исключается необходимость предварительной установки триггера в 0, так как теперь его состояние целиком будет определяться сигналами на S- и R-входах, т.е. конкретной двоичной цифрой в разряде кода. Такая запись числа осуществляется в один такт и производится намного быстрее, чем двухтактная.
Параллельный регистр может быть реализован и на других типах триггеров, имеющих информационные входы.
Условное обозначение параллельного четырехразрядного регистра приведено на рис. 2, где Q1—Q4 — выходы разрядов регистра, a D1—D4— входы, с которых в регистр одновременно записываются все разряды заносимого слова; С — вход, импульс на котором разрешает запись с входов D1—D4.
4.4.2. Последовательный регистр. В таких регистрах двоичное число вводится и выводится последовательно разряд за разрядом. Разряды самого регистра соединены последовательно. Каждый разряд выдает информацию в следующий разряд и одновременно принимает новую информацию из предыдущего. Для этого каждый разряд должен иметь два запоминающих элемента, т.е. сдвоенный или двухступенчатый триггер. В первую ступень передается информация из предыдущего разряда, одновременно вторая ступень передает свою информацию в последующий разряд. Затем информация, принятая первой ступенью, передается во вторую, а первая освобождается для приема новой информации. Двухступенчатый триггер (например, JK-триггер, D-триггер) представляет собой совокупность двух запоминающих элементов, поэтому он один может составлять разряд последовательного регистра. Если в цепи таких триггеров выходы одного соединить с входами другого, то по фронту тактового импульса, подаваемого на вход С, во входную (первую) ступень каждого триггера будет заноситься информация из выходной (второй) ступени предыдущего триггера, а по спаду импульса она будет переписываться в выходную ступень. По фронту следующего тактового импульса во входной ступени триггера информация может быть заменена новой (из предыдущего триггера) без опасения, что предыдущая окажется потерянной.
Функциональная схема последовательного регистра приведена на рис. 3. Крайний левый триггер предназначен для хранения старшего разряда числа, а крайний правый — для хранения младшего разряда.
Разряды двоичного числа (в виде высоких и низких потенциалов), начиная с младшего, последовательно поступают на входы старшего разряда регистра. Поступление разрядов числа на входы J и К чередуется с поступлением импульсов сдвига на входы С, которыми вводимые разряды продвигаются вдоль регистра, пока младший разряд n-разрядного числа не окажется в младшем разряде регистра.
Для выдачи записанного числа в последовательной форме надо на входы старшего разряда регистра подать хi = 0, = 1, а на шину импульсов сдвига — п импульсов. Первый импульс выдвинет из младшего разряда регистра младший разряд числа, на его место передвинется второй разряд числа и т.д. В итоге все число сдвинется вдоль регистра на один разряд, а в старший разряд регистра будет записан 0. Второй импульс сдвига выдвинет из регистра второй разряд числа и продвинет 0 из старшего разряда регистра в соседний, более младший, и т.д. После п импульсов сдвига число будет полностью выведено из регистра, в разряды которого окажутся записанными нули.
Регистр, в котором можно осуществить сдвиг числа, называется сдвигающим (сдвиговым), или просто регистром сдвига. Сдвигающий регистр может быть однонаправленным (для сдвига числа в сторону младшего разряда — правый сдвиг, в сторону старшего разряда — левый сдвиг), а также реверсивным, обеспечивающим сдвиг в обе стороны.
Функциональные схемы сдвиговых регистров на D-триггерах со сдвигом числа вправо и влево показаны соответственно на рис. 4, а и 4, б. Функциональная схема реверсивного сдвигового регистра изображена на рис. 5. Направление сдвига определяется сигналом V на входе. При V = 1 верхний ряд конъюнкторов (элементов И) заблокирован и в регистр сдвиговыми импульсами могут вдвигаться разряды числа слева направо с входа D1. При V= = 0 блокируется нижний ряд конъюнкторов и слово может вдвигаться в регистр с входа D2 справа налево.
Счетчики
Счетный триггер, или Т-триггер, условное обозначение которого показано на рис. 1, а, имеет один вход и два выхода. Сигналы на выходах меняются на противоположные при каждом положительном перепаде напряжения на счетном входе Т. Счетный триггер может быть создан на базе динамического D-триггера, если его инверсный выход соединить с информационным входом.
Пусть в начальный момент времени на прямом выходе был сигнал 0, тогда на инверсном выходе и, следовательно, на входе D — сигнал 1. По фронту первого синхроимпульса сигнала 1 с входа перепишется на прямой выход, а на инверсном выходе появится 0. По фронту второго синхроимпульса этот сигнал 0 перепишется на прямой выход и будет там сохраняться до прихода третьего синхроимпульса и т.д. Обратите внимание, что частота сигналов на выходе вдвое меньше входной частоты синхроимпульсов, поэтому счетный триггер называют делителем частоты.
Для хранения информации о многоразрядном кодовом слове используются несколько триггеров, по одному на каждый разряд. В этом случае такую группу триггеров называют регистром.
Для подсчета импульсов применяют регистры, состоящие из Г-триггеров. На рис. 2 показан простой трехразрядный двоичный счетчик импульсов, состоящий из трех Т-триггеров, которые имеют входы R для установки нуля. Временные диаграммы сигналов в таком счетчике приведены на рис. 3, а табл. 1 иллюстрирует состояние триггеров. В исходном положении все триггеры находятся в состоянии 0. После первого входного импульса триггер 77 переходит в состояние 1, после второго входного импульса в состояние 1 переходит триггер 72, а 77 возвращается в состояние 0 и т.д. Из табл. 1 видно, что по состоянию триггеров можно определить, сколько импульсов поступило на вход к данному моменту времени. После восьмого входного импульса все три триггера переходят в состояние 0 и счет повторяется. В общем случае емкость счетчика (т.е. коэффициент пересчета) равна 2n, где п — число триггеров в счетчике. С помощью обратных связей можно получить коэффициент пересчета меньше указанного значения.
Сумматоры
Сумматор представляет собой комбинационное цифровое устройство (КЦУ), предназначенное в основном для суммирования двоичных чисел. Кроме того, с помощью сумматора могут выполняться вычитание, умножение, деление, преобразование чисел в дополнительный код и некоторые другие операции. Обычно сумматор состоит только из логических элементов, а результат операции направляется затем для записи в регистр.
Классификация сумматоров может быть проведена по трем основным признакам:
числу входов (полусумматоры, одноразрядные и многоразрядные сумматоры). Многоразрядные сумматоры, в свою очередь, подразделяются на последовательные и параллельные; последние по способу организации межразрядных переносов подразделяются на сумматоры с последовательным и параллельным переносом и с групповой структурой;
способу тактирования (синхронные и асинхронные сумматоры);
системе счисления (двоичные, двоично-десятичные и др.).
Полусумматорами называют КЦУ с двумя входами (а, Ь) и двумя выходами, на одном из которых вырабатывается сигнал суммы (выход S), а на другом — сигнал переноса (выход Р).
Одноразрядным сумматором называют КЦУ с тремя входами и двумя выходами. Кроме двух входов для чисел он имеет третий вход, на который подается сигнал переноса из предыдущего разряда. Одноразрядный сумматор является основным элементом многоразрядных сумматоров. Он выполняет арифметическое сложение одноразрядных двоичных чисел аi и bi и перенос Рi-1 из предыдущего разряда с образованием на выходе суммы Si и переноса Рi, в старший разряд (табл. 2).
Аналогичным способом могут быть построены логические схемы вычитателей. Как сумматоры, так и вычитатели предназначены для выполнения основных арифметических операций — сложения и вычитания. Имея на входе дополнительные средства для изменения знака второго аргумента, сумматор может прибавлять к первому слагаемому второе с измененным знаком, т.е. вычитать, а вычитатель — вычитать из уменьшаемого вычитаемое с измененным знаком, т.е. прибавлять. Таким образом, в арифметико-логических устройствах (АЛУ) в большинстве случаев используется только один из двух рассматриваемых узлов, традиционно — именно сумматор, хотя по всем показателям вычитатель подобен сумматору.
Операции сложения и вычитания бывают последовательными и параллельными. В данном случае под последовательностью понимается поочередное, разряд за разрядом, сложение (или вычитание) на одноразрядной схеме с задержкой переносов (или займов) для использования их как третьих аргументов в следующем такте, т.е. в разряде.
При параллельных сложениях (или вычитаниях) используются столько одноразрядных сумматоров (или вычитателей), сколько разрядов в исходных числах (точнее — сколько разрядов в самом большом из них числе). Эти одноразрядные сумматоры взаимодействуют между собой по цепям переносов (или займов). Очевидно, что полный параллелизм при этом не достигается, так как переносы и займы распространяются с некоторой, хотя и небольшой, задержкой от младших разрядов к старшим. Имеется в виду схемное распространение займа в отличие от логического, направленного в противоположную сторону. Проблема сокращения времени распространения переносов (или займов) по разрядам — одна из главных при проектировании АЛУ.
Отметим некоторые особенности логики работы сумматоров и вычитателей:
сумма равна 1, если единичные значения принимает нечетное число аргументов;
выходной перенос равен 1, если единичные значения принимают больше двух аргументов;
разность равна 1, если при отсутствии входного займа из 1 вычитается 0 или из 0 вычитается 1; она также равна 1, если аргументы равны при наличии входного займа;
выходной заем равен 1, если из 0 вычитается 1, а также если аргументы равны при наличии входного займа.
В структуре АЛУ часто присутствует накопительный блок, состоящий из комбинационного сумматора (или вычитателя) и регистра результата. Подобный блок необходим при реализации последовательного алгоритма вычислений, когда вновь поступающий аргумент прибавляется к ранее накопленному результату или из него вычитается, а новый результат вычислений заменяет исходный.
Функцию накопительного блока, сочетающего функции сумматора (или вычитателя) и регистра, может выполнять набор Т-триггеров, работающих в режиме инверсии состояния, т.е. сложения по модулю 2. Такой сумматор на основе Т-триггеров называют накопительным. Он уже является не комбинационным устройством, а конечным автоматом, поскольку обладает памятью.
Операции сложения (или вычитания) с учетом переноса (или займа) выполняются всегда над тремя аргументами, поэтому накопительный сумматор (или вычитатель) должен содержать управляющие коммутационные схемы, чтобы разнести сложение (или вычитание) на два такта. В этом состоит главный его недостаток. В остальном накопительный сумматор (или вычитатель) — самый простой и экономичный. Помимо несложных коммутационных схем он содержит дополнительно только цепи переноса (или займа).
Используя различные варианты преобразования этих функций, можно реализовать большое число структур одноразрядных двоичных сумматоров.
Для обработки многоразрядных чисел объединяется соответствующее число одноразрядных сумматоров. При этом отдельные разряды обрабатываемых чисел А и В подаются на входы ai и bi. На вход Pi подается перенос из предыдущего, более младшего разряда. Формируемый в данном разряде перенос Pi+l передается в следующий, более старший разряд. Такая организация процесса формирования переноса, называемая последовательным переносом, снижает быстродействие многоразрядного сумматора, так как получение результата в старшем разряде сумматора обеспечивается только после завершения распространения переноса по всем разрядам. Поэтому иногда организуется параллельный перенос.