- •И. В. Потапов элементы прикладной теории цифровых автоматов
- •Оглавление
- •Введение
- •1. Представление чисел в эвм
- •1.1. Позиционные системы счисления
- •1.2. Обоснование применения в эвм двоичной системы счисления
- •1.3. Представление двоичных чисел с фиксированной и плавающей запятой
- •1.4. Прямой и инверсные коды чисел
- •1.5. Двоично-десятичные коды чисел
- •Вопросы для самоконтроля
- •2. Арифметические операции в двоичных кодах
- •2.1. Сложение двоичных кодов
- •2.2. Вычитание двоичных кодов
- •2.3. Выполнение операции округления чисел
- •2.3.1. Округление прямых кодов
- •2.3.2. Округление инверсных кодов
- •2.4. Умножение двоичных кодов
- •2.4.1. Умножение прямых кодов чисел
- •2.4.2. Ускоренное выполнение операции умножения
- •2.4.3. Умножение инверсных кодов чисел
- •2.5. Деление двоичных кодов
- •2.5.1. Деление прямых кодов чисел
- •2.5.2. Ускоренное выполнение операции деления
- •2.5.3. Деление дополнительных кодов чисел
- •2.6. Извлечение квадратного корня
- •2.7. Выполнение арифметических операций в d-кодах
- •2.7.1. Сложение в d-кодах
- •2.7.2. Умножение в d-кодах
- •2.7.3. Деление в d-кодах
- •Вопросы для самоконтроля
- •3. Переключательные функции
- •3.1. Основные определения и способы задания пф
- •3.2. Элементарные логические функции
- •3.3. Основные законы алгебры логики
- •3.4. Полные системы переключательных функций
- •3.5. Канонические формы аналитического представления пф
- •3.6. Кубическое представление пф
- •3.7. Синтез комбинационных схем
- •3.7.1. Синтез кс на логических элементах
- •3.7.2. Синтез кс на дешифраторах
- •3.7.3. Синтез кс на мультиплексорах
- •3.7.4. Синтез многовыходных схем
- •3.8. Риски сбоя в комбинационных схемах
- •Вопросы для самоконтроля
- •4. Минимизация переключательных функций
- •4.1. Минимизация пф с помощью карт Карно
- •4.2. Минимизация пф методом Квайна
- •4.3. Минимизация методом Квайна – Мак-Класки
- •4.4. Минимизация пф методом Блейка – Порецкого
- •4.5. Минимизация пф, заданных в конъюнктивной форме
- •4.6. Минимизация не полностью определенных пф
- •4.7. Минимизация систем пф
- •4.8. Минимизация пф в универсальных базисах и-не, или-не
- •Вопросы для самоконтроля
- •5. Моделирование работы и синтез автоматов с памятью
- •5.1. Основные модели, понятия и определения
- •5.1.1. Общее понятие цифрового автомата с памятью
- •5.1.2. Основные модели цифровых автоматов
- •5.1.3. Описание функционирования цифровых автоматов
- •5.1.4. Задание цифровых автоматов
- •5.1.5. Правила перехода между моделями Мили и Мура
- •5.2. Минимизация числа состояний цифровых автоматов
- •5.2.1. Минимизация числа состояний синхронного автомата методом Полла-Ангера
- •5.2.2. Минимизация числа состояний автомата Мура методом l-эквивалентных разбиений
- •5.2.3. Минимизация числа состояний автомата Мили методом l-эквивалентных разбиений
- •5.3. Структурный синтез цифровых автоматов
- •5.3.1. Типы элементарных автоматов, обладающие полной системой переходов-выходов
- •5.3.2. Основные этапы структурного синтеза
- •5.4. Рациональный выбор варианта кодирования состояний синхронных автоматов
- •Вопросы для самоконтроля
- •Библиографический список
- •Задания для выполнения самостоятельных работ
- •Илья Викторович потапов, канд. Техн. Наук, доцент элементы прикладной теории цифровых автоматов
2.7. Выполнение арифметических операций в d-кодах
О представлении чисел двоично-десятичными кодами см. в разделах 1.1 и 1.5.
2.7.1. Сложение в d-кодах
Вначале рассмотрим сложение чисел в D-коде 8421.
Выполнение операции сложения в D-коде 8421 имеет ряд особенностей: во-первых, возникающий при сложении межтетрадный перенос вместо необходимых десяти единиц (как это принято в десятичной системе счисления при формировании переноса в следующий разряд) уносит шестнадцать (16 – удвоенный вес старшего разряда тетрады), т.е. значение, содержащееся в тетраде, из которой возник перенос, на шесть единиц меньше необходимого; во-вторых, при сложении тетрад могут получаться запрещенные комбинации, соответствующие числам больше девяти, но меньше пятнадцати; в-третьих, отрицательные числа необходимо представлять в инверсном коде, но, как указывалось выше, D-код 8421 не обладает свойством самодополняемости, что необходимо учитывать.
Все указанные трудности решаются путем прибавления тетрады 0110, соответствующей коду цифры 6. Действительно, если межтетрадный перенос уменьшает значение в тетраде на шесть лишних единиц, то коррекция может быть осуществлена путем прибавления недостающих шести единиц. Далее, для коррекции тетрад, содержащих запрещенные комбинации, из них, очевидно, необходимо вычесть 10. Вычитание 10-ти можно заменить прибавлением дополнения 10-ти до 16-ти, т.е. для коррекции к значению запрещенной комбинации следует прибавить 6. Для получения обратного кода все тетрады числа (кроме знака) необходимо сначала увеличить на 6, а затем поразрядно инвертировать. Дополнительный код может быть получен из обратного путем прибавления единицы к младшему разряду младшей тетрады числа.
Рассмотрим пример.
; ;
.
;
.
Поскольку первое слагаемое отрицательное, его необходимо представить в инверсном коде, например, дополнительном.
Так как дополнительный код положительного слагаемого совпадает с его прямым кодом, переходим непосредственно к сложению.
Коррекция
Коррекция (нули опустим)
Таким образом, .
При выполнении сложения в D-коде 8421+3 обратный код отрицательного операнда может быть получен путем инвертирования двоичных разрядов кода (дополнительный код получается из обратного прибавлением единицы к младшему разряду).
После сложения операндов необходимо всегда выполнять коррекцию результата. Легко видеть, что если при сложении из тетрады не было переноса, то ее значение следует уменьшить на три единицы (вычесть 0011), а если перенос был, то увеличить на три единицы (прибавить 0011). Очевидно, вычитание 0011 можно заменить прибавлением дополнения 3 до 16, т.е. для коррекции к тетрадам, из которых при сложении не возник перенос, необходимо прибавить 1101. Следует помнить, что при выполнении коррекции в D-коде 8421+3 переносы между тетрадами не распространяются.
Рассмотрим пример. Значения слагаемых возьмем из предыдущего примера.
; ;
.
;
.
Получим дополнительный код первого операнда вышеописанным способом и выполним сложение.
(переносы показаны стрелками)
Коррекция (без переносов)
Таким образом, .
В дальнейшем будем рассматривать выполнение арифметических операций в D-коде 8421+3.