Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оформление курсового проекта 2009.doc
Скачиваний:
36
Добавлен:
12.04.2015
Размер:
664 Кб
Скачать
☆

1.Проектирование арифметического устройства 1.1. Назначение. Структурная схема устройства

Арифметическое устройство предназначено для операции вычитания двух чисел и выдачи результата операции в двоично-десятичном коде. Первый операнд – уменьшаемое, – поступает на вход устройства в восьмиразрядном двоичном коде «128-64-32-16-8-4-2-1», а второй – вычитаемое, – в двоично-десятичном коде. Так как один из операндов и результат операции представляются в двоично-десятичном коде, целесообразно преобразовать второй операнд также в двоично-десятичный код, а операцию вычитания реализовать с помощью двоично-десятичного сумматора, построенного на интегральных микросхемах двоичных сумматоров. Арифметическое устройство представляет собой автомат комбинационного типа, т. е. не содержит памяти. Структурная схема устройства представлена на рисунке 1.1.

Рис. 1.1. Структурная схема арифметического устройства

1.2. Функциональная схема преобразователя двоичного кода

в двоично-десятичный код

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

x7 ~ 128 = 100 + 20 + 8,

x6 ~ 64 = 40 + 20 + 4,

x5 ~ 32 = 20 + 10 + 2,

x4 ~ 16 = 10 + 4 + 2,

x3 ~ 8 = 8,

x2 ~ 4 = 4,

x1 ~ 2 = 2,

x0 ~ 1 = 1.

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

Сигналы десятичной коррекции

Перенос р1 вычитает из десятичного разряда единиц число 16, поэтому при наличии сигнала р1 необходимо вернуть число 6, т. е. код коррекции α2α1. В случае, когда перенос р1 отсутствует, но остаток s3s2s1s0 вместе с х2 превышает число 9, код коррекции тоже должен быть α2α1. Если же имеется сигнал р1 и при этом остаток s3s2s1s0 вместе с х2 превышает число 9, необходимо для десятичной коррекции прибавить число 12, следовательно, код коррекции α3α2. И, наконец, когда и переноса р1 нет, и остаток s3s2s1s0 вместе с х2 меньше 10, десятичная коррекция не требуется.

Таблица 1.1. Таблица сигналов десятичной коррекции

в первом каскаде разряда единиц

p1

s3(s2Vs1Vx2)

α3

α2

α1

0

0

0

0

0

0

1

0

1

1

1

0

0

1

1

1

1

1

1

0

Таблица 1.2. Таблица сигналов десятичной коррекции

во втором каскаде разряда единиц и десятков

Единицы

Десятки

r3(r2Vr1Vx2)

β2

β1

r7(r6Vr5)

δ2

δ1

0

0

0

0

0

0

1

1

1

1

1

1

Рис. 1.2. Структурная схема преобразователя двоичного кода в двоично-десятичный код

1.3. Функциональная схема устройства вычитания в двоично-десятичном коде

Операция вычитания реализуется достаточно своеобразно. По общему правилу сложения двоично-десятичных чисел к тетрадам числа с большим модулем прибавляются дополнительные коды тетрад другого числа. В качестве знака результата берется знак числа с большим модулем. После операции суммирования осуществляется корректировка суммы. Дополнительный код тетрады получают так: к обратному коду тетрады прибавляют число 1010 = 10102. Тем самым вычитают лишнюю шестерку 610 = 01102, которая содержится в инверсном коде тетрады. При этом переносы между тетрадами блокируются.

Покажем этот алгоритм на примерах. Например, нужно из 245 вычесть 187. Код уменьшаемого 0010 0100 0101, прямой код вычитаемого 0001 1000 0111. Так как модуль вычитаемого меньше, чем модуль уменьшаемого, каждую тетраду вычитаемого заменяем дополнительным кодом:

Прямой код

0 0 0 1

1 0 0 0

0 1 1 1

Обратный код

1 1 1 0

0 1 1 1

1 0 0 0

Десятичная коррекция

1 0 1 0

1 0 1 0

1 0 1 0

Дополнительный код

1 0 0 0

0 0 0 1

0 0 1 0

и выполняем сложение:

Прямой код 245

0 0 1 0

0 1 0 0

0 1 0 1

Дополнительный код 187

1 0 0 0

0 0 0 1

0 0 1 0

0 0 0 0

0 0 0 0

0 0 0 1

Промежуточный результат

1 0 1 0

0 1 0 1

1 0 0 0

Десятичная коррекция

0 1 1 0

0 0 0 0

0 0 0 0

Конечный результат

0 0 0 0

0 1 0 1

1 0 0 0

Знак суммы положительный.

Второй пример. Необходимо из 145 вычесть 192. В результате должно получиться отрицательное число минус 47. Преобразуем уменьшаемое 145 в дополнение к 1000, получим 855:

Прямой код

0 0 0 1

0 1 0 0

0 1 0 1

Обратный код

1 1 1 0

1 0 1 1

1 0 1 0

Десятичная коррекция

1 0 1 0

1 0 1 0

1 0 1 0

Дополнительный код

1 0 0 0

0 1 0 1

0 1 0 0

Сложим 192 + 855 = (1)047. Модуль разности равен 47, разность операндов имеет отрицательный знак, т. е. минус 47.

Рис. 1.3. Сумматор двоично-десятичных чисел

На рисунке 1.3 изображена схема одной декады сумматора двоично-десятичных чисел, выполненного на интегральных 4-разрядных двоичных сумматорах DD1 и DD3 и компараторе DD2. Операцию сложения выполняет сумматор DD1. При сумме большей или равной десяти на выходе микросхемы DD2, которая является схемой сравнения двоичных чисел, формируется сигнал переноса Р10. На второй вход (B0…B3) микросхемы DD2 подается двоичный эквивалент числа 9 (1001). Сумматор DD3 осуществляет десятичную коррекцию результата суммирования. При отсутствии сигнала переноса на выходе микросхемы DD3 повторяется код числа, который был на выходе DD1, поскольку на входы В поданы лог. 0. При наличии сигнала переноса Р10 = 1 на входах В1 и В2 устанавливаются лог. 1, что соответствует коду числа 6. Допустим, есть числа А=8 и В=4. На выходе сумматора DD1 появляется код числа 12 (8+4=12). На выходе DD2 формируется сигнал переноса, сумматор DD3 выполняет операцию 12+6=18. Числу 18 соответствует код 10010. На выходах S сумматора DD3 устанавливается код 0010 (собственный перенос микросхемы DD3 не учитывается). Поскольку выход Р10 соответствует числу 10, на выходах сумматора DD3 число 2 (0010), то в результате получается число 12.