Реализация программного обеспечения управляющего автомата

Описание на языке высокого уровня программы управляющего автомата нового типа, который формирует код нового состояния автомата и адрес мультиплексора. Изучение свойств, динамики системы. Оценка возможности изменения условий. Составление листинга классов.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 16.02.2016
Размер файла 246,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Федеральное агентство железнодорожного транспорта

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

"Иркутский государственный университет путей сообщения

(ФГБОУ ВПО ИрГУПС)"

Факультет: "Транспортные системы"

Кафедра: "Автоматизация производственных процессов"

Предмет: "Информационные системы в мехатронике и робототехнике"

Контрольная работа

Реализация программного обеспечения управляющего автомата

Выполнил:

студент группы МРм-15-1,

Федоров В.В.

Проверил: Мухопад А.Ю.

Иркутск 2015

Задание

По заданной граф-схеме алгоритма (рис. 1), реализовать на языке высокого уровня, программу управляющего автомата нового типа, который формирует код нового состояния автомата и адрес мультиплексора.

Рис. 1. Исходная граф-схема алгоритма работы автомата.

Считаем, что микропроцессор подключен к микроконтроллеру как внешнее устройство, т.е. программой не моделируется.

Дешифратор кода состояния так же не моделируется, а подключен к микроконтроллеру как внешнее устройство.

Следовательно, программное обеспечение должно обеспечивать опрос комбинационных схем F1 и F3, опрос триггера микропроцессора (?j) и обеспечивать временное взаимодействие той последовательности, как работает автомат при аппаратной реализации.

Построение модели

Преобразуем исходную граф-схему, введя пустые операторы и пронумеруем состояния (рис. 2).

Рис. 2. Преобразованная граф-схема

Построим диаграмму переходов (рис. 3)

Рис. 3. Диаграмма переходов

Преобразуем диаграмму переходов с учетом циклов (рис. 4).

Рис. 4. Преобразованная диаграмма переходов

По полученной диаграмме переходов составим таблицу состояний (таблица 1).

Таблица 1. Определение F1/

?(t)

?

N(t)

?(t+1)

N(t+1)

1

0

1

0000

1

0001

2

1

1

0001

2

0010

3

2

?1

0010

3

0011

4

2

?1

0010

4

0100

5

3

?5

0011

7

0111

6

3

?5

0011

5

0101

7

4

?2

0100

6

0110

8

4

?2

0100

5

0101

9

5

1

0101

8

1000

10

6

1

0110

8

1000

11

7

1

0111

8

1000

12

8

?3

1000

10

1010

13

8

?3

1000

9

1001

14

9

1

1001

11

1011

15

10

1

1010

11

1011

16

11

1

1011

14

1110

17

12

?4

1100

13

1101

18

12

?4

1100

14

1110

19

13

1

1101

0

0000

20

14

1

1110

12

1100

По построенной таблице можно определить булевы функции для нахождения кода нового состояния ?(t+1) по коду предыдущего состояния и комплексу логических условий.

, где

y1 = (!x1 & !x2 & !x3 & !x4) + (?1 & !x4 & !x3 & x2 & !x1) + (?5 & !x4 & !x3 & x2 & x1) + (!?5 & !x4 & !x3 & x2 & x1) + (!?2 & !x4 & x3 & !x2 & !x1) + (!?3 & x4 & !x3 & !x2 & !x1) + (x4 & !x3 & !x2 & x1) + (x4 & !x3 & x2 & !x1) + (?4 & x4 & x3 & !x2 & !x1);

y2 = (!x4 & !x3 & !x2 & x1) + (?1 & !x4 & !x3 & x2 & !x1) + (?5 & !x4 & !x3 & x2 & x1) + (?2 & !x4 & x3 & !x2 & !x1) + (?3 & x4 & !x3 & !x2 & !x1) + (x4 & !x3 & !x2 & x1) + (x4 & !x3 & x2 & !x1) + (x4 & !x3 & x2 & x1);

y3 = (!?1 & !x4 & !x3 & x2 & !x1) + (?5 & !x4 & !x3 & x2 & x1) + (!?5 & !x4 & !x3 & x2 & x1) + (?2 & !x4 & x3 & !x2 & !x1) + (!?2 & !x4 & x3 & !x2 & !x1) + (x4 & !x3 & x2 & x1) + (?4 & x4 & x3 & !x2 & !x1) + (!?4 & x4 & x3 & !x2 & !x1) + (x4 & x3 & x2 & !x1);

y4 = (!x4 & x3 & !x2 & x1) + (!x4 & x3 & x2 & !x1) + (!x4 & x3 & x2 & x1) + (?3 & x4 & !x3 & !x2 & !x1) + (!?3 & x4 & !x3 & !x2 & !x1) + (x4 & !x3 & !x2 & x1) + (x4 & !x3 & x2 & !x1) + (x4 & !x3 & x2 & x1) + (?4 & x4 & x3 & !x2 & !x1) + (!?4 & x4 & x3 & !x2 & !x1) + (x4 & x3 & x2 & !x1);

, где

Таблица 2. Определение F3

?

a(n-1)

F1(y4y3y2y1)

F3(z3z2z1)

?1

a2

0010

001

?2

a4

0100

010

?3

a8

1000

011

?4

a13

11000

100

?5

a3

0011

101

-

aj

-

000

программа автомат мультиплексор листинг

Основываясь на полученных значения F1, F3 реализуем программу для управления автоматом на языке Java. Листинг основных классов приведен в приложении 1.

Выводы

В рамках работы были получены навыки разработки программ для конечных автоматов и построения функция F1, F3 на основе изучения свойств и динамики системы.

Реализованное программное обеспечение позволяет производить моделирование состояния автомата как в пошаговом режиме (рис. 5), так и в циклическом (рис. 6), кроме того есть возможность изменения начальных условий (рис. 7).

Рис. 5. Одиночный режим работы.

Рис. 6. Цикличный режим работы.

Рис. 7. Цикличный режим работы с измененными условиями.

Приложение

Листинг основных классов

private void getOut(String f1, String z1){

jTextArea1.setText(jTextArea1.getText() + f1 + "\n");

jTextArea2.setText(jTextArea2.getText()+z1 + "\n");

jTextField1.setText(f1);

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

String vhod = jTextField1.getText();

if (vhod.length() > 4) {

jLabel8.setText("Ошибка входной последовательности!");

} else {

// Определение переменных

boolean x1, x2, x3, x4, y1, y2, y3, y4, a1, a2, a3, a4, a5;

String f1 = "0000", z1 = "";

int flag = 0, count = 0, border=0;

if(jComboBox6.getSelectedIndex() == 1){

border = 1;

}else{

border = 30;

}

while (count < border) {

// Обработка фходных значений

count++;

if (vhod.substring(0, 1).equals("0")) {

x4 = false;

} else {

x4 = true;

}

if (vhod.substring(1, 2).equals("0")) {

x3 = false;

} else {

x3 = true;

}

if (vhod.substring(2, 3).equals("0")) {

x2 = false;

} else {

x2 = true;

}

if (vhod.substring(3, 4).equals("0")) {

x1 = false;

} else {

x1 = true;

}

if (jComboBox1.getSelectedIndex() == 1) {

a1 = false;

} else {

a1 = true;

}

if (jComboBox2.getSelectedIndex() == 1) {

a2 = false;

} else {

a2 = true;

}

if (jComboBox3.getSelectedIndex() == 1) {

a3 = false;

} else {

a3 = true;

}

if (jComboBox4.getSelectedIndex() == 1) {

a4 = false;

} else {

a4 = true;

}

if (jComboBox5.getSelectedIndex() == 1) {

a5 = false;

} else {

a5 = true;

}

//Расчет F1

y1 = (!x1 & !x2 & !x3 & !x4)

| (a1 & !x4 & !x3 & x2 & !x1)

| (a5 & !x4 & !x3 & x2 & x1)

| (!a5 & !x4 & !x3 & x2 & x1)

| (!a2 & !x4 & x3 & !x2 & !x1)

| (!a3 & x4 & !x3 & !x2 & !x1)

| (x4 & !x3 & !x2 & x1)

| (x4 & !x3 & x2 & !x1)

| (a4 & x4 & x3 & !x2 & !x1);

y2 = (!x4 & !x3 & !x2 & x1)

| (a1 & !x4 & !x3 & x2 & !x1)

| (a5 & !x4 & !x3 & x2 & x1)

| (a2 & !x4 & x3 & !x2 & !x1)

| (a3 & x4 & !x3 & !x2 & !x1)

| (x4 & !x3 & !x2 & x1)

| (x4 & !x3 & x2 & !x1)

| (x4 & !x3 & x2 & x1);

y3 = (!a1 & !x4 & !x3 & x2 & !x1)

| (a5 & !x4 & !x3 & x2 & x1)

| (!a5 & !x4 & !x3 & x2 & x1)

| (a2 & !x4 & x3 & !x2 & !x1)

| (!a2 & !x4 & x3 & !x2 & !x1)

| (x4 & !x3 & x2 & x1)

| (a4 & x4 & x3 & !x2 & !x1)

| (!a4 & x4 & x3 & !x2 & !x1)

| (x4 & x3 & x2 & !x1);

y4 = (!x4 & x3 & !x2 & x1)

| (!x4 & x3 & x2 & !x1)

| (!x4 & x3 & x2 & x1)

| (a3 & x4 & !x3 & !x2 & !x1)

| (!a3 & x4 & !x3 & !x2 & !x1)

| (x4 & !x3 & !x2 & x1)

| (x4 & !x3 & x2 & !x1)

| (x4 & !x3 & x2 & x1)

| (a4 & x4 & x3 & !x2 & !x1)

| (!a4 & x4 & x3 & !x2 & !x1)

| (x4 & x3 & x2 & !x1);

if (y4) {

f1 = "1";

} else {

f1 = "0";

}

if (y3) {

f1 += "1";

} else {

f1 += "0";

}

if (y2) {

f1 += "1";

} else {

f1 += "0";

}

if (y1) {

f1 += "1";

} else {

f1 += "0";

}

switch (f1) {

case "0010":

z1 = "001";

break;

case "0100":

z1 = "010";

break;

case "1000":

z1 = "011";

break;

case "1100":

z1 = "100";

break;

case "0011":

z1 = "101";

break;

default:

z1 = "000";

break;

}

if(count == 1 & border > 1){

jTextArea1.setText(vhod + "\n");

jTextArea2.setText(z1 + "\n");

}

getOut(f1,z1);

vhod = f1;

if(f1.equals("0000")){

break;

}

}

}

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

jTextArea1.setText("");

jTextArea2.setText("");

}

Размещено на Allbest.ru


Подобные документы

  • Разработка управляющего автомата, ориентированного на выполнение заданной микрооперации. Разработка алгоритма работы управляющего автомата. Листинг программы. Выбор оптимального варианта кодирования состояний автомата. Синтез функции возбуждения.

    курсовая работа [506,9 K], добавлен 26.12.2012

  • Общая структура и принцип функционирования синхронного управляющего автомата. Анализ граф схемы алгоритма управляющего автомата и детализация блока памяти. Структурный синтез логического преобразователя и разработка электрической функциональной схемы.

    курсовая работа [222,6 K], добавлен 19.02.2013

  • Определение функций выходных сигналов и сигналов возбуждения. Построение функциональной схемы управляющего автомата. Способы выполнения операции умножения с фиксированной и с плавающей запятой. Получение функциональной ГСА. Кодирование состояния автомата.

    курсовая работа [60,9 K], добавлен 15.02.2011

  • Разработка управляющего автомата процессора с жесткой логикой в САПР Quartus II. Построение схемы функциональной микропрограммы команды "Исключающее ИЛИ" в размеченном виде. Унитарное кодирование состояний автомата. Запись функций переходов и выходов.

    курсовая работа [671,3 K], добавлен 04.11.2014

  • Разработка функциональной схемы управляющего микропрограммного автомата. Построение графов автомата для модели Мили и Мура. Кодирование состояний для модели Мура на D-триггерах. Алгоритм умножения чисел в дополнительном коде с простой коррекцией.

    курсовая работа [764,0 K], добавлен 27.08.2012

  • Принцип микропрограммного управления. Управляющие автоматы с жесткой и программируемой логикой. Граф-схемы алгоритмов. Синтез управляющего автомата по граф-схеме алгоритма. Построение управляющего автомата с программируемой логикой на основе ПЗУ.

    курсовая работа [263,8 K], добавлен 25.01.2011

  • Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.

    контрольная работа [141,5 K], добавлен 14.10.2012

  • Методика минимизации абстрактного автомата. Порядок построения графа полученного минимизированного автомата. Синтез на элементах ИЛИ-НЕ и Т-тригерах. Составление таблицы переходов. Разработка микропрограммного автомата, реализующего микропрограмму.

    курсовая работа [997,7 K], добавлен 28.03.2011

  • Функциональная и структурная организация ЭВМ. Разработка функциональных микропрограмм заданных команд. Их объединение и привязка к структуре операционного автомата процессора. Разработка управляющего автомата процессора с программируемой логикой.

    дипломная работа [4,0 M], добавлен 25.03.2012

  • Принцип работы процессора (одномагистральная структура). Временные диаграммы, описывающие выполнение микроопераций для каждой команды. Структурная схема управляющего автомата на основе памяти с одним полем адреса. Описание процессора на языке Active VHDL.

    курсовая работа [621,0 K], добавлен 24.09.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.