Сумматоры и цифровые компараторы
Двоичный сумматор (SM) (рис. 5.12, а) служит для формирования арифметической суммы n-разрядных двоичных чисел А и В (рис. 5.12, б). Результатом сложения (при n = 4) является четырехразрядная сумма S и выход переноса Р, который можно рассматривать как пятый разряд суммы.
Полусумматор (HS) служит для сложения битов младших разрядов двух двоичных чисел (его можно реализовать на ЛЭ по таблице истинности, представленной на рис. 5.13).
Полный одноразрядный сумматор суммирует биты соответствующих разрядов двух двоичных чисел и вырабатывает перенос в следующий разряд.
Полный одноразрядный сумматор можно построить из двух полусумматоров HS и логического элемента ИЛИ (рис. 5.14).
В корпусе микросхемы К555ИМ6 четыре полных одноразрядных сумматора объединены в схему четырехразрядного сумматора (рис. 5.15). Сигнал переноса последовательно передается с выхода предыдущего разряда сумматора на вход переноса следующего разряда. В дальнейшем будем использовать более простое и наглядное условное графическое обозначение сумматора, приведенное справа. В дополнительных полях микросхемы показаны весовые коэффициенты разрядов входа и выхода сумматора.
Время выполнения операции в сумматоре на рис. 5.15 намного больше времени сложения в одноразрядном сумматоре, так как в каждый следующий разряд единица переноса попадает, проходя все более длинную цепочку логических элементов. Чтобы уменьшить время выполнения операции сложения многоразрядных чисел, используют схемы параллельного переноса. При этом сигналы переноса во всех разрядах одновременно вычисляются по значениям входных переменных в данном разряде.
Для сигнала переноса из любого k-го разряда справедливо соотношение (см. обозначения на рис. 5.14)
pk = akbk + (ak Å bk)pk-1, (5.2)
gk сk
где gk – функция генерации переноса;
сk – функция распространения переноса.
Пользуясь рекуррентным выражением (5.2), можно вывести следующие формулы для вычисления сигналов переноса в четырехразрядном сумматоре:
p1 = g1 + p0c1,
p2 = g2 + p1c2 = g2 + c2g1 +p0c1c2,
p3 = g3+ p2c3 = g3 + c3g2 + c2c3g1 + p0c1c2c3 ,
p4 = g4 + p3c4 = (g4 + c4g3 + c3c4g2 + c2c3c4g1) + p0(c1c2c3 c4).
G C
Реализацию этих функций выполняет схема ускоренного переноса (см. блок-схему параллельного сумматора на рис. 5.16). Хотя полученные логические выражения достаточно сложны, время формирования сигнала переноса в любой разряд с помощью вспомогательных функций определяется временем задержки распространения сигнала в двух элементах.
Для построения 16-разрядного сумматора используется эта же схема ускоренного переноса, на которую подаются сигналы G и С от каждого четырехразрядного сумматора.
Для сложения двух двоично-десятичных чисел можно использовать по одному четырехразрядному сумматору на каждую декаду. Однако после суммирования следует производить коррекцию. Если в какой-либо декаде происходит перенос или получается двоичное число, большее 9, необходимо добавлять к ней 6, чтобы компенсировать разницу в весах разрядов. Возникающая при этом единица переноса передается в следующую по старшинству декаду (рис. 5.17).
Вычитание двух чисел обычно сводится к операции сложения:
D = A – B = A + (2n – B) – 2n, (5.3)
где 2n – B = + 1 – дополнение В до числа 2n, которое легко получить без помощи специальных схем, использующих вычитание.
Таким образом, вычитание можно осуществить, инвертируя число В, суммируя полученный результат с А и еще с одной 1 и вычитая 2n. Вычитание 2n достигается весьма просто – путем инверсии сигнала переноса. Схема вычитания четырехразрядных чисел показана на рис. 5.18.
При А ³ В получаем V = 0 (в чем легко убедиться на конкретных численных примерах). При A < B получаем V = 1, и число D является дополнением (А – В) до 24 = 16. Выходной сигнал можно рассматривать как пятиразрядное число со знаком V в дополнительном коде.
На рис. 5.19 показано устройство, которое используется в цифровых следящих системах для выделения сигнала рассогласования между кодом задатчика А и кодом сигнала обратной связи В. Знак sign(A – B) определяет направление компенсирующего воздействия на регулирующий орган, а модуль разности (А – В) R(r0 – r7) – скорость этого воздействия. Наличие нулей во всех разрядах А соответствует одному крайнему значению регулируемой величины, а единиц – другому.
При А > B появляется единица на выходе переноса сумматора, в знаковом разряде 0, а (здесь плюс – знак арифметического сложения). Элементы «Исключающее ИЛИ» работают как повторители выходных сигналов сумматора.
При A £ B в старшем разряде сумматора 0 (читателю предлагается проверить это на конкретном численном примере). Знак равен 1, а Элементы «Исключающее ИЛИ» работают как инверторы выходных сигналов сумматора.
Выходной сигнал устройства можно рассматривать как девятиразрядное двоичное число со знаком в прямом коде.
Обычный сумматор может использоваться для сложения чисел со знаком, представленных в дополнительном коде. На его выходе формируется дополнительный код суммы. При сложении, например, 8-разрядных двоичных чисел со знаком с помощью 8-разрядного сумматора (его можно построить на двух микросхемах К555ИМ6) получаем на выходе 8-разрядную сумму в дополнительном коде (перенос в 9-й разряд игнорируется). При этом разрядная сетка не должна переполняться, т.е. сумма модулей для чисел одинакового знака не должна превышать 127. Старший разряд восьмиразрядных слагаемых отображает знак числа (0 – для положительного, 1 – для отрицательного). Семь младших разрядов отображают модуль числа. Дополнительный код положительного числа соответствует его обычному представлению в двоичном коде. Для получения дополнительного кода отрицательного числа нужно проинвертировать код положительного числа и прибавить единицу в младший разряд. Приведенный ниже пример показывает, что при подаче на входы сумматора дополнительных кодов чисел +100 и –16, на выходе получим код числа + 84.
01100100
11110000
101010100 = +84
девятый разряд игнорируется результат положительный
Для преобразования в дополнительный код 8-разрядных чисел со знаком, представленных в прямом коде, используется изображенное на схеме рис. 5.20 устройство. Для положительных чисел знаковый разряд х7 = 0, элементы «Исключающее ИЛИ» и сумматор работают как повторитель числа Х. Для отрицательных чисел х7 = 1, семиразрядный модуль числа Х инвертируется и к нему с помощью сумматора прибавляется 1. Такое же устройство используется и как преобразователь дополнительного кода числа в прямой.
Цифровым компаратором называют устройство, фиксирующее результат сравнения n-разрядных двоичных или двоично-десятичных кодов чисел (рис. 5.21, а). Цифровой компаратор можно построить на сумматоре, подавая на один суммирующий вход прямой код числа А, на другой – инверсный код числа В (рис. 5.21, б). На численном примере легко убедиться, что при А = В в четырех младших разрядах суммы формируются логические единицы, а при A > B единица формируется на выходе переноса.
Компаратор, фиксирующий равнозначность кодов А и В, можно выполнить на ЛЭ по схеме, показанной на рис. 5.22, а. При совпадении кодов во всех разрядах формируются логические нули на выходах элементов «Исключающее ИЛИ» и логический элемент ИЛИ-НЕ формирует на выходе 1. Другой вариант построения схемы равнозначности кодов приведен на рис. 5.22, б.
Контроль четности. Контроль четности (нечетности) используется для обнаружения однократных ошибок при передаче данных по линиям связи (рис. 5.23). В передатчике к n-разрядному слову добавляется контрольный разряд (бит паритета) с таким значением (0 или 1), чтобы сумма единиц в (n + 1)-разрядном сообщении была бы четной. В приемнике производится контроль на четность. Если число единиц в принятом слове нечетно, фиксируется ошибка при передаче данных.
Для контроля восьмиразрядного сообщения можно использовать микросхему К555ИП5 – сумматор по модулю два. Он содержит внутри восемь логических элементов Исключающее ИЛИ. В передатчике 9-разрядное сообщение преобразуется в последовательный код (это преобразование можно выполнить с помощью регистра сдвига), передается по одному каналу связи, а затем на стороне приемника подвергается обратному преобразованию в параллельный код. Если число единиц в принятом сооб-щении четно, логический 0 на выходе К555ИП5 разрешает прием сообщения D7’- D0’. В противном случае на выходе сумматора по модулю два формируется логическая 1 и прием сообщения запрещается. Функциональная схема и логическая структура микросхемы К555ИП5 приведены на рис. 5.24.
В заключение главы рассмотрим примеры разработки некоторых комбинационных цифровых устройств.
Пример 5.1. Построить коммутатор цифровых сигналов с 256 входных каналов на один выходной.
Решение. Схема коммутатора приведена на рис. 5.25.
Для коммутации 256 информационных сигналов х0-х255 требуется восьмиразрядная шина адреса а0 – а7. Устройство представляет собой многоканальный мультиплексор. Выходной сигнал Y повторяет информацию того входа хi, адрес которого подан на входы а0 – а7.
Максимальное число каналов, коммутируемое одной микросхемой (например, К155КП1 или К555КП1), равно 16. Для построения устройства требуется 17 корпусов таких микросхем. Младший полубайт адреса канала подается на объединенные адресные входы микросхем DD1 – DD16. На управляющий вход Е этих микросхем подан разрешающий уровень логического нуля. Вторую ступень коммутатора образует мультиплексор DD17, на адресные входы которого подается старший полубайт адреса коммутируемого канала. При Z = 1 все каналы закрыты. При Z = 0, дважды инвертируясь, на выход проходит сигнал того канала, адрес которого зафиксирован на адресных входах а0 – а7.
Пример 5.2. Спроектировать сигнальное устройство, зажигающее светодиод, если сработали любые 7 из 11 датчиков. При срабатывании датчик формирует на выходе 1, иначе на выходе датчика 0.
Решение. [АШ1] Просуммируем число сработавших датчиков с помощью сумматоров (рис. 5.26), подключив датчики 1– 11 к их входам с весом 1.
Логический элемент И-НЕ на выходе устройства формирует логический ноль, необходимый для того, чтобы светодиод загорелся только при суммарном количестве сработавших датчиков, равном семи. В устройстве можно задействовать микросхемы одноразрядных сумматоров К555ИМ5, двухразрядных сумматоров К555ИМ2, четырехразрядных сумматоров К555ИМ6. Резистор задает рабочий ток светодиода порядка 10 мА.