Язык AHDL

       

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


Вы можете создать конечный автомат, объявив его имя, состояния и, дополнительно, биты конечного автомата в объявлении конечного автомата в разделе 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 Присваивание состояний.



Содержание раздела