Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

shpora2010oct17_2011

.pdf
Скачиваний:
48
Добавлен:
12.02.2016
Размер:
4.09 Mб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]