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

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

Материал из Wiki
Перейти к: навигация, поиск
м (Описание примера взаимодействующих автоматов)
м (NEW)
 
Строка 251: Строка 251:
 
Ограничение на подачу запросов. Для любого из каналов запроса: запрос может повториться через 4 ( и более тактов). С каждым из запросов могут быть связаны соответствующие операнды, которые должен обработать ресурс. Следующий запрос не должен повториться, пока не будет обработан поступивший запрос. Таким образом, подача запросов во времени должна быть «осмысленной».  
 
Ограничение на подачу запросов. Для любого из каналов запроса: запрос может повториться через 4 ( и более тактов). С каждым из запросов могут быть связаны соответствующие операнды, которые должен обработать ресурс. Следующий запрос не должен повториться, пока не будет обработан поступивший запрос. Таким образом, подача запросов во времени должна быть «осмысленной».  
 
Вся цифровая система представляет собой три взаимодействующих конечных автомата. При этом ресурс представляет собой иерархический автомат. В каждом из его внутренних состояний происходит проверка состояния – а именно, какой из автоматов-запросов занимает ресурс.-->
 
Вся цифровая система представляет собой три взаимодействующих конечных автомата. При этом ресурс представляет собой иерархический автомат. В каждом из его внутренних состояний происходит проверка состояния – а именно, какой из автоматов-запросов занимает ресурс.-->
 +
 +
== Описание ПРАЛУ ==
 +
 +
<source lang="text">TITLE fsm_multi
 +
FORMAT  PRL
 +
AUTHOR Bibilo
 +
DATE 18/01/05
 +
PROJECT LOCON_VHDL
 +
DCL_PIN
 +
EXT
 +
INP
 +
req0 req1 req2
 +
OUT
 +
ready0 ready1 ready2
 +
INTER
 +
cal_req0 cal_req1 cal_req2
 +
cal_ready0 cal_ready1 cal_ready2
 +
last_thread
 +
END_PIN
 +
BLOCK pott1main
 +
 +
1: >
 +
    ready0 *  ready1 * ready2
 +
   
 +
  > Thread0_00.Thread1_00.Thread2_00.CU_0001.last_thread1
 +
 +
Thread0_00: -req0          >  ^ready0 > Thread0_01
 +
Thread0_01: -^cal_ready0    >  ^ready0 > Thread0_10
 +
Thread0_10: -cal_ready0    >  ready0 > Thread0_00
 +
 +
Thread1_00: -req1          >  cal_req1 * ^ready1 > Thread1_01
 +
Thread1_01: -^cal_ready1    >  cal_req1 * ^ready1 > Thread1_10
 +
Thread1_10: -cal_ready1    > ^cal_req1 *  ready1 > Thread1_00
 +
 +
Thread2_00: - req2          >  cal_req2 * ^ready2 > Thread2_01
 +
Thread2_01: -^cal_ready2    >  cal_req2 * ^ready2 > Thread2_10
 +
Thread2_10: - cal_ready2    > ^cal_req2 *  ready2 > Thread2_00
 +
 +
Thread0_01.Thread1_00.Thread2_00 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
 +
last_thread1.Thread0_01.Thread1_01.Thread2_00 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
 +
last_thread2.Thread0_01 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
 +
 +
Thread0_00.Thread1_01.Thread2_00 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
 +
last_thread2.Thread0_00.Thread1_01.Thread2_01 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
 +
last_thread0.Thread1_01 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
 +
 +
 +
Thread0_00.Thread1_00.Thread2_01 : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
 +
last_thread0.Thread0_01.Thread1_00.Thread2_01 : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
 +
last_thread1.Thread2_01  : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
 +
 
 +
CU_0001: -
 +
Thread0_00 * ^cal_req1 * ^cal_req2 +
 +
last_thread=1 * cal_req0 * cal_req1 * ^cal_req2 +
 +
          last_thread=2 * cal_req0
 +
              > ^cal_ready0 *  cal_ready1 *  cal_ready2 > CU_0010
 +
- ^cal_req0 * cal_req1 * ^cal_req2 +
 +
          last_thread=2 * ^cal_req0 * cal_req1 * cal_req2 +
 +
          last_thread=0 * cal_req1         
 +
            >  cal_ready0 * ^cal_ready1 *  cal_ready2 > CU_0010
 +
        - ^cal_req0 * ^cal_req1 * cal_req2 +
 +
          last_thread=0 * cal_req0 * ^cal_req1 * cal_req2 +
 +
          last_thread=1 * cal_req2
 +
            >  cal_ready0 *  cal_ready1 * ^cal_ready2 > CU_0010
 +
CU_0010: CU_0100
 +
CU_0100: CU_1000
 +
CU_1000: - ^cal_req0 * ^cal_req1 * ^cal_req2
 +
            > cal_ready0 *  cal_ready1 * cal_ready2 > CU_0001
 +
 +
last_thread0:
 +
last_thread1:
 +
last_thread2:
 +
 +
END_BLOCK pott1main
 +
END_pott1
 +
</source>
  
 
== NEW ==
 
== NEW ==

Текущая версия на 10:07, 12 декабря 2017

[svg]

Содержание

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

[svg]

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

[svg]

Pictures

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

[svg]

Подграф для LastThread

[svg]


Описание ПРАЛУ

TITLE fsm_multi
FORMAT  PRL
AUTHOR Bibilo
DATE 18/01/05
PROJECT LOCON_VHDL
DCL_PIN 
EXT
INP
req0 req1 req2 
OUT
ready0 ready1 ready2
INTER
cal_req0 cal_req1 cal_req2
cal_ready0 cal_ready1 cal_ready2
last_thread
END_PIN
BLOCK pott1main
 
1: > 
    ready0 *  ready1 * ready2
 
   > Thread0_00.Thread1_00.Thread2_00.CU_0001.last_thread1
 
Thread0_00: -req0           >  ^ready0 > Thread0_01
Thread0_01: -^cal_ready0    >  ^ready0 > Thread0_10
Thread0_10: -cal_ready0     >   ready0 > Thread0_00
 
Thread1_00: -req1           >  cal_req1 * ^ready1 > Thread1_01
Thread1_01: -^cal_ready1    >  cal_req1 * ^ready1 > Thread1_10
Thread1_10: -cal_ready1     > ^cal_req1 *  ready1 > Thread1_00
 
Thread2_00: - req2          >  cal_req2 * ^ready2 > Thread2_01
Thread2_01: -^cal_ready2    >  cal_req2 * ^ready2 > Thread2_10
Thread2_10: - cal_ready2    > ^cal_req2 *  ready2 > Thread2_00
 
Thread0_01.Thread1_00.Thread2_00 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
last_thread1.Thread0_01.Thread1_01.Thread2_00 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
last_thread2.Thread0_01 : - > > Thread0_10.Thread1_00.Thread2_00.CU_0010
 
Thread0_00.Thread1_01.Thread2_00 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
last_thread2.Thread0_00.Thread1_01.Thread2_01 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
last_thread0.Thread1_01 : - > > Thread0_00.Thread1_01.Thread2_00.CU_0010
 
 
Thread0_00.Thread1_00.Thread2_01 : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
last_thread0.Thread0_01.Thread1_00.Thread2_01 : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
last_thread1.Thread2_01  : - > > Thread0_00.Thread1_00.Thread2_01.CU_0010
 
CU_0001: - 
Thread0_00 * ^cal_req1 * ^cal_req2 +
last_thread=1 * cal_req0 * cal_req1 * ^cal_req2 +
           last_thread=2 * cal_req0
              > ^cal_ready0 *  cal_ready1 *  cal_ready2 > CU_0010
- ^cal_req0 * cal_req1 * ^cal_req2 +
           last_thread=2 * ^cal_req0 * cal_req1 * cal_req2 +
           last_thread=0 * cal_req1           
            >  cal_ready0 * ^cal_ready1 *  cal_ready2 > CU_0010
         - ^cal_req0 * ^cal_req1 * cal_req2 +
           last_thread=0 * cal_req0 * ^cal_req1 * cal_req2 +
           last_thread=1 * cal_req2 
            >  cal_ready0 *  cal_ready1 * ^cal_ready2 > CU_0010
CU_0010: CU_0100
CU_0100: CU_1000
CU_1000: - ^cal_req0 * ^cal_req1 * ^cal_req2 
            > cal_ready0 *  cal_ready1 * cal_ready2 > CU_0001
 
last_thread0:
last_thread1:
last_thread2:
 
END_BLOCK pott1main
END_pott1

NEW