
shpora2010oct17_2011
.pdf
ai /Q1Q0/
Рис. 5.86 Граф автомата Мура та позначки у вершинах графа
Рис. 5.87 Структурна схема автомата Мура
61

Таблиця 5.28 - Таблиця переходів автомата Мура на JK-тригерах та сигнали збудження його тригерів
Таблиця 5.29 - Таблиця виходів автомата Мура на JK-тригерах
J |
1 |
Q |
K |
1 |
Q |
J0 Q1 |
x |
K0 1 |
y |
Q |
|
|
0 |
|
0 |
|
|
|
1 |
Рис. 5.88 Карти Карно та ДНФ для автомата Мура на JK-тригерах
62

Рис. 5.89 Функціональна схема автомата Мура на JK-тригерах Примітка 1. Часова діаграма роботи автомата Мура на JK-тригерах.
Рис. 5.90 Часова діаграма роботи автомата Мура на JK-тригерах Примітка 2. VHDL-опис автомата Мура на JK-тригерах (назва цього автомата
– fsm1).
library IEEE;
use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity fsm1 is
port (
c: in STD_LOGIC;
x:in STD_LOGIC;
y:out STD_LOGIC);
end fsm1;
architecture fsm1_arch of fsm1 is attribute enum_encoding: string; type State_type is ( a0, a1, a2, a3);
attribute enum_encoding of State_type: type is
"00 " & |
-- a0 |
"01 " & |
-- a1 |
"10 " & |
-- a2 |
"11" ; |
-- a3 |
signal State: State_type; attribute state_vector: string;
attribute state_vector of fsm1_arch: architecture is "State";
63
begin
State_machine: process (c) begin
if rising_edge(c) then case State is
when a0 =>
if x='1' then
State <= a0; elsif x='0' then
State <= a1;
end if; when a1 =>
State <= a2; when a2 =>
State <= a3; when a3 =>
State <= a0; when others =>
null;
end case;
end if; end process; y_assignment:
y <= '1' when (State = a0) else '1' when (State = a1) else '0';
end fsm1_arch;
5.9 Автомат Мілі на елементах базису Буля і D-тригерах, що спрацьовують по фронту (двійкове кодування станів)
Намалювати граф, таблиці переходів та виходів, написати скорочені ДНФ функцій переходів та виходів, та намалювати схему автомата Мілі на основі елементів базису Буля і D-тригерів. Коди станів автомата у контурі станів 0, 1, 2 ,3 -
двійкові. Якщо немає сигналу X, автомат послідовно проходить стани 0, 1, 2, 3, 0,
..., а при появі сигналу X послідовність переходів змінюється: автомат переходить із стану 0 до стану 0 (при цьому послідовність зміни інших станів не змінюється).
Вихідний сигнал Y формується на переході до станів 0 та 1.
Відповідь:
64

ai /Q1Q0/
Рис. 5.91 Граф автомата Мілі та позначки у вершинах графа з двійковим кодуванням станів
Рис. 5.92 Структурна схема автомата Мілі
65

Таблиця 5.30 – Суміщена таблиця переходів і виходів автомата Мілі з двійковим кодуванням станів
D1 Q1Q0 Q1Q0 |
D0 Q1Q0 Q0 |
x |
y Q1Q0 Q1Q0 |
Рис. 5.93 Карти Карно та ДНФ для автомата Мілі з двійковим кодуванням станів
Рис. 5.94 Функціональна схема автомата Мілі з двійковим кодуванням станів Примітка 1. Часова діаграма роботи автомата Мілі з двійковим кодуванням
станів.
66

Рис. 5.95 Часова діаграма роботи автомата Мілі з двійковим кодуванням станів Примітка 2. VHDL-опис автомата Мілі з двійковим кодуванням станів (назва
цього автомата – fsm4).
library IEEE;
use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity fsm4 is
port (
c: in STD_LOGIC;
x:in STD_LOGIC;
y:out STD_LOGIC);
end fsm4;
architecture fsm4_arch of fsm4 is attribute enum_encoding: string; type State_type is ( a0, a1, a2, a3);
attribute enum_encoding of State_type: type is
"00 " & |
-- a0 |
"01 " & |
-- a1 |
"10 " & |
-- a2 |
"11" ; |
-- a3 |
signal State: State_type; attribute state_vector: string;
attribute state_vector of fsm4_arch: architecture is "State"; begin
State_machine: process (c) begin
if rising_edge(c) then case State is
when a0 =>
if x='1' then
State <= a0; elsif x='0' then
State <= a1;
end if; when a1 =>
State <= a2; when a2 =>
State <= a3; when a3 =>
State <= a0;
67

when others => null;
end case;
end if; end process; y_assignment:
y <= '1' when (State = a0 and x='1') else
'1' when (State = a0 and (x='0' and not (x='1'))) else '1' when (State = a3) else
'0';
end fsm4_arch;
5.10 Автомат Мілі на елементах базису Буля і D-тригерах, що спрацьовують по фронту (сусіднє кодування станів)
Намалювати граф, таблиці переходів та виходів, написати скорочені ДНФ функцій переходів та виходів, та намалювати схему автомата Мілі на основі елементів базису Буля і D-тригерів. Коди станів автомата у контурі станів 0, 1, 2, 3 -
сусіднє. Якщо немає сигналу X, автомат послідовно проходить стани 0, 1, 2, 3, 0, ...,
а при появі сигналу X послідовність переходів змінюється: автомат переходить із стану 2 до стану 0 (при цьому послідовність зміни інших станів не змінюється).
Вихідний сигнал Y формується на переході до станів 1 та 3.
Відповідь:
ai /Q1Q0/
Рис. 5.96 Граф автомата Мілі та позначки у вершинах графа з сусіднім кодуванням станів
68

Рис. 5.97 Структурна схема автомата Мілі Таблиця 5.31 – Суміщена таблиця переходів і виходів автомата Мілі з сусіднім
кодуванням станів
D1 Q0 |
x |
Q1Q0 |
D0 Q1 |
y Q1Q0 Q1Q0 |
x |
Рис. 5.98 Карти Карно та ДНФ для автомата Мілі з сусіднім кодуванням станів
69

Рис. 5.99 Функціональна схема автомата Мілі з сусіднім кодуванням станів Примітка 1. Часова діаграма роботи автомата Мілі з сусіднім кодуванням
станів.
Рис. 5.100 Часова діаграма роботи автомата Мілі з сусіднім кодуванням станів Примітка 2. VHDL-опис автомата Мілі з сусіднім кодуванням станів (назва
цього автомата – fsm5).
library IEEE;
use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; entity fsm5 is
port (
c: in STD_LOGIC;
x:in STD_LOGIC;
y:out STD_LOGIC);
end fsm5;
architecture fsm5_arch of fsm5 is attribute enum_encoding: string; type State_type is ( a0, a2, a3, a1);
attribute enum_encoding of State_type: type is
"00 " & |
-- a0 |
"11 " & |
-- a2 |
"10 " & |
-- a3 |
"01" ; |
-- a1 |
signal State: State_type; attribute state_vector: string;
70