Реализация программного обеспечения управляющего автомата
Описание на языке высокого уровня программы управляющего автомата нового типа, который формирует код нового состояния автомата и адрес мультиплексора. Изучение свойств, динамики системы. Оценка возможности изменения условий. Составление листинга классов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 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