
- •Псковский политехнический институт
- •1. Арифметические и логические основы цифровой техники
- •2. Классификация цифровых устройств.
- •3. Состязания в комбинационных схемах.
- •4. Комбинационные цифровые устройства.
- •4.1 Дешифраторы.
- •4.2 Преобразователи кода.
- •4.3 Приоритетный шифратор.
- •4.4 Мультиплексоры.
- •4.5 Схемы контроля четности.
- •4.6 Мажоритарные элементы.
- •4.7 Цифровые компараторы.
- •4.8 Сумматоры двоичных кодов чисел.
- •4.9 Устройства вычитания двоичных кодов чисел.
- •4.10 Сумматоры двоично-десятичных кодов.
- •4.11 Арифметико-логические устройства.
- •4.12 Умножители двоичных кодов чисел.
- •5. Формирователи и генераторы
- •5.1 Формирователи импульсов.
- •5.2 Генераторы цифровых сигналов.
- •Лехин Сергей Никифорович
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. Это
можно сделать. принудительно установив
при возникновении переноса
единичное значение функции
,
для чего ее необходимо представить в
виде
.
При этом схема сумматора двоично-десятичных
кодов чисел будет выглядеть следующим
образом.