Контрольная работа по дискретной математике (БГУИР, ВМСИС, 3 курс)
.doc
З а д а н и е №2. Закодировать состояние методом «желательных соседств» и получить как можно более простую систему булевых функций, представляющих сигналы возбуждения JK-триггеров и выходной сигнал для автомата, представленного следующей таблицей переходов:
-
00
01
10
1
-
3,0
-
2
1,1
4,0
-
3
3,0
-
2,-
4
2,1
3,-
4,1
Р е ш е н и е .
Абстрактным автоматом называется система S={A, Z, W, , , a1}, где A={a1, ..., aМ} – алфавит состояний, Z={z1, ..., zF} – входной алфавит, W={w1, ..., wG} – выходной алфавит, – функция переходов, –функция выходов, a1 – начальное состояние автомата.
Поскольку функции и определены на конечных множествах, то их можно задавать таблицами, обычно две таблицы объединяют в одну x: ZxA ZxW, называемой таблицей переходов автомата.
Автомат S называется частичным, или не полностью определенным автоматом, если хотя бы одна из его двух функций не полностью определена, т.е. для некоторых пар (состояние, вход) значение функции или обе функции не определены. В автоматной таблице неполная определенность автомата выражается в том, что некоторые ее клетки незаполненные.
Задача кодирования состояний является одной из основных задач канонического метода структурного синтеза автоматов. Суть кодирование заключается в установлении взаимно-однозначного соответствия между множеством A={a1, ..., aМ} состояний автомата и множеством R-компонентных векторов {К1,…, КM), КM=(еM1,…,eMR}, где еMR, - состояние r-го элемента памяти r=1,…,R.
Если при переходе автомата из одного состояния в другое должны изменить свои состояния сразу несколько запоминающих элементов, то между ними начинаются состязания, или гонки. Для обеспечения заданного закона функционирования автомата необходимо исключить возможность появления критических гонок. Наряду с аппаратными методами, существуют и логические методы, одним из которых является кодирование методом «желательных соседств». Суть этого метода заключается в том, что соседние состояния автомата кодируются наборами, различающимися состоянием только одного элемента памяти. Существует несколько алгоритмов соседнего кодирования. Соседнее кодирование, однако, не всегда возможно. Учитывая, что в задании не требуется проверить наличие возможности такого кодирования, то буде считать что оно возможно.
Согласно заданию
элементом памяти является JK-триггер.
JK-триггер
– это асинхронный двухступенчатый
триггер, он имеет два информационных
входа. Таблица 6 определяет переходы
JK-триггера согласно логической формулы
![]()
Таблица 6.
Состояния JK-триггера.
-
J K
S
00
01
10
11
0
0
0
1
1
1
1
0
1
0
Возможны следующие режимы работы JK-триггера:
J=0, K=0 – режим хранения информации (значение триггера не изменяется);
J=0, K=1 – режим сброса (триггер всегда устанавливается в 0);
J=1, K=0 – режим записи логической единицы (триггер устанавливается в 1);
J=1, K=1 – режим инверсии содержимого триггера.
Закодируем заданный автомат методом «желательных соседств»
По виду представленной таблицы можно определить, что задан автомат Мили.
Таблица 6.
Таблица переходов
-
00
01
10
1
-
0
-
2
1
0
-
3
0
-
-
4
1
-
1
Таблица 7.
Таблица выходов.
-
00
01
10
1
-
3
-
2
1
4
-
3
3
-
2
4
2
3
4
Определим длину входного алфавита:
![]()
Определим длину выходного алфавита:
![]()
Определим количество элементов памяти (JS-триггеров), которые будут кодировать внутренние состояния МПА:
![]()
Рис. 1. Структурная
схема автомата
На основании имеющихся и выше полученных данных заполним прямую структурную таблицу автомата Мили (таблица 8).
Таблица 8.
Прямая структурная таблица Мили.
|
№ п/п |
Исходное состояние |
Код исход. состояния |
Состояние перехода |
Код сост. перехода |
Входной сигнал |
Выходной сигнал |
Функция возбуждения |
|
am |
K(am) |
as |
K(as) |
X(am,as) |
Y(am,as) |
F(am,as) |
|
|
|
|
t1 t2 |
|
t1 t2 |
х1х2 |
y1y2 |
J1K1J2K2 |
|
1 |
а1 |
00 |
- |
- |
z1 |
- |
|
|
2 |
- |
- |
а1 |
00 |
z1 |
w3 |
|
|
3 |
а1 |
00 |
- |
- |
z1 |
- |
|
|
4 |
а1 |
00 |
а2 |
01 |
z2 |
w1 |
|
|
5 |
а2 |
01 |
а1 |
00 |
z2 |
w4 |
|
|
6 |
а1 |
00 |
- |
- |
z2 |
- |
|
|
7 |
а1 |
00 |
а1 |
00 |
z3 |
w3 |
|
|
8 |
а1 |
00 |
- |
- |
z3 |
- |
|
|
9 |
- |
- |
- |
- |
z3 |
w2 |
|
|
10 |
а1 |
00 |
а2 |
01 |
z4 |
w2 |
|
|
11 |
а2 |
01 |
- |
- |
z4 |
w3 |
|
|
12 |
- |
- |
а2 |
01 |
z4 |
w4 |
|
Отсортируем таблицу 8 по исходному состоянию и состоянию перехода, а столбец «функция возбуждения» заполним так, чтобы любые два соседние состояния автомата отличались бы лишь одним изменением состояния элемента памяти. В результате получим таблицу 9.
Таблица 9.
Прямая структурная таблица Мили.
|
№ п/п |
Исходное состояние |
Код исход. состояния |
Состояние перехода |
Код сост. перехода |
Входной сигнал |
Выходной сигнал |
Функция возбуждения |
|
am |
K(am) |
as |
K(as) |
X(am,as) |
Y(am,as) |
F(am,as) |
|
|
|
|
t1 t2 |
|
t1 t2 |
х1х2 |
y1y2 |
J1K1J2K2 |
|
1 |
а1 |
00 |
- |
- |
z1 |
- |
|
|
2 |
а1 |
00 |
- |
- |
z1 |
- |
|
|
3 |
а1 |
00 |
- |
- |
z2 |
- |
|
|
4 |
а1 |
00 |
- |
- |
z3 |
- |
|
|
5 |
а1 |
00 |
а1 |
00 |
z3 |
w3 |
|
|
6 |
а1 |
00 |
а2 |
01 |
z2 |
w1 |
|
|
7 |
а1 |
00 |
а2 |
01 |
z4 |
w2 |
|
|
8 |
а2 |
01 |
- |
- |
z4 |
w3 |
|
|
9 |
а2 |
01 |
а1 |
00 |
z2 |
w4 |
|
|
10 |
- |
- |
- |
- |
z3 |
w2 |
|
|
11 |
- |
- |
а1 |
00 |
z1 |
w3 |
|
|
12 |
- |
- |
а2 |
01 |
z4 |
w4 |
|
Учитывая, что суть кодирование заключается в установлении взаимно-однозначного соответствия между множеством состояний автомата и множеством состояний элементов памяти и между множеством входных и выходных сигналов, доопределим неопределённый элементы автомата. Учитываем, что при соседнем кодировании в графе автомата не должно быть циклов с нечётным числом, но так как у нас согласно таблице 6 возможны только 3 состояния перехода а1, а2, а3, то при кодировании нужно использовать только два состояния. Следовательно, доопределение может проходить только переходами а1–а1, а1–а2, а2–а1, а2–а2. В результате доопределения получим таблицу 10.
Таблица 10.
|
№ п/п |
Исходное состояние |
Код исход. состояния |
Состояние перехода |
Код сост. перехода |
Входной сигнал |
Выходной сигнал |
Функция возбуждения |
|
am |
K(am) |
as |
K(as) |
X(am,as) |
Y(am,as) |
F(am,as) |
|
|
|
|
t1 t2 |
|
t1 t2 |
х1х2 |
y1y2 |
J1K1J2K2 |
|
1 |
а1 |
00 |
а1 |
00 |
z1 |
w2 |
- |
|
2 |
а1 |
00 |
а2 |
01 |
z1 |
w4 |
J2 |
|
3 |
а1 |
00 |
а1 |
00 |
z2 |
w2 |
- |
|
4 |
а1 |
00 |
а2 |
01 |
z3 |
w4 |
J2 |
|
5 |
а1 |
00 |
а1 |
00 |
z3 |
w3 |
- |
|
6 |
а1 |
00 |
а2 |
01 |
z2 |
w1 |
J2 |
|
7 |
а1 |
00 |
а2 |
01 |
z4 |
w2 |
J2 |
|
8 |
а2 |
01 |
а1 |
00 |
z4 |
w3 |
K2 |
|
9 |
а2 |
01 |
а1 |
00 |
z2 |
w4 |
K2 |
|
10 |
а2 |
01 |
а2 |
01 |
z3 |
w2 |
- |
|
11 |
а2 |
01 |
а1 |
00 |
z1 |
w3 |
K2 |
|
12 |
а2 |
01 |
а2 |
01 |
z4 |
w4 |
- |
При анализе таблицы видно, что уже на данном этапе можно провести минимизацию и исключить автомат на одном элементе памяти. Минимизируем и получим таблицу 10.
Таблица 10.
|
№ п/п |
Исходное состояние |
Код исход. состояния |
Состояние перехода |
Код сост. перехода |
Входной сигнал |
Выходной сигнал |
Функция возбуждения |
|
am |
K(am) |
as |
K(as) |
X(am,as) |
Y(am,as) |
F(am,as) |
|
|
|
|
t |
|
t |
х1х2 |
y1y2 |
JK |
|
1 |
а1 |
0 |
а1 |
0 |
z1 |
w2 |
- |
|
2 |
а1 |
0 |
а2 |
1 |
z1 |
w4 |
J |
|
3 |
а1 |
0 |
а1 |
0 |
z2 |
w2 |
- |
|
4 |
а1 |
0 |
а2 |
1 |
z3 |
w4 |
J |
|
5 |
а1 |
0 |
а1 |
0 |
z3 |
w3 |
- |
|
6 |
а1 |
0 |
а2 |
1 |
z2 |
w1 |
J |
|
7 |
а1 |
0 |
а2 |
1 |
z4 |
w2 |
J |
|
8 |
а2 |
1 |
а1 |
0 |
z4 |
w3 |
K |
|
9 |
а2 |
1 |
а1 |
0 |
z2 |
w4 |
K |
|
10 |
а2 |
1 |
а2 |
1 |
z3 |
w2 |
- |
|
11 |
а2 |
1 |
а1 |
0 |
z1 |
w3 |
K |
|
12 |
а2 |
1 |
а2 |
1 |
z4 |
w4 |
- |
