Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
42 Мухопад Теория дискретных устройств.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
10.48 Mб
Скачать

5.3. Моделирование автоматов управления

Проектирование автоматов управления перед их практической реализацией целесообразно завершать моделированием работы на ЭВМ*.

Наибольшую сложность при моделировании автомата представляет реализация систем булевых функций для схем F1 и F2. Причем для автоматов Мура речь идет о схеме F1 (булевы функции, осуществляющие переходы a(t)→a(t+1)). В этом плане автоматы Мура выгодно отличаются от автоматов Мили тривиальной простотой схемы формирования выходных сигналов (набор схем «ИЛИ»). Поэтому и рассмотрим методику моделирования схем автоматов Мура.

МЕТОДЫ МОДЕЛИРОВАНИЯ АВТОМАТОВ

Самый простой метод моделирования заключается в том, что моделируется автомат методом вложения в ОЗУ ЭВМ всей таблицы переходов и выходов автомата. Очевидно, что для классической схемы такой подход возможен лишь для простейших автоматов с 3–4 логическими условиями и числом состояний в пределах одного десятка.

Наиболее эффективный метод реализации ФАЛ на ЭВМ – метод на основе использования так называемого кода маски, изложенный в [8] и упомянутый в работе [2].

Идея метода заключается в следующем:

  1. Булевы функции F1 после минимизации СДНФ записываются в ДНФ.

  2. Поскольку кроме множества [x], отражающего коды a(t), в качестве аргумента F2 используется множество {α}, то образуется конкатенация {α} {x}. Причем для каждого дизъюнктивного члена конъюнкции ДНФ не все переменные из {α} или {x} присутствуют. Однако в модели их нужно указать все, пометив отсутствующие αi или хj знаком «безразличия»: будут они равны «1» или «0», значение функции не меняется. Обычно такой знак помечается символом «~».

  3. Код a(t) обозначают последовательностью разрядов хj множества {x(t)}, а код a(t + 1) – отдельными символами.

Тогда m – разрядность кода состояния а(t) и а(t +1).

  1. Теперь для каждой конъюнкции yi можно написать код маски, разрешающий проверку совпадения текущего кода X и Y с помощью установки 0 в разрядах соответствующих или 1 в разрядах кода маски соответствующих x или .

Поскольку число конъюнкций k(i) различно для каждого yi, то и количество кодов маски будет равно i*k(i), .

Далее не будем символьно различать {α} {x}, а будем говорить о едином коде X как конкатенации {α} и {x(t)}.

5. Вычислив текущее а(t + 1) и определив yi, программист прежде чем проводить операцию сложения по mod 2, должен каждую конъюнкцию yi умножить на код маски, соответствующий этой конъюнкции.

Только этот получившийся код будет сравниваться (сложением ) с «правильными» значениями соответствующей конъюнкции yi.

6. Очевидно, что операция сравнения производится не для всех k(i), а до получения первого ответа yi = 1. Если же необходимо принять решение yi = 0, то нужно вести сравнения до последнего i = m.

7. Следует обратить внимание также на то, что все «правильные» значения конъюнкций yi ( ) должны быть сформированы в памяти ЭВМ отдельным массивом.

Реализация метода (п. 1–7) подробно описана в [8].

МОДЕЛИРОВАНИЕ СЛОЖНЫХ АВТОМАТОВ

Для моделирования сложных автоматов метод [8] становится слишком громоздким и практически не реализуемым на малоразрядных микроконтроллерах.

Предложенная структурная организация сложного автомата с выбором логического условия упрощает процедуру его моделирования, так как уменьшение числа переменных функции переходов F1 с m + q на m + 2 позволяет воспользоваться для моделирования комбинационных схем методом прямого считывания из ПЗУ. В память микроконтроллера необходимо записать по таблице 42 соответствия α β {x}→{y}, а также соответствие xm…x2x1→Zr…Z2Z1 (F3). По структурной схеме сложного автомата (рис. 93) составим схему информационных связей подсистем в модели автомата (рис. 100). На основании этой схемы определяется блок-схема алгоритма моделирования на 8-разрядном микроконтроллере автомата с (m + 2) ≤ 8 практически с любым числом логических условий {α}.

Запишем алгоритм моделирования в виде табл. 43. Чтобы не путать операторы модели с командами Аj исходной ГСА, обозначим операторы модели символами R.

Рис. 100. Информационные и управляющие связи программной модели автомата

Рис. 101

Таблица 42

п/п

Адрес

Выход

0

0

1

0000

0001

0

000

1

0

1

0001

0010

0

000

2

0

1

0

0

0010

0001

0011

1

001

3

0

1

0

0

0011

0100

1101

2

010

4

0

1

1000

0101

0

000

5

0

1

0101

0110

0

000

6

0

1

0

0

0110

1100

0111

3

011

-

-

-

-

-

-

-

14

0

1

0

0

1110

1010

1011

4

100

Адрес

Выход

Таблица 43

Операции

Примечания

Установка исходного значения α, β, {x}

R1

B1 = F1(αβxm…x2x1)

Prd(t + 1) = B1, Pr(F3) = B1

Опрос F1 Prd(t + 1), условное обозначение ячеек памяти

Zr…z2z1 = F3(x3…x2x1)

Опрос F3

Α(t + 1) = M(zk…z2z1)

Опрос мультиплексора

Β(t + 1) =

R5

Образование конкатенации αβxm…x2x1 из α(t + 1) β(t + 1) ym…y2y1

R6

Aj = F2(xm…x2x1)

Опрос F2

R7

Включение таймера Т

R8

Печать «номер состояния», «номер Aj». Установка в «нулевое» состояние Pr Aj

R9

Печать «конец моделирования»

R10

Выбор нового значения α, β (имитация ОУ)

При аппаратной реализации для несовмещенных команд достаточно иметь только дешифратор, а для общего случая дешифратор и в схеме F2 набор элементов «ИЛИ», объединяющих те выходы дешифраторов, которым соответствует одна и та же команда Аj. При программной реализации нет необходимости моделировать отдельно дешифратор и отдельно набор элементов «ИЛИ». Достаточно записать в память микроконтроллера таблицу соответствия a(t) – Aj (табл. 44). В этом случае адрес таблицы F2 будет код xm…x2x1, а на выходе необходим регистр памяти с разрядностью, равной числу команд Аj (j=1, 2, …, k). Регистр должен позволять установку каждого бита.

Таблица 44

a(t)

1

2

3

4

5

6

7

8

9

10

11

Aj

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

A11

В данном конкретном примере нет совмещения команд, т.е. одному состоянию соответствует одна команда. В общем случае некоторым aj(t) может соответствовать выдача одновременно не одной, а двух команд. Ясно, что понятию регистров в программной модели соответствуют закрепленные ячейки памяти ОЗУ возможно, с этим же наименованием.

Содержание ОЗУ для F1, F3 определяется по табл. 42, а для F2 выписываются соответствия Aj→ai для всех i, j из ГСА (табл. 44). Схема (ЛСА) алгоритмической модели автомата будет обеспечивать правильную работу автомата в том случае, если для каждого периода Т будут определены выходные сигналы операционного устройства (ОУ).

При составлении программы для микроконтроллера, которая должна работать с реальным операционным устройством, целесообразно поставить отдельную независимую микросхему мультиплексора, тем более, если q ≈ 16. Если же программа создается только для проверки правильности функционирования автомата, то ни аппаратный, ни, тем более, программный мультиплексор не нужен. В этом случае необходимо правильно задать исходные данные с соответствующими (R10) значениями α для обеспечения переходов автомата по выбранному пути в графе переходов.

Поскольку для каждого нового периода Т необходимо выбирать значения α, β, то необходимо задать путь в графе переходов. Например, «заставим» модель переходить из состояния d(t) в d(t+1) строго последовательно по наиболее длинному пути. Для примера (рис. 97) получим d0d1d2d3d4d5d6d7d8d0.

В таблице 45 приведена последовательность выбора αj и соответственно значения α, β для оператора А10.

Таблица 45

d(t)

α1

α2

α3

α4

α5

α6

α

β

Прим.

0

-

-

-

-

-

-

0

1

β

1

-

-

-

-

-

-

0

1

β

2

1

-

-

-

-

-

1

0

α

3

1

0

0

4

-

-

-

-

-

-

0

1

β

5

-

-

-

-

-

-

0

1

β

6

-

-

-

-

1

-

1

0

α

7

-

-

-

-

-

1

1

0

α

8

-

-

-

-

-

-

0

1

β

0

-

-

-

-

-

-

0

1

β

Решение вопросов проверки работоспособности МПА по программной модели упрощается, если из графа переходов выделить дерево (рис. 101).

Переложение алгоритмической модели (ЛСА) на язык ассемблера или язык высокого уровня С++ не представляет затруднений для студентов, изучивших курс «Основы программирования».