- •Лекция 12. Комбинационные цифровые устройства
- •12.1. Дешифраторы и шифраторы
- •12.1.1. Шифраторы
- •Каскадирование шифраторов применяется для увеличения разрядности входного кода (рис. 3).
- •12.1.2. Дешифраторы
- •Увеличение разрядности дешифратора
- •Семи сегментный дешифратор
- •Матричный индикатор
- •Индикаторы для диспетчерских щитов
- •12.2. Преобразователи кодов
- •12.3. Мультиплексоры и демультиплексоры
- •12.3.1. Мультиплексоры
- •Реализация логических функций на мультиплексорах
- •Увеличение разрядности мультиплексора
- •12.3.2. Демультиплексоры
- •Примеры использования демультиплексоров:
- •12.4. Сумматоры
- •Полусумматор
- •Полный сумматор
- •Вычитатель
- •Методы вычитания
Вычитатель
Для выполнения операций вычитания, умножения и деления в цифровой технике используются сумматоры. При вычитании знак вычитаемого изменяется, и результат складывается с уменьшаемым двоичным числом.
Методы вычитания
а) В инверсном коде. Изменение знака получается инверсией всех бит разрядов вычитаемого. Если при сложении появляется единица в разряде, более старшем, чем разрядность вычитателя, то она прибавляется к младшему разряду результата.
Пример: вычесть 7 из 9, результат представить в двоичном коде.
Двоичное число |
Десятичное число |
Комментарий: |
1001 |
9 |
|
1000 |
– 7 |
Инверсия кода 01112 = 710 |
1 0001 |
|
Сумма |
0001 |
|
Перенос 1 из старшего разряда |
0010 |
2 |
Результат: сложение суммы и переноса |
Недостаток метода: представление ноля двумя способами, так как инверсия 0...00 равна 1. ..11 и сумма двух разных по знаку, но равных по значению чисел дает 1...11.
Пример: сложить 4 и – 4, результат представить в двоичном коде.
Двоичное число |
Десятичное число |
Комментарий: |
0100 |
4 |
|
1011 |
– 4 |
Инверсия кода 01002 = 410 |
1111 |
|
Сумма |
б) В дополнительном коде. Изменение знака получается инверсией всех бит разрядов числа, расширенного до полного формата и добавлением к результату 1 в младшем разряде. Единица в разряде, более старшем, чем разрядность вычитателя отбрасывается.
Вычитание в дополнительном коде можно применять не только в двоичной системе счисления. Например, стрелочные часы показывают 9 часов, а их надо установить на 1 час. Для этого часовую стрелку можно вращать против ее движения на 8 делений, что эквивалентно вычитанию, или по ходу на 4 деления, выполняя операцию сложения и получив тот же результат. В данном случае число 4 является дополнением к 8, а их сумма равна 12. Это справедливо только в случае, если нет переноса в следующий разряд (он отбрасывается).
Дополнение и вычитаемое число дополняют друг друга при n – разрядном представлении до M n, где M – основание системы счисления.
Для указания знака числа используется старший (знаковый) разряд. У положительных чисел в этом разряде устанавливают значение, равное нулю, у отрицательных чисел равное единице.
При изменении знака значения всех бит разрядов двоичного числа расширенного до полного формата (в незаполненные старшие разряды записаны нули) заменяются дополнением до единицы (инвертируются), и к результату добавляется 1 в младшем разряде. Единица в разряде, более старшем, чем разрядность вычитающего устройства отбрасывается.
Исключение единицы старшего разряда объясняется тем, что разрядность цифровых устройств ограничена и выходящие за эти ограничения по величине числа утрачиваются.
Пример: изменить знак числа 4 в двоичном коде
(табл.).
Последовательность операции изменения знака
Двоичное число |
Десятичное число |
Комментарий |
||
знак |
модуль |
знак |
модуль |
|
0 |
0100 |
+ |
4 |
Положительное число |
1 |
1011 |
– |
|
Инверсия кода |
0 |
0001 |
+ |
|
Единица младшего разряда |
1 |
0100 |
– |
|
Сумма инверсии и 1 младшего разряда |
1 |
1100 |
– |
4 |
Отрицательное число |
Дополнение двоичного числа равно его отрицательному значению.
Необходимость добавления единицы младшего разряда объясняется тем, что обратный код выражается зависимостью:
(3)
где: АПР – прямой код.
Например, 210 = 0102, 2n -1 = 1112. AОБР = 111 – 010 = 101.
Дополнительный код, по определению, равен:
(4)
С огласно (3, 4):
Пример: сложить четырехразрядные числа: 00012 =110 и код 11112:
11112 |
– 110 |
Из примера следует, что двоичный код 11112 соответствует – 110, т.к. сумма равна 0. Тогда меньшее на 1 значение 11102 является представлением – 210 и т.д. |
00012 |
+110 |
|
00002 |
010 |
Пример: вычислить: 7 +(– 4), результат представить в четырехразрядном двоичном коде.
Пятый разряд использовать как знаковый.
Ответ в табл. 5.
Последовательность операции вычитания
Двоичное число |
Десятичное число |
Комментарий |
||
знак |
модуль |
знак |
модуль |
|
0 |
0111 |
+ |
7 |
Первое слагаемое |
0 |
0100 |
+ |
4 |
Вычитаемое в полном формате |
1 |
1011 |
– |
|
Инверсия вычитаемого |
0 |
0001 |
+ |
1 |
Единица младшего разряда |
1 |
1100 |
– |
|
Сумма инверсии и 1 младшего разряда |
1 |
1100 |
– |
4 |
Второе слагаемое в дополнительном коде |
0 |
0011 |
+ |
3 |
Сумма первого и второго слагаемых |
0 |
0011 |
+ |
3 |
Результат вычитания |
Если при добавлении дополнения в n – разрядном представлении отсутствует перенос в n +1 разряд, то результат является отрицательным числом.
Пример: числа в двоичном коде складываются и вычитаются аналогично методу расчета «в столбик» с учетом переносов и займов.
Двоичный код: |
Сложение: |
Двоичный код: |
Вычитание: |
A3A2A1A0: |
0011 |
A3A2A1A0: |
1010 |
B3B2B1B0: |
0101 |
B3B2B1B0: |
0110 |
S3 S2 S1S0: |
1000 |
D3 D2 D1D0: |
0100 |
Где: A, B – четырех разрядные переменные, S3 …S0 – результат сложения; D3 …D0 – результат вычитания.
Пример: вычислить 4 +(–7), у полученной разности изменить знак, результат представить в четырехразрядном двоичном коде. Пятый разряд использовать как знаковый. Ответ в табл. 6.
Последовательность операции вычитания
Двоичное число |
Десятичное число |
Комментарий |
||
знак |
модуль |
знак |
модуль |
|
0 |
0100 |
+ |
4 |
Первое слагаемое |
0 |
0111 |
+ |
7 |
Вычитаемое в полном формате |
1 |
1000 |
– |
|
Инверсия вычитаемого |
0 |
0001 |
+ |
1 |
Единица младшего разряда |
1 |
1001 |
– |
7 |
Сумма инверсии и 1 младшего разряда |
1 |
1001 |
– |
7 |
Второе слагаемое в дополнительном коде |
1 |
1101 |
+ |
|
Сумма, переноса нет – число отрицательное |
1 |
1101 |
– |
3 |
Результат вычитания |
0 |
0010 |
+ |
|
Инверсия результата |
0 |
0001 |
+ |
1 |
Единица младшего разряда |
0 |
0011 |
+ |
3 |
Сумма инверсии и 1 младшего разряда |
0 |
0011 |
+ |
3 |
Модуль результата вычитания |
Пример: представить значения + 0 и – 0 в двоичном коде. Ответ в табл. 7.
Последовательность операции вычитания Таблица 7
Двоичное число |
Десятичное число |
Комментарий |
0000 |
+ 0 |
|
1111 |
|
Инверсия кода 00002 = 010 |
0001 |
1 |
Единица младшего разряда |
1 0000 |
|
1 отбрасывается |
0000 |
– 0 |
Результат |
При выполнении операций сложения и вычитания возможны ошибки, если количество разрядов результата вычислений превышает разрядность вычислительных устройств. Например, сложение двух больших положительных или больших отрицательных чисел.
Признаком ошибки, в данном случае, является не совпадение знаков переменных со знаком результата вычислений. Этот факт контролируется специальным устройством.
Ограничения представления чисел: без указания знака от 0 до 2n –1, где n – число разрядов.
Восемь разрядов двоичного числа соответствует 0…25510. Шестнадцать разрядов: от 0 до 6553510 или 0 – FFFF16.
Числа со знаком ограничены диапазоном: от – 2n-1 до +2n-1 –1, где n – число разрядов. Восемь разрядов двоичного числа соответствуют: от –12810 до +12710. Шестнадцать разрядов: от –32768 до +3276710 или 8000…7FFF16.
Сумматор является основным элементом Арифметико-логического устройства (АЛУ) микропроцессора и выполняет все арифметические операции (сумма, разность, умножение, деление и т.д.).