
- •Основы прикладной теории цифровых автоматов
- •Основы прикладной теории цифровЫх автоматов
- •Оглавление
- •Предисловие
- •Глава 1. Информационные основы цифровых автоматов
- •1.1. Информация и общие принципы ее преобразования
- •1.2. Обмен информацией между различными информационными устройствами
- •1.3. Аппаратные средства хранения и обработки информации
- •1.4. Общие понятия о цифровом автомате и алгоритме
- •Глава 2. Представление числовой информации в цифровом автомате
- •2.1. Системы счисления и понятие кода
- •2.2. Выбор системы счисления
- •2.3. Формальные правила двоичной арифметики
- •2.4. Перевод числа из одной позиционной системы счисления в другую
- •Глава 3. Формы представления чисел в цифровых автоматах
- •3.1. Форма представления двоичных чисел с фиксированной запятой
- •3.2. Представление отрицательных чисел в формате с фиксированной запятой
- •3.3. Форма представление чисел с плавающей запятой
- •3.4. Перевод чисел из формата с фиксированной запятой в формат с плавающей запятой и обратно
- •3.5. Погрешности представления чисел
- •20 [A]ф 2n - 1 для целых чисел
- •Глава 4. Арифметические действия с двоичными числами
- •4.1. Сложение двоичных чисел
- •4.1.1. Алгебраическое сложение чисел, представленных в форме с фиксированной запятой
- •4.1.2. Переполнение разрядной сетки
- •4.1.3. Модифицированный прямой, обратный и дополнительный код
- •4.1.4. Алгебраическое сложение чисел, представленных в форме с плавающей запятой
- •4.2. Умножение двоичных чисел
- •4.2.1. Методы умножения двоичных чисел
- •4.2.2. Умножение чисел, представленных в форме с фиксированной запятой
- •4.2.3. Умножение чисел, представленных в форме с плавающей запятой
- •4.2.4. Ускорение операции умножения
- •4.3. Деление двоичных чисел
- •4.3.1. Деление двоичных чисел, представленных в форме с фиксированной запятой.
- •4.3.2. Деление двоичных чисел, представленных в форме с плавающей запятой.
- •4.4. Оценка точности выполнения арифметических операций
- •4.4.1. Погрешность округления
- •Глава 5. Выполнение операций над десятичными числами
- •5.1. Представление десятичных чисел в д-кодах
- •5.2. Формальные правила поразрядного сложения в д-кодах
- •5.3. Представление отрицательных чисел в д-кодах
- •5.4. Выполнение операций сложения и вычитания в д-кодах
- •5.5. Умножение чисел в д-кодах
- •5.6. Деление чисел в д-кодах
- •5.7. Перевод чисел из д-кода в двоичный и из двоичного в д-код
- •Глава 6 контроль работы цифрового автомата
- •6.1. Основные понятия теории кодирования
- •6.2. Кодирование по методу четности-нечетности
- •6.3. Коды Хеминга
- •6.4. Контроль по модулю
- •6.5. Контроль арифметических операций
- •Глава 7. Основы алгебры логики
- •7.1. Основные понятия алгебры логики
- •7.2. Свойства элементарных функций алгебры логики
- •7.3. Аналитическое представление функций алгебры логики
- •7.4. Совершенные нормальные формы
- •7.5. Системы функций алгебры логики
- •7.6. Числовое и геометрическое представление логических функций
- •Глава 8. Упрощение и минимизация логических функций
- •8.1. Задача минимизации
- •8.2. Метод Квайна и импликантные матрицы
- •8.3. Метод Карно (диаграммы Вейча)
- •Глава 9. Методы анализа и синтеза логических электронных схем
- •9.1. Логические операторы электронных схем или цепей
- •9.1.1. Задачи анализа и синтеза электронных схем
- •9.2. Синтез логических схем с одним выходом
- •9.3. Электронные схемы с несколькими выходами
- •9.4. Временные булевы функции и последовательностные автоматы
- •Глава 10. Введение в теорию автоматов и структурный синтез цифровых автоматов
- •10.1. Основные понятия и определения
- •10.2. Методы структурного синтеза и языки описания цифровых автоматов
- •10.3. Элементарный автомат (триггерный элемент)
- •10.4. Синтез цифрового автомата с памятью
- •Глава 11 алгоритмы реализации арифметических действий в цифровых автоматах
- •11.1. Общие принципы разработки алгоритмов
- •11.2. Алгоритмы реализации арифметических действий с операндами, представленными в форме с фиксированной запятой
- •11.2.1.Сложение и вычитание
- •11.2.2. Умножение
- •11.2.3. Деление
- •11.3 Алгоритмы реализации арифметических действий с операндами, представленными в форме с плавающей запятой
- •11.3.1. Сложение и вычитание
- •11.3.2. Умножение
- •11.3.3. Деление
- •11.4. Блок-схемы регистра накапливающего сумматора
- •11.4.1. Для работы с обратным кодом
- •11.4.2. Для работы с дополнительным кодом
- •11.5. Алгоритм извлечения квадратного корня операнда с плавающей запятой
- •Определения основных понятий и терминов
- •Литература
11.2.3. Деление
Рассмотрим четыре варианта алгоритма деления. Первые два требуют выравнивания левого края делителя с левым краем делимого. При выполнении этих двух алгоритмов делимое загружается в регистр АС, а делитель в регистр SR регистр MQ обнуляется, частное формируется в регистре MQ:
[{AC-MQ}] / [SR] MQ, а остаток в АС. Делитель после выполнения операции остается в регистре SR, а делимое теряется.
При всех вариантах алгоритма деления инициализация процедуры деления заключается в следующем.
1. Если делимое равно 0, то результату присваивается значение 0: 0 MQ и тем самым процедура деления заканчивается.
2. Если делитель равен 0, то вырабатывается сигнал ошибки: 1 DVOV, результату присваивается значение 0: 0 MQ, и тем самым процедура деления заканчивается.
3. Если делимое меньше делителя, то вырабатывается сигнал ошибки:
1 DVOV и процедура деления заканчивается: 0 MQ и 0 AC(S)\
4. Если у операндов одинаковые знаки, то результату присваивается положительнй знак: 0 MQ(S), 0 AC(S), 0 SR(S)\
5. Если у операндов разные знаки, то результату присваивается отрицательный знак: 1 MQ(S), 0 AC(S), 0 SR(S)\
В первых двух вариантах алгоритма деления инициализация завершается процедурой выравнивания.
Выравнивание левого края делителя по отношению к левому краю делимого выполняется путем сдвига влево содержимого SR(M). Тем самым "совмещаются" старшие единицы делимого и делителя. Если число сдвигов было равно, например, m, то число M = m + 1 записывается в счетчик SC, т.е нужно будет повторить М раз элементарные шаги деления.
Рассмотрим вначале эти два варианта алгоритма деления.
На каждом элементарном шаге деления с восстановлением остатка (первый вариант алгоритма) выполняются следующие действия.
1. AC := [AC] _ [SR].
2. Если [AC] < 0= то переход к пункту 3, иначе переход к пункту 4.
3. AC := [AC] + [SR] и сдвиг содержимого касрегистра влево на один разряд: [AC(M) - MQ(M)], потом MQ(0) := 0, далее переход к пункту 5.
4. Сдвиг содержимого касрегистра влево на один разряд и MQ(0) := 1.
5. SC := SC - 1. Если [SC] 0= то переход к пункту 1, иначе переход к пункту 6.
6. Выравнивание остатка: сдвиг содержимого AC(M) вправо на М разрядов.
7. Конец процедуры деления.
Граф-схема этого алгоритма приведена на рис. 11.5.
При делении без восстановления остатка (второй вариант алгоритма) изменяется только пункт 3:
3. Сдвиг содержимого касрегистра влево на один разряд и MQ(0) := 0, далее AC := [AC] + [SR], SC := SC _ 1. Если [SC] 0, то переход к пункту 2, иначе переход к пункту 6.
Процедура выравнивания левого края делителя, алгоритм которой приведен на рис. 11.8, очень часто получается достаточно длительной. Поэтому ускорение самой процедуры деления за счет уменьшения числа элементарных шагов деления не всегда уменьшает суммарное время, необходимое для выполнения всего алгоритма деления. В связи с этим используют также алгоритмы деления, не требующие процедуры выравнивания. Возможные варианты таких алгоритмов приведены на рис. 11.6 и 11.7. Разряд AC(Q) накапливающего сумматора АС используется только в последнем из этих алгоритмов, в котором учитывается специфика структуры используемого в АУ накапливающего сумматора. Этот алгоритм позволяет минимизировать аппаратуру описанного АУ, т.к. не требует применения регистров LR, SC1, T, которые используются в других вариантах алгоритма деления, и упрощает процедуру передачи информации из регистра MQ в регистр АС.
[AC] [SR] AC
Рис. 11.3. Алгоритм алгебраического сложения чисел в форме с фиксированной запятой.
[AC] [SR] AC
Рис. 11.3а. Алгоритм алгебраического сложения чисел в форме с фиксированной запятой.
Рис. 11.4. Умножение операндов с фиксированной запятой (вариант 2)
C:= A / B или MQ := {AC-MQ} / [SR], остаток в АС
Рис. 11.5. Алгоритм деления (вариант 1) операндов с фиксированной запятой с восстановлением остатка.
A / B = C : [{AC-MQ}] / [SR] MQ, остаток в АС
Рис. 11.6. Деление операндов с фиксированной запятой.
(вариант 3, не требует процедуры выравнивания левого края делителя)
A / B = C : [{AC-MQ}] / [SR] MQ, остаток в АС
Рис. 11.7. Деление операндов с фиксированной запятой.
(вариант 4, не требует процедуры выравнивания левого края делителя)
Рис. 11.8. Процедура выравнивания левого края делителя
(дополнение к алгоритму, приведенному на рис. 11.5.)