Схема устройства формирующего значения (i +1)-го разряда приведена на рис. 3.23.
|
|
|
|
+ |
|
|
|
x |
+ |
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
i |
|
|
|
|
i |
|
|
|
|
|
– |
|
|
+ |
|
|
|
|
|
|
|
|
x |
i+1 |
|
|
|
x |
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
– |
|
|
|
|
|
x |
& |
x |
|
|
& |
|
|
|
i+1 |
|
|
i+2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
+ |
|
|
|
|
|
x |
|
|
x |
i+2 |
|
|
|
|
|
i+2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
– |
|
|
|
x |
+ |
|
|
|
|
x |
i+1 |
|
|
i+1 |
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
– |
& |
|
|
|
|
|
& |
|
|
|
|
|
|
|
|
|
|
i+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.3.23
Схема устройства формирующего значения (i +2)-го разряда приведена на рис. 3.25.
x |
+ |
|
|
|
|
|
|
i+2 |
|
|
|
|
|
|
|
|
|
|
– |
|
|
|
|
|
x |
i+1 |
|
|
|
|
|
|
|
|
x |
+ |
|
& |
|
|
|
i+2 |
|
|
|
|
|
|
|
|
|
– |
1 |
x |
+ |
x i |
i+2 |
|
– |
|
& |
|
|
|
|
|
|
|
x |
|
i+2 |
|
|
|
|
|
|
|
|
|
&
|
xi+ |
|
|
|
|
|
|
|
|
x+i+1 |
|
|
|
|
|
x+i+2 |
|
|
& |
|
|
|
x–i |
|
|
|
|
|
|
|
& |
|
– |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x–i+2 |
|
|
|
|
1 |
x i+2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
& |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x+i+1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x–i+1 |
|
|
|
& |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.5.4. Простейшие методы перевода чисел из двоичной в двоично-
избыточую систему счисления, начиная со старших разрядов
Во многих случаях для проведения арифметических операций нет необходимости переводить в ДИЗСС всё число. Достаточно освободиться от знака. В этом случае достаточно анализировать и преобразовывать два или три старших разряда. Тогда для перевода двоичных чисел в ДИЗСС можно построить следующую таблицу перевода.
|
|
|
|
|
|
|
|
|
|
Таблица 3.7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
0 |
x |
1 |
x |
2 |
x |
0 |
x |
1 |
|
x |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
|
0 |
|
|
|
|
|
|
|
0 |
0 |
1 |
0 |
0 |
|
1 |
|
|
|
|
|
|
|
0 |
1 |
0 |
0 |
1 |
|
0 |
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
0 |
|
1 |
|
|
|
|
|
|
|
1 |
0 |
0 |
1 |
0 |
|
0 |
|
|
|
|
|
|
|
1 |
0 |
1 |
0 |
1 |
|
1 |
|
|
|
|
|
|
|
1 |
1 |
0 |
0 |
1 |
|
0 |
|
|
|
|
|
|
|
1 |
1 |
1 |
0 |
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
В наборах 3 и 4 возникает переполнение. Переполнение возникает всегда, если после запятой стоят подряд две и более единицы. Для исключения переполнения осуществляется сдвиг вправо на один разряд. В этом случае наборы 3 и 4 исключаются. Таким образом, при преобразовании образуется один из наборов x+ и исходные разряды числа, и один из наборов x – ,
оставшиеся разряды в котором заполняются нулями.
|
|
. 0 0 * * * * … |
|
|
. 0 0 0 0 … 0 |
+ |
= |
. 0 1 * * * * … |
- |
= |
. 0 1 0 0 … 0 |
x |
x |
|
|
. 1 0 * * * * … |
|
|
. 1 0 0 0 … 0 |
Звёздочками обозначены неизменяемые разряды
x = 0. 01101101; |
x = 1. 10110110; |
|
192 |
x+ = . 01101101; |
x+ = . 00110110; |
x – = . 00000000; |
x – =. 10000000. |
3.5.5. Обратное преобразование числа из избыточной двоичной знакоразрядной системы счисления в двоичную систему счисления
Преобразование избыточного кода в двоичный можно осуществить следующим образом. Учитывая, что в ДИЗСС число передаётся по двум каналам: по каналу плюс (положительные единицы) и каналу минус
(отрицательные), вынесем знак минус за скобку, тогда можно считать, что по второму каналу передаётся отрицательное число, хотя единицы не имеют знака.
Сформировав дополнение от второго числа и сложив его с числом,
поступающим по каналу плюс, получим искомое двоичное число. Обычно операция взятия дополнения выполняется путём инвертирования всех разрядов числа, включая разряд после точки, и прибавления единицы к младшему разряду. Так как обратное преобразование является финитной (последней)
операцией в множестве связных операций, то рационально для преобразования использовать параллельный сумматор.
Пример 3.12.
А+ =.10000 0001 0000 000001
А– =.00000 1000 1000 100000
Далее отрицательное число (А–) инвертируется и складывается на сумматоре с (А+) и в младший разряд сумматора добавляется единица.
А–= 1.11 1 1
А+= 0.10 |
0 |
0 |
0. |
0 0 |
0 |
0 |
0 |
0 |
0 |
0 |
А = 0.0 1 1 1
1 0 |
1 1 1 |
0 |
0 |
0 |
|
0 0 |
|
1 |
|
0 |
0 |
0 |
0 0 |
0 |
0 |
110 0 |
0 0 |
1 1 1 0 1 1 1 1 1
|
|
|
|
|
|
0 0 0 0 |
0 |
0 0 0 |
1 |
0 |
0 0 |
0 1 |
|
|
1 1 1 1 0 0 001
Схема преобразования приведена на рис. 3.25. На первый регистр поступают положительные цифры, а на второй – отрицательные. Через C0
обозначена приёмная тактирующая серия, Сn – сигнал записи суммы в регистр
S, и он же поступает в самый младший разряд сумматора на вход переноса как дополнительная единица.
+ |
|
Рг1 |
|
-n |
|
|
|
Cn(2 |
) |
|
|
C0 |
|
А |
СМ |
|
|
|
|
В |
|
|
|
|
|
|
Cn |
- |
|
Рг2 |
РгS |
|
|
|
|
|
S |
Рис. 3.26
3.6. Выполнение арифметических операций в знакоразрядной избыточной
двоичной системе счисления (ДИЗСС) с произвольной разрядностью
Для построения алгоритмов сложения и умножения чисел в ДИЗСС с переменной разрядностью рассмотрим выполнения этих операций над фиксированным форматом. Для начала необходимо задать соответственно таблицы сложения и умножения. Рассмотрим каждую из этих операций.
3.6.1. Сложение чисел в ДИЗСС
Для определения таблицы сложения цифр в ДИЗСС оценим максимально возможную сумму цифр.
Максимальная цифра определяется как
Amax = amax – amin .
Для двоично-избыточной знакоразрядной системы счисления Amax равно
Amax = +1 – (–1) = 2.
194
Следовательно, максимальная сумма цифр равна 4, в связи с чем при сложении двух цифр в ДИЗСС перенос возможен как в первый, так и во второй старшие разряды.
Для того чтобы перенос не пробегал по всем разрядам числа, введем дополнительно два условия:
- при сложении двух цифр текущая цифра результата должна быть всегда положительна, т.е. S 0;
- цифра первого переноса (перенос в старший ближайший разряд) всегда отрицательна, т. е. C1 0;
-цифра переноса через разряд C0 может иметь любой знак как положительный, так и отрицательный.
Здесь и далее обозначения: S – текущая цифра; C1 – перенос в следующий разряд; C0 – перенос через разряд.
Таблица сложения двух цифр представлена табл. 3.8.
Рассмотрим теперь согласование весов получаемых цифр при сложении. Обозначим через 1, 2, 3 номера разрядов. Чем меньше номер, тем старше цифра. Тогда
195
|
1 |
2 |
3 |
4 |
|
5 |
6 |
7 |
8 |
|
|
1 такт |
C C S |
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
2 такт |
|
C C S |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
3 такт |
|
|
C C |
S |
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
4 такт |
|
|
|
C C S |
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
5 такт |
|
|
|
|
|
C C S |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
|
6 такт |
|
|
|
|
|
|
C C S |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
|
7 такт |
|
|
|
|
|
|
|
C C S |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
|
8 такт |
|
|
|
|
|
|
|
|
C C S |
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
9 такт |
|
|
|
|
|
|
|
|
|
0 0 0 |
10 такт |
|
|
|
|
|
|
|
|
|
|
0 0 0 |
|
-1 0 |
1 |
2 |
|
3 |
4 |
5 |
6 |
7 |
8 |
При сложении цифр старшего и следующего за ним разрядов два первых такта являются вспомогательными и при разрядности чисел n общее число тактов суммирования равно n + 2.
Появление значащей цифры в разряде с номером –1 после коррекции говорит о неправильно выбранном масштабе, имеет место переполнение со значением (+ 2). Действительно, такое переполнение возможно, если складывать два максимальных положительных числа, формально не имеющих переполнения. Появление цифры в нулевом разряде также свидетельствует о переполнении. Существует истинное и фиктивное переполнение. Фиктивное переполнение будет, если значения в соседних разрядах равны 1. 1 или 1 .1, т.
е. фактическое значение есть 0.1 или 0. 1 . Переполнение будет истинным при значениях разрядов 1.0, 1.1; 1.0 или 1 .0. Коррекция –1-го, 0-го и 1-го разрядов осуществляется в 3-м такте при выдаче 1-го разряда. Во всех случаях переполнения в –1-м и 0-м разрядах всегда в момент их прохождения выдается нуль.
196
Пример 3.13.
|
Р |
–1-й разряд |
1 |
0-й разряд |
|
|
1 |
|
. |
1-й разряд |
0 |
2-й разряд |
1 |
3-й разряд |
0 |
4-й разряд |
0 |
5-й разряд |
1 |
6-й разряд |
0 |
7-й разряд |
1 |
Результат |
|
|
X = . |
1 |
0 |
1 |
0 |
|
Y= . |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
|
|
|
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
|
|
|
|
|
|
|
|
0 |
0 |
|
|
|
|
|
|
|
|
0 |
0 |
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
0 |
Но в то же время при переполнении фиксируется значение цифры переполнения и выдается сигнал переполнения. Далее значения разрядов суммы определяются в каждом такте, и на вход выдаётся в зависимости от режима либо максимальное число x = .111…1, если переполнение положительно, либо массив отрицательных единиц: если переполнение отрицательное – режим насыщения, либо выдаётся вычисляемый результат,
если включён режим автоматического перемасштабирования.
197
–1-й разряд
0-й разряд
1-й разряд
2-й разряд
|
X = . |
1 |
|
1 |
1 |
0 |
1 |
|
Y = . |
1 |
|
1 |
1 |
0 |
1 |
1 |
1) |
1 |
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
0 |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
0) |
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
1 |
|
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
0) |
1 |
0 |
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
3-й разряд |
1 |
|
|
1) |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4-й разряд |
1 |
|
|
|
1 )0 |
|
0 |
|
|
|
|
|
|
|
|
|
|
0 |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5-й разряд |
0 |
|
|
|
|
0) |
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6-й разряд |
1 |
|
|
|
|
|
|
|
1) |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7-й разряд |
1 |
|
|
|
|
|
|
|
|
1 )0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Результат |
1 |
0 . 0 |
1 |
1 |
1 |
|
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
В соответствии с |
правилом |
работы, |
|
во |
вспомогательных разрядах |
должны быть нули. Тогда в разряде с номером –1 при появлении единицы она запоминается, а на выходе формируется нуль. Если в следующем разряде
формируется минус единица, то |
комбинация единиц |
1 1 |
заменяется на |
комбинацию 01 , иначе возникает |
переполнение. Замена старшей единицы |
|
|
0 |
|
|
|
01 |
|
|
|
|
1 |
|
|
|
|
|
|
возможна, так как число 1 1 2 1 2 |
|
1 2 1 1, т.е. |
. В примере 3.13 |
|
|
единица в –1 разряде компенсируется и поэтому переполнение в данном разряде нет. Аналогично для нулевого разряда. Он тоже должен быть нулевым и при наличии в нём единицы со знаком она должна быть скомпенсирована
198
соответствующей единицей в разряде с номером 1. В примере 3.14 значение этого разряда равно нулю и, следовательно, имеет место переполнение по младшему вспомогательному разряду.
Результат
|
|
|
|
|
|
|
|
|
|
|
–1 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
1. 0 |
|
|
0 |
0 |
1 |
0 |
|
|
1 |
1 |
В примере 3.14 единица в –1-м разряде не может быть скорректирована,
так как в нулевом разряде 0. Здесь имеет место переполнение по старшему вспомогательному разряду. Теперь рассматриваются следующие два разряда с номерами “0” и “1”. В них комбинация цифр имеет вид 0.0. Такая комбинация не преобразуется и, следовательно, переполнение по старшему вспомогательному разряду сохраняется. Однако следует отметить, что в примере 3.13, хотя формально существует переполнение, фактически его нет.
Действительно, если произвести вычитание –1 2-го разряда из 1 0-го разряда, то получим: 0 0 . 1 1 0 0 1 0 1, т. е. переполнения нет. Но так как такой анализ существенно усложняет сумматор, то на практике ограничиваются анализом только одного разряда после вспомогательных разрядов.
Пример 3.15.
1такт
2такт
3такт
4такт
5такт
X = 0 |
1 |
1 |
|
1 |
|
1 |
1 |
Y = 1 0 1 |
1 |
|
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
0 |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
0 |
|
|
|
|
|
|
|
0 |
|
|
|
|
0 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
1 |
|
1 |
|
|
6 такт |
1 |
7 такт |
0 |
8 такт |
0 |
9 такт |
1 |
10 такт 0
Результат:
|
|
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
1 |
1 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
0 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
0 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
–10 |
1 |
2 |
3 |
4 |
5 |
|
6 |
7 |
8 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
|
0 |
1 |
0 |
3.6.2. Построение таблицы истинности последовательного сумматора
Рассмотрим суммирование двух ближайших разрядов i + 1 и i (рис. 3.27).
C i |
C i |
0 |
|
1 |
|
C |
i 1 |
|
0 |
|
|
|
C |
i 1 |
|
|
0 |
|
|
Рис. 3.27
Двойной линией обведены цифры, которые должны суммироваться в
текущем такте. Следовательно, к сумме цифр x и y добавляются С1 и S из предыдущего такта, аналог переноса в ДИЗСС.
Таким образом, таблица истинности должна содержать следующие
входные аргументы: переменные |
x, y и |
переносы C1i , |
S i |
. Выходными |
переменными являются S i 1 |
, C1i 1 , |
C0i 1 . |
|
|
|
Так как переносы |
С1 – |
только |
отрицательны, |
а |
С0 – только |
положительны, то полная таблица содержит 16 входных переменных. Для упрощения представим её в виде 4-х таблиц, каждая из которых содержит только переменные x и y:
1) С*1=S*=0; 2) С*1=1, S*=0; 3) С*1=0, S*=1; 4) С*1=S*=1,
200