Asynchronous Router
Specyfikacja
Router posiada M portów wejściowych i na każdym z nich może wczytać wartość
z zakresu 0-(N-1).
Po wczytaniu wartości j na porcie i Router wysyła wartość i na porcie j
Po wysłaniu przez port j czeka na potwierdzenie
Po otrzymaniu potwierdzenia wysyła potwierdzenie na odpowiednim porcie i
Jedyną przeszkodą przy wczytywaniu wartości na porcie i jest sytuacja, kiedy
Router nie wysłał jeszcze potwierdzenia poprzedniej transmisji na tym porcie
Jedyną przeszkodą przy wysyłaniu przez port j jest sytuacja kiedy Router
wczyta na pewnym porcie wartość j. Wtedy mamy sytuację kiedy kilka wiadomości
ma być wysłanych tym samym portem. Router sam wybiera kolejność.
Implementacja 1
Implementacja 2
Cell składa się z dwóch komponentów: C i Arbiter
C sprawdza czy wartość jest równa kolumnie w której jest. Jeśli tak
to wysyła numer portu do Arbitera jeśli nie to wysyła wartość do następnego Cell'a
Arbiter może być w jednym z dwóch stanów: albo wysłał wartość otrzymaną od
C albo otrzymaną od Arbitera poniżej. Gdy wysłał wartość otrzymaną od swojego C to
po otrzymaniu potwierdzenia wysyła to potwierdzenie do C. Jeśli wysłał wartość
otrzymaną od Arbitera poniżej to do niego wysyła potwierdzenie (oczywiście po
uprzednim otrzymaniu potwierdzenia z góry).
Przykładowa formuła odróżniająca router 1 od 2
[[in0(0)]] <<in1(0)>> [[out0(1)]] F
Implementacja 3
Pliki