
- •Проектирование автоматов
- •Проектирование автоматов
- •Введение
- •1. Абстрактные автоматы
- •1.1. Эквивалентность автоматов
- •1.2. Минимизация автоматов
- •1.2.1. Минимизация полностью определенного автомата
- •1.2.2. Минимизация частичного автомата
- •1.3. Композиция автоматов
- •1.3.1. Параллельное соединение
- •1.3.2. Последовательное соединение
- •1.3.3. Соединение с обратной связью
- •1.3.4. Соединение в сеть
- •1.4 Декомпозиция автомата
- •1.4.1. Задача декомпозиции
- •1.4.2. Разбиения со свойствами подстановки
- •1.4.3. Метод декомпозиции
- •1.5. Упражнения Эквивалентность автоматов
- •Минимизация полностью определённого автомата.
- •Декомпозиция автоматов
- •2. Структурные автоматы
- •2.1. Автоматная полнота и теорема в.М.Глушкова
- •2.2. Гонки в автомате
- •2.2.1. Кодирование состояний
- •2.2.2. Понятие о гонках. Противогоночное кодирование
- •2.3. Проектирование автомата
- •2.4. Упражнение Кодирование
- •Синтез автомата
- •3. Синтез схем
- •3.1. Определения
- •3.2. Функциональная полнота базиса
- •3.2.1. Классы функций
- •3.2.2. Монотонные функции
- •3.2.3. Самодвойственные функции
- •3.2.4. Линейные функции
- •3.2.5. Функции, сохраняющие константу
- •3.2.6. Функциональная полнота
- •3.3. Топологические ограничения в схемах
- •3.3.1. Плоские схемы
- •3.3.2. Ограничения на глубину связи в схеме
- •3.4. Методы синтеза схем
- •3.4.1. Метод факторизации
- •3.4.2. Метод декомпозиции
- •3.4.3. Синтез схем в классическом базисе.
- •3.4.4. Синтез схем в монофункциональном базисе.
- •3.5. Упражнения Функциональная полнота
- •Синтез схем
- •4. Эксперименты над автоматами
- •4.1.Построение диагностических деревьев
- •4.2. Диагностические и установочные эксперименты
- •4.2.1. Дерево преемников
- •4.2.2. Диагностический эксперимент
- •4.2.3. Установочный эксперимент
- •4.3. Упражнения Диагностические эксперименты
- •Установочные эксперименты
- •5. Формальные грамматики
- •5.1. Языки и порождающие их грамматики
- •5.2. Примеры фрагментов описаний в языках программирования.
- •5.3. Порождающая грамматика
- •5.4. Классы языков и грамматик
- •5.5. Язык, понимаемый устройством
- •5.6. Автоматные языки
- •5.7. Упражнения
- •Библиографический список
- •Проектирование автоматов
- •620002, Екатеринбург, Мира, 19
3.4.3. Синтез схем в классическом базисе.
Решение задачи начинается с представления функции в виде ДНФ. Анализ функций направлен на выявления общих частей функций, которые должны будут реализовываться общими подсхемами. Это же относится и к реализации одной функции: общие части реализуются одной схемой, что значительно сокращает схему.
Рассмотрим применение метода на примере реализации пары функций
F= {f1=ababcabc,f2=abc} в классическом базисе
{2-И, 2-ИЛИ, НЕ}
Прежде всего минимизируем задание. После сокращения функции примут вид:
f1=abab,f2=abc.
Учитывая
вид второй функции, перепишем первую в
виде
f1=abab
= abab=
ab(ab).
Теперь реализация первой функции потребует четыре элемента, второй функции – один элемент, с учётом того, что конъюнкция abуже реализована в схеме первой функции.
При
синтезе полезно использовать правило
де Моргана. Действительно, если для
реализацииabнеобходимо три элемента, то равная ей
функция потребует только два
элемента.
3.4.4. Синтез схем в монофункциональном базисе.
При синтезе схем в базисе p-И-НЕ, гдеp – число входов элемента, используется следующий алгоритм.
Исходная функция представляется в дизъюнктивной нормальной форме, т.е. в виде К1К2…Кr, затем над ней проводится операция двойного отрицания, одно из которых опускается до конъюнкций, т.е.
функция
будет представлена через функции базиса.
Если
rpи число букв
в каждой из конъюнкций не большеp,
то задача решена. Схема будет состоять
из двух уровней. На первом из них
реализуются конъюнкции, на втором
происходит их объединение. Задача
усложняется, если на каком-то уровне у
элемента не хватает для реализации
входов. В этом случае задача состоит в
том, чтобы разбить исходную запись
функции на фрагменты и реализовать
каждый из них отдельно, объединяя затем,
используя правило де Моргана.
Для
этого проводится анализ конъюнкций в
формуле, выделяются общие части и
выносятся за скобки общие части.
Этот же приём, связанный с вынесением за скобки и выделением общих частей, необходим, когда стоит задача реализации нескольких функций. При этом может оказаться, что для получения минимальной схемы не обязательно приводить все функции к минимальной форме.
Пример. Реализуем в базисе 3 -И-НЕ функцию f=<01101000>
Запишем её в СДНФ: f =ab c a b c a bc
Функция не минимизируется, полученная нормальная форма является и минимальной.
Схема будет иметь вид как на рис. 3.9.
Если возникает необходимость реализовать эту функцию в базисе 2-И-НЕ, то формулу преобразуем так:
f =abcabcabc= a(bcbc)a(bc) = =a / (b c bc) / (a / (b c )).
(bc bc ) = (b / c) / (b /c ), bc =b /c .
Здесь символом / обозначена функция элемента базиса.
Инверсия реализуется на одном элементе базиса, если у него на оба входа подать одну и ту же переменную, т.е. (x/x)=x.
При реализации на элементе p-ИЛИ-НЕ используют представление функции в конъюнктивной нормальной форме. Всё остальное то же, что и при реализации в базисеp-И-НЕ.
Пример. Реализуем ту же функцию в базисе 3-ИЛИ-НЕ.
f=(abc) (abc) (abc) (abc) (abc)= = (abc) (bc) (a c) (ab).
Решение имеет вид как на рис.3.10.