«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

Пример взаимодействующих автоматов — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
м (Граф переходов для 3 потоков)
м (NEW)
Строка 221: Строка 221:
 
}
 
}
 
</graphviz>
 
</graphviz>
 +
 +
== Описание примера взаимодействующих автоматов ==
 +
 +
Пусть имеется '''multi_fsm'''  - синхронное  цифровое устройство, состоящее из нескольких (N) автоматов (запросов) W0, W1,…, WN-1, которые хотят получить доступ к одному и тому автомату (ресурсу) cal_unit. Примером содержательной постановки является доступ к АЛУ от нескольких устройств.
 +
 +
Автоматы-запросы W<sub>J</sub> (J=0,…,N-1) не взаимодействуют друг с другом. Каждый из автоматов-запросов WJ  связан только с cal_unit. Каждый автомат-запрос имеет вход req  и выход ready.
 +
 +
<source lang="vhdl">entity fsm_multi is
 +
  generic (
 +
    THREAD_NUMBER : natural := 2;
 +
    REPLY_DELAY  : natural := 3;
 +
    BUS_WIDTH    : natural := 8);
 +
  port (
 +
    req  : in  std_logic_vector(THREAD_NUMBER-1 downto 0);
 +
    ready : out std_logic_vector(THREAD_NUMBER-1 downto 0);
 +
    clk  : in  std_logic;
 +
    rst  : in  std_logic);
 +
 +
end fsm_multi;</source>
 +
 +
Будем рассматривать два автомата-запроса W0, W1.
 +
 +
Поведение multi_fsm следующее.
 +
 +
На вход req  автомата-запроса WJ поступает сигнал (1) о том, что данный автомат хочет занять ресурс. Если ресурс свободен, то автомат WJ  занимает ресурс. Ресурс обрабатывает любой из запросов 3 такта. В этих трех тактах другой автомат-запрос, ждет обработки своего запроса. Если ресурс обработал запрос от одного автомата, то он обрабатывает запрос другого автомата если такой имеется. В начале обработки запрос W0 имеет приоритет – обрабатывается первым, если выставлены два запроса.
 +
 +
Порядок обработки запросов для более, чем 2 автомата ?
 +
 +
Ограничение на подачу запросов. Для любого из каналов запроса: запрос может повториться через 4 ( и более тактов). С каждым из запросов могут быть связаны соответствующие операнды, которые должен обработать ресурс. Следующий запрос не должен повториться, пока не будет обработан поступивший запрос. Таким образом, подача запросов во времени должна быть «осмысленной».
 +
Вся цифровая система представляет собой три взаимодействующих конечных автомата. При этом ресурс представляет собой иерархический автомат. В каждом из его внутренних состояний происходит проверка состояния – а именно, какой из автоматов-запросов занимает ресурс.
 +
  
 
== NEW ==
 
== NEW ==

Версия 19:56, 19 ноября 2017

[svg]

Содержание

Расширенный вариант графа переходов

[svg]

Очень Расширенный вариант графа переходов

[svg]

Pictures

Граф переходов для 3 потоков

[svg]

Подграф для LastThread

[svg]

Описание примера взаимодействующих автоматов

Пусть имеется multi_fsm - синхронное цифровое устройство, состоящее из нескольких (N) автоматов (запросов) W0, W1,…, WN-1, которые хотят получить доступ к одному и тому автомату (ресурсу) cal_unit. Примером содержательной постановки является доступ к АЛУ от нескольких устройств.

Автоматы-запросы WJ (J=0,…,N-1) не взаимодействуют друг с другом. Каждый из автоматов-запросов WJ связан только с cal_unit. Каждый автомат-запрос имеет вход req и выход ready.

entity fsm_multi is
  generic (
    THREAD_NUMBER : natural := 2;
    REPLY_DELAY   : natural := 3;
    BUS_WIDTH     : natural := 8);
  port (
    req   : in  std_logic_vector(THREAD_NUMBER-1 downto 0);
    ready : out std_logic_vector(THREAD_NUMBER-1 downto 0);
    clk   : in  std_logic;
    rst   : in  std_logic);
 
end fsm_multi;

Будем рассматривать два автомата-запроса W0, W1.

Поведение multi_fsm следующее.

На вход req автомата-запроса WJ поступает сигнал (1) о том, что данный автомат хочет занять ресурс. Если ресурс свободен, то автомат WJ занимает ресурс. Ресурс обрабатывает любой из запросов 3 такта. В этих трех тактах другой автомат-запрос, ждет обработки своего запроса. Если ресурс обработал запрос от одного автомата, то он обрабатывает запрос другого автомата если такой имеется. В начале обработки запрос W0 имеет приоритет – обрабатывается первым, если выставлены два запроса.

Порядок обработки запросов для более, чем 2 автомата ?

Ограничение на подачу запросов. Для любого из каналов запроса: запрос может повториться через 4 ( и более тактов). С каждым из запросов могут быть связаны соответствующие операнды, которые должен обработать ресурс. Следующий запрос не должен повториться, пока не будет обработан поступивший запрос. Таким образом, подача запросов во времени должна быть «осмысленной». Вся цифровая система представляет собой три взаимодействующих конечных автомата. При этом ресурс представляет собой иерархический автомат. В каждом из его внутренних состояний происходит проверка состояния – а именно, какой из автоматов-запросов занимает ресурс.


NEW