Операция деления двоичных чисел с плавающей запятой
Автор: weelcoom • Апрель 27, 2022 • Курсовая работа • 1,566 Слов (7 Страниц) • 271 Просмотры
Оглавление
Задание
1. Разработка алгоритма
1.1 Описание алгоритма на естественном языке.
1.2 Формирование блок-схемы алгоритма (БСА).
1.3 Формирование БСА с элементарными операциями.
1.4 Трассировка алгоритма (тестирование работы алгоритма (++,+-,--).
1.5 Формирование логической схемы алгоритма.
2. Составление таблиц информационных и управляющих сигналов
3. Синтез структур автоматов с параметризацией размерности шин
3.1 Схема автомата Глушкова.
3.2 Схема управляющего автомата Мура на жесткой логике.
3.3 Схема управляющего автомата на программируемой логике.
4. Синтез операционного автомата
5. Синтез управляющего автомата на жесткой логике
5.1 Разметка логической схемы алгоритма.
5.2 Построение граф-схемы алгоритма.
5.3 Кодирование состояний автомата (кодирование входов/выходов по необходимости).
5.4 Составление закодированной таблицы переходов/выходов.
5.5 Формирование логических сигналов управления триггерами.
5.6 Формирование выходов автомата.
5.7 Упрощение логических выражений.
5.8 Синтез комбинационных схем на основе упрощенных логических выражений.
6. Синтез управляющего автомата на программируемой логике
Задание
Вариант N: 312 2 11 12
Разработать алгоритм деления чисел в дополнительном коде в формате с плавающей запятой.
- тип операции – (3) деление
- система счисления – (1) двоичная
- форма представления числа – (2) плавающая запятая
- представление отрицательных чисел – (2) дополнительный код
- способ обработки разрядов – (1) последовательный
- базисные логические функции – (1) И-НЕ
- тип триггеров – (1) D-триггер
- тип управляющего автомата – (2) автомат Мура
1. Разработка алгоритма
1.1 Описание алгоритма на естественном языке
Деление – это процесс обратный умножению. Он фактически сводится к многократному циклическому процессу – вычитанию делителя из делимого и его остатков и соответствующим сдвигам их относительно друг друга либо делителя вправо, либо делимого влево.
В ЭВМ последовательное вычитание делителя заменяется сложением положительного делимого и остатков в модифицированном обратном или в модифицированном дополнительном коде с отрицательным делителем. Остатки также получаются в соответствующем коде.
Построение алгоритма выполнения операции.
Шаг 1.
Поместить в RgAm = Am (Am = мантисса делимого)
Поместить в RgAp = Ap (Ap = порядок делимого)
Поместить в RgBm = Bm (Bm = мантисса делителя)
Поместить в RgBp = Bp (Bp = порядок делителя)
CNT = n
Шаг 2.
RgCm = мантисса результата
RgCp = порядок результата
RgCm = RgAm / RgBm
RgCp = RgAp – RgBp
CNT = CNT - 1
Шаг 3.
Корректировка результата
Шаг 4.
Вывод результата
Cm = RgCm
Cp = RgCp
1.2 Формирование блок-схемы алгоритма (БСА).
[pic 1]
Рис.1
1.3 Формирование БСА с элементарными операциями.
[pic 2]
Рис.2
1.4 Трассировка алгоритма (тестирование работы алгоритма (++,+-,--)).
Пример 1:
Делимое RgA[пр] = 1110 = 00.10112
Делитель RgB[пр] = 1410 = 00.11102 RgB`[доп] = -1410 = 11.00102
Знак частного ЗНZ = ЗНA ⊕ ЗНB = 0 ⊕ 0 = 0
RgA | RgC | Пояснения |
00.1011 + 11.0010 11.1101 | xxxx | RgA = RgA + RgB` |
<=== 11.1010 + 00.1110 100.1000 | xxx1 | CNT = 4 (счетчик) Сдвиг влево RgA = RgA*2 RgA = RgA + RgB RgC[0] = 1 CNT = CNT - 1 |
<=== 01.0000 + 11.0010 100.0010 | <=== xx11 | Сдвиг влево RgA = RgA*2 RgA = RgA + RgB` Сдвиг влево RgC = RgC * 2 RgC[0] = 1 CNT = CNT - 1 |
<=== 00.0100 + 11.0010 11.0110 | <=== x110 | Сдвиг влево RgA = RgA*2 RgA = RgA + RgB` Сдвиг влево RgC = RgC * 2 RgC[0] = 0 CNT = CNT - 1 |
<=== 10.1100 + 00.1110 11.1110 | <=== 1100 | Сдвиг влево RgA = RgA*2 RgA = RgA + RgB Сдвиг влево RgC = RgC * 2 RgC[0] = 0 CNT = CNT - 1 |
RgC = 1100 |
...