Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги / Книга Проектирование ВПОВС (часть 2)

.pdf
Скачиваний:
84
Добавлен:
01.06.2015
Размер:
4.62 Mб
Скачать

Схема устройства формирующего значения (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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

i+1

1

 

 

 

x

i

&

 

 

 

 

 

x

i+2

&

 

 

 

Рис.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

 

 

&

 

 

 

xi

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi+2

 

 

 

 

1

x i+2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x+i+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi+1

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.3.25

191

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

1

001

1

000

1

00001

А+ =.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

193

Схема преобразования приведена на рис. 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

0

1

–1

010

011

00

Таблица 3.8

0

1

**

000 *

001

110

Рассмотрим теперь согласование весов получаемых цифр при сложении. Обозначим через 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

0

1.

0

1

0

0

1

1

0

0

0

0

0

1

1

0

1

1

1

0

1

0

0

0

1

0

1

1

0

1

0

1

1

0

0

0 0

0 0

Но в то же время при переполнении фиксируется значение цифры переполнения и выдается сигнал переполнения. Далее значения разрядов суммы определяются в каждом такте, и на вход выдаётся в зависимости от режима либо максимальное число x = .111…1, если переполнение положительно, либо массив отрицательных единиц: если переполнение отрицательное – режим насыщения, либо выдаётся вычисляемый результат,

если включён режим автоматического перемасштабирования.

197

Пример 3.14.

–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

01

10

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такт

0

1

1

1

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

 

 

1 1

1 1

199

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

 

 

S

i

 

C

i 1

 

 

1

C

i 1

 

 

1

S

i 1

 

S

i 1

 

Рис. 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