Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Описание работы автоматов на языке AHDL




 

Использование языка AHDL для описания алгоритма работы автоматов позволяет автоматизировать процедуру синтеза, включая выбор числа разрядов памяти и кодирование состояний автомата. В языке AHDL конечный автомат – это переменная. При описании работы автомата на языке AHDL необходимо входные и выходные порты автомата а затем ввести вышеупомянутую следующую переменную с помощью оператора следующего типа:

 

<имя автомата>: MACHINE OF BITS(<список имён бит>)

WITH STATES (<список состояний>)

 

Этот оператор определяет:

· имя переменной – символическое имя автомата;

· число разрядов памяти и символическое имя каждого разряда;

· символические имена состояний автомата.

 

Указывать число разрядов памяти и их символические имена, а также коды состояний автомата необязательно. Поэтому в простейшем случае для задания конечного автомата используется следующая конструкция:

 

<имя автомата>: MACHINE WITH STATES (<список состояний>)

 

В этом случае компилятор, оптимизируя структуру автомата самостоятельно выбирает как разрядность блока памяти, так и коды состояний автомата.

В рамках языка AHDL конечный автомат, а следовательно и переменная, его обозначающая имеет три управляющих входа:

· CLK - вход тактового сигнала;

· Reset – вход асинхронного сброса;

· ENA – вход разрешения работы.

Обязательно использование только входа CLK. Если входы Reset и ENA не используются, то на них автоматически подаются сигналы не препятствующие работе автомата.

 

Описание работы автомата на языкеAHDL обычно осуществляется с помощью таблицы истинности. Причём в таблице описывается и функция выходов и функция переходов.

 

Рассмотрим пример абстрактного автомата Мура. Автомат содержит:

Входы: START, ABAR, CLK.

Выходы: WORK, END_WORK.

Автомат имеет следующие состояния.

 

Init, Working, Waiting, Resuming, Ending.

Таблица переходов автомата имеет следующий вид:

 

Исходное состояние Входные сигналы Новое состояние
Init START=1 Working
Init START=0 Init
Working START=0 Waiting
Working START=1 Working
Waiting START=1 Ruming
Waiting START=0 Ending
Ruming START=0 Waiting
Ruming START=1 Working
Ending   Init

Выходные сигналы автомата выглядят следующим образом.

Состояние Выходные сигналы
Init WORK=0, END_WORK=0
Working WORK=1, END_WORK=0
Waiting WORK=1, END_WORK=1
Ruming WORK=0, END_WORK=0
Ending WORK=0, END_WORK=1

С учётом вышесказанного, описание работы автомата на языке AHDL имеет следующий вид:

SUBDESIGN Moor1

(Start,ABAP,clk: INPUT;

Work,End_work: OUTPUT;)

VARIABLE

FSM: MACHINE WITH STATES

(INIT,WORKING,WAITING,RUMING,ENDING);

BEGIN

FSM.clk=CLK;

FSM.RESET=ABAP;

TABLE

FSM, START => WORK, END_WORK, FSM;

INIT, 0 => 0, 0, INIT;

INIT, 1 => 0, 0, WORKING;

WORKING, 0 => 1, 0, WAITING;

WORKING, 1 => 1, 0, WORKING;

WAITING, 0 => 1, 1, ENDING;

WAITING, 1 => 1, 1, RUMING;

RUMING, 0 => 0, 0, WAITING;

RUMING, 1 => 0, 0, WORKING;

ENDING, B"X" => 0, 1, INIT;

END TABLE;

END;

 

 

В приведённом описании задана внутренняя переменная FSM, являющаяся символическим именем конечного автомата, имеющего пять состояний.: INIT, WORKING, WAITING, RUMING, ENDING. Отметим, что при её задании указаны только состояния автомата.

Уравнение FSM.clk=CLK; определяет соединение тактового сигнала с тактовым входом конечного автомата.

Вход ABAP соединяется с входом асинхронного сброса автомата, что определяется уравнением FSM.RESET=ABAP;

Поскольку вход разрешения работы FSM.ENA не используется, то на него автоматически подаётся логический уровень не препятствующий нормальной работе автомата (логическая единица).

В левой части таблицы истинности (слева от знака =>) указываются текущее состояние и набор входных сигналов. В правой части – состояние в которое автомат перейдёт при появлении на входе CLK перепада из «0» в «1», т.е. состояние перехода. И кроме того в в правой части перечисляются выходные сигналы автомата.


 

Отметим, что описание представленного автомата может быть сделано с помощью операторов CASE и IF THEN.

Пример такого описания приведен ниже.

 

SUBDESIGN Moor2

(Start,ABAP,clk: INPUT;

Work,End_work: OUTPUT;)

VARIABLE

FSM: MACHINE WITH STATES

(INIT,WORKING,WAITING,RUMING,ENDING);

BEGIN

FSM.(clk,RESET)=(CLK,ABAP);

CASE FSM IS

WHEN INIT=>

IF START==0

THEN FSM=INIT;

ELSE FSM=WORKING;

END IF;

WHEN WORKING=> Work=VCC;

IF START==0

THEN FSM=WAITING;

ELSE FSM=WORKING;

END IF;

WHEN WAITING=> Work=VCC; End_work=VCC;

IF START==0

THEN FSM=ENDING;

ELSE FSM=RUMING;

END IF;

WHEN RUMING=>

IF START==0

THEN FSM=WAITING;

ELSE FSM=WORKING;

END IF;

WHEN ENDING => End_work=VCC;

FSM=WAITING;

END CASE;

END;

 


 

В результате моделирования автомата МУРА получается временная диаграмма работы автомата, представленная на рис 3.2.1.

 

 

Рис 3.2.1. Временная диаграмма работы автомата МУРА.


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...