Файл: Схемотехника ЭВМ ч.2.doc

Добавлен: 10.02.2019

Просмотров: 3443

Скачиваний: 44

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

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

В данном устройстве при преобразовании кодов реализуется операция . Если на входы сумматора вместо нулей подавать произвольные числа, то оно будет выполнять операцию вычитания , формируя положительный результат в прямом коде, а отрицательный в дополнительном. Хотя знаковые разряды здесь не представлены, но информация о знаке результата формируется на выходе переноса в инверсном виде.

Д анную схему можно превратить в универсальный суммирующе-вычитающий узел. Если на входы подать прямой код числа и установить сигнал входного переноса равным нулю, то выполнится операция А+В, а если инверсный и единичное значение переноса, то А-В. Для реализации такого устройства потребуется, при нулевом к примеру, значении управляющего сигнала , передавать входной операнд без изменений, а если инвертировать его разряды.

Э ту функцию может выполнить управляемый инвертор, реализованный на сумматорах по модулю два, и схема суммирующе-вычитающего блока будет иметь следующий вид.

Используя управляемые инверторы, можно создать устройство автоматически преобразующее результат вычитания в прямой код в прямой. Здесь, если значение сигнала , то преобразования кода не происходит, а при дополнительный код, которым представляется отрицательный результат вычитания, трансформируется в прямой.


4.10 Сумматоры двоично-десятичных кодов.


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

Т ак как цифр десять, то некоторые комбинации, имеющиеся в четырехразрядном двоичном коде, в двоично-десятичном будут отсутствовать. Как следует из таблицы, для чисел в пределах от 0 до 9 они совпадают, а далее начинаются отличия, связанные как со структурой тетрад, так и с формированием переносов в старшие разряды кодов.


В стандартных позиционных кодах каждый разряд имеет свой вес, равный соответствующей степени основания системы счисления. В двоично-десятичном коде, используется двойное взвешивание. Одноименные разряды всех тетрад имеют одинаковые веса 8,4,2 и 1, а самим тетрадам приписываются веса кратные степеням 10.

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

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

Результат будет верным, пока значение суммы не превысит 9, то есть вплоть до кодовой комбинации 1001. Далее на выходах сумматора начнут формироваться кодовые комбинации, которых не существует в двоично-десятичном коде. Кроме того, пока результат лежит в пределах от 10 до 15 переноса в двоичном сумматоре нет, а в двоично-десятичном он должен появиться.

Таким образом, здесь потребуется коррекция результата. При сложении, к примеру, чисел 7 и 5 (их коды 0111 и 0101) в двоичном сумматоре получится код числа 12 (1100). В двоично-десятичном коде результат должен выглядеть как 1 0010, то есть как 10 и 2 по отдельности. Такое преобразование можно осуществить, если из исходного числа вычесть 10 и сформировать сигнал переноса в следующую тетраду.

Д ля реализации корректора потребуется устройство анализа выходного кода двоичного сумматора, которое формировало бы, к примеру, сигнал равный нулю, если код меньше или равен 9, и единичный в остальных случаях. Здесь можно использовать параллельный четырехразрядный цифровой компаратор, но целесообразнее построить специальное устройство. Оно окажется проще, так как в данной ситуации требуется сравнивать код с конкретным числом.

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

Из нее следует, что , если и , либо и равны единице. В остальных случаях искомая функция обращается в нуль. Таким образом она имеет вид .

Чтобы провести коррекцию необходимо в случае, когда вычесть из кода, сформированного сумматором число 10. С этой целью потребуется прибавить к его результату дополнительный код десяти, то есть число 6 (кодовая комбинация 0110). Таким образом, в схеме потребуется дополнительный двоичный сумматор, в котором, если исходный результат складывался бы с нулем, а при - с шестеркой.


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

Результат сложения двоично-десятичных кодов может оказаться больше 15. Например, при сложении чисел 9 и 8, сумма получается равной 17. В двоичном сумматоре при этом появится сигнал переноса и на его выходах сформируется кодовая комбинация 1 0001. , и результат не будет скорректирован, хотя это требуется.

П роцедура в данной ситуации проводится следующим образом. Двоичный сумматор представляет число 17 как 16+1, но 16=10+6, а 17=10+6+1. Наличие 10 говорит о том, что должен сформироваться сигнал переноса в следующую тетраду, а кроме того, к результату работы первого сумматора требуется прибавить 6. Это можно сделать. принудительно установив при возникновении переноса единичное значение функции , для чего ее необходимо представить в виде . При этом схема сумматора двоично-десятичных кодов чисел будет выглядеть следующим образом.


4.11 Арифметико-логические устройства.


Центрального частью процессора любой цифровой вычислительной машины от простейших контроллеров до современных персональных компьютеров является арифметико-логическое устройство - АЛУ. Его основой служит многоразрядный сумматор, схема которого дополнена логикой, расширяющей функциональные возможности АЛУ и обеспечивающей перестройку с одной операции на другую.

Она осуществляется путем подачи соответствующего набора управляющих сигналов, называемого командой. По одной команде АЛУ может складывать числа, по другой вычитать, по третьей выполнять логические операции над разрядами входных данных, к примеру, инвертировать их и т. п. Если команды и данные подавать в определенной последовательности, то будет производиться соответствующая обработка поступающей цифровой информации. Комбинируя команды, управляющие работой АЛУ, можно реализовывать и разные процедуры обработки. С этой точки зрения АЛУ является программируемым устройством, то есть оно способно работать по заранее сформированной последовательности команд, которая и является программой.

АЛУ в составе серий цифровых микросхем выпускаются в основном для обработки четырехразрядных операндов. Это связано с числом внешних выводов корпуса, требуемых для подачи входных, управляющих сигналов и получения результата. Одной из таких микросхем является К155ИП3, изображаемая на схемах следующим образом. У нее имеются входы операндов, а также вход и выход переноса, сигналы на которых воспринимаются и формируются в инверсном виде. Нулевой уровень на входе соответствует его наличию, а единица – отсутствию. Так как аналогичная ситуация наблюдается и с выходным сигналом , то для увеличения разрядности обрабатываемых чисел, АЛУ по этим входам и выходам можно соединять непосредственно.


К роме этого в АЛУ формируются функции генерации и распространения переноса, что позволяет для увеличения разрядности объединять их группами по четыре через схемы ускоренного переноса. Для выбора операции, выполняемой АЛУ, служат пять управляющих входов. Сигнал на одном из них – М переключает вид реализуемой функции (логическая, либо арифметическая). Комбинируя сигналы на остальных– , можно при М=1 выбрать любую из шестнадцати логических функций от двух переменных, либо, если М=0, 16 вариантов арифметических и арифметико-логических операций, что отражено в таблице.

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

Если, к примеру, задать операцию , то произойдет поразрядное логическое сложение и результаты будут переданы на соответствующие выходы АЛУ. В данной ситуации разряды выходного кода считаются не связанными друг с другом.

Выбор функции

М = 1

М = 0

Логические опер.

Арифметические опер.






0

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

0

1

0

0

0

1

0

0

0

1

1

0

0

1

1

1

1

0

0

0

1

0

0

1

1

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

При реализации арифметических операций операнды и , воспринимаются как двоичные коды чисел и если реализуется сложение, то происходит арифметическое суммирование разрядов с учетом как входного, так и межразрядных переносов. Так как логическая единица воспринимается как отсутствие переноса на входе АЛУ, а ноль – его наличие, то в зависимости от значения , итог арифметической операции будет отличаться на единицу. При этом положительные результаты формируются в прямом коде, а отрицательные в дополнительном

Арифметико-логические (смешанные) операции реализуются АЛУ в два этапа. Сначала производится поразрядная логическая обработка операндов, а затем арифметическое действие с учетом переносов между разрядами. К примеру операция при А=0110 и В=0100 будет выполняться следующим образом. Сначала сформируются функции и , затем произойдет арифметическое сложение получившихся чисел и, в зависимости от состояния входа переноса, на выходах получится результат 0101, либо 0110. Так как сумма в обоих случаях больше пятнадцати, то сигнал на выходе примет нулевое значение.


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


4.12 Умножители двоичных кодов чисел.


Процедура умножения двоичных кодов чисел достаточно часто встречается при цифровой обработке сигналов. Если рассматривать целые числа, то умножение можно представить как многократное сложение. К примеру, чтобы умножить 3 на 5, требуется тройку пять раз сложить с самой собой. Данным способом умножение можно выполнять, используя, в частности, накапливающие сумматоры. Однако время выполнения этой процедуры будет достаточно велико и, кроме того, оно окажется зависимым от величины множителя.

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

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

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

Так как таблица умножения в двоичной системе счисления идентична таблице, описывающей операцию конъюнкции двух логических переменных, то получение компонент частичных произведений можно реализовать на элементах 2И. Для данного примера их понадобится 9.

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

Формирование разрядов произведения можно произвести путем последовательного сложения пар соответствующих компонент, используя для этого полные одноразрядные двоичные сумматоры.

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

С труктура параллельного умножителя, реализующего данный алгоритм, будет выглядеть таким образом. Задержка формирования произведения здесь определяется наиболее длинной цепочкой прохождения промежуточных результатов и для разрядов и она составит . У перемножителя чисел с разрядностями и она будет равна .