Uploaded by testingmail

Учебное пособие по Теории Автоматов

advertisement
Министерство общего и профессионального образования
Российской Федерации
Томский политехнический университет
-------------------------------------------------------------------------
А. В. ТРИХАНОВ
ТЕОРИЯ АВТОМАТОВ
Учебное пособие
Томск 1999
УДК 681.32
Триханов А.В. Теория автоматов: Учебное пособие. – Томск: Изд. ТПУ, 1999.
- 103 с.
В пособии изложены основы прикладной теории автоматов применительно к компьютерам: общие сведения об автоматах (основные определения, обозначения, свойства и характеристики автоматов, типы автоматов,
отношения между автоматами, “0”, ”1” алгебры автоматов и др.), способы задания (описания) автоматов, операции над автоматами (композиция автоматов, декомпозиция автомата, алгебраические операции, проверка отношений,
упрощение автомата), законы и тождества алгебры автоматов. Описаны основные подпрограммы преобразования автоматов, изложены вопросы синтеза и анализа логических схем управляющих автоматов с жесткой логикой,
вопросы контроля и диагностирования работы автоматов. Пособие подготовлено на кафедре вычислительной техники ТПУ и предназначено для студентов специальности 220100 “Вычислительные машины, системы, комплексы и
сети” Центра дистанционного образования.
Печатается по постановлению Редакционно – издательского Совета
Томского политехнического университета
Рецензенты:
Коваленок С.И. - к.т.н., доцент кафедры телевизионных устройств Томского
университета автоматизированных систем управления и радиоэлектроники;
Прищепа Л.С. - к.т.н., доцент кафедры конструирования вычислительной
аппаратуры Томского университета автоматизированных
систем управления и радиоэлектроники
Темплан 1999
©
2
Томский политехнический университет, 1999
ВВЕДЕНИЕ
Учебное пособие посвящено учебному курсу "Теория автоматов". В пособии рассматриваются общие сведения об автоматах, способы задания (описания) автоматов, операции над автоматами с законами и тождествами алгебры автоматов, вопросы синтеза логических схем, вопросы контроля и диагностирования работы автоматов, синтез управляющих цифровых автоматов
с жесткой логикой.
Над цифровыми автоматами, как и над другими объектами дискретной
математики, могут выполняться операции композиции, декомпозиции (формирование булеана объекта, разбиение, покрытие, проверка разбиения, проверки покрытия), алгебраические операции (объединение, вычитание, симметрическая разность, дополнение, пересечение), проверка отношений между
объектами, упрощение (на основе тождеств, на основе учета сохраняемости
логических условий).
Известно незначительное количество операций над цифровыми автоматами (последовательное соединение, параллельное соединение, соединение с
обратной связью).
В настоящее время теория цифровых автоматов отличается слабой проработкой соответствующей алгебры, в том числе и относительно тождеств и
законов.
Это сдерживает развитие данной теории, не дает ей возможностей
утвердиться в качестве полнокровной теории.
Известные операции в достаточной степени не формализованы, не унифицированы и не стандартизированы, что затрудняет их использование при
решении конкретных задач с объектами дискретной математики. Совершенно не затрагиваются вопросы законов и тождеств алгебры автоматов, возможность которой даже не упоминается.
Таким образом, насущной задачей является проработка в более полном
объеме операционного инструментария для преобразований автоматов, что
несомненно окажет благотворное влияние на решение вопросов теоретической кибернетики, в том числе теории математических машин, программирования, искусственного интеллекта.
На кафедре вычислительной техники Кибернетического центра ТПУ с
1975 года ведутся работы по разработке инструментария для преобразования
различных объектов дискретной математики [13], имеется определенный задел по преобразованию цифровых автоматов, логических схем [14 - 16].
Инструментарий для кубов и кубических покрытий (кубический подход), описанный в [14], оказался полезным для проработки процедур преобразования объектов, которым посвящено данное пособие.
Естественно, при разработке, унификации процедур преобразований
объектов будет использоваться теоретико-множественный подход.
3
Кроме того, применяется алгоритмический подход как со стороны вида
деятельности, так и формы труда, что способствует улучшению процесса познания.
В пособии рассмотрение автоматов и операций над ними сопровождается необходимыми примерами.
В приложениях приведены некоторое программное обеспечение преобразований автоматов и контрольные вопросы курса.
1. ОБЩИЕ СВЕДЕНИЯ ОБ АВТОМАТАХ
1.1. Основные определения. Обозначения. Изображения
Автомат — система механизмов, устройств, в которой полностью автоматизированы процессы получения, преобразования, передачи энергии, материалов, информации [1- 3, 5 - 7]. Термин "автомат" используется в двух аспектах:
1) техническом,
2) математическом.
При математическом подходе под автоматом понимается математическая модель технического устройства, у которого должны быть входы, внутренние состояния и выходы. Относительно деталей структуры устройства
сведений не должно быть.
При техническом подходе под автоматом понимается вполне реальное
устройство, например, телефонный автомат, торговый автомат и т. д. В данном случае, естественно, известными являются детали внутреннего строения
устройства.
Частным и важным случаем автомата [9, 10, 11] выступает цифровой автомат (ЦА), в котором полностью автоматизированы процессы приема, преобразования, хранения и выдачи цифровой информации.
С точки зрения сигналов ЦА полезно определить как систему, которая
может принимать входные сигналы, под их воздействием переходить из одного состояния в другое, сохранять его до прихода следующего входного
сигнала, выдавать выходные сигналы.
ЦА считается конечным, если конечны множества входных сигналов X,
состояний S и выходных сигналов Y.
Работа ЦА осуществляется в автоматном времени, определяемом числом
периодов поступления входных сигналов.
В качестве ключевого слова обозначения цифрового автомата целесообразно выбрать слово ЦА, правее которого фиксируется имя автомата. Напри4
мер, автоматы А, B, C, должны быть обозначены как ЦАА, ЦАВ, ЦАС. Как и
в алгоритмических языках, имя не может начинаться с цифры.
В существующих теориях автоматов последние обозначаются заглавными буквами, в том числе и с номерами, например, как S1, S2 и т. д. В излагаемой теории, в которой проработаны разнообразные операции, подобное обозначение является неприемлемым из-за возможных накладок и трудностей
идентификации разных объектов математики [8]: множеств (MN), графов
(GR), кубов (CU), покрытий (POK), алгоритмов (ALG), автоматов (ЦА) и логических схем (LS).
При вводе в компьютер ключевого слова и имени их можно набирать
прописными буквами (mn, gr, cu, pok, alg, ca, ls).
Самое общее изображение, например, ЦАА (рис.1), имеет множества
входов ХА, выходов YA и состояний SА.
Любой ЦА состоит из двух частей: комбинационной логической схемы
(КЛС) и памяти (П). С учетом этого ЦАА может быть изображен так, как показано на рис.2. В данном случае в некоторой степени раскрыта структура
автомата. КЛС автомата формирует выходные сигналы, сигналы перевода
триггеров блока памяти в новые состояния. Наличие блока памяти позволяет
помнить предысторию работы автомата под воздействием входных сигналов.
Рис.1. Общее изображение
1.2.
Рис. 2. Структурное изображение
Способы описания и построения автоматов
Для описания (задания) ЦА используются разнообразные средства,
называемые языками, которые делятся на начальные и автоматные языки.
Поскольку языки базируются на алфавитах, то применительно к ЦА множество Х трактуется в качестве входного алфавита, множество Y - выходного
алфавита, а множество S - внутреннего алфавита. Как и для других объектов,
для автоматов используются разные таблицы, матрицы, графы.
5
Наиболее общее при выработке выходных сигналов, формировании новых состояний под действием входных сигналов отражается законом функционирования автомата [4, 12]:
s(t)=  (s(t-1), x(t)),
y(t)=  (s(t-1), x(t)).
Как видно, закон функционирования представляет собой совокупность
двух функций: функции перехода  и функции выхода .
В формулах используются обозначения:
t - данное автоматное время,
t-1 - предыдущее автоматное время,
 - оператор формирования данного состояния s,
 - оператор формирования данного выходного сигнала y,
х - входной сигнал.
Видно, что данное состояние s(t) зависит от предыдущего состояния
s(t-1) и входного сигнала в данный момент времени, что выходной сигнал в
данный момент времени так же определяется предыдущим состоянием и
входным сигналом в данный момент времени.
ЦА строится по имеющемуся алгоритму, представленному в виде графсхемы алгоритма (ГСА). Определяются состояния, число триггеров памяти,
синтезируются логические схемы.
При наличии простейших автоматов может реализовываться их комбинация, получаться более сложный новый автомат.
Над имеющимися автоматами можно выполнять другие разнообразные
операции, их результаты будут новыми автоматами. Например, операция пересечения ЦАС= ЦАА  ЦАВ даёт автомат С, состоящий из совпадающих
фрагментов исходных автоматов А и В.
1.3. Об операциях над автоматами, о законах и тождествах
алгебры автоматов
Над цифровыми автоматами, как и над другими объектами дискретной
математики, могут выполняться разнообразные операции.
Все операции можно разделить на следующие пять групп:
1) группу операций декомпозиции;
2) группу операций композиции;
3) группу алгебраических операций;
4) группу операций проверки отношения между автоматами;
5) группу операций упрощения автомата.
В первую группу входят операции формирования булеана (множества
всех подавтоматов) автомата, разбиения и покрытия автомата, проверки раз6
биения и покрытия.
Группа вторая включает в себя операции различного соединения автоматов: последовательного, параллельного соединений и соединения с обратной связью.
В группу алгебраических операций входят операции объединений, вычитания, симметрической разности, дополнения, пересечения.
Группа четвертая включает в себя операции проверки отношений между
автоматами. В эту группу входит операция проверки равенства автоматов.
Упрощать автоматы можно на основе тождеств алгебры автоматов, на
основе учета сохраняемости логических условий [4].
Все законы обычной алгебры справедливы и в алгебре автоматов, однако распределительный закон имеет в ней и вторую форму (форму распределения “слагаемого” относительно “произведения”).
Имеющуюся форму распределительного закона в обычной алгебре следует называть формой распределения “произведения” относительно “слагаемого”.
Все тождества алгебры алгоритмов [14] действуют в алгебре автоматов.
В системе тождеств выделяются группы:
1) тождеств отдельных операций;
2) тождеств склеивания;
3) тождеств поглощения;
4) тождеств Порецкого;
5) тождеств де Моргана;
6) тождеств для общих “множителя” и “слагаемого” совершенного ранга.
1.4. Цифровые автоматы 1-го и 2-го рода, автоматы Мили и Мура
Автоматы 1-го и 2-го рода различаются законами функционирования.
Закон функционирования для ЦА 1-го рода включает в себя функции:
s(t) = (s(t-1), x(t)),
y(t) = (s(t-1), x(t)).
Видно, что характер зависимостей s(t) и y(t) от s(t-1) и x(t) является одинаковым, естественно, что операторы  и  являются различными.
Функция выхода ЦА 2-го рода отличается от такой функции ЦА 1-го рода тем, что используется состояние в данный момент времени s(t):
y(t) = (s(t), x(t)).
Таким образом, закон функционирования ЦА 2-го рода есть:
7
s(t) = (s(t-1), x(t)),
y(t) = (s(t), x(t)).
Частный случай автомата 2-го рода - ЦА Мура. В том автомате функция
выхода зависит только от данного состояния:
y(t) = (s(t)).
Ясно, что зависимость от x(t) отсутствует только явно, на самом деле зависимость имеется (неявно). В том можно убедиться, подставив в функцию
выхода данное состояние s(t) по функции перехода:
y(t) = ((s-1), x(t)) = '(s(t-1), x(t)).
Получается некоторая новая функция выхода '.
Нелишне ещё раз записать законы функционирования автоматов Мили и
Мура, используя в качестве индексов "ми", "му":
s(t)ми= (s(t-1), x(t)),
y(t)ми=(s(t-1), x(t)) - ЦА Мили;
s(t)му= (s(t-1), x(t)),
y(t)му=(s(t))
- ЦА Мура.
У ЦА Мили выходной сигнал имеется только тогда, когда есть входной
сигнал, а у ЦА Мура выходной сигнал имеется всегда. Целесообразно считать, что выходной сигнал у ЦА Мили носит импульсный характер, а у ЦА
Мура - потенциальный характер.
"Почувствовать" автоматы рассмотренной классификации можно, используя триггер со счетным входом (рис. 3). Как видно, триггер под действием каждого входного сигнала переходит в новое состояние. По переходам
триггер ведет себя как ЦА Мили и ЦА Мура.
8
Рис.3. Триггер со счетным входом
Рис.4. ЦА 2-го рода
На рис. 3 диаграммы на входе и левом выходе триггера отражены с учетом автоматного времени, равного 1, 2, 3, 4, 5. На рис. 4 показана выработка
выходного сигнала y(t) по данному состоянию, а на рис.5 - по предыдущему
состоянию.
Диаграммы работы ЦА Мили (рис.5,а) и Мура (рис.5,б) показаны на рис.
6 и 7 соответственно.
Рис.5. ЦА Мили и Мура
Рис.6. Диаграмма работы ЦА Мили Рис.7. Диаграмма работы ЦА Мура
1.5. Классификация автоматов
Автомат может быть построен тогда, когда имеется алгоритм. Принято
9
считать, что мы живем в алгоритмических джунглях. Подобное утверждать
относительно автоматов пока преждевременно, однако автоматов в настоящее время имеется очень много. В этом случае полезна классификация этих
объектов.
Собственно она уже началась в предыдущем вопросе:
1) по закону функционирования ЦА делятся на автоматы 1-го рода
(автоматы Мили) и ЦА 2-го рода. Последние автоматы в случае, когда нет
явной зависимости от входных сигналов x(t), являются автоматами Мура.
Видимо, целесообразнее по первому критерию автоматы делить на автоматы
Мили и Мура;
2) по конечности множеств X, Y, и S автоматы бывают конечными и
бесконечными. Может быть, данный критерий стоит трактовать как критерий
по мощности ЦА;
3) по объему памяти автоматы делятся на автоматы с памятью (последовательностные автоматы) и автоматы без памяти (логические комбинационные схемы);
4) по степени раскрытия структуры автоматы бывают абстрактными автоматами (детали структуры не раскрыты) и структурными автоматами (раскрыты детали структуры);
5) по отношению между автоматами среди автоматов можно выделить
подавтоматы, надавтоматы. Если, например, известно, что ЦАА < ЦАВ, то
автомат А является подавтоматом автомата В, а автомат В - надавтоматом
автомата А;
6) по полноте используемых переходов автоматы делятся на полностью
определенные автоматы и частично определенные автоматы;
7) по стабильности периода следования входных сигналов автоматы
бывают синхронными автоматами (период следования входных сигналовпостоянная величина) и асинхронными автоматами (период - переменная величина);
8) по вероятности переходов автоматы делятся на детерминированные
(не вероятностные) и недетерминированные (вероятностные) автоматы;
9) при нулевой мощности множества внутренних состояний (| S |= 0)
автомат называется автономным, при | Y | = 0 - автоматом без выхода. Если
среди состояний автомата выделяется начальное состояние s0, то автомат
называется инициальным;
10) по применению автоматы можно разделить на автоматы:
а) промышленные (сварочные, кузнечно-прессовые, литейные, строительные, транспортные, упаковочные роботы, контрольные, диагностические и
др.);
б) сельскохозяйственные (доильные, раздаточные, уборочные и др.);
в) торговые (газетные, упаковывающие, взвешивающие и др.);
г) учебные (обучающие, тестирующие, моделирующие, демонстрирующие и др.);
10
д) медицинские (искусственные органы, хирургические, диагностирующие, дыхательные, тренирующие и др.);
е) информационные (видеомагнитофоны, системы "вопрос - ответ" и
др.).
В конце данного вопроса представляется уместным упомянуть автоматную сеть, как совокупность связанных линиями передач информации цифровых автоматов разной мощности и назначения, в которой обеспечивается эффективность их использования.
1.6. Свойства и характеристики автоматов
Принято считать, что цифровой автомат является следствием алгоритма.
При том обычно ссылаются на связь: модель
алгоритм - автомат. Свойства того или иного объекта, прежде всего, нужны для идентификации объекта.
Представляется, что известные свойства алгоритма в определенной степени относятся и к автоматам. Свойства эти - следующие:
1) наличие начального и конечного состояний;
2) дискретность;
3) массовость (обрабатываемые данные должны лежать в некотором
диапазоне);
4) определенность (четкий переход от состояния к состоянию при заданной последовательности входных сигналов);
5) понятность (исполнителю);
6) результативность (конечность);
7) корректность (получение правильного результата).
Ясно, что все эти свойства в полном объеме пригодны к реальному
устройству (автомату).
Применительно к абстрактному автомату далеко не всегда устанавливают начальное и конечное состояния. Более того, никакого результата работы
автомата для неизвестных исходных данных не предусмотрено.
Возможно, для абстрактного автомата в качестве исходных данных
можно считать входные сигналы, а в качестве результата - последовательность состояний и выходных сигналов.
С характеристиками автомата особых проблем нет. К ним можно отнести:
1) быстродействие (в абстрактном автомате переходы совершаются
мгновенно);
2) объем памяти (мощность множества состояний);
3) мощности множеств входных и выходных сигналов;
4) закон функционирования;
4) сложность;
11
5) тип.
1.7.
Автоматы, выполняющие роль "0" и
"1" в алгебре автоматов. С - автомат
Любая алгебра должна иметь конструкции, выполняющие в ней роль "0"
и "1". По аналогии с алгеброй алгоритмов роль "0" выполняет пустой автомат
(ноль-автомат), его следует обозначать с отступлением от принятых правил
как ЦА0. Пустой автомат- это автомат, в котором запрещены всевозможные
переходы. Естественно, что ЦАА \/ ЦА0 = ЦАА, ЦАА /\ ЦА0 = ЦА0.
Роль "1" возлагается на полный ЦА (ЦА1), в простейшем случае такой
автомат представляет собой настраиваемое объединение рассматриваемых
автоматов. Естественно, что ЦАА \/ ЦА1 = ЦА1, ЦАА /\ ЦА1 = ЦАА, дополнение ЦА1 = ЦА0, дополнение ЦА0 = ЦА1.
В данном вопросе следует затронуть ещё одно объединение, в котором
одновременно реализуются автомат Мили и автомат Мура (рис.8). Как известно, первая функция автоматов Мили и Мура является одинаковой. Следовательно, в объединении она реализуется один раз. Что касается вторых
функций, то они - разные и имеют свои логические схемы.
Закон функционирования С -автомата следует записать следующим образом:
s(t) = (s(t-1), x(t)),
y(t)ми= (s(t-1), x(t));
y(t)му= (s(t)).
Рис.8. С – автомат
1.8. Равенство, равносильность, эквивалентность, изоморфизм
Автоматы равны тогда, когда у них одинаковое описание.
Автомат можно упростить, тогда упрощенный и исходный автоматы будут равносильными.
Если автоматы хотя бы на одной последовательности входных сигналов
работают одинаково, а на других - по-разному, то такие автоматы называются эквивалентными.
12
Два автомата считаются изоморфными, если выполняются следующие
два условия:
1) между X, Y и S обоих автоматов можно установить взаимно однозначные соответствия;
2) при учете этих соответствий автоматы оказываются равными.
1.9. Автоматные грамотность и культура
Под грамотностью в любой дисциплине (теория программирования, теория вычислительных машин (компьютеров) и т.д.) понимается знание основ:
общих сведений, способов описания, операций, приложений. Все это имеется
и в теории автоматов.
Культура базируется на грамотности и дополнительно включает в себя
навыки и умения, способности оформления и представления результатов в
области автоматов.
В настоящее время культура трактуется как сфера, методы и средства
общения. Следовательно, автоматная культура - это сфера, методы и средства
общения по вопросам автоматов.
1.10. Значение теории автоматов в науке, технике и обществе
Значение автоматов определяется значением алгоритмов, ЭВМ. Если
всё, что касается этого, просуммировать и обобщить, то можно отметить следующее:
1) автоматы облегчают труд человека;
2) высвобождают его из сферы тяжёлого физического труда;
3) избавляют людей от опасных видов труда;
4) экономят время, повышают производительность труда;
5) предоставляют человеку возможность сосредоточиться на творческой
стороне проблемы;
6) улучшают ритмичность и культуру труда.
Представляется, что каждый человек, занимающийся каким-либо видом
деятельности, легко может привести различные примеры автоматов.
1.11. Краткая историческая справка о зарождении и
развитии автоматов. Виды теорий автоматов
13
Появление и использование автоматов относится к глубокой древности.
Первыми автоматами были часы и различные механические игрушки (изобретателем игрушки считается француз Вакансон), которым придавали форму
человека или животного.
Первое суммирующее устройство разработал Б.Паскаль (1623 г.). Первым в мире арифмометром стала “арифметическая машина” Г.Лейбница (конец ХVII века).
Со 2-ой половины 18-го века начинается широкое применение автоматов в промышленности (регулятор, ткацкий станок и т.д.). Здесь следует
упомянуть изобретателя перфокарты француза Жаккара.
До недавнего времени строили автоматы, чтобы заменить ими человека
при физическом труде. В 40-50 годах нашего столетия появились автоматы
для выполнения некоторых видов умственного труда (цифровые устройства,
вычислительные машины). Проектировщиками первых цифровых вычислительных машин были американцы Д.Эккерт, Д.Моучли, россияне С.А.Лебедев, Ю.А. Базилевский и Б.И.Рамеев. Большой вклад внесли также наши ученые и инженеры И.С.Брук, Н.П Брусенцов, В.М.Глушков, Г.П.Лопатко,
В.С.Семенихин, В.В.Пржиялковсий, армяне Г.П.Овсепян и Ф.Т.Саркисян и
др.
В настоящее время принято говорить о двух теориях автоматов. Одна
теория - это абстрактная теория, а другая - структурная теория. Первая теория занимается изучением абстрактных автоматов (без раскрытия структуры), вторая - структурных автоматов (с синтезом и анализом схем).
2. СПОСОБЫ ЗАДАНИЯ (ОПИСАНИЯ) ЦИФРОВЫХ АВТОМАТОВ
Для задания (описания) автоматов используются языки описания, в
настоящее время под языком понимается совокупность средств описания.
Все языки применительно к автоматам делятся на начальные и на автоматные (рис. 9).
2.1. Начальные языки
Начальные языки трактуются как языки неявного задания ЦА или языки
явного описания автомата на начальных этапах его рассмотрения. К таким
языкам относятся: язык регулярных выражений алгебры событий, логическая
схема алгоритма (ЛСА), графическая схема алгоритма (ГСА), матричная
схема алгоритма (МСА), функциональная микропрограмма (ФМП), система
14
формул перехода (СФП), входной, внутренний и выходной языки (алфавиты), законы функционирования.
СА, ГСА, МСА, ФМП и СФП подробно описаны в [11]. Тем не менее
они здесь в учебных целях кратко рассматриваются.
Рис.9. Классификация языков описания автоматов
2.1.1. Графическая схема алгоритма
Графическая схема алгоритма или граф-схема алгоритма (ГСА) является аналогом схемы алгоритма (СА), отличается от последней большей формализацией, несколько другим изображением блоков начала и конца.
Поскольку ГСА предложена для алгоритмов операций ЭВМ, то в ней
нет средств для отражения ввода-вывода.
Вместо блоков в ГСА используются вершины: начальные Y0 , конечные
Yк, операторные вершины Y1,Y2, … , условные вершины X1,X2, … .
На рис.10 показана СА классического алгоритма нахождения наибольшего общего делителя (ННОД),
где: А и С - исходные числа,
15
НОД - наибольший общий делитель.
Видно, что заданные числа при А<С меняются местами (блоки 57). Поскольку после этого получается А >С, то число А заменяется на значение
А - С. Подобные циклы повторяются до получения А= С (блоки 38), число
А и будет требуемым результатом (блок 9).
Имеются отличия применительно к условным вершинам. Прежде всего,
условие (чаще всего отношение) записывается в закодированном виде.
1
Начало
2
A, D
8
A:=A-D
3
A=D
=
9

НОД:=А
4
>
A>D
10
НОД
5 >
НОД:=А
11
Конец
6
A:=D
7
D:=НОД
Рис. 10. СА ННОД чисел A и D
Если оно выполняется, то результату присваивается единичное значение, в противном случае - нулевое значение. С учетом этого выходы вершины отмечаются указанными значениями вместо “да” и “нет”.
16
Содержательная и закодированная граф-схемы алгоритмов представлены на рис.11 и 12 соответственно, коды микроопераций уi, микрокоманд Yi и
условий XI - в табл.1.
D: =НОД
Начало
Y3
y3
Y0
A:=A-D
1
1
A=D
X1
0
0
y4
Y5
НОД:=A
1
A>D
Y4
X2
0
1
y1
0
НОД:=A
Конец
Y1
YK
y1
A:=D
Y2
Рис. 11. ГСА ННОД
Коды
Рис.12. Закодированная ГСА ННОД
Таблица 1
Микрооперация,
условие
микрооперации,
условия
микрокоманды
y1
y2
y3
Y1
Y2
Y3
НОД:=А
А:=С
С:=НОД
y2
Коды
Микрооперация,
условие
микрооперации,
условия
микрокоманды
y4
X1
X2
Y4
A:=A-C
A=C
A>C
Условия корректности ГСА похожи на условия корректности схемы алгоритма [14]:
1) у ГСА должна быть одна начальная и одна конечная вершины;
17
2) каждый выход соединен только с одним входом;
3) каждый вход соединен, по крайней мере, с одним выходом;
4) выходы условных вершин помечаются с помощью цифр “0” и “1”;
5) из начальной вершины должен быть путь к любой вершине;
6) из любой вершины должен быть путь в конечную вершину;
7) для любых наборов логических условий должен быть путь из начальной вершины в конечную вершину.
2.1.2. Матричная схема алгоритма
Матричная схема алгоритма (МСА) представляет собой квадратную
матрицу, строки которой соответствуют вершинам с выходами, столбцы вершинам с входами. На пересечениях строк и столбцов записываются функции перехода. Такая функция представляет собой конъюнкцию кодов логических условий (логических переменных), переменная пишется без инверсии,
если выход осуществляется по 1, в противном случае переменная пишется c
инверсией. Функция перехода, равная 1, соответствует безусловному переходу.
Для указанного выше алгоритма МСА (МСА ННОД) представлена в
табл.2
Таблица 2
МСА ННОД
Y0, 4
Y1
Y2
Y3
Y5
1)
2)
3)
4)
5)
6)
7)
8)
9)
18
Y1
__ __
Х1Х2
Y2
Y3
Y4
__
Х1Х2
Y5
YK
Х1
1
1
1
1
Для МСА можно сформировать условия корректности:
в МСА не должно быть строки Yk;
в МСА не должно быть столбца Y0;
должны быть столбец Yk и строка Y0;
не должно быть пустых строк и столбцов;
на строке не должно быть одинаковых функций перехода;
на строке не должно быть сочетаний 1 и функций перехода через логические переменные;
в столбце могут быть одинаковые функции перехода;
на строке может быть только одна 1;
дизъюнкция всех функций переходов на строке должна быть равна единице;
10) разные строки с одинаковыми функциями переходов разрешается оформлять в одной строке с указанием всех индексов вершин старта.
По МСА можно упрощать алгоритмы и, следовательно, автоматы.
2.1.3. Функциональная микропрограмма
Функциональная микропрограмма (ФМП) операции представляет
собой программу в терминах микроопераций и осведомительных сигналов.
Применительно к Ф - языку [9] ФМП имеет следующую структуру:
1) заголовок с ключевым словом “АЛГОРИТМ”;
2) совокупность описаний с ключевыми словами “ВХОДНЫЕ”,
”ВНУТРЕННИЕ”, ”ВЫХОДНЫЕ”;
3) НАЧАЛО;
4) тело;
5) окончание с ключевым словом “КОНЕЦ”.
ФМП алгоритма ННОД можно представить в следующем виде:
АЛГОРИТМ ННОД;
ВХОДНЫЕ А(1:32),С(1:32);
ВНУТРЕННИЕ: А(1:32),С(1:32),НОД(1:32);
ВЫХОДНЫЕ: НОД(1:32);
НАЧАЛО
М3: ПЕРЕЙТИ ЕСЛИ Х1 ТО М1;
ПЕРЕЙТИ ЕСЛИ Х2 ТО М2;
Y1;
Y2;
Y3;
М2: Y4;
ПЕРЕЙТИ М3;
М1: Y5;
КОНЕЦ.
По ФМП, как и по предыдущим способам описания, можно организовать алгоритмический процесс. Пусть А=8, С=6, тогда данный процесс следует отразить следующим образом:
начало;
1 цикл: 8=6, Х1=0, 8>6, X2=1, М2, Y4, А=2, В=6, М3;
2 цикл: 2=6, Х1=0, 2>6, Х2=0, Y1, НОД=2, А=6, В=2, А=4, М3;
3 цикл: 4=2, Х1=0, 4>2, X2=1, M2, Y4, A=2, B=2, M3;
4 цикл: 2=2, Х1=1, М1;
НОД=2;
конец.
Для исходных чисел 8 и 6 действительно наибольший общий делитель
равен 2.
19
1)
2)
3)
4)
5)
Для ФМП существуют и условия корректности:
должен быть заголовок;
данной меткой может быть помечен только один оператор (одна строка);
в операторах перехода могут использоваться одинаковые метки;
строка после оператора безусловного перехода должна иметь метку;
на строке может быть записана только одна микрокоманда или один оператор перехода.
2.1.4. Система формул переходов
Все переходы, соответствующие строке МСА, можно отразить в формуле переходов. Формул будет столько, сколько имеется строк в МСА. Получается система формул перехода (СФП).
Каждая формула переходов начинается с вершины, из которой рассматриваются переходы, в правой части формулы пишется дизъюнкция логических произведений вершин захода с соответствующими функциями перехода.
Между левой и правой частями формулы ставиться стрелка  , которая
отражает переходы от вершины левой части к одной из вершин правой части.
Переход совершается к той вершине, соответствующая функция перехода которой становится равной единице.
Для рассматриваемого алгоритма СФП включает в себя:
__ __
__
Y0,4  Х1Х2Y1+Х1Х2Y4+Х1Y5;
Y1  Y2;
Y2  Y3;
Y3  Y4;
Y5  YK.
Применительно к СФП можно сформулировать условия корректности:
1) не должно быть формулы перехода для Yк;
2) в правой части любой формулы не должно быть вершины Y0;
3) логическая сумма всех функций перехода любой формулы должна быть
равна единице;
4) конъюнкция любой пары функций перехода формулы должна быть равна
нулю;
5) в формуле не может быть одинаковых функций перехода;
6) у данной операторной вершины формул переходов может быть одинаковая функция перехода.
СФП позволяет производить формальные преобразования, упрощать алгоритм, следовательно, и автомат.
20
2.2. Автоматные языки
Автоматным языком считается такая совокупность, с помощью которой
явно описывается автомат. К таким средствам относятся таблицы (Т), матрицы (М) и графы (Г).
Можно предложить следующую схему классификации этих языков,
представленную на рис.9, где используются обозначения:
ТП - таблица переходов;
ТВ - таблица выходов;
СТП и В - совмещенная таблица переходов и выходов;
ОТП - отмеченная таблица переходов;
МП - матрица переходов;
МВ - матрица выходов;
СМП и В - совмещенная матрица переходов и выходов;
ОМП - отмеченная матрица переходов.
Из рис.9 следует, что для ЦА Мили и Мура могут использоваться и
одинаковые средства (ТП, ТВ, МП), и разные средства (СТП и В и ОТП;
СМП и В и ОМП). Пунктирно обведенные средства использовать можно, но
нецелесообразно. Зачеркнутое средство МВ является невозможным.
2.2.1. Таблицы переходов, выходов
Таблица переходов (ТП) - совокупность строк и столбцов, причем,
строки соответствуют входным сигналам, а столбцы - предыдущим состояниям (ПС). Для ТП (табл. 3) на пересечениях фиксируются данные состояния, для таблицы выходов (ТВ) - выходные сигналы. Табл.4 является ТВ. Целесообразно данные средства рассмотреть для разных цифровых автоматов
раздельно.
Пусть вначале будут ЦА Мили. Таблицы переходов, выходов и совмещенная таблица (СТП и В) представлены табл.3-5 соответственно.
Из табл. 3 и 4 следует, что множества входных сигналов Х, внутренних
состояний S, выходных сигналов Y будут следующими:
Х= (x1 ,x2), S= (s1, s2, s3, s4), Y= (y1, y2, ,y3).
По табл.3 можно выполнить предусмотренные переходы:
если имеется предыдущее состояние s1 и действует входной сигнал x1, то получится новое (данное) состояние s2 (это можно отразить в виде s1, x1, s2), из
состояния s1 под действием входного сигнала x2 автомат перейдет в состояние s3.
21
Из состояния s2 под действием входного сигнала x1 автомат перейдет в
состояние s4, а под действием входного сигнала x2 - в состояние s1.
Из состояния s3 под действием входного сигнала x1 автомат перейдет в
состояние s2, а под действием - x2 автомат перейдет в состояние s3.
Из состояния s4 под действием входного сигнала x1 автомат перейдет в
состояние s1, а под действием - x2 перейдет в состояние s1.
Таблица 3
ТП ЦА Мили
ПС
s1
s2
s3
S4
x1
s2
s4
s2
S4
x2
s3
s1
s3
S1
ВС
Данным состояниям соответствуют логические выражения:
s1=s3 /\ x2; s2=(s1 \/ s3) /\ x1 \/ s2x2; s3=s1 /\ x2.
Особенностью ТП является то, что все пересечения ее заполнены. Если
автомат имеет частичное описание, то какие-то пересечения могут быть пустыми. У пустого автомата все пересечения пусты. В ТП допускаются одинаковые элементы в строках и столбцах.
Таблица выходов аналогична таблице переходов, по ней определяются
выходные сигналы:
y1=s1x1+(s3 \/ s2)x2; y2=s1x2; y3=(s2 \/ s3)x1.
Таблица 4
ТВ ЦА Мили
ПС
s1
s2
s3
s4
у4
y2
y4
y2
y3
y1
y3
y1
ВС
x1
x2
По данным ТП и ТВ можно составить совмещенную таблицу переходов
и выходов, в которой на пересечениях в виде дроби фиксируются состояния
и выходные сигналы (si / yj). СТП и В представляет собой табл.5.
Для ЦА Мура можно применять ТП (табл.6), ТВ (табл.7). Выходной сигнал автомата Мура соответствует данному состоянию (si / yi).
22
Таблица 5
СТП и В ЦА Мили
ПС
s1
s2
s3
s4
ВС
x1
s2
s4
у4
x2
s2
y2
s3
y4
s1
y3
s4
y2
s3
y1
s1
y3
y1
Таблица 6
ТП ЦА Мура
ПС
s1
s2
s3
s4
x1
s3
s2
s1
s1
x2
s2
s4
s3
s2
ВС
По данным ТП и ТВ автомата Мура также можно составить совмещенную таблицу переходов и выходов (табл.8), в которой на пересечениях в виде
дроби фиксируются состояния и выходные сигналы (s i / yi). Следовательно, в
СТП и В этого автомата будут дублироваться индексы данных состояний для
выходных сигналов.
Таблица 7
ТВ ЦА Мура
ПС
s1
s2
s3
s4
ВС
x1
у3
y2
y1
y1
y2
y4
y3
y2
x2
Экономнее эти дублирования отразить в верхней части столбцов
(табл.9). Такая таблица называется отмеченной таблицей переходов (ОТП).
Следовательно, СТП и В для ЦА Мура нецелесообразна. На рис. 9 она обведена пунктирно.
23
По таблицам ЦА Мура так же можно составить логические выражения
для данных состояний, выходных сигналов и диаграммы его работы (рис.13).
Таблица 8
СТП и В ЦА Мура
ПС
s1
s2
s3
s4
ВС
s3
x1
s2
у3
x2
s1
y2
s2
y1
s4
y2
s1
y1
s3
y4
s2
y3
y2
Логические выражения имеют вид:
s1=(s4 \/ s5)x2; s2=(s2 \/ s3)x2 \/ s1x1; s3=(s4 \/ s5)x1; s4=s1x2; s5=(s2 \/ s3)x1;
y1=s1; y2=s2; y3=s3; y4=s4; y5=s5.
Пусть автомат Мили стартует с состояния s2, а автомат Мура – с состояния s4, последовательность входных сигналов для автомата Мили состоит из
сигналов с номерами 2,1,1,1, а для автомата Мура - с номерами 2,1,1,2.
Таблица 9
ОТП
ПС
s1
s2
s3
s4
x1
y1
s3
y2
s2
y3
s1
y4
s1
x2
s2
s4
s3
s2
ВС
Диаграммы работы ЦА Мили отражены на рис. 13, диаграммы работы
ЦА Мура – на рис.14 соответственно.
Как видно, автомат Мили с учётом начального состояния s2 последовательно находился в состояниях s2, s1, s2, s4, s4 с выдачей сигналов y1, y4, y2, y2,
а автомат Мура с учётом начального состояния s4 последовательно находился
в состояниях s4, s2, s2, s2, s4 с выдачей сигналов y4, y2, y2, y2, y4.
Видно, что выходные сигналы автомата Мили носят импульсный характер, а автомата Мура - потенциальный.
2.2.2. Матрицы переходов, выходов
24
Матрицы в отличие от таблиц характеризуются однородностью обозна чений строк и столбцов. Строки матриц соответствуют предыдущим состояниям (ПС), а столбцы - данным состояниям (ДС).
Рис.13. Диаграммы работы ЦА Мили Рис.14. Диаграммы работы ЦА Мура
Матрицы переходов (МП) для обоих автоматов аналогичны, применительно к рассматриваемым примерам они должны иметь по 4 строки и по 4
столбца. На пересечениях МП размещаются входные сигналы.
Табл.10 является МП ЦА Мили , а табл.11 - МП ЦА Мура. Видно, что
имеются пустые пересечения. В строке не могут использоваться одинаковые
элементы. Этого ограничения нет для столбцов.
Очевидно, что чистой МВ для автоматов не получится, так как без входных сигналов xi матрица теряет смысл. Поэтому МВ на рис.9 зачеркнута.
Если в матрицах переходов автоматов Мили и Мура на пересечениях
разместить и выходные сигналы (xi / yj и xi / yt), то получатся совмещенные
матрицы переходов и выходов (СМП и В).
Такая матрица для ЦА Мили показана в табл.12. В ней по отношению к
выходным сигналам никаких ограничений нет.
СМП и В для ЦА Мура представлена табл.13. Естественно, что в ней
имеется ограничение на выходные сигналы: индексы у выходных сигналов в
столбце являются одинаковыми, они совпадают с индексом данного состояния, соответствующему рассматриваемому столбцу.
Так фиксировать выходные сигналы не только нецелесообразно, но даже
и некрасиво. С учетом этого СМП и В для ЦА Мура на рис.9 обведена пунктирно.
Поэтому для ЦА Мура целесообразна отмеченная матрица переходов
(ОМП). Переходы в такой матрице фиксируются на пересечениях, а выход25
ные сигналы - под обозначениями данных состояний в верхней части матрицы (табл.14).
Условия корректности отмеченной матрицы переходов по отношению к
входным сигналам совпадают с условиями корректности СМП и В ЦА Мили.
Таблица 10
МП ЦА Мили
ДС
s1
s2
s3
x1
x2
s4
ПС
s1
s2
s3
s4
x2
x1
x1
x2
x2
x1
Таблица 11
МП ЦА Мура
ДС
s1
s2
s3
x2
x1
x1
s4
ПС
S1
s2
s3
s4
x1
x1
x2
x2
x2
2.2.3. Графы автоматов
Граф ЦА (ГА) - ориентированный граф, у которого в качестве вершин
используются состояния, а в качестве дуг - переходы. В начале дуги фиксируется входной сигнал. Что касается выходного сигнала, то он для ЦА Мили
ставится на конце дуги (рис.15), а для ЦА Мура внутри вершины (рис.16).
Таблица 12
СТП и В ЦА Мили
ДС
s1
s2
s3
s4
ПС
s1
x1
x2
y4
s2
y3
x2
x1
y1
s3
26
y2
x1
x2
ДС
s1
s2
s3
s4
ПС
y4
s4
y3
x2
x1
y1
y2
Таблица 13
СТП и В ЦА Мура
ДС
s1
s2
s3
s4
ПС
s1
x2
x1
y2
s2
y3
x1
x2
y2
s3
x1
y4
x2
y1
s4
x1
y2
x2
y1
y2
Таблица 14
ДС
ПС
s1
s2
s3
s4
s1
y1
х1
х1
ОМП
s2
y2
х2
х1
s3
y3
х1
s4
y4
х2
х2
х2
27
Рис.15. ГА Мили
Рис.16. ГА Мура
Условия корректности для ГА Мили можно сформулировать следующим образом:
1) при выходе из данного состояния должны использоваться разные
входные сигналы;
2) при заходе в данные состояния допускаются одинаковые входные
сигналы;
3) при заходе в данное состояние разрешаются одинаковые выходные
сигналы.
Условия корректности для ГА Мура являются не сколько другими:
1) при выходе из данного состояния должны использоваться разные
входные сигналы;
2) при заходе в данные состояния могут использоваться одинаковые
входные сигналы;
3) при заходе в данное состояние должны быть одинаковые выходные
сигналы.
Можно заметить, что если в ЦА Мили при заходе в каждое состояние
имеются одинаковые выходные сигналы, то такой ЦА можно легко преобразовать в автомат Мура. Что касается преобразования автомата Мура в автомат Мили, то для этого достаточно перенести выходные сигналы из вершин
на концы дуг.
3. ОПЕРАЦИИ НАД ЦИФРОВЫМИ АВТОМАТАМИ
3.1. Операции декомпозиции
28
3.1.1.Разбиение. Покрытие
Разбиением заданного автомата является некоторая система автоматов,
удовлетворяющая определенным требованиям.
Например, для ЦАА можно рассмотреть систему ЦАА1, ЦАА2, ... ,
ЦААI, ..., ЦААN. Данная система будет разбиением, если каждый автомат
системы является подавтоматом ( ПЦАА ) ЦАА.
Далее, объединение автоматов системы должно совпадать с заданным
автоматом. И, наконец, пересечение любой пары автоматов системы должно
быть пустым.
Указанные выше три условия определения разбиения можно записать
следующим образом:
1. Любой автомат системы является подавтоматом заданного автомата ,
то есть ЦААI < ЦАА ;
2. Объединение всех N автоматов системы совпадают с заданным автоматом, то есть:
N
U ЦААI = ЦАА ;
I=1;
3. Пересечение любой пары автоматов пусто , то есть:
ЦААI  ЦААJ = ЦА0 (при I  J).
Можно осуществлять разбиение автомата, если он представлен в виде
совмещенной матрицы переходов и выходов автомата Мили или отмеченной
матрицы переходов автомата Мура.
Ниже разбиение рассматривается для автомата Мили (табл.15).
Операцию разбиения проще выполнить на графе автомата (рис.17).
Каждый подавтомат системы характеризуется областями отправления
Ai, прибытия Bi и графиком соответствия pi, где i - номер подавтомата (рис.
18 и 19).
Процедуру разбиения ЦА можно сформулировать так:
1. Начать;
2. Выбрать стартовую вершину с наименьшим индексом, не входящую в
области отправления предыдущих ПЦАА;
3. Формировать область прибытия Вi;
4. Формировать область отправления Ai;
5. Проверить, что все переходы учтены, при "нет" перейти к п.3;
6. Проверить, что остались вершины, не входящие в предыдущие области отправления, при "да" перейти к п.2;
7. Закончить.
Если все переходы для вершины рассмотрены, то над ней рекомендуется
ставить "точку".
Таблица 15
Автомат для разбиения
29
ПС
ВС
Х1
Х2
s1
s2
s3
S4
s5
s6
s1/y2
s2/y3
s1/y3
s4/y5
s2/y4
s3/y4
s6/y5
s5/y6
s6/y1
s6/y2
s5/y6
s5/y1
y4
y3
x 1 x2
s3
s2
x2
y2
x2
y4
x1
s1
x1
y5
y3
x1
y5
x1
s6
y6
y1
y2
x2
s4
x2
x1
s5
x2
y1
y6
Рис.17. ГА с разбиением
в первом цикле в качестве начальной вершины следует выбрать вершину с наименьшим индексом (s1). Этот цикл разбиения представлен
на рис.18.
Для второго цикла следует выбрать стартовую вершину с
наименьшим индексом, невходящую в область отправления предыдущих циклов (в данном случае в предыдущих циклах всего один –
первый цикл ).
Ясно, что стартовой вершиной будет вершина s4 (рис.19). Больше вершин для старта не осталось, разбиение дало два подавтомата
(выделены пунктиром на рис.17).
А1
.
s1
.
s2
.
s3
.
s1
.
s2
.
s4
.
s3
Рис. 18
30
В1
А2
.
s4
.
s5
.
s5
.
s6
Рис. 19
В2
Легко представить СТП и В этих подавтоматов ( табл.16, 17).
Таблица 16
1-й подавтомат
ПС
ВС
X1
X2
s1
s2
s1/y2
s2/y3
s1/y3
s4/y5
s3
s4/y4
s3/ y4
Таблица 17
2-й подавтомат
ПС
ВС
x1
x2
s4
s5
s6
s6/y5
s5/y6
S6/y1
S6/y1
s5/y6
s5/y1
В систему ПЦАА (табл.16, 17) для ЦАА (табл.15) входит два подавтомата.
Первый подавтомат (табл.16) должен включать вершину s1 в области отправления как стартовую (рис.18). Видно, что А1 = (s1, s2, s3), В1 = (s2 ,s3, s4).
Второй ПЦАА (табл.19) следует начать с вершины s4. Видно, что А2 =
(s4, s5, s6), B2 = (s5, s6).
С учетом областей отправления и прибытия условия корректности разбиения можно сформулировать следующим образом:
1. Пересечения любой пары областей отправления пусто: Аi /\ Аj = 0
(i  j),
2. Пересечение любой пары областей прибытия пусто: Вi /\ Вj = 0 (i  j),
3. Пересечение любой пары графиков пусто: рi /\ рj = 0 (i  j),
где знак /\ использован в качестве знака пересечения.
Если какое-либо условие не соблюдается, то где-то допущена ошибка.
Эти условия корректности являются расшифровкой ранее сформулированного 3-его условия определения разбиения.
Частным случаем разбиения является покрытие, оно отличается от разбиения третьим условием определения разбиения (покрытия):
3. Пересечение хотя бы одной пары автоматов системы не пусто (i  j).
3.1.2. Проверка разбиения, покрытия
31
Указанные выше условия определения разбиения (покрытия) можно использовать тогда, когда предложена система, претендующая на разбиение
(покрытие).
Если разбиение автомата выполнено и получены области отправления,
прибытия, то пересечение любой пары подавтоматов легко проверить через
пересечения областей.
Естественно, что в том случае первое из указанных выше условий определения проверять не следует, так как разбиение дает подавтоматы.
После разбиения второе условие также нет необходимости проверять,
так как алгоритм разбиения гарантирует соблюдение указанного выше условия.
Операция проверки покрытия автомата отличается от операции проверки разбиения автомата по третьему условию определения. В данном случае
пересечение хотя бы одной пары подавтоматов не является пустым, т.е.
ЦААI /\ ЦААJ = ЦА0 при I  J.
3.2. Операции композиции
К операциям композиции относятся известные три соединения: первое последовательное (рис.20), второе – параллельное (рис.21) соединения, третье – соединение с обратной связью (рис.22).
Исходные автоматы - это автоматы ЦАS1, ЦАS2, а результирующий –
автомат ЦАS.
X
X1
S1
Y1
X2
Y2
S2
Y
S
Рис. 20
Располагая совмещенными таблицами переходов, выходов исходных
цифровых автоматов S1 (табл. 18) и S2 (табл. 19), нужно при старте из любого предыдущего состояния определить новое состояние и выходной сигнал
соединения.
X1
X
S1
S
X2
S2
Рис. 21
32
Y1

Y2
X1
Y
X

Y2
S1
Y1
Y
S
S2
Рис. 22
X2
Последовательное соединение (ПОС), параллельное соединение (ПАС)
будут рассмотрены для автоматов Мили. Совмещенные таблицы переходов и
выходов для ЦАS1, ЦАS2 представлены в табл.18, 19 соответственно.
Таблица 18
Таблица 19
СТП и В ЦАS1
СТП и В ЦАS2
s11
s12
s13
s21
s22
х11
s11
s12
s13
х21
s21
s22
y11
y12
y12
y21
y22
s13
s13
s12
х22
s22
s21
х12
y11
y11
y11
y22
y21
Для соединения с обратной связью используются свои таблицы (табл.
20, 21). Дело в том, что в обратной связи должен стоять ЦА Мура.
Таблица 20
Таблица 21
СТП и В 1-го ЦА
ОТП 2-го ЦА
s11
x11
x12
s12
s13
s13
s12
y11
s12
s13
y12
s11
y13
y11
s11
y11
y12
s21/y21
s22/y22
х21
s21
s22
х22
s22
s22
х23
s21
s21
Работа преобразователей  и  отражена в табл. 22, 23.
Таблица 22
Таблица 23
y11
y12
x2
x1
x3


y21
y1
y2
y21
x11
x11
x11
y22
y2
y3
y22
x11
x12
x12
В табл. 24 даны пары состояний ЦАS1 и ЦАS2, соответствующие состояниям итогового автомата.
Таблица 24
Кодирование состояний итогового автомата
на основе состояний исходных автоматов
s1
s11 s21
s2
s11 s22
s3
s12 s21
s4
s12 s22
s5
s13 s21
s6
s13 s22
Кодировку в данной таблице следует понимать так, что итоговое cостояние с одним индексом соответствует правее расположенной паре cостояний с двумя индексами. Приходится определять и новое состояние итогового автомата после получения новых состояний исходных автоматов, в этом
33
случае паре состояний будет соответствовать левее расположенное итоговое
состояние.
3.2.1. Последовательное соединение
Пусть для последовательного соединения заданы предыдущее состояние
итогового автомата s1 (s11, s21), входной сигнал x 2 .
При формулировании алгоритмов выполнения соединений целесообразно исходные автоматы считать автоматами А и В, а результирующий автомат
– автоматом С.
Алгоритм последовательного соединения автоматов можно сформулировать следующим образом:
1) начать;
2) перебирать все состояния S;
3) по состоянию S определить пару состояний sa, sb;
4) по сигналу x определить новые sa, ya;
5) по сигналу ya определить новые sb, yb;
6) по состояниям sa, sb определить новое состояние s;
7) выходной сигнал автомата B считать выходным сигналом y;
8) если не все состояния перебраны, то п.2;
9) закончить
По табл.18 из данного состояния s11 по указанному сигналу первый автомат S1 перейдет в состояние s13, выдаст сигнал y11  x21. По этому сигналу
и исходному состоянию s21 второй автомат перейдет в состояние s21 и выдаст
сигнал y21=y1 (табл.19).
При рассмотрении работы этого и других соединений нужно учитывать,
что первый индекс относится к номеру исходного автомата, а второй индекс
является действительным номером входного сигнала, состояния и выходного
сигнала.
Должно учитываться взаимно однозначное соответствие между номером выходного сигнала одного исходного автомата и номером входного сигнала другого автомата.
Применительно к итоговому автомату первый индекс должен отбрасываться.
Состояния s13, s21 определяют новое состояние s5, выходной сигнал уже
известен, он есть y1.
В результате последовательного соединения автоматов А и В, заданных
в таблицах 18 и 19 соответственно, получается результирующий автомат С.
34
При необходимости следует составить совмещенную таблицу переходов и
выходов.
3.2.2. Параллельное соединение
Для параллельного соединения пусть будут заданы начальное состояние
s5 (s13, s21) и входной сигнал x 2 .
Оба автомата работают одновременно под действием одного и того же
входного сигнала x 2 . Преобразователь  и преобразует выходные сигналы
автоматов А и В во множество выходных сигналов итогового автомата YC:
YС =  (YA, YB).
Функция преобразования  отражена в табл .22.
Алгоритм функционирования параллельного соединения автоматов А и В
можно сформулировать следующим образом:
1) начать;
2) перебирать предыдущие состояния SC;
3) по состоянию sc определить предыдущие состояния sa и sb;
4) по сигналу xc определить данные состояния sa, sb, выходные сигналы ya и
yb ;
5) по sa, sb определить данное состояние sc;
6) по ya, yb определить данный выходной сигнал yc;
7) если перебраны не все состояния SC, перейти к п.2.;
8) закончить.
Первый ЦА из s13 переходит в s12, выдает y11 (табл.18), второй автомат
из s21 переходит в s22, выдает y22 (табл. 19). Получается новое состояние s4,
выдается сигнал y2 (табл. 22).
В результате параллельного соединения автоматов А и В, заданных в
таблицах 18 и 19 соответственно, получается результирующий автомат С,
совместная таблица переходов и выходов которого должна быть составлена.
3.2.3. Соединение с обратной связью
При обратной связи пусть будут заданы s4 (s12, s22) и x1.
В данном соединении имеется некоторый функциональный преобразователь  (табл.23), являющийся автоматом без памяти, который реализует 
отображение:
XA=(XC,YB).
35
В этом случае один из автоматов ЦАВ (автомат B) должен быть Мура.
Табл.20 является совмещенной таблицей переходов и выходов автомата A, а
табл. 21 – отмеченной таблицей переходов автомата В.
Алгоритм функционирования соединения автоматов с обратной связью
можно сформулировать так:
1) начать;
2) перебирать предыдущие состояния sc;
3) по состоянию sc определить предыдущие состояния sa, sb;
4) по состоянию sb определить выходной сигнал yb;
5) по сигналу xc и yb определить xa;
6) по xa определить данные sa и ya;
7) по ya (xb) определить данное состояние sb;
8) по данным состояниям sa, sb определить данное состояние sc;
9) по ya определить yc;
10) если перебраны не все состояния SС, то к п.2;
11) закончить.
Второй автомат по s22 выдает сигнал y22 (табл.20). По сигналам x1 и y22
преобразователь  (табл.23) формирует сигнал x12 . Из состояния s12 первый
автомат переходит в состояние s11, выдает сигнал y11=y1 (выходной сигнал
итогового автомата). По сигналу y1 второй автомат из состояния s22 переходит в состояние s22 (табл. 21). Новое состояние автомата S есть s2.
В результате соединения автоматов А и В с обратной связью, заданных в
таблицах 20 и 21 соответственно, получается результирующий автомат С,
совместную таблицу переходов и выходов которого следует составить.
3.3.Алгебраические операции
Алгебраические операции включают в себя: пересечение, объединение
частей автомата в автомат, объединение автоматов в настраиваемый автомат,
разность автоматов, симметрическую разность автоматов, дополнение автомата.
3.3.1.Объединение частей автомата
Надо уметь не только разбить автомат, но и объединить полученные части.
Если,
например,
известны
части
автомата
A:
ЦАА1,
ЦАА2,...,ЦААI,...,ЦААN, то автомат А должен получится в результате объединения его частей. Такую операцию можно записать в виде:
N
ЦАА = U ЦААI.
36
I=1
Каждая часть характеризуется множествами входных сигналов XAI, состояний SAI и выходных сигналов YAI.
Естественно, что эти множества для результирующего автомата определятся следующим образом:
N
N
N
XA = U XAI, SA = U SAI, YA = U YAI .
I=1
I=1
I=1
Алгоритм объединения частей в единый автомат с использованием совмещенных матриц переходов и выходов можно представить так:
1) начать;
2) определить XA, SA и YA;
3) подготовить общую матрицу с учетом XA, SA;
4) в общую матрицу занести элементы частей;
5) закончить.
Пусть для примера требуется объединить в автомат А две его части
(табл.25 и 26). Можно заметить, что эти таблицы являются копиями табл. 16
и 17. Для упрощения выполнения операции они помещены здесь, естественно номера у них заменены.
Таблица 25
1-й подавтомат
ПС
ВС
x1
x2
s1
s2
s1/y2
s2/y3
s1/y3
s4/y5
s3
s4/y4
s3/ y4
Таблица 26
2-й подавтомат
ПС
ВС
x1
x2
s4
s5
s6
s6/y5
s5/y6
s6/y1
s6/y1
s5/y6
s5/y1
Общая матрица (матрица результирующего автомата) имеет:
SA = SA1 U SA2,
XA = XA1 U XA2
(выходные сигналы для упрощения не рассматриваются) и представлена
табл.27.
Таблица 27
СМП и В объединения частей в автомат
37
ПС
s1
s2
s3
s4
s5
s6
s1/y2
s2/y3
s1/y3
s4/y5
s2/y4
s3/y4
s6/y5
s5/y6
s6/y1
s6/y2
s5/y6
s5/y1
ВС
x1
x2
Естественно, что должен получиться автомат, соответствующий табл.
15. Так оно и есть.
3.3.2. Настраиваемое объединение
Настраиваемое объединение двух исходных автоматов является таким
объединением, которое в зависимости от желания пользователя трансформируется то в первый автомат, то во второй автомат.
Управление общим настраиваемым автоматом осуществляется с помощью дополнительной логической переменной, например, переменной p.
Пусть при p=0 объединенный автомат трансформируется в ЦАА, при
р=1 - в ЦАВ, тогда
ЦАС = рЦАА U рЦАВ.
В общем виде настраиваемое объединение автоматов А и В можно
написать и по другому:
ЦАС =p(ЦАА, ЦАВ).
Следовательно:
ЦАА при р=0,
ЦАС =
ЦАВ при р=1.
Результирующий автомат будет характеризоваться тем, что:
XC = XA U XB,
SC = SA U SB,
YC = YA U YB.
Естественно, во множество XC будет входить переменная р.
Алгоритм настраиваемого объединения можно сформулировать так:
1) начать;
2) пометить элементы первого автомата с помощью р, а второго - с помощью р;
3) определить XС, SС и YC;
4) в общую матрицу занести элементы ЦАА и ЦАВ с учетом р;
5) упростить общую матрицу по возможности;
6) закончить.
Пусть автоматы А и В представлены в табл. 28 и 29 соответственно. Тогда результирующий автомат С будет иметь матрицу, отраженную в табл.30.
38
В этой таблице имеются возможности упрощения на основе тождеств склеивания.
Общие части автоматов после минимизации оказались без дополнительной переменной.
Таблица 28
СМП и В ЦАА
ПС
s1
s2
s3
s4
x1
s2/y2
s3/y1
s1/y3
s1/y2
x2
s3/y3
s1/y2
s2/y2
s3/y2
x3
s1/y1
s3/y3
s3/y2
s1/y3
ВС
Таблица 29
СМП и В ЦАВ
ПС
s1
s2
s3
s4
x1
s4/y2
s1/y1
s4/y4
s3/y3
x2
s3/y3
s1/y2
s1/y4
s1/y4
x3
s1/y1
s3/y3
s2/y3
s2/y2
ВС
Таблица 30
Настраиваемое объединение
ПС
s1
s2
s3
s4
_
ps2/y2
_
ps3/y1
_
p s1/y3
_
ps1/y2
ps4/y2
ps1/y1
ps4/y4
_
ps2/y2
ps3/y3
_
ps3/y2
s3/y3
s1/y2
ps1/y4
_
ps3/y2
ps1/y4
_
ps1/y3
ВС
x1
x2
39
x3
s1/y1
s3/y3
ps2/y3
ps2/y2
3.3.3. Пересечение автоматов
Операция пересечения автоматов предназначена для получения результирующего автомата, включающего в себя общие части автоматов А и В.
Операцию пересечения автоматов А и В можно записать следующим
образом:
ЦАС= ЦАА /\ ЦАВ.
Ниже для всех оставшихся алгебраических операций будут использоваться автоматы, представленные в табл. 28 и 29
Для данной операции:
SC = SA /\ SB,
XC = XA /\ XB,
YС = YA /\ YB.
Становятся известными элементы матрицы С (табл. 31).
Таблица 31
Пересечение
ПС
ВС
x1
x2
x3
s1
s3/y3
s1/y1
s2
s3
s4
s1/y1
s3/y3
3.3.4. Вычитание
Операция вычитания автоматов преследует цель получения результирующего автомата, состоящего из элементов первого автомата, которых нет во
втором автомате.
Данную операцию можно записать так:
ЦАС = ЦАА \ ЦАВ (прямая разность),
ЦАD = ЦАВ \ ЦАА (обратная разность).
Для разностей имеет место:
SC < SA,
XC < XA,
YC < YX ( прямая разность),
SD < SB,
XD < XB,
YD < YB (обратная разность).
40
ЦА прямой разности (табл.32) будет представлять 1-й ЦА с удалением общих переходов. Естественно, что и выходной сигнал, даже если он не является
общим, должен быть удалён.
ЦА обратной разности (табл.33) будет являться частью второго автомата,
полученной при удалении из него общих переходов и выходных сигналов.
Таблица 32
Прямая разность
ПС
s1
s2
s3
s4
s2/-
s3/-
s1/y4
s2/y2
x2
s2/y1
s3/y2
x3
s3/y2
s1/y3
ВС
x1
Таблица 33
Обратная разность
ПС
s1
s2
s3
x1
s4/y2
s1/y1
s4/y4
x2
-
s4
ВС
s3/y3
s1/y4
s1/y4
s2/y3
s2/y2
x3
-
3.3.5. Симметрическая разность
Симметрическая разность преследует цель получения автомата, являющегося настраиваемым объединением автоматов без общих элементов.
Данную операцию можно записать так:
ЦАС=ЦАА Q ЦАВ.
Симметрическая разность должна быть получена при объединении прямой и обратной разностей.
3.3.6. Дополнение
Операция дополнения одного автомата до другого автомата преследует
цель получения автомата, состоящего из элементов другого автомата, кото41
рых нет в первом автомате. Следовательно, эта операция сводится к операции вычитания.
Для алгебры автоматов в качестве другого должен быть полный автомат.
Таким автоматом может быть настраиваемое объединение исходных автоматов.
3.4. Операции проверки отношения
В алгебре автоматов возможны пять отношений между двумя автоматами:
ЦАА < ЦАВ,
ЦАА > ЦАВ,
ЦАА = ЦАВ,
ЦАА /\ ЦАВ = ЦА0,
общее отношение.
Первое отношение означает, что ЦАA является подавтоматом ЦАВ ,
второе - ЦАВ является подавтоматом ЦАА , третье - автомат А равен автомату В.
Четвертое отношение - это отношение типа "Нет общего". В данном
случае принято говорить, что у автоматов нет ничего общего.
Пятое отношение означает, что автоматы находятся в общем отношении,
следовательно, у автоматов есть как общие, так и индивидуальные элементы.
Это означает, что:
1) ЦАА \ ЦАВ не равно ЦА0,
2) ЦАВ \ ЦАА не равно ЦА0,
3) ЦАА /\ ЦАВ не равно ЦА0.
3.4.1.Проверка отношения
1)
2)
3)
4)
5)
Для проверки отношения нужно выполнить прямую, обратную разности и пересечение заданных автоматов. В табл. 34 зафиксированы эти результаты для всех пяти отношений.
Таблица 34
N
Отношение Прямая разность Обратная разность
1
ЦАА < ЦАВ
ЦА0
не ЦА0
2
ЦАА > ЦАВ
не ЦА0
ЦА0
3
ЦАА=ЦАВ
ЦА0
ЦА0
4 Общее отношение
не ЦА0
не ЦА0
5
Нет общего
не ЦА0
не ЦА0
42
Пересечение
не ЦА0
не ЦА0
не ЦА0
не ЦА0
ЦА0
Видно, что только при пустой первой разности будет левое включение,
только при пустой обратной разности – правое включение, при обеих пустых
разностях - равенство, при непустых всех трех результатах – общее отношение и при пустом пересечении – отношение “нет ничего общего”.
3.4.2. Проверка равенства
Для проверки только равенства нет нужды запускать сложную процедуру проверки отношения на основе трех промежуточных результатов. В
данном случае достаточно иметь первые два результата: прямую и обратную
разности.
3.5. Операции упрощения цифрового автомата
3.5.1. Упрощение автомата за счет упрощения алгоритма
Данный цифровой автомат можно упростить, если упростить соответствующий алгоритм.
Можно считать, что первый алгоритм сложнее второго, если последний
характеризуется тем, что множество операторных вершин его является подмножеством множества этих вершин первого алгоритма или множество
условных вершин второго алгоритма является подмножеством множества
этих вершин первого алгоритма.
Очевидно, что второй алгоритм будет проще первого алгоритма, если
будут выполнятся оба условия. Ясно, что речь идет о двух алгоритмах. Один
из которых получен при упрощении другого.
Пусть задан алгоритм с МСА, представленной в табл. 35.
Для упрощения алгоритма применяется способ, основанный на учете
неизменяемости логических условий (осведомительных сигналов) операторными вершинами.
В МСА могут быть ситуации, когда одни и те же осведомительные
сигналы определяют заход в операторную вершину и выход из нее. Зная,
что какой -то осведомительный сигнал не изменяется операторной вершиной,
можно убрать соответствующую условную вершину при переходе от такой
операторной вершины.
Пусть ГСА имеет фрагмент (рис. 23), соответствующий отмеченному
выше условию. Видно, что в вершину Yi можно зайти при ХJ =1. Известно,
что вершина Yj не изменяет сигнал ХJ. Следовательно при выходе из вершины Yj сигнал ХJ будет продолжать оставаться равным 1. Ясно, что перехода
43
по выходу 0 никогда не будет, будет переход только по выходу 1. Получается, что вершина ХJ при выходе из вершины Yj не требуется (рис. 24).
Если захода в вершину Yt из другой вершины не будет, то не потребуется и вершина Yt. Видно существенное упрощение алгоритма. Такое упрощение алгоритма возможно и при задании последнего в виде МСА.
Таблица 35
МСА для упрощения
МСА
Y0
Y1
__
Х1Х2
Y2
Y3
Y4
__
Х1 Х2
Х1 Х2
Y1
Y5
Y6
YK
Х1Х2
__
Х2
Х1Х2
X2
Х1Х2
Х1 X2
X2
Х1Х2
Y2
__
Х1
Y3
Х1
Х1Х2Х3
Х1Х2Х3 Х1Х2
Х2 1
__
Х1
Y4
Y5
Х1
Y6
1
Сведения о неизменяемости осведомительных сигналов можно представить в виде таблицы. Пусть для рассматриваемого алгоритма эти данные
имеются (табл.36).
Данными об неизменяемости логических условий (ЛУ) вершиной Y0
воспользоваться нельзя, так как нет возможности установить, при каких значениях Х1, Х2 и Х3 осуществляется заход в вершину Y0 (в МСА не бывает
столбца с Y0).
Следует начать с выяснения значений логических условий захода в вершину Y1. Видно, что заходы осуществляются из вершин Y0 и Y1 при одних и
тех же значениях Х1 и Х2 , а именно, при Х1=1 и Х2=0.
Знать вершины, из которых имеют место выходы, нет необходимости.
Надо выяснить только, при каких одинаковых условиях есть заход. Такой заход удобно представить в виде:
 Y1 при Х1=1 и Х2=0.
XJ
44
0
1
XJ = 1
Yi
XJ = 1
1
XJ
0
Yt
Yt
Ys
Ys
Рис. 23
Рис. 24
Вершина Y1 не изменяет значения Х1, что целесообразно как-то отметить, например, путем обведения квадратом Х1=1 . Выходы из вершины Y1
можно представить в виде: Y1  при Х1=1 .
Следовательно, в строке Y1 вместо Х1 нужно подставить значение 1, а
вместо Х1 значение 0. В табл.35 это можно отразить зачеркиванием Х1 и
вычеркиванием Х1Х2.
Таблица 36
Сведения о неизменяемости ЛУ
Yi
Y1
Y2
Y3
Y4
Y5
Y6
Не меняются
X1
X1, X3
X1, X3
X1, X3
Для вершины Y2 получается, что Y2 при Х1 = 1, Y2  при Х1 = 1.
Строка Y2 существенно упрощается.
45
Заход в вершину Y3 одинаковым значением хотя бы одного осведомительного сигнала не характеризуется. Строку Y3 упростить не представляется
возможным.
Что касается захода в вершину Y4, то Y4 при Х1 = 0 . Функция перехода 46 становится равной 0. Захода в вершину Y6 никогда не будет, соответствующий столбец следует вычеркнуть. Не будет и выхода из вершины
Y6. Следовательно, нужно вычеркнуть и соответствующую строку. Получится значительное упрощение алгоритма.
За счет анализа заходов в вершины Y5 и Y6 упрощений МСА не будет.
Алгоритм операции упрощения МСА при максимальном значении индекса N вершины Y можно сформулировать следующим образом (рис. 25):
1. Начать;
2. Положить I=1;
3. Для вершины Yi выявить значения одинаковых логических условий захода;
4. Уточнить неизменяемые логические условия захода, выявленные в п.3;
5. Подставить значения неизменяемых логических условий в строку Yi;
6. Увеличить I на 1;
7. Проверить I<= N, при "да" перейти к п.3;
8. Закончить.
3.5.2. Упрощение цифрового автомата за счет тождеств
Данный цифровой автомат можно упростить, если применить тождества
и законы алгебры логики. Этот прием уже применялся выше при реализации
операции настраиваемого объединения (табл. 30) .
При предыдущем упрощении было получено для функции перехода 4к
следующее выражение:
4к = Х2\/Х2.
По тождеству склеивания эта функция перехода 4к = 1. Получается дополнительное сокращение МСА. Этим способом можно упростить функции
переходов 04, 13:
0к Х1Х2 \/ Х1Х2 = Х1, 13 = Х2 \/ Х2 = Х2 .
В итоге упрощения МСА будет иметь меньше операторных и условных
вершин. Вместо 8 операторных вершин осталось 7 таких вершин. Что касается условных вершин, то уменьшение их числа легче определить по ГСА исходного и упрощенного алгоритмов. Если такие ГСА изобразить, что из - за
ограниченного объема пособия не сделано, то можно будет узнать, что число
условных вершин уменьшилось с 17 до 6.
1
46
Начало
2
I =1, N
3
4
Выявление одинаковых ЛУ захода в
вершину Yi
в
Уточнение ЛУ, неизменяемых вершиной Yi
5
Подстановка значений неизменяемых ЛУ в строку Yi
Конец
Рис.25. СА упрощения алгоритма
4. ЗАКОНЫ И ТОЖДЕСТВА АЛГЕБРЫ АВТОМАТОВ
Для любой алгебры характерны определенные законы и тождества.
В обычной алгебре справедливы переместительный, сочетательный и
распределительный законы.
Оказывается, что они имеют место и в алгебре дискретных объектов
(множеств, графов, кубов, покрытий, алгоритмов).
Для последнего закона характерно две формы. Первая форма связана с
общим ”множителем”, вторая - с “общим слагаемым”.
47
4.1. Законы
4.1.1. Переместительный закон
Переместительный (коммутативный) закон алгебры автоматов справедлив для объединения, пересечения, симметрической разности:
САА  САВ = САВ  САА,
САА  САВ = САВ  СА А,
САА  САВ = САВ  САА.
Естественно, что он несправедлив для разности:
САА \ САВ  САВ \ САА.
4.1.2. Сочетательный закон
Сочетательный (ассоциативный) закон в алгебре автоматов применим
для объединения, пересечения, симметрической разности:
(САА  САВ)  САС = САА  (САВ  САС),
(САА  САВ)  САС = САА  (САВ  САС),
(САА  САВ)  САС = САА  (САВ  САС).
Для разности он неприменим:
(САА \ САВ) \ САС  САА \ (САВ \ САС).
4.1.3. Распределительный закон
Распределительный (дистрибутивный) закон алгебры автоматов имеет
две формы. Первая форма связана с общим «сомножителем», вторая – с общим «слагаемым».
Первая форма справедлива для пересечения относительно объединения,
разности, симметрической разности:
САА  (САВ  САС) = САА  САВ  САА  САС,
САА  (САВ \ САС) = САА  САВ \ САА  САС,
САА  (САВ  САС) = САА  САВ  САА  САС.
Оказывается, что разность распределяется относительно объединения:
(САА  САВ) \ САС  (САА \ САС)  (САВ \ САС),
при этом разность должна рассматриваться второй. Если же данная операция
будет рассматриваться первой, то получается, что
САА \ (САВ  САС)  (САА \ САВ)  (САА \ САС).
48
Общее «слагаемое» имеет место в следующих вариантах:
САА  САВ  САС  (САА  САВ)  (САА  САС),
(САА  САВ) \ САС = (САА \ САС)  (САВ \ САС),
однако
САА \ (САВ  САС)  (САА \ САВ)  (САА \ САС),
(САА  САВ)  САС  (САА  САС)  (САВ  САС).
4.2. Тождества
В алгебре автоматов имеется большое разнообразие тождеств. Их можно
разделить на шесть групп.
4.2.1. Тождества отдельных операций
Для операций над автоматами справедливо:
САА  САА = САА, САА  СА0  САА, САА  СА1 = СА1,
САА  САА = СА1;
САА  САА = САА, САА  СА0 = СА0, САА  СА1 = САА,
САА  САА = СА0;
СА \ САА = СА0, САА \ СА0 = САА, САА \ СА1 = СА0,
САА \ САА = САА, СА0 \ САА = СА0, СА1 \ САА = САА,
САА \ CАА = САА, САА \ САВ = САА  САВ;
САА  САА = СА0, CAA  CA0 = CAA,
CAA  CA1 = CAA, CAA  CAA = CA1;
CA1 = CA0, CA0 = CA1, CAA = CAA.
4.2.2. Тождества склеивания
Имеется две формы этого тождества. Наиболее известна форма, в которой объединяются два пересечения:
CAA  CAB  CAA  CAB = CAA,
вторая форма получается из первой путем замены операции пересечения операцией объединения, операции объединения операцией пересечения:
(CAA  CAB)  (CAA  CAB) = CAA.
4.2.3. Тождества поглощения
Таких тождеств имеется также два:
CAA  CAA  CAB = CAA, CAA  (CAA  CAB) = CAA.
49
4.2.4. Тождества Порецкого
Тождества Порецкого похожи на тождества поглощения:
CAA  CAA  CAB = CAA  САВ, CAA  (CAA  CAB) = CAA  САВ.
4.2.5. Тождества де Моргана
Широко распространены следующие два тождества де Моргана:
CAA  CAВ = CAA  САВ, CAA  CAB = CAA  САВ.
Существуют и другие тождества де Моргана:
CAA \ CAB = CAA  CAВ, CAA  САВ = CAA  CAB  CAA  САВ.
4.2.6. Тождества для общих “множителя” и “слагаемого”
совершенного ранга (тождества Триханова)
В [14] описаны тождества для алгоритмов, предложенные автором этого
пособия. Их можно называть тождествами для общих “множителя” и “слагаемого” совершенного ранга.
В алгебре автоматов общими “множителем” и “слагаемым” будут пересечение и объединение автоматов.
Если такое общее “слагаемое” автоматов, например, А, В и С объединить с пересечением данных автоматов, то это будет равно указанному
общему “слагаемому”:
CAA  CAВ  CAС  CAA  CAВ  CAС = CAA  САВ  САС.
Применительно к общему “множителю” автоматов САА, САВ, САС
тождество второй формы следует записать следующим образом:
CAA  CAВ  CAС  (CAA  CAВ  CAС) = САА  CAB  CAС.
5. ВОПРОСЫ СИНТЕЗА И АНАЛИЗА ЛОГИЧЕСКИХ СХЕМ
5.1. Синтез логических схем
5.1.1. Синтез схем с одним выходом с оптимальным доопределением
Синтез логических схем с оптимальным доопределением связан с использованием наборов, отмеченных звездочкой.
50
Если набор не отмечен звездочкой, то функция имеет значение единицы.
Если набор отмечен звездочкой, то функция может иметь любое значение по
усмотрению проектировщика.
Наборы с звездочками можно использовать для оптимального доопределения. Оптимальный вариант доопределения можно найти путем перебора
всех случаев доопределения. Количество таких доопределений есть величина, равная двойке в степени, совпадающей с числом наборов с звездочкой.
Пусть имеются наборы с номерами 0, 4, 8, 12 и 15, из которых наборы с
номерами 8 и 15 отмечены звездочками.
Имеется два отмеченных набора, следовательно, будет четыре случая
доопределения на указанных наборах.
Функции с доопределением можно обозначить через f0, f1, f2 и f3. Каждую
такую функцию целесообразно представить на карте Карно, произвести минимизацию. В итоге найдется оптимальный вариант тупиковой формы fтф.
Оказывается, есть алгоритм оптимального доопределения. Он связан с
доопределением нулями (с функцией 0), с доопределением единицами (с
функцией 1).
Алгоритм этот - следующий:
1) начало;
2) получение выражения 0 без минимизации;
3) получение выражения 1 с минимизацией;
4) выбор по импликантной таблице существенных простых импликант из 1
для получения fтф;
5) конец.
Выражение 0 есть:  0  x1 x 2 x 3 x 4  x1 x2 x 3 x 4  x1 x2 x 3 x 4 .
Для получения выражения 1 целесообразно воспользоваться картой
Карно (рис. 26). Видно, что 1  x 3 x 4  x1 x2 x3 x4 .
Реализация алгоритма оптимального доопределения для заданной функции представлена в табл. 37.
Как видно, f min  x 3 x 4 .
Таблица 37
ПИ 1
x3 x 4
ИМП 0
x1 x 2 x3 x 4
x1 x2 x 3 x 4
x1 x2 x 3 x 4
\/
\/
\/
x1x2x3x4
51
Рис. 26
5.1.2. Синтез схем с двумя выходами с средней степенью связи
В отличие от слабой связи (общих инверторов в разных каналах) средняя связь ориентируется на общности импликант. Если у схемы имеется один
выход, то тогда могут быть общие части импликант.
Данный синтез вначале рассматривается применительно к схеме с 2-мя
выходами, а затем - к дешифратору с заданным количеством входов.
Пусть требуется произвести синтез схемы с следующими выражениями
выходов:
y1= x1 x2 x3+ x1x2 x3+x1x2 x3,
y2= x1x2x3+x1x2x3+x1x2x3.
Видно, что 1-я импликанта у выражений является общей. Её следует реализовать в одном из каналов, например, в первом. С учётом общей части
a =x1x2 x3
y1= x1x2x3+x1x2x3+x1x2x3,
y2= a +x1x2x3+x1x2x3.
Стоимость по Квайну 1-го выражения будет равна 15, а 2-го выражения
– 9. Учтена и слабая связь (инверторы отнесены к 1- му каналу). Исходные
выражения без учёта каких- либо связей “стоили” 30.
Синтезированную схему требуется изобразить с учётом булевого базиса
элементов.
В качестве примера учёта частей импликант, дающего большой эффект,
можно рассмотреть синтез дешифратора с n входами. Эффект начинает получаться при n, равном 4. С увеличением числа входов растет сложность дешифратора и эффект минимизации. С учетом увеличения сложности следует
ограничиться количеством входов, равным четырем (табл. 38).
52
Таблица 38
Условия работы дешифратора
x1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
x2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
x3
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
x4
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
y0 y1
1
1
y2 y3
y4 y5
y6 y7
y8 y9
y10 y11
y12 y13 y14 y15
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Выражения каналов будут следующими:
____
___
y0 = x1x2x3x4 , у8= х1х2х3х4 ,
___
__
у1= х1х2х3х4 , у9= х1х2х3х4 ,
__ _
_ _
у2= х1х2х3х4 , у10= х1х2х3х4 ,
__
_
у3= х1х2х3х4 , у11= х1х2х3х4 ,
_ __
__
у4= х1х2х3х4 , у12= х1х2х3х4 ,
_ _
_
у5 = х1х2х3х4 , у13= х1х2х3х4 ,
_
_
_
у6= х1х2х3х4 у14= х1х2х3х4 ,
_
у7= х1х2х3х4 у15= х1х2х3х4 .
При синтезе дешифраторов принято считать, что входные сигналы по53
даются как без инверсии, так и с инверсией. Количество входов при этом
удваивается. Однако число входов указывается без удвоения. Рассматриваемый дешифратор – это дешифратор на 4 входа, хотя их – 8.
Без учёта общих частей (видно, что они применительно к х1х2 и х3х4
имеются) стоимость любого канала ci =4 (в общем случае, стоимость равнa
n). Известно, что число каналов у дешифратора равно 2 n (при n=2 число каналов будет равно 24). Общая стоимость всех каналов cисх составит 2n* n. При
n =4 c4 = 64, а при n =10 c10 = 10240 (много).
Учёт общих частей позволяет резко снизить общую стоимость. Общие
части можно обозначить так:
_ _
__
e0=х1х2 ,
_
e1=x1x2,
_
e2=x1x2,
f0=x3x4 ,
_
f1=x3x4 ,
_
f2=x3x4 ,
e3=x1x2,
f3=x3x4.
Получились выражения для двух дешифраторов на 2 входа (n/2 входа )
со стоимостями:
ce2=2*22=8, cf2=2*22=8,
общая стоимость составляет:
cef2=16.
В общем случае получаются стоимости :
cen/2=n/2*2n/2, cfn/2=n/2*2n/2, cefn/2=n*2n/2.
При n=4 cef2=4*22=16, при n=10 cef5=10*25=320.
Если n не делится на 2, то тогда
ce(n-1)/2 = (n-1)/2) *2 (n-1)/2, cf(n+1)/2 = (n+1)/2) *2 (n+1)/2 и
cef = (n-1)/2 2(n-1)/2 + (n+1)/2 2(n+1)/2.
Рассмотренные дешифраторы составляют первую ступень итогового
дешифратора, для второй (выходной) ступени выражения будут равны:
y0=e0f0,
y4=e1f0,
y8=e2f0,
y12=e3f0,
y1=e0f1,
y5=e1f1,
y9=e2f1,
y13=e3f1,
y2=e0f2,
y6=e1f2,
y10=e2f2,
y14=e3f2,
y3=e0f3,
y7=e1f3,
y11=e2f3,
y15=e3f3.
Стоимость любого выражения второй ступени в любом случае составляет 2.
Таким образом, общая стоимость выходной ступени составляет:
при n=4 cвых4=24*2=32, при n=10 cвых10=210*2=2048.
Итоговые стоимости дешифратора равны:
54
cn=n*2n/2+2*2n; cn=(n-1)/22(n-1)/2+(n+1)/22(n+1)/2+2*2n;
c4=4*22+2*24=16+32=48; c10=10*25+2*210=320+2048=2368.
Видно, что при учёте общих частей импликант удаётся достичь существенного снижения стоимости схемы. С увеличением числа входов снижение стоимости становится более существенным.
5.1.3. Синтез схем с двумя выходами с сильной степенью связи
Условно можно рассмотреть три степени связи: отсутствие связи, слабую связь и сильную связь.
Оказывается, эти три степени связи можно иметь в виду при синтезе
любой схемы с несколькими выходами. Если, например, нет никаких сведений о связи между выходами, то синтез логической схемы можно провести
как для схемы с отсутствием связи между выходами.
При работе со схемой должны появиться сведения о связи, которая фактически всегда есть. Именно такой подход и применяется.
В качестве примера пусть будут заданы две функции, представленные в
табл. 39. Как видно, в качестве обозначений выходов (функций) выбраны
обозначения 1 и 2. Фактические обозначения каждый исполнитель может
выбрать самостоятельно.
Таблица имеет дополнительные столбцы, используемые при синтезе.
По табл. 39 получаются следующие выражения:
1  x1 x 2 x3  x1 x2 x 3  x1 x2 x3  x1 x 2 x3 ,
 2  x1 x 2 x3  x1 x 2 x 3  x1 x2 x 3  x1 x2 x3 .
Таблица 39
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
1
0
1
1
1
0
1
0
0
2
0
1
0
0
1
0
1
1
m
0
1
1
1
1
1
1
1
s
0
1
0
0
0
0
0
0
2*=1
1
0
0
0
1
0
1
1
2
0
1
0
0
1
0
1
1
2**
0
0
0
0
1
0
1
1
Стоимость каждого выражения составляет 19. Общая стоимость равна
38. Так дело обстоит без установления связей.
Оказывается, у этих выходов имеются общие инверторы. Выражения эквивалентны по сложности, инверторы можно оставить в канале 1, тогда
55
стоимость второго канала окажется равной только 16. Итоговая стоимость
составит 35. Такой подход можно представить как учет слабой связи.
При любом синтезе требуется минимизация (рис.27 и 28). Стоимости 1го и 2-го каналов составляют 8 и 12 соответственно. Общая стоимость равна
20. Если учесть общие инверторы, то стоимость второго канала будет равна
10, общая - 18. Если инверторы приписать второму каналу, тогда стоимость
первого канала уменьшится до 6, стоимость второго канала возрастет до 12.
Рис. 27
Рис. 28
Для другой схемы ситуация может быть иной.
В табл. 39 видна сильная связь: выражение 2 на шести строках является
инверсией выражения 1. Если реализовать канал для 1, то с помощью инвертора можно получить выражение, почти эквивалентное 2, как и наоборот
тоже справедливо.
Возникает проблема выбора основного выражения. Естественно, что за
основу следует взять более дешевое (1):
1  x1 x2  x2 x3 ,
тогда 2*=1. В таблице имеется столбец для этого выражения. Правее его
скопирован столбец для 2 для упрощения сравнения. Из этих соседних
столбцов хорошо видно, что выражения на двух наборах дают разные результаты. На нулевом наборе вместо нуля получается 1, а на соседнем наборе
вместо 1 получается 0. Требуется за счет вспомогательных функций m и s,
зависящих от переменных x1, x2 , x3 , выражение 2* изменить, чтобы получить выражение, соответствующее 2.
Делается это последовательно. Вначале следует учесть преобразование 1
в 0. Это преобразование возможно за счет множителя m, равного нулю только для нужного (нулевого) набора, что зафиксировано в табл. 39. В результате этого преобразования 2**=2*m=1m. Очевидно, что
m  x1  x2  x3 , υ2**  υ1(x1  x2  x3 ).
Видно, что осталось еще расхождение при наборе 001. Преобразование 0
в 1 возможно за счет слагаемого s, равного 1 на указанном наборе (зафиксировано в табл. 39), следовательно,  2   2 * *  s  1 ( x1  x2  x3 ) +x1x2x3.
Итак, синтез следует вести по выражениям
56
1  x1 x2  x2 x3 , 2  1 ( x1  x2  x3 ) + x1x2x3.
Инверторы переменных, как и раньше, приписываются выражению 1.
Для реализации выражения 2 требуется добавить инвертор для 1, конъюнктор и дизъюнктор на три переменные, конъюнктор и дизъюнктор на две переменные. Добавочная стоимость составляет 11, что следует писать как +11.
Суммарная стоимость оказывается равной 19. Как видно, попытка использовать сильную связь к эффекту для заданного варианта не привела.
Синтезированную схему требуется изобразить, наиболее дешевый канал
разместить сверху, другой снизу. По схеме еще раз можно определить стоимости каналов, итоговую стоимость.
Рекомендуется сведения о стоимостях свести в отдельную таблицу
(табл. 40).
Таблица 40
i
Без минимизации
1
2
ИТОГО
19
19
38
С минимизацией
8
12
20
Слабая
связь
8
10
18
Сильная
связь
8
+11
19
5.2. Анализ логических схем
5.2.1. Анализ логических схем с одним выходом
Целью анализа заданной схемы является минимизация стоимости указанной схемы.
Если при синтезе схемы задаются условия работы будущей схемы, то
при анализе заданной схемы требуется иметь эту схему.
По схеме необходимо составить выражение функции, соответствующей
заданной схеме.
После этого анализ схемы ничем не отличается от синтеза схемы. Это
означает, что полученное выражение надлежит минимизировать и по
итоговому выражению построить минимизированную схему.
Имея стоимости заданной и минизированной схем, легко определить относительный коэфициент выигрыша минимизации.
Пусть в качестве примера заданной схемы для минимизации будет схема, представленная на рис.29. Ее стоимость по Квайну составляет 11 .
x1
&
6
1
9
57
x2
x3
&
8
1
4
1
5
&
7
Рис.29. Логическая схема для анализа
Для получения логического выражения, соответствующего схеме,
нужно описать выходы всех ее элементов, начиная со стороны входов. Описание выходного элемента и будет логическим выражением, реализуемым
анализируемой схемой.
Нетрудно установить, что схема реализует функцию f = x1x2x3 \/ x1x2 \/ x3.
По выражению легко узнать наборы, на которых функция равна 1. Отметив эти наборы на карте Карно (рис. 30), можно получить минимизированное
выражение f = x1 \/ x3.
1
1 1 1
х1
1 1
х3 х3
Рис. 30. Карта Карно для f
Стоимость минимизированной схемы составляет 2. Относительный
коэффициент снижения стоимости оказался чуть больше 80 %.
5.2.2. Анализ логических схем с двумя выходами
Неминимизированную схему из–за ограниченных объемов пособия
сложно представить на рисунке. Представляется целесообразным задать схему для анализа наборами, на которых оба выхода схемы равны единице.
По таким данным нужно составить схему, которую следует считать заданной.
По заданной логической схеме требуется составить логические выражения для каждого выхода.
После этого анализ есть не что иное, как синтез, что подробно рассмотрено выше.
6. АВТОМАТЫ УСТРОЙСТВА ОБРАБОТКИ ЦИФРОВОЙ ИНФОРМАЦИИ.
СИНТЕЗ УПРАВЛЯЮЩЕГО АВТОМАТА С ЖЕСТКОЙ ЛОГИКОЙ
58
6.1. Структура устройства обработки цифровой
информации по В.М.Глушкову
Для преобразования информации в компьютере предназначено устройство обработки цифровой информации, в настоящее время его принято называть процессором.
В.М.Глушков [6] предложил его изображать так, как показано на рис.31.
Как видно, процессор включает в себя операционный (ОА) и управляющий
(УА) автоматы.
D
R
ОА
Y
Х
УА
F
Рис.31. Структурная схема процессора по В.М.Глушкову
ОА предназначен для преобразования операндов D в результат R. Этот
автомат работает под действием управляющих сигналов, множество которых
обозначено через Y.
УА предназначен для формирования подмножеств управляющих сигналов для операций Fi, множество которых обозначено через F. Указанные
подмножества управляющих сигналов формируются на основе кодов операций Fi и осведомительных сигналов, множество которых обозначено через X.
Осведомительные сигналы характеризуют получаемые результаты с качественной стороны.
Процессор работает по принципу микропрограммного управления. Этот
принцип заключаются в том, что:
1) любое действие делится на совокупность элементарных действий (микроопераций);
2) ни одно действия не является элементарным;
3) для изменения порядка следования микроопераций вводятся осведомительные сигналы;
4) для каждого действия составляется микропрограмма в терминах микроопераций (МО) и осведомительных сигналов. Микропрограммы всех операций хранятся в специальном (управляющем) запоминающем устройстве.
59
6.2. Операционные автоматы
Операционный автомат для разнообразной обработки операндов содержит цепи приема операндов, регистры операндов и результатов, цепи выдачи
результатов, преобразователи кодов, сумматор, схемы сдвига, анализа полученных результатов (рис. 32).
Операционные автоматы делятся на блочные и многофункциональные,
синхронные и асинхронные, на автоматы обратного и дополнительного кодов, на автоматы двоичной, десятичной систем исчисления и другие.
В блочном автомате для каждой операции предусмотрен соответствующий блок, в многофункциональном автомате единая структура перестраивается с учетом каждой операции.
В автомате с синхронным управлением на любую операцию затрачивается одинаковое время ( время самой продолжительной операции), в автомате с асинхронным управлением время каждой операции различно.
ОА имеет определенные характеристики: набор операций, точность расчетов, быстродействие, код, систему счисления и другие.
R
Регистр результата с цепями
сдвига и анализа
Сумматор с цепями сдвига
Регистр первого операнда с
цепями сдвига и преобразования кодов
Регистр второго операнда с цепями сдвига и преобразования
кодов
D1
D2
Рис. 32. Структурная схема многофункционального ОА
60
6.3. Управляющие автоматы
Управляющие цифровые автоматы (УЦА) делятся на: автоматы с микропрограммным управлением и автоматы с жёсткой логикой (ЖЛ). Первые
автоматы можно называть автоматами с программируемой логикой (ПЛ).
Структурная схема любого УА выглядит так, как показано на рис.33.
Она состоит из трех частей: запоминающей части с дешифратором, схемы
формирования сигналов возбуждения триггеров запоминающей части, схемы
формирования выходных сигналов.
В дальнейшем вторая и третья части будут для упрощения именоваться
входной и выходной частями соответственно.
ЗУ с дешифратором содержит триггерный регистр, на котором могут
размещаться всевозможные числа, соответствующие требуемым состояниям.
Дешифратор расшифровывает число в нужный сигнал состояния, индекс
которого совпадает с величиной числа.
Входные сигналы, множество которых обозначено через Х, сигналы состояний, множество которых обозначен через S, используются для формирования сигналов возбуждения триггеров как для автоматов Мили, так и для
автоматов Мура, а также для формирования выходных сигналов автоматов
Мили.
Для формирования выходных сигналов автоматов Мура достаточно
только сигналов состояний, что на схеме отражено наличием переключателя
ПК. Когда он замкнут, схема работает как автомат Мили, когда разомкнут –
как автомат Мура.
Рис.33. Структурная схема УА
6.3.1. Управляющие автоматы с жесткой логикой
61
Структурная схема УА с ЖЛ представлена на рис.34. В ней имеются
счетчик синхроимпульсов СИ, дешифратор ДС и совокупность логических
схем ЛС.
В УА с жёсткой логикой сигналы микроопераций формируются схемами
на основе сигналов тактов и кодов операций. В таблице рис. 34 дано некоторое конкретное распределение сигналов микроопераций yi по тактам TJ операций Fi.
На счетчике фиксируются числа, расшифровываемые дешифратором в
сигналы тактов Т1  Т6.
Этим тактам соответствуют сигналы микроопераций у1у6. Совокупность этих сигналов распределяется по операциях Fi, что отражено в таблице
рис. 34. Формирование сигналов микроопераций осуществляется в логических схемах под действием сигналов тактов TJ и кодов операций Fi.
6.3.2. Управляющие автоматы с программируемой логикой
Основной структурой УА с микропрограммным управлением с ПЛ
(рис.35) является запоминающее устройство микропрограмм ( управляющее
ЗУ), в нем хранятся микрокоманды микропрограмм (МП).
Длина микрокоманды в несколько раз больше длины команды.
Рис.34. Структурная схема УА с ЖЛ
Дело в том, что в операционной части микрокоманды в явном виде записываются сигналы (единицы) микроопераций, которых насчитывается
62
около двухсот. При считывании единицы и появляется сигнал микрооперации ( управляющий сигнал ).
Работу УА с микропрограммным управлением можно описать по структурной схеме, показывающей взаимодействие автоматов процессора, его регистра команд.
Независимо от типа УА процессор работает под действием команд программы, хранящейся в оперативной памяти.
Очередная команда после её считывания размещается в регистре команд
RGK. Операционная часть команды (код операции КОп) используется в качестве адреса первой микрокоманды (МК) микропрограммы, для этого КОп
передаётся в регистр адреса МК (RGAMK).
Считываемая из ЗУ микропрограмм (ЗУМП) первая МК записывается в
регистр микрокоманды (RGMK). Единицы операционной части возбужда -ют
сигналы микроопераций, под действием которых работает ОА. Чаще всего
одна МК дает одну МО.
Адресная часть МК используется в качестве адреса следующей МК. Для
изменения обычного порядка следования микрокоманд МП используются
осведомительныные сигналы Х.
Рис.35. Структурная схема УА с ПЛ
63
6.4. Синтез управляющего автомата с жёсткой логикой
6.4.1. Этапы синтеза
При синтезе УА необходимо выполнить следующие этапы:
1. Задание условий работы автомата;
2. Отметки граф - схемы алгоритма;
3. Получение графов автоматов;
4. Cинтез запоминающей части;
5. Синтез выходной части;
6. Синтез входной части.
6.4.1.1. Задание условий работы автомата
Условия работы синтезируемого автомата задаются в виде ГСА. Пусть
имеется ГСА, представленная на рис.36 и на рис.37.
Анализ ГСА показывает, что в ней отсутствует из Y0 переход по XI. Это
означает, что вершина XI является ждущей. При XI = 0 управление передается снова на вход этой вершины.
6.4.1.2. Отметки граф – схемы алгоритма
Для преобразования алгоритма в автомат ГСА нужно отметить состояниями ГСА. Ниже это показано на ГСА.
Независимо от типа ЦА состоянием s0 ГСА отмечается одинаково: отметка ставится на входе ждущей вершины XI и на входе вершины Yk.
Другие отметки делаются по разному в зависимости от типа автомата.
На рис.36 ГСА имеет отметки для ЦА Мура. Как видно, отметки ставятся левее вершины Yi. Это соответствует закону функционирования ЦА Мура (y(t)
= s(t)).
На рис.37 ГСА отмечена для ЦА Мили. Как видно, отметка ставится на
выходе операторной вершины. Если выходы операторных вершин соединены, то, естественно, отметка фиксируется после объединения выходов.
Ясно, что при объединении выходов операторной и условной вершин
отметка будет на выходе операторной вершины.
64
Однако, если за таким соединением следует вершина Yk, то дело ограничивается отметкой s0 на входе вершины Yk.
Правила отметок ГСА для ЦА Мили приводят к уменьшению числа состояний по сравнению с правилом отметок для ЦА Мура.
6.4.1.3. Графы автоматов
Графы автоматов Мура и Мили показаны на рис.38 и 39 соответственно.
Как видно, в начале дуги ставится осведомительный (входной) сигнал. Что
касается выходных сигналов, то в ЦА Мура они фиксируются внутри вершины состояний, а в ЦА Мили - на конце дуги. Из графов также видно, что
вершин в графе автомата (ГА) Мура больше по сравнению с числом вершин
в ГА Мили.
s0
s0
*
0
0
X1
X1
1
Y1
s1
1
Y1
y1,y3
y1,y3
s1 *
0
0
X2
X2
1
Y2
s2
1
y2
Y5
s5
Y2
y6
Y5
y2
y6
s2 *
Y3
s3
Y3
y4,y5
y4,y5
65
s3 *
Y4
s4
y1,y2
y1,y2
Y4
Y6
s6
X3
s4 *
y5
X3
0
1
*s0
1
s0
YK
0
1
Рис.36 Отметки для ЦА Мура
Рис.37 Отметки для ЦА Мили
X2
1
s1
s2
y1,y3
__
X2
s0
*
0
1X4
X1
y5
0
YK
X4
__
X1
Y6
y2
s3
y4,y5
__
X3
1
1
s6
s5
y6
y5
1
X3X4 s4
y1,y2
__
X3X4
Рис.38. ГА Мура
X2
y1
y3
__
66
X1
y2
1
s1
X2
y6
s2
y4,y5
s0
s3
y5
__
X3X4
__
X3 y1,y2
y1
s4
y2
X3X4
1
Рис.39. ГА Мили
Для ЦА принято входные сигналы обозначать прописными буквами с
преобразованием номера в индекс: следовательно, вместо ХI надо писать х i.
6.4.1.4. Cинтез запоминающей части
Количество триггеров запоминающей части у ЦА определяется из расчета того, чтобы число состояний регистра было бы не меньше того, что получилось на графе автомата.
Следовательно, nT  log2 ns,
где: ns - число состояний, nT - количество триггеров.
Для УЦА Мура ns,my = 7, для УА Мили ns,my = 5. В любом случае требуется по три триггера. Одно состояние в первом случае и три состояния во
втором случае будут лишними.
На рис.40 представлена запоминающая часть обоих автоматов с указанием задействованных выходов дешифратора DC.
Старшим разрядом регистра является первый, младшим - третий.
D1
DC
s0
T
1
s1
s2
D2
s3
T
2
D3
ЦА
Мили
ЦА
Мура
s4
s5
T
3
s6
67
s7
СИ
Рис. 40. ЗЧ обоих автоматов
6.4.1.5. Синтез выходной части
Легче идет синтез выходной части для ЦА Мура. В данном случае имеет место соответствие между данным состоянием и выходными сигналами:
s1  y1, y3, s2  y2, s3  y4, y5, s4  y1, y2, s5  y5, s6  y6.
Из этого соответствия следует, что :
y1 = s1 V s4; y2 = s2 V s4; y3 = s1; y4 = s3; y5 = s3 V s5; y6 = s6.
Логическая схема формирования выходных сигналов показана на
рис. 41.
s0
1 11
y1
s1
s2
1
y2
s3
y3
s4
s5
s6
y4
1
y5
y6
Рис.41 Схема формирования выходных сигналов УА Мура
При синтезе выходной части ЦА Мили следует дополнительно использовать входные сигналы X1 - X4:
s0  X1, y1, y3; s1  X2, y2;
68
s1  X2, y6;
s2  y4, y5;
s3  y1, y2;
s4  X3X4,y5;
s4  X3,y1,y2; s4  X3X4, - .
Из этого следует, что:
y1 =s0 X1 V s3V s4 X3; y2 = s1 X2 V s3 V s4 X3;
y3 = s0 X1; y4 = s2; y5 = s4 X3X4 V s2; y6 = s1 X2.
Логическая схема формирования выходных сигналов ЦА Мили показана
на рис. 42.
6.4.1.6. Синтез входной части
Сигналы возбуждения входов D1  D3 триггеров Т1  Т3 запоминающей
части УЦА приводят к изменению состояний триггеров в моменты действия
синхронизирующих сигналов СИ.
Формирование сигналов возбуждения производится с учетом входных
сигналов Х1  Х3 и предыдущих состояний s0  s4 для УЦА Мили и s0  s6
для УЦА Мура.
s0
&
s1
1
y1
1
y2
&
s2
y3
s3
_
X3
s4
X3
X4
&
&
y4
1
y5
69
&
y6
X1 X2 X2
Рис. 42. Схема формирования выходных сигналов УА Мили
Процедура синтеза входной части любого автомата одинакова. Можно,
например, начать с автомата Мили.
Необходимые сведения (предыдущие состояния, данные состояния,
входные сигналы) следует свести в отдельную таблицу, в которой сигналы
возбуждения являются функциями, а предыдущие состояния, входные сигналы - логическими переменными.
Указанные сведения приведены в табл.41.В ней через ВС обозначены
входные сигналы.
Переходы в состояние s0 в таблице указывать не требуется, так как они
при синтезе не учитываются.
Из табл. 41 следует, что
__
D1 = s3 V s4X3;
D2 = s1X2 V s1X2 V s2 = s1V s2;
D3== s2V s0X1.
Логическая схема формирования сигналов возбуждения входов триггеров УЦА Мили показана на рис. 43.
Таблица 41
Данные для синтеза входной части УЦА Мили
Переходы
D1
D2
D3
T1
70
ВС для
T2
s0 → s1
0
0
1
s1 → s2
0
1
0
X2
s1 → s2
0
1
0
Х2
s2 → s3
0
1
1
1
T3
X1
1
s3 → s4
1
0
0
1
s4 → s4
1
0
0
_
X3
Необходимые сведения для синтеза схемы формирования сигналов возбуждения триггеров УЦА Мура приведены в табл.42. Из этой таблицы следует, что выражения для сигналов возбуждения входов триггеров будут иметь
вид:
__
__
__
__
D1 = s1X2 V s3 V s4X3 V s4X3 X4 = s1X2 V s3 V s4 (X3 V X4);
D2 = s1X2 V s2 V s4X3 X4 V s5;
D3 = s0X1 V s1X2 V s2 V s5.
Как видно, выражение D1 может быть минимизировано, однако следует
использовать неминимизированное выражение, так как в этом случае у выражений D1 и D2 будет достаточно «дорогая» общая импликанта s4X3X4.
Имеется общая импликанта s1X2 у выражений D1 и D3.
Логическая схема формирования сигналов возбуждения триггеров УЦА
Мура показана на рис. 44.
X3
1
&
1
D1
X2
D2
1
X1
D3
&
1
s1+s2
71
s0
s1 s2 s3 s4
Рис.43. Схема формирования сигналов
возбуждения триггеров УЦА Мили
Таблица 42
Данные для синтеза входной части УЦА Мура
Переходы
D1
D2
D3
T1
72
s0 → s1
0
0
1
s1 → s2
0
1
0
s1 → s5
1
0
1
s2 → s3
0
1
1
s3 → s4
1
0
0
ВС для
T2
T3
X1
X2
X2
X2
1
1
1
s4 → s4
1
0
0
X3
s4 → s6
1
1
0
X3X4
s5 → s3
0
1
1
X4
X3
X3X4
1
1
&
1
&
1
D1
1
D2
1
D3
s3
1
X2
&
X1
&
73
&
s0
s1 s2
s4 s5
Рис.44. Схема формирования сигналов возбуждения триггеров УЦА Мура
7. КОНТРОЛЬ И ДИАГНОСТИРОВАНИЕ РАБОТЫ
ЦИФРОВЫХ АВТОМАТОВ
В компьютере осуществляется контроль логических операций, арифметических операций, передач слов.
Ниже при рассмотрении контроля и диагностирования используются
слова x1 = 01010101, x2 = 00110011, x3 = 00011100, x4 = 11000111.
7.1. Контроль логических операций
Среди всех логических операций (ЛО) основными являются операции ,
, , . Зная их контроль, легко осуществлять и контроль других логических
операций.
Для операций , , ,  имеют место следующие соотношения:
xi xj = xi + xj – ( xi \/ xj);
xi \/ xj = xi + xj – ( xi xj);
xi  xj = xi + xj – 2*( xi xj);
74
 xi = xi  1…1.
Видно, что для конъюнкции контрольное выражение представляет собой арифметическую сумму за вычетом дизъюнкции, для дизъюнкции –
арифметическую сумму за вычетом конъюнкции, для сложения по модулю 2
– арифметичскую сумму за вычетом удвоенной конъюнкции, для инверсии –
сложение по модулю 2 слова и константы из единиц длиной, равной длине
слова.
Пусть в качестве логической операции задана операция сложения по модулю 2 x1  x4, следовательно,
x2  x3 = x2 + x3 – 2*(x2 /\ x3).
Реализация заданных операций дает
/\ 00110011 – 01001111
 00110011 + 00110011
00011100
00011100
00011100
00100000
00101111,
01001111,
00010000,
00101111.
Как видно, левая и правая части контрольного соотношения совпали.
Это говорит о правильности выполнения заданной ЛО. Если операций имеется несколько, то они контролируются одна за другой в соответствие с очередностью их выполнения.
7.2. Контроль арифметических операций
Для контроля арифметических операций (АО) используются соотношения:
С(СЛ1 + СЛ2) = С(С(СЛ1) + С(СЛ));
С(УМ - ВЫ) = С(УМ) - С(ВЫ));
С(M * L) = С(M)*C(L);
С(D) = С(d)*C(Ч) + С(Q),
где:
С – вычет;
СЛ1,СЛ – слагаемые;
УМ, ВЫ – уменьшаемое и вычитаемое;
М, L – множимое и множитель;
D, d, Q, Ч – делимое, делитель, остаток и частное.
Что касается вычета С, то под этим понимается остаток от деления на
некоторый модуль m, обычно равный 2 или 3.
Видно, что для суммы контрольное соотношение представляет собой
вычет от суммы вычетов слагаемых, для разности – разность вычетов уменьшаемого и вычитаемого, для произведения – произведение вычетов сомножителей, для деления –сумму произведения вычетов частного и делителя с
вычетом остатка.
75
Пусть в качестве арифметической операции задана операция сложения
х1 +х4, следовательно,
С(x1 + x4) = С(С(x1) + С(x4)).
Реализация предусмотренных операций при m = 2 дает:
01010101
+
11000111
100011100,
С(x1) = 01, С(x1 + x4) = 00, С(x4) =01, получается, что 00 = С(01 +01) = 00.
7.3. Контроль и диагностирование передач информации
Для контроля передачи слова часто используется контроль по нечетности. К слову добавляется контрольный разряд, в который записывается такое
значение, чтобы общее число единиц было нечетным. Разделив слово пополам и снабдив каждую часть, а также каждый разряд контрольным разрядом,
можно диагностировать ошибку.
Пусть в качестве числа задано x1, в нем 4 единицы, следовательно, в
контрольном разряде должна быть единица (рис.45). Студент по своему
усмотрению вносит в слово ошибку и производит контроль. Например,
ошибка внесена в первый разряд (рис.46). Число единиц стало четным, это
означает, что в слове есть ошибка.
01010101
Рис.45
1
11010101
1
Рис.46
Для диагностирования слово следует разбить на две части (рис.47). По
горизонталям, вертикалям введены контрольные разряды. На рис.48 отражено внесение ошибки. Проверка нечетности показывает, что есть ошибка в
верхней горизонтали, в левом столбце. Ясно, что это показывает на первый
разряд. Ошибка путем инвертирования легко исправляется.
0101
0101
1111
Рис.47
76
1
1
1
1101
0101
1111
Рис.48
1
1
1
8. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕОБРАЗОВАНИЯ
ЦИФРОВЫХ АВТОМАТОВ
Для преобразования цифровых автоматов разработано определенное
программное обеспечение.
Оно связано с использованием подпрограмм над множествами, кубами и
кубическими покрытиями, описанных в учебном пособии автора “Алгоритмизация и микропрограммирование операций ЭВМ (множества, графы, кубы,
кубические покрытия)” [13].
Использован опыт разработки программного обеспечения преобразования алгоритмов [14].
Ниже рассмотрены стандартные описания тех подпрограмм, которые касаются только автоматов.
8.1. Подпрограммы алгебраических операций
8.1.1. Подпрограмма настраиваемого объединения
1. Назначение - получение автомата, являющегося настраиваемым объединением двух автоматов.
2. Формальные параметры:
mcaр11, mcaр12, mcaр13, mcaр14 – матрицы 1-го исходного
автомата;
mcaр21, mcaр22, mcaр23, mcaр24 - матрицы 2-го исходного
автомата;
mcaр1, mcaр2, mcaр3, mcaр4 – матрицы результирующего
автомата;
yp1, myp1 – множество состояний исходных автоматов и его
мощность;
yp, myp – множество состояний результирующего
автомата и его мощность;
kp, kp1, kp2 – количество частей функции перехода матриц
результирующего, первого и вторго исходных
автоматов.
3. Обращение: obca (mcaр1, mcaр2, mcaр3, mcap4, yp, myp, kp, mcaр11,
77
mcaр12, mcaр13, mcaр14, mcaр21, mcaр22, mcaр23,
mcaр24, yp1, myp1, kp1, kp2).
8.1.2. Подпрограмма операции пересечения
1. Назначение - получение автомата, являющегося персечением двух автоматов.
2. Формальные параметры:
mcaр11, mcaр12, mcaр13, mcaр14 – матрицы 1-го исходного
автомата;
mcaр21, mcaр22, mcaр23, mcaр24 - матрицы 2-го исходного
автомата;
mcaр1, mcaр2, mcaр3, mcaр4 – матрицы результирующего
автомата;
yp1, myp1 – множество состояний исходных автоматов и его
мощность;
yp, myp – множество состояний результирующего
автомата и его мощность;
kp, kp1, kp2 – количество частей функции перехода матриц
результирующего, первого и вторго исходных
автоматов.
3. Обращение: реrca (mcaр1, mcaр2, mcaр3, mcaр4, yp, myp, kp, mcaр11,
mcaр12, mcaр13, mcaр14, mcaр21, mcaр22, mcaр23,
mcaр24, yp1, myp1, kp1, kp2).
8.1.3. Подпрограмма операции вычитания
1. Назначение - получение автомата, являющегося разностью двух автоматов.
2. Формальные параметры:
mcaр11, mcaр12, mcaр13, mcaр14 – матрицы 1-го исходного
автомата;
mcaр21, mcaр22, mcaр23, mcaр24 - матрицы 2-го исходного
автомата;
mcaр1, mcaр2, mcaр3, mcaр4 – матрицы результирующего
автомата;
yp1, myp1 – множество состояний исходных автоматов и его
мощность;
yp, myp – множество состояний результирующего
автомата и его мощность;
kp, kp1, kp2 – количество частей функции перехода матриц
78
результирующего, первого и вторго исходных
автоматов.
3. Обращение: vica (mcaр1, mcaр2, mcaр3, mcaр4, yp, myp, kp, mcaр11,
mcaр12, mcaр13, mcaр14, mcaр21, mcaр22, mcaр23,
mcaр24, yp1, myp1, kp1, kp2).
8.1.4. Подпрограмма операции симметрической разности
1. Назначение - получение автомата, являющегося симметрической разностью двух автоматов.
2. Формальные параметры:
mcaр11, mcaр12, mcaр13, mcaр14 – матрицы 1-го исходного
автомата;
mcaр21, mcaр22, mcaр23, mcaр24 - матрицы 2-го исходного
автомата;
mcaр1, mcaр2, mcaр3, mcaр4 – матрицы результирующего
автомата;
yp1, myp1 – множество состояний исходных автоматов и его мощность,
yp, myp – множество состояний результирующего
автомата и его мощность;
kp, kp1, kp2 – количество частей функции перехода матриц
результирующего, первого и вторго исходных
автоматов.
3. Обращение: siraca(mcaр1, mcaр2, mcaр3, mcaр4, yp, myp, kp, mcaр11,
mcaр12, mcaр13, mcaр14, mcaр21, mcaр22, mcaр23,
mcaр24, yp1, myp1, kp1, kp2).
8.1.5. Подпрограмма операции дополнения
1. Назначение - получение автомата, являющегося разностью между универсальным и исходным автоматами.
2. Формальные параметры:
mcaр11, mcaр12, mcaр13, mcaр14– матрицы исходного
автомата;
mcau01, mcau02, mcau03, mcau04 - матрицы универсального
автомата;
yun, myun – множество состояний универсального
автомата и его мощность;
yp1, myp1 – множество состояний исходного
автомата и его мощность;
79
mcaр1, mcaр2, mcaр3, mcap4 – матрицы результирующего
автомата;
yp, myp – множество состояний результирующего
автомата и его мощность;
kp, kun, kp1 – количество частей функции перехода
результирующего, универсального и первого
исходного автоматов.
3. Обращение: dopca (mcaр1, mcaр2, mcaр3, mcap4, yp, myp, kp, mcau01,
mcau02, mcau03, mcau04, yun, myun, kun, mcaр11,
mcaр12, mcaр13,mcaр14, yp1, myp1, kp1).
8.2. Подпрограммы операций проверки отношения
8.2.1.Подпрограмма проверки отношения
1. Назначение-формирование признака проверки отношения.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы 1-го исходного
автомата;
mcaр21, mcaр22, mcaр23, mcaр24 - матрицы 2-го исходного
автомата;
yp1, myp1 – множество состояний исходных
автоматов и его мощность;
kp1, kp2 – количество частей функции перехода матриц
первого и вторго исходных автоматов;
protca – признак отношения.
3. Обращение: otca (protca, mcaр11, mcaр12, mcaр13, mcap14, mcaр21,
mcaр22, mcaр23, mcaр24, yp1, myp1, kp1, kp2).
4. Особенности:
при левом включении формируется признак отношения, равный 1; при правом включении - равный 2; при равенстве –
равный 3; при общем отношении –равный 4; при отношении
'нет общего' –равный 5.
8.2.2. Подпрограмма проверки равенства
Равенство можно проверить с помощью подпрограммы, обращение к которой выглядит следующим образом:
ravca(prravca, mcaр11, mcaр12, mcaр13, mcap14, mcaр21, mcaр22, mcaр23,
mcaр23, yp1, myp1, kp1, kp2).
80
Все параметры в этой подпрограмме, за исключением признака (признака равенства), совпадают с параметрами предыдущей подпрограммы.
Если объекты равны, то признаку равенства присваивается значение 0, в
противном случае - 1.
8.3. Подпрограммы вспомогательных процедур
8.3.1. Подпрограмма ввода
1. Назначение-считывание элементов блока данных (файл wса.dat) в мса автомата.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы автомата;
yp1, myp1 – множество состояний автомата и его
мощность.
3. Обращение: vvca (mcaр11, mcaр12, mcaр13, mcap14, yp1, myp1).
8.3.2. Подпрограмма вывода с признаками
1. Назначение - вывод имени автомата, мса с отметками р.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы автомата;
yp1, myp1 – множество состояний автомата и его
мощность;
kp1– количество частей функции перехода матриц автомата;
pst -имя автомата.
3. Обращение: pechcap (mcaр11, mcaр12, mcaр13, mcap14, yp1, myp1, kp1,
pst).
8.3.3. Подпрограмма вывода без признаков
1. Назначение - вывод имени автомата, мса без отметок р.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы автомата;
yp1, myp1 – множество состояний автомата и его
мощность;
kp1 - количество частей функции перехода матриц
автомата;
81
pst -имя автомата.
3. Обращение: pechca (mcaр11, mcaр12, mcaр13, mcap14, yp1, myp1, kp1, pst).
8.3.4. Подпрограмма обнуления мса
1. Назначение – обнуление элементов мса.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы автомата;
yp1, myp1 – множество состояний автомата и его
мощность;
kp1 – количество частей функции перехода матриц
исходного автомата.
3. Обращение: zakca0 (mcaр11, mcaр12, mcaр13, mcap14, yp1, myp1, kp1).
8.3.5. Подпрограмма определения пустоты мса
1. Назначение – присвоение признаку пустоты необходимого значения.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы автомата;
yp1, myp1 – множество состояний автомата и его
мощность;
kp1– количество частей функции перехода матриц
исходного автомата.
prpusca – признак пустоты (0 – пусто, 1 – непусто).
3. Обращение: pusca (prpusca, mcaр11, mcaр12, mcaр13, mcap14, yp1, myp1,
kp1).
8.3.6. Подпрограмма 'закачки' мсар1 в однородную мса
1. Назначение - присвоение значений мса исходного автомата элементам мса
итогового автомата при одинаковых множествах состояний.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы “закачиваемого”
автомата;
mcaр1, mcaр2 mcaр3, mcaр4 – матрицы итогового автомата;
yp1, myp1 – множество состояний исходного
автомата и его мощность;
yp, myp – множество состояний итогового
автомата и его мощность;
82
kp, kp1 – количество частей функции перехода матриц результирующего и исходного автоматов.
3. Обращение: zakcao (mcaр1, mcaр2, mcaр3, mcap4, yр, myр, kp, mcaр11,
mcaр12 mcaр13, mcaр14, yp1, myp1, kp1).
8.3.7. Подпрограмма 'закачки' мсар1 в неоднородную мса
1. Назначение – присвоение значений мса исходного автомата элементам мса
итогового автомата при неодинаковых множествах
состояний.
2. Формальные параметры:
mcaр11, mcaр12 mcaр13, mcaр14 – матрицы “закачиваемого”
автомата;
mcaр1, mcaр2 mcaр3, mcaр4 – матрицы итогового автомата;
yp1, myp1 – множество состояний исходного
автомата и его мощность;
yp, myp – множество состояний итогового
автомата и его мощность;
kp, kp1, kun – количество частей функции перехода матриц
результирующего, исходного и универсального автоматов.
3. Обращение: zakcano (mcaр1, mcaр2, mcaр3, mcap4, yp, myp, kp, yun, myun,
mcaр11, mcaр12, mcaр13, mcaр14, yp1, myp1, kp1,
kun).
ЗАКЛЮЧЕНИЕ
83
В данном учвебном пособии изложены основы прикладной теории автоматов применительно к компьютерам.
Общие сведения об автоматах включают в себя основные определения,
обозначения, изображение, построение, свойства и характеристики автоматов, типы автоматов, отношения между автоматами, “0”, ”1” алгебры автоматов, автоматные грамотность и культура, значение автоматов и краткую
историческую справку).
Описаны способы задания (описания) автоматов (начальные и автоматные языки), условия корректности различных средств описания.
Изложены операции над автоматами (композиция автоматов, декомпозиция автомата, алгебраические операции, проверка отношения и равенства,
упрощение автомата), законы и тождества алгебры автоматов.
Описаны вопросы синтеза и анализа логических схем управляющих автоматов с жесткой логикой, вопросы контроля и диагностирования работы
автоматов.
Изложены основные подпрограммы преобразования автоматов.
В пособии имеются приложения подпрограмм преобразования автоматов и контрольных вопросов курса.
ЛИТЕРАТУРА
1. Автоматы. Сборник статей под редакцией К.Э.Шеннона и Дж. Маккарти.
Перевод с анг. под редакцией А.А.Ляпунова. – М.: Изд - во “Иностранная
литература”, 1956. – 403 с.
2. Агибалов Г.П., Оранов А.М. Лекции по теории конечных автоматов.
Учебное пособие. -Томск: Изд-во Томского госуниверситета, 1984.
84
- 186 с.
3. Айзерман М.А., Гусев Л.А. и др. Логика, автоматы, алгоритмы.– М.: Физматгиз, 1963.
4. Баранов С.И. Синтез микропрограммных автоматов. 2-е изд. - Л.: Энергия, 1979. - 232 с.
5. Гилл А. Введение в теорию конечных автоматов. – М.: Наука, 1965.
6. Глушков В.М. Синтез цифровых автоматов.- М.: Физматгиз, 1962. – 476 с.
7. Кобринский Н.Е., Трахтенброт Б.А. Введение в теорию конечных автоматов. – М.: Физматгиз, 1962.
8. Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для инженеров. 2-е изд. - М: Энергия, 1987. - 311 с.
9. Майоров С.А., Новиков Г.И. Принципы организации цифровых вычислительных машин. - М.: Высшая школа, 1975. - 311 с.
10. Савельев А.Я. Прикладная теория цифровых автоматов. - М.: Высшая
школа, 1987. - 272 с.
11. Самофалов К.Г. и др. Прикладная теория цифровых автоматов. - Киев:
Высшая школа, 1987.
12. Трахтенброт Б.А. , Барздинь Я.М. Конечные автоматы (поведение и синтез). – М.: Наука, 1970. – 400 с.
13. Триханов А.В. Алгоритмизация и микропрограммирование операций
ЭВМ (множества, графы, кубы, кубические покрытия). Учебное пособие.
– Томск: ИПФ ТПУ, 1995. - 108 с.
14. Триханов А.В. Основы прикладной теории алгоритмов. Учебное пособие.
- Томск: Ротапринт ТПИ, 1991.- 96 c.
15. Триханов А.В. Синтез логических схем. Учебное пособие. - Томск: Ротапринт ТПИ, 1986. - 96 c.
16. Триханов А.В. Прикладная теория цифровых автоматов. Рабочая программа, первое задание, методические указания. -Томск: Ротапринт ТПИ,
1990. - 23 с.
17. Триханов А.В. Теория автоматов. Рабочая программа, методические указания и контрольное задание. -Томск: Изд. ТПУ, 1999. - 51 с.
18. Чередов А.Д. Проектирование дискретных устройств. Учебное пособие. –
Томск: Изд. ТПУ, 1994. - 96 с.
ПРИЛОЖЕНИЕ 1. ПОДПРОГРАММЫ РЕАЛИЗАЦИИ ОПЕРАЦИЙ
НАД ЦИФРОВЫМИ АВТОМАТАМИ
program openadca;
{$M 64000,0,4000}
uses printer,crt;
{ oпеpации над автоматами }
85
label 1,2;
type cu=string[6];
pok=packed array[1..5] of cu;
{ pok=packed array[1..200] of cu; }
mca=packed array[1..10,1..10] of cu;
mas=packed array[1..20] of char;
st=string[20];
var s,f1:text; sim:char; fam:string[20];
poka,pokb,pokc,pokd,poke,pof:pok;
{ var pokc,pokc1,pokz:pok;}
cub,cub1,cud9,cub99:cu;
var mcaa1,mcaa2,mcaa3,mcaa4,mcab1,mcab2,mcab3,mcab4,
mcac1,mcac2,mcac3,mcac4,mcad1,mcad2,mcad3,mcad4,
mcae1,mcae2,mcae3,mcae4,mcaf1,mcaf2,mcaf3,mcaf4,
mcag1,mcag2,mcag3,mcag4,mcah1,mcah2,mcah3,mcah4,
mcau1,mcau2,mcal1,mcal2,mcal3,mcal4,mcap1,mcap2,
mca11,mcap12,mcap13,mcap14,mcap21,mca22,mcap23,
mcap24:mca; { mca }
ya,yb,yc,yd,ye,yf,yg,yh,y0,y1,yu,yl:mas; { сост-я S }
mya,myb,myc,myd,mye,myf,myg,myh,myl,my0,my1,myu,myab,myba,mya1,
myb1,{ мощности множеств}
mpemca,nva,ngr,nlstc,nlstd,nlscc,nlscd,nsccc1,nscdc1, nstcc1,nstdc1,
i,j,k,l,g,h,m,n,k1,kk,prpusca,pravm,pravc,pravp,prava, prravca, protca,
pperm,pperc,ppera,
nlst,nlsc,p1lst,p1lsc,nsc1,nst1,ns,sc,nc,nx,km,sp, pvx,pzp:integer;
const st1='a';st2='b';st3='c';st4='d';st5='e';st6='f';st7='g';
st8='h';st9='m';st10='n';st11=' группа ';st12=' вариант ';
st13='u';st14='l';
{ опрации над множествами }
{1 - пересечение множеств }
procedure perm(p1,p2:mas;mp1,mp2:integer;var p:mas; var mp:integer);
label 1;
var i,j:integer;
begin mp:=0;
for i:=1 to mp1 do begin for j:=1 to mp2 do if p1[i]=p2[j]
then begin mp:=mp+1;p[mp]:=p1[i]; goto 1; end; 1:end; end;
{2 - ‘закачка’ множества во множество }
procedure zakm(p1:mas;mp1:integer; var p:mas; var mp:integer);
var i:integer;
begin mp:=0; for i:=1 to mp1 do begin mp:=i;p[i]:=p1[i];end;end;
86
{3 - вычитание множеств }
procedure vicm(p1,p2:mas;mp1,mp2:integer;var p:mas;var mp:integer);
label 1; var i,j:integer;
begin
for j:=1 to mp1 do begin for i:=1 to mp2 do begin if p2[i]=p1[j]
then goto 1; end; mp:=mp+1;p[mp]:=p1[j]; 1:end ; end;
{4 - объединение множеств }
procedure obm(p1,p2:mas;mp1,mp2:integer;var p:mas;var mp:integer);
begin zakm(p1,mp1,p,mp);vicm(p2,p1,mp2,mp1,p,mp); end;
{5 - упорядочение множествa }
procedure yporm(var p:mas; var mp:integer);
label 1;
var i,j:integer; sim:char;
begin
for i:=1 to mp-1 do begin for j:=i+1 to mp do if p[i]>p[j]
then begin sim:=p[j];p[j]:=p[i];p[i]:=sim;goto 1; end; 1:end; end;
{6 - проверка равенства множеств p1 и p2 }
procedure ravm(p1,p2:mas;mp1,mp2:integer);
var mf,me:integer;f,e:mas;
begin mf:=0; me:=0; vicm(p1,p2,mp1,mp2,f,mf);
vicm(p2,p1,mp2,mp1,e,me);writeln(lst); if(me=0) and (mf=0)
then begin pravm:=1;write(lst,'равны ') end else begin pravm:=0;
write(lst,'не равны '); end;
end;
{7 - печать множества, его мощности}
procedure pecm(p:mas;mp:integer;pst:st);
var i:integer;
begin
writeln(lst);write(lst,'my',pst,'=',mp,' y',pst,'=(');
for i:=1 to mp do write(lst,' y',p[i]); write(lst,' )'); end;
{ oперации над кубами и покрытиями }
{8 - ‘закачка’ куба в куб c признаком}
procedure zakc(var pcub:cu;pcub1:cu);
var i1:integer;
begin pcub:=' ';for i1:=1 to ns do pcub[i1]:=pcub1[i1];
end;
{9 - ‘закачкa' куба в куб без признака}
87
procedure zakc1(var pcub:cu;pcub1:cu);
var i1:integer;
begin pcub:=' ';for i1:=2 to ns do pcub[i1]:=pcub1[i1];
end;
{10 - печать куба }
procedure pecc(pcub:cu);
var i2:integer; begin
for i2:=1 to ns do write(pcub[i2]);write(' ');
end;
{11 - ‘закачкa’ покрытия pok1 в pokp }
procedure zakp(var pokp:pok;var mpp:integer;pokp1:pok; mpp1:integer);
var i3:integer;
begin mpp:=0;
for i3:=1 to mpp1 do begin mpp:=i3;pokp[i3]:='
';
pokp[i3]:=pokp1[i3];end;
end;
{12 - oпределение равенства кубов }
procedure ravc(pcub1,pcub2:cu);
label 1; var i4:integer;
begin pravc:=0; writeln(lst); for i4:=1 to ns do
if pcub1[i4]<>pcub2[i4] then begin pravc:=1;write(lst,'не paвны');
goto 1;end; write(lst,'pавны');1:end;
{13 - ‘подстыковкa’ куба к покрытию }
procedure stpc(var pokp:pok;var mpp:integer;pcub:cu);
begin mpp:=mpp+1;pokp[mpp]:='
';pokp[mpp]:=pcub; end;
{14 - ‘стыковкa’ pokp2 с pokp1 }
procedure stpp(var pokp1:pok;var mpp1:integer;pokp2:pok;mpp2
:integer);
var i6:integer; begin
for i6:=1 to mpp2 do begin mpp1:=mpp1+1;pokp1[mpp1]:='
';
pokp1[mpp1]:=pokp2[i6];end;end;
{15 - пересечение кубов }
procedure perc(pcub1,pcub2:cu;var pcub:cu);
label 1; var i7:integer;
begin pperc:=0;pcub:='
';
for i7:=1 to ns do if (pcub1[i7]=pcub2[i7]) or (pcub2[i7]='X')
then pcub[i7]:=pcub1[i7] else if pcub1[i7]='X' then
pcub[i7]:=pcub2[i7] else begin pperc:=1; goto 1;end; 1:end;
{16 - вычитание кубов }
procedure vicc(pcub1,pcub2:cu;var pokp:pok;var mpp:integer);
88
label 1; var i9,kv,ko1:integer;cub9:cu;
begin
mpp:=0;kv:=0;ko1:=0; cub9:='
';for i9:=1 to ns do
begin if (pcub2[i9]='X') or (pcub1[i9]=pcub2[i9]) then begin
cub9[i9]:='v'; kv:=kv+1;;end else if pcub1[i9]<>'X' then begin
ko1:=ko1+1;if ko1>0 then begin stpc(pokp,mpp,pcub1) ;goto 1;end;
end else if pcub2[i9]='0' then cub9[i9]:='1' else cub9[i9]:='0';
end; if kv=ns then goto 1 else
begin for i9:=1 to ns do begin cub99:='
';cub99:=pcub1;
if cub9[i9]<>'v' then begin cub99[i9]:=cub9[i9];
stpc(pokp,mpp,cub99);end;end; end; 1:end;
{17 - звездчатое произведение кубов }
procedure zpc(pcub1,pcub2:cu;var pcub:cu;var pzp:integer);
var i10,ky:integer;
label 1;
begin ky:=0;pzp:=0;pcub:='
';
for i10:=1 to ns do begin if pcub1[i10]=pcub2[i10] then
pcub[i10]:=pcub1[i10] else if pcub2[i10]='X'then pcub[i10]:=
pcub1[i10] else if pcub1[i10]='X' then pcub[i10]:=pcub2[i10]
else begin pcub[i10]:='X';ky:=ky+1;if ky>1
then begin pzp:=1;goto 1;end;end;end;
1: end;
{18 определение стоимости куба }
procedure osc(pcub:cu);
var i14:integer; begin sc:=0;
for i14:=1 to ns do if pcub[i14]<>'X' then sc:=sc+1;nx:=ns-sc;end;
{19 - oпределение стоимости покрытия }
procedure osp(pokp:pok;mpp:integer;pst:st);
var i15:integer;cub15:cu; begin sp:=0;
for i15:=1 to mpp do begin cub15:='
';
cub15:=pokp[i15];osc(cub15); sp:=sp+sc;
if sc>1 then sp:=sp+1;end;if (mpp=1) and (sc>1) then sp:=sp-1;
writeln(lst,'sp',pst,sp);
end;
{20 - печать покрытия , его стоимости}
procedure pecp(pokp:pok;mpp,nsp:integer;pst:st);
var i16:integer; begin
writeln(lst);writeln(lst,'покрытие',pst); for i16:=1 to mpp do
pecc(pokp[i16]); osp(pokp, mpp,pst) ;
end;
{21 - oпределение вхождения куба в куб }
procedure vxgc(pcub1,pcub2:cu);
label 1; var i17:integer;
89
begin for i17:=1 to ns do if (pcub1[i17]=pcub2[i17]) or
(pcub2[i17] ='X') then pvx:= 1 else begin pvx:=0 ; goto 1;end;
1: end;
{22 - сжатие покрытия }
procedure sgp(var pokp:pok;var mpp:integer);
label 1;
var i18,j18,k18:integer;
begin 1: for i18:=1 to mpp do for j18:=1 to mpp do if i18<>j18
then begin vxgc(pokp[i18],pokp[j18]);if pvx=1 then begin for
k18:=i18 to mpp do begin pokp[k18]:='
'; pokp[k18]:=
pokp[k18+1];end;mpp:=mpp- 1;goto 1;end; end;
end;
{23 - пересечение покрытий }
procedure perpp(pokp1,pokp2:pok;mpp1,mpp2:integer;var pokp:pok;
var mpp:integer);
var i8,j8:integer;cub8:cu; begin mpp:=0;
for i8:=1 to mpp1 do for j8:=1 to mpp2 do begin perc(pokp1[i8],
pokp2[j8],cub8);if pperc =0 then begin stpc(pokp,mpp,cub8);
sgp(pokp,mpp);end; end;end;
{24 - сжатие покрытия засчет другого покрытмя }
procedure sgpp(var pokp:pok;var mpp:integer;pokp1:pok;mpp1:integer);
label 1; var i19,j19,k19:integer;
begin 1:for i19:=1 to mpp do for j19:=1 to mpp1 do begin
vxgc(pokp[i19],pokp1[j19]);if pvx=1 then begin for k19:=i19 to
mpp do pokp[k19]:=pokp[k19+1]; mpp:=mpp-1;goto 1;end;end;
end;
{25 - поиск простых импликант }
procedure ppi(pokc1:pok;mpc1:integer;var pokz:pok;var mpz:integer);
label 1,2; var pokd:pok;pcub20:cu;i20,j20,mpd,pzp:integer;
begin nc:=1; mpz:=0;
2:mpd:=0;sgp(pokc1,mpc1);for i20:=1 to mpc1-1 do begin for j20:=
i20+1 to mpc1 do begin zpc(pokc1[i20],pokc1[j20],pcub20,pzp);
if pzp=0 then begin
osc(pcub20);if nx>=nc then stpc(pokd,mpd,pcub20);end;end;end;
if mpd=0 then goto 1 else sgp(pokd,mpd);
sgpp(pokd,mpd,pokc1,mpc1);
if mpd=0 then goto 1;sgpp(pokc1,mpc1,pokd,mpd);
stpp(pokc1,mpc1,pokd,mpd);nc:=nc+1;goto 2;
1:stpp(pokz,mpz,pokc1,mpc1);end;
{26 - вычитание покрытий }
procedure vipp(pokp1,pokp2:pok;mpp1,mpp2:integer;var pokp:pok;
90
var mpp:integer);
label 1,2,3; var pokv1,pokv2,pokv3:pok;mpv1,mpv2,mpv3,i12,j12,
k12:integer;
begin
mpp:=0; if (mpp1=0) or (pokp2[1]='XXXXXXXXXX') then goto 2 else
if mpp2=0 then begin stpc(pokp,mpp,'XXXXXXXXXX'); goto 2;end;
for i12:=1 to mpp1 do begin mpv1:=0;stpc(pokv1,mpv1,pokp1[i12]);
for j12:=1 to mpp2 do begin mpv3:=0;for k12:=1 to mpv1 do begin
vicc(pokv1[k12],pokp2[j12],pokv2,mpv2); if mpv2=0 then goto 3;
stpp(pokv3,mpv3,pokv2,mpv2);
sgp(pokv3,mpv3);
3: end;if mpv3=0 then goto 1 else mpv1:=0;
stpp(pokv1,mpv1,pokv3,mpv3);end;
stpp(pokp,mpp,pokv3,mpv3);sgp(pokp,mpp);1: end; 2: end;
{27 - проверка равенства покрытий }
procedure ravp(pokp1,pokp2:pok;mpp1,mpp2:integer);
var pok26,pok62:pok;mp26,mp62:integer;
begin vipp(pokp1,pokp2,mpp1,mpp2,pok26,mp26);
vipp(pokp2,pokp1,mpp2,mpp1,pok62,mp62);writeln(lst);
if(mp26=0) and (mp62=0) then write(lst,'равны') else
write(lst,'не равны');
end;
{28 - проверка отношения между покрытиями }
procedure otp(pokp1,pokp2:pok;mpp1,mpp2:integer);
var pok27,pok72,pok272:pok;mp27,mp72,mp272:integer;
begin vipp(pokp1,pokp2,mpp1,mpp2,pok27,mp27);
vipp(pokp2,pokp1,mpp2,mpp1,pok72,mp72);
perpp(pokp1,pokp2,mpp1,mpp2,pok272,mp272);writeln(lst);
if(mp27=0) and (mp72=0) then write(lst,'равны ') else if
mp27=0 then write(lst,' лч < пч') else if mp72=0 then
write(lst,'лч > пч') else if mp272=0 then write(lst,
'общее отношение ') else write(lst,'нет общего '); end;
{29 - объединение кубов}
procedure obc(pcub1,pcub2:cu;var pokp:pok;var mpp:integer);
var pok28:pok;mp28:integer;
begin mpp:=0;mp28:=0;stpc(pok28,mp28,pcub1);
stpc(pok28,mp28,pcub2);ppi(pok28,mp28,pokp,mpp);
end;
{30 - дополнение покрытия}
procedure dopp(pokp1:pok;mpp1:integer;var pokp:pok;var mpp
:integer);
91
var pokun:pok;mpun:integer; label 1;
begin
mpp:=0;if mpp1=0 then begin mpp:=1; pokp[mpp]:='XXXXXXXXXX';
goto 1;end else if pokp1[1]='XXXXXXXXXX' then goto 1;mpun:=1;
pokun[mpun]:='XXXXXXXXXX';
vipp(pokun,pokp1,mpun,mpp1,pokp,mpp);
1: end;
{31 - объединение покрытий}
procedure obp(pokp1,pokp2:pok;mpp1,mpp2:integer;
var pokp:pok; var mpp:integer);
var pok30,pok31:pok;mp30,mp31,i:integer;
begin
mp30:=0;stpp(pok30,mp30,pokp1,mpp1);
stpp(pok30,mp30,pokp2,mpp2);dopp(pok30,mp30,pok31,mp31);
dopp(pok31,mp31,pokp,mpp);
end;
{ операции над автоматами }
{ 32 - опаределение пустоты мса }
procedure pusсa(mcap1,mcap2,mcap3,mcap4:mca;myp:integer);
label 1,2;
var i,j,k:integer;
begin prpusca:=0;
for i:=1 to myp do begin for j:=1 to myp do
if(mcap1[i,j]=' ') and (mcap2[i,j]='
') {and
(mcap3[i,j]=' ') and (mcap4[i,j]=' ')} then goto 1
else begin prpusca:=1; writeln (lst,'mca непуста'); goto 2; end;1: end;
writeln(lst,'mca пуста'); 2:end;
{ 33 - обнуление мса }
procedure zakсa0(yp1:mas;myp1:integer;var mcap1,mcap2,mcap3,mcap4:mca;
var yp:mas;var myp:integer);
var i,j,k:integer;
begin zakm(yp1,myp1,yp,myp);
for k:=1 to kk*2 do for i:=1 to myp do for j:=1 to myp
do begin if k=1 then mcap1[i,j]:=' 'else if k=2
then mcap2[i,j]:=' ' else if k=3 then mcap3[i,j]:=' ' else
mcap4[i,j]:=' ';end;
end;
{ 34 - ‘закачкa' мсар1 в однородную мсар }
procedure zakcao(mcap11,mcap12:mca;yp1:mas;myp1:integer;
var mcap1,mcap2,mcap3,mcap4:mca;var yp:mas;var myp:integer);
var i,j,k:integer;
begin
zakm(yp1,myp1,yp,myp);
92
zakca0(yp1,myp1,mcap1,mcap2,mcap3,mcap4,yp,myp);for k:=1 to kk do for i:=1
to myp1 do for j:=1 to myp1 do begin if k=1 then mcap1[i,j]:=
mcap11[i,j] else if k=2 then mcap2[i,j]:=mcap12[i,j] else
mcap3[i,j]:=mcap13[i,j];end;
end;
{ 35 - ‘закачкa’ мсар1 в неоднородную мсар }
procedure zakcan(yun:mas;myun:integer;mcap11,mcap12,mcap13,mcap14:mca;
yp1:mas;myp1:integer;
var mcap1,mcap2,mcap3,mcap4:mca;var yp:mas;var myp:integer);
var i,pi,j,pj,k:integer;
label 1,2;
begin zakca0(yun,myun,mcap1,mcap2,mcap3,mcap4,yp,myp);for k:=1 to kk do
for i:=1 to myp1 do for j:=1 to myp1 do begin pj:=0;pi:=0;1:if
yp1[j+1]<>yp[j+1+pj] then begin pj:=pj+1;goto 1;end;
2:if yp1[i]<>yp[i+pi] then begin pi:=pi+1;goto 2;end; if k=1 then
mcap1[i+pi,j+pj]:=mcap11[i,j]
else if k=2 then mcap2[i+pi,j+pj]:=mcap12[i,j] else
mcap3[i+pi,j+pj]:=mcap13[i,j];end;
end;
{36 - стыковкa mca }
procedure stca(var mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;
mcap11,mcap12,mcap13,mcap14:mca;var kk:integer);
var i,j,k:integer;
begin for k:=1 to kk do for i:=1
to myp do for j:=1 to myp do begin if k=1 then
mcap2[i,j]:=mcap11[i,j]
else if k=2 then mcap3[i,j]:=mcap12[i,j] else
mcap4[i,j]:=mcap13[i,j];end; kk:=kk*2;
end;
{37 - упрощение мса за счет склеивания }
procedure sgca(var mcap1,mcap2,mcap3,mcap4:mca;myp,kk:integer);
var i,j,k:integer;pokp,pokp1:pok; mpp,mpp1:integer;cub,cubb1:cu;
sim:char;
begin for i:=1 to myp do for j:=1 to myp do begin
cub:=mcap1[i,j];cub1:=mcap2[i,j];sim:=cub[5];if (sim='E')or
(sim='F') or (sim='U') then cub[5]:=' ';
if(cub[1]=cub1[1]) and
(cub[1]<>' ') then begin mpp:=1;pokp[mpp]:=cub;mpp:=2;
pokp[mpp]:=cub1;ppi(pokp,mpp,pokp1,mpp1);if mpp1=1 then begin
mcap1[i,j]:=' ';mcap2[i,j]:=' ';cub:=pokp1[1];
cub[5]:=' ';if cub='XXXX ' then mcap1[i,j]:='1 1 ' else
mcap1[i,j]:=cub;cub:=mcap1[i,j];if (sim='E')or(sim='F') or (sim='U')
then cub[5]:=sim;mcap1[i,j]:=cub;end else for k:=1 to mpp1 do if k=1
then mcap1[i,j]:=pokp1[k] else if k=2 then mcap2[i,j]:=pokp1[2];
93
end;end;
end;
{ 38 - проверка равенства автоматов }
procedure rava( mcap1,mcap2,mcap3,mcap4,mcap11,mcap12,mcap13,
mcap14:mca;myp,kk:integer);
var i,j,k:integer; label 1,2;
begin prava:=0; for i:=1
to myp do begin for j:=1 to myp do if (mcap1[i,j]=mcap11[i,j]) and
(mcap2[i,j]=mcap12[i,j]) then goto 1 else begin prava:=1;
writeln(lst,'mca неравны');goto 2 ; end;
1:end;writeln(lst,'мса равны'); 2:end;
{39 под-ма печати mpca с признаками }
procedure pecap(mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;
pst:st);
var i,j,k,l,l1:integer;cub:cu;
begin
writeln(lst);write(lst,'mca',pst,' ');
for i:=1 to myp do write(lst,' y',yp[i]);
for i:=1 to myp do begin writeln(lst);write(lst,' y',yp[i],' ');
for k:=1 to kk do begin for j:=1 to myp do begin if k=1 then
zakc(cub,mcap1[i,j]) else if k=2 then zakc(cub,mcap2[i,j]) else
zakc(cub,mcap3[i,j]); pecc(cub);end; if kk>1 then begin writeln(lst);
write(lst,'
');end;end;end;
end;
{40 под-ма печати мса без признаков }
procedure peca(mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;
pst:st);
var i,j,k,l,l1:integer;cub:cu;
begin writeln(lst);write(lst,'mca',pst,' ');
for i:=1 to myp do write(lst,' y',yp[i]);
for i:=1 to myp do begin writeln(lst);write(lst,' y',yp[i],' ');
for k:=1 to kk do begin for j:=1 to l do begin if k=1 then
zakc1(cub,mcap1[i,j]) else if k=2 then zakc1(cub,mcap2[i,j]) else
zakc1(cub,mcap3[i,j]); pecc(cub);end; if kk>1 then begin writeln(lst);
write(lst,'
');end;end;end;
end;
{41 под-ма ввода мса }
procedure vvod(var mcap1:mca;var mcap2:mca;var mcap3:mca;myp:integer);
var i,j,k,l:integer; label 1;
begin 1:for k:=1 to kk do for i:=1 to myp do begin
readln(f1,sim);for j:=1 to myp do begin if k=1 then
94
read(f1, mcap1[i,j]) else if k=2 then read(f1,mcap2[i,j])
else read(f1,mcap3[i,j]); end;end;
end;
{ 42 под-ма объединения автоматов }
procedure oba(var mcap1,mcap2,mcap3,mcap4:mca;var myp:integer;var yp:mas;
mcap11,mca12,mcap21,mcap22:mca;
yp1:mca;myp1:integer);
var i,j:integer;
begin myp:=0;
for i:=1 to myp do for j:=1 to myp do begin cub:=mcap1[i,j];
if cub<>' ' then begin cub[5]:='0';mcap1[i,j]:=cub;end;
cub:=mcap2[i,j];if cub<>' ' then begin cub[5]:='0';
mcap2[i,j]:=cub;end;end;
for i:=1 to myp do for j:=1 to myp do begin cub:=mcap11[i,j];
if cub<>' ' then begin cub[5]:='1';mcap11[i,j]:=cub;end;
cub:=mcap12[i,j];if cub<>' ' then begin cub[5]:='1';
mcap12[i,j]:=cub;end;end;
staa(mcap1,mcap2,mcap3,mcap4,yp,myp,mcap11,mcap12,mcap13,mcap14,kk);
sga(mcap1,mcap2,mcap3,mcap4,myp,kk);
end;
{ 43 под-ма пересечения автоматов }
procedure pera(var mcar1,mcar2:mca;var yp:mas;var myp:integer;
mcap11,mcap12,mcap21,mcap22:mca);
var i,j:integer;
begin
for i:=1 to myp do for j:=1 to myp do begin if mcar1[i,j]<>mcap11[i,j]
then mcar1[i,j]:=' '; end; end;
{ 44 под-ма вычитания автоматов }
procedure vica(var mcar1,mcar2:mca;yp:mas;myp:integer;
mcap11,mcap12,mcap21,mcap22:mca);
var i,j:integer;
begin
for i:=1 to myp do for j:=1 to myp do begin if mcar1[i,j]=mcap11[i,j]
then mcar1[i,j]:=' '; end; end;
{ 45 под-ма дополнения автомата }
procedure dopca(mcap11:mca;myp1:integer;var mcap1,mcap2:mca;
var myp,kk:integer);
label 1,2,3; var i,j,l:integer;
begin for k:=1 to kk do for i:=1
95
to myp do for j:=1 to myp do begin cub1:=mcap11[i,j];
if k=1 then cub:=mcau1[i,j] else cub:=mcau2[i,j];
for l:=1 to ns-1 do begin
if cub[l]=cub1[l] then goto 1 else
3:begin if k=1 then mcap1[i,j]:=cub else mcap2[i,j]:=cub;goto 2 end;
1: end;if cub[5]=cub1[5] then begin cub:=' ';goto 3;end else
if cub[5]=' ' then if cub1[5]='0' then cub[5]:='1' else begin
cub[5]:='0';goto 3;end else
if cub1[5]=' ' then begin cub:=' '; goto 3;end else goto 3; 2:end;
end;
{Головная программа}
begin clrscr;
assign(f1,'wca.dat'); reset(f1);
1: writeln(lst);read(f1,nva);if nva=0 then goto 2;
readln(f1,ngr,ns,kk,fam);writeln(lst,fam,st11,ngr);
writeln(lst,' вариант ',nva, ' ns=',ns,' kk=',kk );
read(f1,mya);read(f1,sim);
for i:=1 to mya do read(f1,ya[i]);{pecm(ya,mya,st1);}
vvod(mcaa1,mcaa2,mcaa3,mya);readln(f1,sim);
pecap(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,st1);
read(f1,myb);{peca(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,st1);}
read(f1,sim);for i:=1 to myb do read(f1,yb[i]);
{pecm(yb,myb,st2);}
vvod(mcab1,mcab2,mcab3,myb);readln(f1,sim);
pecap(mcab1,mcab2,mcab3,mcab4,yb,myb,st2);
{peca(mcab1,mcab2,mcab3,mcab4,yb,myb,st2);}
zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcac1,mcac2,mcac3,mcac4,yc,
myc);
{pecap(mcac1,mcac2,mcac3,mcac4,yc,myc,st3);}
zakan(yu,myu,mcab1,mcab2,mcab3,mcab4,yb,myb,mcad1,mcad2,mcad3,mcad4,y
d,myd);
{pecap(mcad1,mcad2,mcad3,mcad4,yd,myd,st4);}
{omlv(yc,yd,myc,myd,yf,myf);pecm(yf,myf,st6);}
{omlv(yd,yc,myd,myc,yg,myg);pecm(yg,myg,st7); }
{obm(ya,yb,mya,myb,yu,myu);yporm(yu,myu); pecm(yu,myu,st13);}
{pusa(mcae1,mcae2,mcae3,mcae4,mye);}
{pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);}
zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcae1,mcae2,mcae3,mcae4,
ye,mye);
pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);
zakan(yu,myu,mcab1,mcab2,mcab3,mcab4,yb,myb,mcaf1,mcaf2,mcaf3,mcaf4,
yf,myf);
96
pecap(mcaf1,mcaf2,mcaf3,mcaf4,yf,myf,st6); writeln(lst);
rava(mcae1,mcae2,mcae3,mcae4,mcaf1,mcaf2,mcaf3,mcaf4,myf,kk);
zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcag1,mcag2,mcag3,mcag4,
yg,myg);
{rava(mcag1,mcag2,mcag3,mcag4,mcae1,mcae2,mcae3,mcae4,myg,kk);}
{staa(mcae1,mcae2,mcae3,mcae4,ye,mye,mcaf1,mcaf2,mcaf3,mcaf4,kk);}
{pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);
sga(mcae1,mcae2,mcae3,mcae4,mye,kk);
writeln(lst);writeln(lst,'упрощение автомата на основе тождеств');
pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);
ypa(mcae1,mcae2,mcae3,mcae4,mye,kk);
writeln(lst);writeln(lst,'упр-е авт-а на основе неиз-ти лу-й');
pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);}
pusa(mcae1,mcae2,mcae3,mcae4,mye);
oba(mcac1,mcac2,mcac3,mcac4,yc,myc,mcaf1,mcaf2,mcaf3,mcaf4,kk);
writeln(lst);writeln(lst,'объединение автоматов');
pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);
kk:=1;
zakcao(mcaun1,mcaun2,spun,moi,mcac1,mcac2,moc);
pera(mcac1,mcac2,mcac3,mcac4,yc,myc,mcad1,mcad2,mcad3,mcad4);
writeln(lst);writeln(lst,'пересечение автоматов');
pecap(mcac1,mcac2,mcac3,mcac4,yc,myc,st3);
zakao(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcal1,mcal2,mcal3,mcal4,
yl,myl);
zakao(mcab1,mcab2,mcab3,mcab4,yb,myb,mcah1,mcah2,mcah3,mcah4,
yh,myh);
pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);
pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);
vica(mcal1,mcal2,mcal3,mcal4,yl,myl,mcah1,mcah2,mcah3,mcah4);
writeln(lst);writeln(lst,'прямая разность автоматов');
pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);
{zakao(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcal1,mcal2,mcal3,mcal4,
yl,myl);
zakao(mcab1,mcab2,mcab3,mcab4,yb,myb,mcah1,mcah2,mcah3,mcah4,
yh,myh);
pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);
pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);
vica(mcah1,mcah2,mcah3,mcah4,mcal1,mcal2,mcal3,mcal4,yh,myh,kk);
writeln(lst);writeln(lst,'обратная разность автоматов');
pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);
goto 1;
2:write(lst,' end');writeln(lst);
close(f1);
end.
97
ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЕ ВОПРОСЫ КУРСА
“ТЕОРИЯ ВТОМАТОВ”………………………..
1. Автомат, цифровой автомат (ЦА), состояние и автоматное время.
2. Цель и задачи теории автоматов.
3. Значение теории автоматов.
4. Краткая история автоматов, теории автоматов.
5. Структура ЦА, обозначения и изображения.
98
6. Классификация ЦА по закону функционирования (ЗФ). Связь между ЦА
Мили и Мура.
7. Классификация ЦА по различным критериям за исключением ЗФ.
8. Автоматные и логические сети.
9 Автоматные грамотность и культура.
10. Теории автоматов, сущность синтеза и анализа в них.
11. Свойства и характеристики ЦА.
12. Классификация языков описания ЦА.
13. ГСА содержательные и закодированные.
14. МСА. Условия корректности.
15. ФМП содержательные и закодированные Условия корректности.
16. СФП. Условия корректности.
17. ТП, ТВ и СТП и В. Условия корректности.
18. ТП, ОТП. Условия корректности.
19. МП, СМП и В. Условия корректности.
20. МП и ОМП. Условия корректности.
21. ГА Мили. Условия корректности.
22. ГА Мура. Условия корректности.
23. Классификация вершин графов. Условия их выявления на М и Т.
24. М, Т, Г ЦА Мили на R, S – триггере.
25. М, Т, Г ЦА Мура на триггере со счетным входом.
26. М, Т и ГА счетчика с N=3.
27. Диаграммы работы ЦА Мили.
28. Диаграммы работы ЦА Мура.
29. Связь между ЦА на графах.
30. ПОС автоматов.
31. ПАРС автоматов.
32. СОС автоматов.
33. Разбиение автомата на графе. Корректность разбиения автомата.
34. Разбиение автомата в Т и М. Корректность разбиения автомата.
35. Покрытие автомата. Проверка покрытия.
36. Объединение автоматов по Т, М и Г.
37. Пересечение автоматов по Т, М и Г.
38. Прямая разность автоматов по Т, М и Г.
39. Обратная разность автоматов по Т, М и Г.
40. Симметрическая разность автоматов по Т, М и Г.
41. Дополнение автомата по Т, М и Г.
42. Отношение между автоматами.
43. Равенство автоматов.
44. Упрощение автомата.
45. Элементарные конструкции Ф - языка.
46. Микрооперации (МО) инверсии, установки, передачи.
47. Микрооперации (МО) счета, сравнения, составления.
99
48. МО группы сложения.
49. МО группы сдвига.
50. Комбинированные МО.
51. Двоичные выражения(ДВ), простое ДВ. Порядок выполнения МО.
52. ДВ условные. Порядок вычисления отношений, МО.
53. Тождества(Т) для отдельных операций.
54. Т склеиваеия (ТСК).
55. Т поглощения (ТПОГ).
56. Т Порецкого (ТПОР).
57. Т де Моргана (ТДМ).
58. Т для общего “множителя” и “слjгаемого” совершенного ранга.
59. Автоматы устройства обработки цифровой информации с микропрограмным управлением.
60. Операционные автоматы.
61. Управляющие ЦА (УЦА) с ЖЛ.
62. УЦА с ПЛ.
63. Этапы синтеза УЦА. Структура автомата.
64. Отметки ГСА для ЦА Мили.
65. Отметки ГСА для ЦА Мура.
66. Синтез средней части УЦА Мили.
67. Синтез средней части УЦА Мура.
68. Синтез выходной части УЦА Мили.
69. Синтез выходной части УЦА Мура.
70. Синтез входной части УЦА Мили.
71. Синтез входной части УЦА Мура.
72. Задача, этапы и методы синтеза логических схем (СЛС). СЛС при n=1.
73. СЛС при n=1 классическим методом.
74. СЛС при оптимальном доопределении на основе перебора.
75. СЛС при оптимальном доопределении специальным методом.
76. СЛС при нулевой связи (НС).
77. СЛС при слабой связи (СЛС).
78. СЛС при средней связи (СРС) на примере DC.
79. СЛС при средней связи.
80. СЛС при сильной связи (СИС).
81. Задачи, этапы и методы анализа логических схем (АЛС). АЛС при n=1.
82. АЛС при n = 2.
83. Отказы, сбои и неисправности. Реакция на них.
84. Виды избыточности, вес комбинации, кодовое расстояние.
85. Условия возможности контроля(К) и диагностирования (Д).
86. К и Д передач. Схема К и Д.
87. К дизъюнкции, схема контроля.
88. К конъюнкции, схема контроля.
89. К сложения по модулю 2, схема контроля.
100
90. К инверсии, схема контроля.
91. К эквивалентности, схема контроля.
92. К импликации, схема контроля.
93. К коимпликации, схема контроля.
94. К операции Шеффера, схема контроля.
95. К операции Пирса, схема контроля.
96. К сложения, схема контроля.
97. К вычитания, схема контроля.
98. К умножения, схема контроля.
99. К деления, схема контроля.
101
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ……………………………………………………..…………
1. ОБЩИЕ СВЕДЕНИЯ О ЦИФРОВЫХ АВТОМАТАХ ….....……….…...
1.1. Основные определения. Обозначения. Изображения………………..
1.2. Способы описания и построения автоматов ………………………….
1.3. Об операциях над автоматами, о законах и тождествах
алгебры автоматов………………………………………………..……..
1.4. Цифровые автоматы 1-го и 2-го рода, автоматы Мили и Мура……..
1.5. Классификация автоматов ……………………………………….. .…..
1.6. Свойства и характеристики автоматов……………………………….
1.7. Автоматы, выполняющие роль 0 и 1 в алгебре автоматов.
С-автомат …………………………………………………..…………....
1.8. Равенство, эквивалентность, изоморфизм автоматов ..………………
1.9. Автоматные грамотность и культура………………………………….
1.10. Значение теории автоматов в науке, технике и обществе …………...
1.11. Краткая историческая справка о зарождении и
развитии автоматов. Виды теорий автоматов ……………………….
3
4
4
5
6
7
9
11
12
12
13
13
13
2. СПОСОБЫ ЗАДАНИЯ (ОПИСАНИЯ)
ЦИФРОВЫХ АВТОМАТОВ …………………………………………….
2.1. Начальные языки………………………………………………………...
2.1.1. Графическая схема алгоритма.……………………………………….
2.1.2. Матричная схема алгоритма………………………………………….
2.1.3. Функциональная микропрограмма…………………………………..
2.1.4. Система формул переходов…………………………………………..
2.2. Автоматные языки……………………………………………………….
2.2.1. Таблицы переходов, выходов………………………………………..
2.2.2. Матрицы переходов, выходов…………………………………….….
2.2.3. Графы автоматов………………………………………………………
14
14
15
18
19
20
21
21
24
26
3. ОПЕРАЦИИ НАД ЦИФРОВЫМИ АВТОМАТАМИ …………………...
3.1. Операции декомпозиции………………………………………………..
3.1.1. Разбиение. Покрытие …………………………………………………
3.1.2. Проверка разбиения, покрытия ……………………………………...
3.2. Операции композиции…………………………………………………..
3.2.1. Последовательное соединение……………………………………….
3.2.2. Параллельное соединение……………………………………………
3.2.3. Соединение с обратной связью ……………………………………...
3.3. Алгебраические операции………………………………………………
3.3.1. Объединение частей автомата……………………………………….
3.3.2. Настраиваемое объединение…………………………………………
28
28
28
31
31
33
34
35
36
36
37
102
3.3.3. Пересечение автоматов……………………………………………..
3.3.3. Вычитание…………………………………………………………….
3.3.4. Симметрическая разность………………………………………….
3.3.5. Дополнение…………………………………………………………..
3.4. Операции проверки отношения………………………………………..
3.4.1. Проверка отношения………………………………………………..
3.4.2. Проверка равенства………………………………………………….
3.5. Операции упрощения цифрового автомата……………………………
3.5.1. Упрощение цифрового автомата за счет упрощения алгоритма. …
3.5.2. Упрощение цифрового автомата за счет тождеств ………………..
39
40
41
41
41
42
42
42
42
45
4. ЗАКОНЫ И ТОЖДЕСТВА АЛГЕБРЫ АВТОМАТОВ….……………..
4.1. Законы……………………………………………………………………
4.1.1. Переместительный закон……………………………………………
4.1.2. Сочетательный закон………………………………………………..
4.1.3. Распределительный закон…………………………………………..
4.2. Тождества……………………………………………………………….
4.2.1. Тождества отдельных операций ……………………………………
4.2.2. Тождества склеивания ………………………………………………
4.2.3. Тождества поглощения………………………………………………
4.2.4. Тождества Порецкого ……………………………………………..
4.2.5. Тождества де Моргана ……………………………………………..
4.2.6. Тождества для общих “множителя” и “слагаемого”
совершенного ранга (тождества Триханова)………………………
47
47
47
47
48
5. ВОПРОСЫ СИНТЕЗА И АНАЛИЗА ЛОГИЧЕС КИХ СХЕМ…………
5.1. Синтез логических схем……..…………………………………………
5.1.1. Синтез схем с одним выходом с соптимальным
доопределением……………………………………………………..
5.1.2. Синтез схем с двумя выходами с средней степенью связи.………
5.1.3. Синтез схем с двумя выходами с сильной степенью связи………
5.2. Анализ логических схем………………………………………………..
5.2.1. Анализ логических схем с одним выходом…………..……….……
5.2.2. Анализ логических схем с двумя выходами………………….……
50
50
6. АВТОМАТЫ УСТРОЙСТВА ОБРАБОТКИ ЦИФРОВОЙ
ИНФОРМАЦИИ. СИНТЕЗ УПРАВЛЯЮЩЕГО АВТОМАТА
С ЖЕСТКОЙ ЛОГИКОЙ…..……………………………………….……..
6.1. Структура устройства обработки цифровой
информации по В.М.Глушкову…………………………………………
6.2. Операционные автоматы ……………………………………………….
6.3. Управляющие автоматы ………………………………………………..
58
48
48
49
49
49
49
49
50
51
54
57
57
58
58
59
60
61
103
6.3.1. Управляющие автоматы с жесткой логи…………………………….
6.3.2. Управляющие автоматы с программируемой логикой……………
6.4. Синтез управляющего автомата с жёсткой логикой………………….
6.4.1. Этапы синтеза………………………………………………………….
6.4.1.1. Задание условий работы автомата ……………………………….
6.4.1.2. Отметки граф - схемы алгоритма ………………………………..
6.4.1.3. Графы автоматов ………………………………………………….
6.4.1.4. Cинтез запоминающей части …………………………………….
6.4.1.5. Синтез выходной части……………………………………………
6.4.1.6. Синтез входной части……………………………………………..
61
61
63
63
64
64
64
66
67
68
7. КОНТРОЛЬ И ДИАГНОСТИРОВАНИЕ РАБОТЫ
ЦИФРОВЫХ АВТОМАТОВ……………………………………………..
7.1. Контроль логических операций………………………………………..
7.2. Контроль арифметических операций…..………………………….….
7.3. Контроль и диагностирование передач информации…………… …..
74
74
75
75
8. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕОБРАЗОВАНИЯ
ЦИФРОВЫХ АВТОМАТОВ……………………………………………..
8.1. Подпрограммы алгебраических операций……………………………
8.1.1. Подпрограмма настраиваемого объединения……………………..
8.1.2. Подпрограмма пересечения ………..………………………………
8.1.3. Подпрограмма вычитания…………………………………………..
8.1.4. Подпрограмма симметрической разности………………………….
8.1.5. Подпрограмма дополнения………………………………………….
8.2. Подпрограммы операций проверки отношения………………………
8.2.1. Подпрограмма проверки отношения……………………………….
8.2.2. Подпрограмма проверки равенства………………….……………..
8.3. Подпрограммы вспомогательных операций …………………………
8.3.1. Подпрограмма ввода…………………………………….………….
8.3.2. Подпрограмма вывода с признаками………………………………
8.3.3. Подпрограмма вывода без признаков………………………………
8.3.4. Подпрограмма обнуления мса………………………………………
8.3.5. Подпрограмма определения пустоты мса…………………………
8.3.6. Подпрограмма 'закачки' мсар1 в однородную мса………………..
8.3.7. Подпрограмма 'закачки' мсар1 в неоднородную мса……………..
76
77
77
77
78
78
79
79
79
80
80
80
81
81
81
81
82
82
ЗАКЛЮЧЕНИЕ……………………………………………………………
83
ЛИТЕРАТУРА…………………………………………………………….
84
104
ПРИЛОЖЕНИЕ 1. ПОДПРОГРАММЫ РЕАЛИЗАЦИИ
ОПЕРАЦИЙ.НАД ЦИФРОВЫМИ
АВТОМАТАМИ……..………………………………...
ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЕ ВОПРОСЫ КУРСА
“ТЕОРИЯ АВТОМАТОВ”………………………………
85
98
Александр Васильевич Триханов
ТЕОРИЯ АВТОМАТОВ
Учебное пособие
Научный редактор – д.т.н., профессор Переверзев Павел Петрович
Редакторы - Регентов Андрей Витальевич,
Триханова Наталья Викторовна
Корректор – Денисов Пётр Олегович
Подписано к печати 30.04.99.
Формат 60*84/16. Бумага N2.
Плоская печать. Усл. печ. л. 6,04 Ус.-изд. л. 5,47.
Тираж 300 экз. Заказ N
. Бесплатно.
ИПФ. Лицензия ЛТ N1 от 18.07.84.
Типография ТПУ, 634004, Томск, пр. Ленина, 30.
105
Download