2015-09-16 2 views
1

У меня есть FSM с 5 состояниями. 3 из них разработаны с помощью суб-FSM (UML Pattern). Для реализации в VHDL есть 2 способа, IMHO, чтобы сделать это:Подзадача

  1. суммировать их в одно целое, так что у меня документацию с суб-автомата, и продукт с одной большой ФШМ.

  2. Постройте один FSM со всеми состояниями. Для каждого состояния, у которого есть суб-FSM, создается автономный FSM с разрешающими сигналами от большого.

Это не вопрос о том, что лучше, я думаю, что оба пути имеют свои преимущества и недостатки. Но какой путь более «чист» для реализации VHDL?

type my_big_one is (ONE,TWO_one, TWO_two, THREE_one, THREE_two, FOUR,FIVE); 

против

type my_one is (ONE, TWO, THREE, FOUR, FIVE); 
type two_fsm is (TWO_one, TWO_two); 
type three_fsm is (THREE_one, THREE_two); 

ответ

3

Иерархические FSM также являются приемлемым решением; например

type main_state is (ONE, TWO, THREE, FOUR, FIVE); 
type inner_state is (inner_one, inner_two); 
signal main : main_state; 
signal inner : inner_state; 

... 
case main is 
when ONE => something_simple; 
      main <= TWO; 
      inner <= inner_one; -- reset inner SM 
when TWO => case inner is 
      when inner_one => ... 
      when inner_two => ... 
      end case; 
when THREE => case inner is ... 

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

Я иногда использую этот шаблон, где, например, SM должен отправлять последовательность сообщений в UART, а «внутреннее» состояние касается деталей управления UART (возможно, с помощью счетчика для символов в сообщении) ,

Я бы не стал догматичным, о чем лучше всего решить, что зависит от контекста ...

2

Одно хорошее решение построить 2 FSMS:
- главный ФСМ и
- суб-FSM (ы).

Оба FSMs обмениваются данными через протокол установления связи.

Например, основной FSM входит в состояние TWO. При этом суб-FSM начинает свою обработку, вызванную сигналом от main-FSM. Когда FSM TWO завершает работу, он возвращает сигнал к основному FSM, который переходит в состояние TREE.

Использование этого «шаблона» позволяет вам подключать как можно больше FSM. Некоторые задачи, такие как ожидание или подсчет адресов, могут передаваться на счетчики, которые являются только специальными FSM.

Смежные вопросы