Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники / Язык AHDL.DOC
Скачиваний:
56
Добавлен:
13.06.2014
Размер:
995.84 Кб
Скачать
      1. Конечные автоматы

В языке AHDL конечные автоматы реализуются также легко как таблицы истинности и булевы уравнения. Язык структурирован настолько, что Вы можете или сами присвоить значения состояниям или позволить компилятору MAX+PLUS II сделать эту работу за Вас.

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

От Вас просто требуется нарисовать диаграмму состояний и построить таблицу следующих состояний. Затем компилятор автоматически выполнит следующие функции:

  • назначит биты, выбирая или T или D триггер (TFF или DFF) для каждого бита

  • присвоит значения состояниям

  • применит сложную технику логического синтеза для получения уравнений возбуждения

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

  • объявление конечного автомата (раздел Variable)

  • булевы уравнения управления (раздел Logic)

  • переходы между состояниями в операторе TableилиCase(разделLogic)

Также Вы можете импортировать и экспортировать конечные автоматы между TDF файлами и другими файлами проекта, определяя входные и выходные сигналы как автоматные порты в разделе Subdesign.

        1. Реализация конечных автоматов

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

Файл simple.tdf, приведенный ниже, обладает такой же функциональностью как D триггер (DFF).

SUBDESIGN simple

(

clk, reset, d : INPUT;

q : OUTPUT;

)

VARIABLE

ss: MACHINE WITH STATES (s0, s1);

BEGIN

ss.clk = clk;

ss.reset = reset;

CASE ss IS

WHEN s0 =>

q = GND;

IF d THEN

ss = s1;

END IF;

WHEN s1 =>

q = VCC;

IF !d THEN

ss = s0;

END IF;

END CASE;

END;

В файле simple.tdf конечный автомат с именем ss объявлен в разделе Variable. Состояния автомата определены как s0 и s1, а биты состояния не объявлены.

Переходы конечного автомата определяют условия изменения к новому состоянию. Вы должны условно присвоить состояния в пределах одной поведенческой конструкции для определения переходов конечного автомата. Для этой цели рекомендуются операторы CaseилиTable. Например, в simple.tdf переходы из каждого состояния определяются в предложениях WHEN оператораCase.

Вы можете также определить выходное значение для состояния с помощью оператора If Then илиCase. В операторахCaseэти присваивания выполняются в предложениях WHEN. Например, в simple.tdf выход q присваивается GND, когда конечный автомат ss находится в состоянии s0 и VCC, когда автомат находится в состоянии s1.

Выходные значения можно также определить в таблицах истинности как описано в пункте 1.2.7.3 Присваивание состояний.