Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop / Лабник- версия 28122015.docx
Скачиваний:
65
Добавлен:
26.03.2016
Размер:
346.82 Кб
Скачать

Лабораторная работа №3. Реализация конечного автомата

Конечные автоматы получили свое название из-за того, что схема с k-регистрами может находиться в одном из 2k, то есть в конечном числе, состояний. У КА М входов, N выходов и k бит состояний. На вход КА так же подается тактовый сигнал и, возможно, сигнал сброса. КА состоит из двух блоков комбинационной логики: логики перехода в следующее состояние и выходной логики, – и из регистра, в котором хранится текущее состояние. По фронту каждого тактового импульса автомат переходит в следующее состояние, которое определяется текущим состоянием и значениями на входах. Существует два основных класса конечных автоматов, которые отличаются своими функциональными описаниями. В автомате Мура выходные значения зависят лишь от текущего состояния, в то время как в автомате Мили выход зависит как от текущего состояния, так и от входных данных. Конечные автоматы предоставляют систематический способ проектирования синхронных последовательных схем по заданному функциональному описанию. Вполне возможно, что заданную схему можно реализовать и проще, однако иметь способ, гарантированно обеспечивающий работоспособный результат, всегда полезно.

При выполнении лабораторной работы необходимо:

  1. Описать работу конечного автомата в виде диаграммы переходов (графа)

  2. Сформировать таблицу переходов

  3. Записать таблицу состояний, таблицу выходов и логические выражения для описания схемы. Пример описания рассмотрен на с. 307- 326 [1].

  4. Составить описание схемы в VHDL, провести моделирование вVivado, подключить внешние контакты, определить частоты, на которых схема работоспособна.

Цифровые автоматы на VHDL описываются в форме двух процессов: комбинаторного и регистрового. В комбинаторном процессе формируется следующее состояние автомата (fsm_next), в регистровом процессе текущее состояние (fsm_current) заменяется на следующее (fsm_next). Описание автомата начинается с создания типа и объявления переменных этого типа.

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

Пример описания автомата:

TYPE Tctrl_fsm1 IS (

state_0,

state_1,

state_2,

state_3

);

SIGNAL fsm1_current: Tctrl_fsm1;

SIGNAL fsm1_next: Tctrl_fsm1;

PROCESS (clk, reset) BEGIN

IF (reset = '1') and (clk'EVENT AND clk = '1') THEN

fsm1_current <= state_0;

ELSIF (clk'EVENT AND clk = '1') THEN

fsm1_current <= fsm1_next;

END IF;

END PROCESS;

PROCESS (fsm1_current,start_sig)

BEGIN

fsm_new <= fsm_old;

--- нет сигнала- нет перехода

CASE fsm1_current IS

WHEN state_0 =>

fsm1_next <= state_1;

WHEN state_1 =>

IF (start_sig = '1') THEN

fsm1_next <= state_2;

ELSE

fsm1_next <= state_1;

END IF;

WHEN state_2 => -- preparation

fsm1_next <= state_3;

WHEN state_3 => -- generation

fsm1_next <= state_3;

END CASE;

END PROCESS;

Рисунок Блок- схема работы автомата

Описания автоматов с помощью процесса.

Логика переходов описывается например в таком стиле:

PROCESS (present_st, input_signal)

BEGIN

CASE present_st IS

WHEN state1 =>

IF input_signal = '1'

THEN next_st <= state1;

ELSE next_st <= state2;

END IF;

WHEN state2 =>

IF input_signal = '1'

THEN next_st <= state2;

ELSE next_st <= state3;

END IF;

...

END CASE;

END PROCESS;

Можно (но нередко это оказывается громоздким) записать логику работы в стиле WHEN-ELSE:

output <= "000" WHEN present_st = state1 ELSE

"001" WHEN present_st = state2 ELSE

...

"100" WHEN present_st = state5;

Задания на работу: разработать в виде конечного автомата схему, реагирующую выдачей «1» на выходе на появление на входе заданной последовательности. Следует указать, используется автомат Мили или Мура.

Варианты заданий

Номер

варианта

Последовательность

1

00110101

2

00110100

3

00110110

4

00110111

5

00111000

6

00111001

7

00111010

8

00111011

9

00111100

10

00111101

11

00111110

12

00111100

13

00111101

14

10111100

15

01011100

16

10101100

17

10111101

18

10110101

19

11001100

20

11001000

21

11001001

22

11101001

23

10101001

24

10111001

25

10101101

26

11101011

27

10101111

28

10001001

29

10101011

30

10101101

31

11101011

32

10101011

Рекомендуемые дополнительные источники к работе:

Описание цифровых автоматов на VHDL http://distant.msu.ru/pluginfile.php/39887/mod_resource/content/1/%D0%A2%D0%B5%D0%BC%D0%B0%208.pdf

Описание цифровых автоматов на VHDL http://geektimes.ru/post/254818/