- •Основы прикладной теории цифровых автоматов
- •Основы прикладной теории цифровЫх автоматов
- •Оглавление
- •Предисловие
- •Глава 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.3.2. Умножение
При умножении множитель размещается в регистре MQ, а множимое в регистре SR.
Процедура умножения состоит из следующих частей:
инициализации;
сложения порядков, т.е. характеристик;
умножения мантисс;
нормализации.
При инициализации выполняются следующие процедуры.
1. Если MQ(S) = SR(S), то 0AC(S) и 0MQ(S), иначе 1AC(S) и 1MQ(S).
2. Если SR(FR) = 0 или MQ(FR) = 0, то 0 FC и 0 MQ и конец процедуры умножения, иначе переход к сложению характеристик и умножению мантисс.
Сложение характеристик сводится к следующим процедурам.
1. MQ(CH) AC(QCH, CH).
2. AC(QCH, CH) := [SR(CH)] + [AC(QCH, CH)] _ l, т.е. из этой суммы надо вычесть смещение, если складывались характеристики, а не порядки.
Сперва выполняется сложение:
AC(QCH, CH) := [SR(CH)] + [AC(QCH, CH)], а потом [L] SR(CH), далее:
AC(QCH, CH) := [AC(QCH, CH)] _ [SR(CH)].
Содержимое SR(СH) переводится в дополнительный код прямо на входе накапливающего сумматора AC.
3. Если AC(QCH) = 1= то произошло переполнение порядка поэтому засылается единица в CHOV и процедура умножения завершается.
4. Если AC(QCH) = 0, то происходит переход к умножению мантисс.
Умножение мантисс производится по одному из алгоритмов умножения чисел с фиксированной запятой. В процедуре умножения мантисс используются субрегистры SR(FR), MQ(FR) и касрегистр {AC(QFR, FR) - MQ(FR)}, причем субрегистр AC(QFR, FR) предварительно обнуляется. Произведение мантисс образуется в касрегистре, причем в AC(QFR, FR) содержатся старшие разряды произведения, а в MQ(FR) - младшие.
Граф-схема процедуры умножения приведена на рис.11.14а.
После завершения процедуры умножения мантисс производится нормализация результата умножения по следующему алгоритму (рис.11.14б).
1. Выполняется процедура [AC(CH)] MQ(CH).
2. Если [AC(FR)] 0, то производятся сдвиги содержимого касрегистра вправо последовательно на один разряд по линии 1 и MQ(CH) := [MQ(CH)] +1 пока не выполнится условие AC(FR) = 0.
3. Если в процессе этих сдвигов станет MQ(QCH) = 1, то выполняется засылка 1 в CHOV и процедура умножения прекращается.
4. При обнулении AC(FR), если старший разряд субрегистра MQ(FR) не содержит единицы, то производится последовательно сдвиг содержимого MQ(FR) на один разряд влево и MQ(CH) := [MQ(CH)] _ 1 пока старшая единица мантиссы результата не попадет в старший разряд субрегистра MQ(FR).
Таким образом, результат умножения формируется в регистре MQ.
11.3.3. Деление
При делении делимое находится в регистре AC, а делитель в SR. Результат деления получается в регистре MQ. Процедура деления состоит из следующих частей:
инициализации;
вычитания порядков, т.е. характеристик;
деления мантисс;
нормализации результата.
Во время инициализации выполняются следующие процедуры.
1. 0 MQ.
2. Если AC(S) = SR(S), то 0 MQ(S), иначе 1 MQ(S).
3. Если SR(FR) = 0= то 1 DVOV и конец процедуры деления, иначе переход к следующему пункту.
4. Если AC(FR) = 0= то 0 MQ, 0 FC и конец процедуры деления, иначе переход к вычитанию характеристик и делению мантисс.
Процедура вычитания характеристик заключается в следующем.
1. AC(QCH, CH) = [AC(QCH, CH)] _ [SR(CH)] + l, т.е. к результату добавляется смещение, если оперируют характеристиками, а не порядками.
Сперва выполняется процедура AC(QCH, CH) = [AC(QCH, CH)]_[SR(CH)], потом [L] SR(CH) далее AC(QCH, CH) := [AC(QCH, CH)] + [SR(CH)].
Содержимое SR(CH) переводится в дополнительный код прямо на входе накапливающего сумматора AC.
2. Если [AC(QCH, CH)] < 0, то 1 CHUN и процедура деления заканчивается, иначе переход к делению мантисс.
Деление мантисс выполняется по одному из алгоритмов деления чисел с фикированной запятой, только с той разницей, что в этом случае исключается процедура выравнивания левых краев и поэтому в счетчик SC загружается число, равное числу разрядов, выделенных под мантиссу операндов. В процедуре деления мантисс используются субрегистры SR(FR), MQ(FR) и касрегистр {AC(QFR, FR) - MQ(FR)}. Результат деления мантисс получается в субрегистре MQ(FR), а остаток - в субрегистре AC(QFR, FR).
Граф-схема процедуры деления приведена на рис. 11.15а.
После деления мантисс выполняется процедура нормализации частного по следующему алгоритму (рис. 11.15б).
1. Выполняется процедура [AC(CH)] MQ(CH).
2. Если старший разряд (m) субрегистра MQ(FR) не содержит единицы, то выполняется сдвиг влево на один разряд содержимого касрегистра по линии связи 2 и одновременно процедура MQ(CH):=[MQ(CH)]_1. Если [m] = 1=, то конец нормализации.
Эти процедуры выполняются до тех пор пока не выполнятся условия [m] = 1 или [MQ(CH)] = -1. В последнм случае засылается единица в CHUN и процедура деления прекращается.
Таким образом результат деления и в этом случае формируется в регистре MQ.
[AC] [SR] AC
Рис. 11.10. Сложение и вычитание операндов с плавающей запятой
Рис. 11.11. Выравнивание порядков
Рис. 11.12. Процедура выравнивания порядков
Рис. 11.13. Нормализация результата алгебраического сложения
[SR] [MQ] { AC-MQ }
Рис. 11.14а. Умножение операндов с плавающей запятой
(Инициализация и сложение порядков)
Рис 11.14б. Нормализация результата умножения
[AC] / [SR] MQ
Рис. 11.15а Деление операндов с плавающей запятой
(Инициализация и вычитание порядков)
Рис. 11.15б Нормализация результата деления