1. Структурной схемы устройства с ее обоснованием
На рисунке 1 изображена структурная схема устройства, состоящая из двух частей. Первая часть схемы предназначена для работы с порядками чисел. В ее состав входят регистры Ao и Bo и сумматор. Вторая часть схемы предназначена для работы с мантиссами чисел и состоящая из регистров Am, Bm и Z, мультиплексора, сумматора и компаратора.
Числа A (делимое) и B (делитель) используются при выполнении операции деления. Числа А и В хранятся в своих регистрах Ao и Bo соответственно. Также им соответствует порядок мантисса. Делимое A, в начале работы, заносится в регистры: мантисса в регистр Am с помощью определенного сигнала Y3, порядок в регистр Ao - Y4, а делитель B: мантисса в регистр Bm (Y5), порядок в регистр Bo (Y6). Мантисса делимого A сдвигается влево путем косой передачи из регистра Am в сумматор. Делитель B поступает в сумматор SM из регистра Bm в прямом или обратном кодах (Y9).
За счет подсуммирования обратного кода делимого B сигналом “+1SM” (Y10), дополнительный код делимого образуется в SM.
По знаку частичных остатков определяемых в регистре Am, фиксируются в регистре Z цифры частного Zi.
Вычитанием порядков на SM, определяется порядок частного. Это достигается путем подачи обратного значения порядка делителя из регистра Bo и фиксации результата в регистре Bo.
Для выполнения операции изменения знака используется одно число. Число записывается в регистр Bm (Y5). Потом оно подается на сумматор SM в обратном коде (Y9) и записывается в регистр Am (Y3) с предварительным подсуммированием единицы в сумматоре (Y10).
Рисунок 1
2.Описание блок-схемы алгоритма выполнения операций и ее микропрограммной реализации.
Проверяется входная готовность (P1) и выходная готовность (Y14) гасится в начале работы. Как только будет получен сигнал входной готовности обнуляются регистры A o и Am (Y0), Bo и Bm (Y1) и Z (Y2). Далее проверяется код операции (P2) для определения дальнейших действий.
Изменения знака числа - ветвь один.
Для выполнения этой операции необходимо внести число в регистр Bm (Y5). После этого надо передать его обратный код на SM и при этом подсуммироваем единицу младшего разряда (Y10) Данные с SM записываем в регистр Am (Y3). После всех этих операций можно установить выходную готовность (Y13), заканчивая этим самым работу.
Деления чисел - ветвь два.
Для выполнения этой операции необходимо произвести запись: порядка делимого в регистр Ao (Y4), мантиссы делимого в регистр Am (Y3) и мантиссы и порядка делителя в регистр Bm (Y5) и Bo (Y6) соответственно. После этого можно приступить к вычислению разности порядков чисел путем сложения первого порядка с обратным кодом второго (Y11). Результат сохраняем в регистре Bo (Y6).
Далее идет проверка равенства делителя нулю (P3). Если это условие выполняется, что значит – ошибка, то сообщаем об ошибке аргументов и устанавливаем выходную готовность (Y13). Если это условие не выполняется, тогда деление возможно. При делении начинается цикл поразрядного получения мантиссы частного. Делимое, сдвинутое косой передачей в сторону старших разрядов передается на SM и обратный код делителя (Y9) с подсуммированием единицы младшего разряда (Y10). Частичный остаток заносится в регистр Am (Y3).
Проверяем, равен ли счетчик чисел (P4) нулю. Если это условие выполняется, то цикл продолжается по определению разрядов частного.при невыполнении этого условия мы можем определить все разряды частного, и переходим к нормализации результата.
При ненормализованном числе (P6) производим уменьшение порядка (Y12) и сдвиг Z в сторону старших разрядов (Y8). После выполнения этой операции устанавливаем выходную готовность и заканчиваем работу.
Это устройство реализовывает его схема изображена на рисунке 3.
В таблице 1 представлены состояния его переходов, в таблице 2 управляющие сигналы и в таблице 4 описаны префиксные функции.
Рисунок 2
ПЗУ А | |||
Адреса памяти | Условия переходов | Код ПФ | Адреса переходов |
0 | 0 | 0 | 1 |
1 | 0 | P1 | 1 |
1 | P1 | 2 | |
2 | 0 | P2 | 4 |
1 | P2 | 3 | |
3 | 0 | 0 | 10 |
4 | 0 | P3 | 8 |
1 | P3 | 12 | |
5 | 0 | P4 | 6 |
1 | P4 | 10 | |
6 | 0 | P5 | 7 |
1 | P5 | 8 | |
7 | 0 | 0 | 9 |
8 | 0 | 0 | 9 |
9 | 0 | 0 | 5 |
10 | 0 | P6 | 11 |
1 | P6 | 12 | |
11 | 0 | 0 | 10 |
12 | 0 | 0 | * |
Таблица 1
Y0 | Обнуление регистров Ao и Am |
Y1 | Обнуление регистров Bo и Bm |
Y2 | Обнуление регистра Z |
Y3 | Запись в регистр Am |
Y4 | Запись в регистр Ao |
Y5 | Запись в регистр Bm |
Y6 | Запись в регистр Ao |
Y7 | Запись разряда частного в регистр Z |
Y8 | Сдвиг регистра Z в сторону старших разрядов |
Y9 | Выбор операции в сумматоре |
Y10 | Подсуммирование 1 в сумматоре |
Y11 | Разность порядков |
Y12 | Уменьшение порядка частного в регистре Bo |
Y13 | Установка выходной готовности |
Y14 | Гашение выходной готовности |
Таблица 2
Рисунок 3
Функция | Значение |
P1 | Входная готовность |
P2 | Код операции |
P3 | Признак равенства 0 делителя |
P4 | Конец деления |
P5 | Знак числа в регистре Am |
P6 | Признак нормализации |
P7 | Знак числа в регистре Bm |
Таблица 3
На рисунке 4 представлена связь управляющего автомата с операционным автоматом.
Рисунок 4
3. Числовые тестовые примеры выполнения операций с пояснениями
Пусть X=11010111*23, Y=1101*22. Найти частное от деления X/Y.
Все действия выполняются в устройстве в следующей последовательности:
0.1101111 | Прямой код делимого | Частное X/Y | |
+ | 1.0011 | Дополнительный код делителя | |
0.0000 | Остаток положительный | 1 | |
0.0000 | Остаток сдвинут влево на один разряд | ||
+ | 1.0011 | Дополнительный код делителя | |
1.0011 | Остаток отрицательный | 10 | |
0.0111 | Остаток сдвинут влево на один разряд | ||
+ | 0.1101 | Прямой код делителя | |
1.0100 | Остаток отрицательный | 100 | |
0.1001 | Остаток сдвинут влево на один разряд | ||
+ | 0.1101 | Прямой код делителя | |
1.0110 | Остаток отрицательный | 1000 | |
0.1101 | Остаток сдвинут влево на один разряд | ||
+ | 0.1101 | Прямой код делителя | |
1.1010 | Остаток отрицательный | 10000 |
Порядок частного вычисляется следующим образом:
pc = px - py = 0.011 - 0.010 = 0.001
4. Описание функциональной схемы устройства.
В работе функциональной схемы использованы мантиссы.
На выход мультиплексора подается число в прямом и дополнительном коде. В зависимости от ситуации выбирается одно из двух чисел. Также в процессе работы мы должны контролировать чтобы делитель не был равен нулю. Для этого используемый мультиплексор должен иметь стробируемый вход.
В сумматоре складываются числа пришедшие с выхода мультиплексора и регистра Am. Результат данной работы переписывается в регистр Am, который запоминает это число, сдвигает его влево в сторону старших разрядов и снова передает его на сумматор.
Накопление результата происходит в регистре Z. Так как после определения результата, полученное число надо нормализовать, поэтому результирующий регистр кроме последовательного входа и параллельного вывода должен осуществлять сдвиг числа влево в сторону старших разрядов.
Рисунок 5
5. Краткое описание принципиальной схемы
В качестве сумматора используется микросхема К555ИМ6, а в качестве регистра К155ИР13 и К555ИР11 которые отличаются только разрядностью. Два числа поступают на сумматор, который их суммирует и передает результат на регистр. В данной схеме в качестве результирующего регистра используется микросхема К531ИР24. Старший разряд регистра поступает на вход результирующего последовательно – параллельного регистра, в котором накапливается результат.
Рисунок 6