Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_ПКИМС_ПЛИС.doc
Скачиваний:
35
Добавлен:
05.06.2015
Размер:
1.85 Mб
Скачать

3.2. Описание работы автоматов на языке 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;)

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