- •Основы прикладной теории цифровых автоматов
- •Основы прикладной теории цифровЫх автоматов
- •Оглавление
- •Предисловие
- •Глава 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. Алгоритм извлечения квадратного корня операнда с плавающей запятой
- •Определения основных понятий и терминов
- •Литература
7.5. Системы функций алгебры логики
Любая логическая функция может быть представлена многочленом вида:
f(x1, x2, ..., xn) = a0 a1x1 a2x2 .... anxn an+1x1x2 ... an+2x1x3
... aNx1x2x3....xn,
где a0, a1,..., aN - некоторые константы, равные нулю или единице; знак , как известно, означает операцию сложения по модулю два.
При записи конкретной логической функции в виде многочлена коэффициенты a0, a1,..., aN выпадают, т.к. члены при которых эти коэф-фициенты равны нулю, можно опустить, а коэффициенты, равные единицы, не писать.
Чтобы логическую функцию, заданную таблицей ее значений, представить в виде многочлена, нужно эту функцию записать в виде суммы конституент единицы, равных единице на тех же наборах, на которых равна единице заданная функция. Затем все аргументы, входящие в полученное выражение с отрицанием, заменить с помощью соотношения x = x 1, раскрыть скобки и привести подобные члены с учетом, что в данном случае x x x...x = x, если n нечетно и x x x...x = 0, если n четно.
Пример. Представить функцию f14(x, y) (см. Таблицу 7.2) в виде многочлена.
Эта функция равна единице на нулевом, первом и втором наборах, поэтому
f14(x, y) = K0 K1 K2 = xy xy xy
Используя соотношения x 1 = x b x(y z) = xy xz, после всех преобразований получим
f14(x, y) = 1 x x y y xy xy xy
Приводя подобные члены, окончательно получаем:
f14(x, y) = 1 xy.
Существует несколько классов ФАЛ, которые также важны для логического анализа.
Класс линейных функций (Кл). Логическая функция называется линейной, если она представляется полиномом первой степени:
f(x1, x2, .....xn) = k0 k1x1 k2x2 .... knxn,
где коэффициенты ki равны нулю или единице.
Для функций двух аргументов линейными являются следующие функции:
f0(x1,x2) = 0, f3(x1,x2) =x1, f5(x1,x2) = x2, f6(x1,x2) = x1 + x2, f9(x1,x2) = 1 + x1 + x2, f10(x1,x2) = 1 + x2, f12(x1,x2) = 1 + x1, f15(x1,x2) = 1.
Класс фунций, сохраняющих ноль (К0). Если функция на нулевом наборе переменных равна нулю, то говорят, что функция сохраняет ноль:
f(0, 0, ...., 0) = 0.
Для функций двух аргументов сохраняющими ноль являются следующие функции: f0(x1,x2), f1(x1,x2), f2(x1,x2), f3(x1,x2), f4(x1,x2), f5(x1,x2), f6(x1,x2), f7(x1,x2).
Класс функций, сохраняющих единицу (К1). Если функция на единичном наборе переменных равна единице, то говорят, что такая функция сохраняет единицу:
f(1, 1, ...., 1) = 1.
Для функций двух аргументов сохраняющими единицу являются следующие функции: f1(x1,x2), f3(x1,x2), f5(x1,x2), f7(x1,x2), f9(x1,x2), f11(x1,x2), f13(x1,x2), f15(x1,x2).
Класс монотонных функций (Км). Для начала введем необходимые определения.
Если значение каждого аргумента одного набора больше или равно значению того же аргумента второго набора, то говорят, что первый набор не меньше второго. Такие наборы называются сравнимыми.
Если же некоторые из значений аргументов первого набора больше или равны, а другие меньше значений тех же аргументов второго набора, то такие наборы называются несравнимыми.
Например: 1,1,0,1 > 1,1,0,0; 0,1,1,0,1 > 0,1,0,0,0; 1,0,1,1 > 1,0,0,0.
Примеры несравнимых наборов: 0,1 и 1,0; 1,0,0 и 0,0,1; 1,1,1,0 и 1,0,0,1.
Функция называется монотонной, если при любом возрастании набора значения этой функции не убывают.
Для функций двух аргументов монотонными являются следующие функции: f0(x1,x2), f1(x1,x2), f3(x1,x2), f5(x1,x2), f7(x1,x2), f15(x1,x2).
Класс самодвойственных функций (КС).
Сперва дадим определение противоположных наборов.
Два набора называются противоположными, если все значения аргументов одного набора противоположны значениям аргументов другого набора. Например: 1,0,1,1,0,0 и 0,1,0,0,1,1; 1,1,1,1 и 0,0,0,0, т.е. для того, чтобы получить противоположный набор, достаточно заменить в данном наборе нули единицами, а единицы - нулями.
Логическая функция называется самодвойственной, если на каждой паре противоположных наборов она принимает противоположные значения, т.е.
f(x1, x2, ..., xn) = f(x1,x2,...xn)
Для функций двух аргументов самодвойственными являются следующие функции: f3(x1,x2), f5(x1,x2), f10(x1,x2), f12(x1,x2).
Все перечисленные классы логических функций обладают следующим свойством: любая логическая функция полученная с помощью суперпозиции и подстановки из функций одного класса, обязательно будет принадлежать этому же классу.
Функции f8(x1,x2) (функция Пирса) и f14(x1,x2) (функция Шеффера) не принадлежат ни одному из указанных классов.
Базисом называется функционально полная система элементарных логических функций, с помощью которой любая ФАЛ может быть представлена суперпозицией исходных функций.
Для того чтобы система ФАЛ была полной необходимо и достаточно, чтобы она содержала хотя бы одну функцию:
не сохраняющую нуль,
не сохраняющую единицу,
не являющейся линейной,
не являющейся монотонной,
не являющейся самодвоственной.
К Базису относится система фунций И, ИЛИ, НЕ (базис 1). Базисами являются также системы, содержащие функции И, НЕ (базис 2), ИЛИ, НЕ (базис 3), состоящие из функции Шеффера (И-НЕ) (базис 4) или функции Пирса (Вебба) (ИЛИ-НЕ) (базис 5). Это перечисление показывает, что базисы могут быть избыточными (базис 1) и минимальными (базисы 4 и 5). Базис является минимальным, если удаление хотя бы одной функции превращает систему ФАЛ в неполную.
Проблема простейшего представления логических функций сводится к выбору не только базиса, но и формы наиболее экономного представления этих функций.
Еще раз подчеркнем, что функционально полными будут следующие пять систем элементарных функций, пять базисов:
1) Y =X отрицание - НЕ,
Y = X1X2 - И, (избыточная)
Y = X1 + X2 - ИЛИ.
2) Y = X отрицание - НЕ,
Y = X1X2 - И.
3) Y = X отрицание - НЕ,
Y = X1 + X2 - ИЛИ.
4) Y = X1X2 штрих Шеффера - И-НЕ.
5) Y = X1 + X2 стрелка Пирса - ИЛИ-НЕ.
Как уже отмечалось, каждая из перечисленных простых логических функций аппаратно реализуется при помощи определенных электронных логических элементов.
Недостающие функции можно получить на основе известных правил алгебры логики. Таким образом достаточно иметь один тип логического элемента И-НЕ или ИЛИ-НЕ, чтобы на его основе построить все многообразие логических схем. Однако для реализации сложных ФАЛ такой способ может потребовать большого числа корпусов логических элементов. Поэтому на практике, при необходимости, используют и другие логические элементы, реализующие более сложные логические функции.