Пример взаимодействующих автоматов
Содержание |
Расширенный вариант графа переходов
Очень Расширенный вариант графа переходов
Pictures
Граф переходов для 3 потоков
Подграф для LastThread
Описание примера взаимодействующих автоматов
Пусть имеется 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 ( и более тактов). С каждым из запросов могут быть связаны соответствующие операнды, которые должен обработать ресурс. Следующий запрос не должен повториться, пока не будет обработан поступивший запрос. Таким образом, подача запросов во времени должна быть «осмысленной». Вся цифровая система представляет собой три взаимодействующих конечных автомата. При этом ресурс представляет собой иерархический автомат. В каждом из его внутренних состояний происходит проверка состояния – а именно, какой из автоматов-запросов занимает ресурс.