Skip to main content

7 - część 2

FUN 110 D P QUEUE

KOLEJKA (QUEUE)

FUN 110 D P QUEUE

image.png

 

 

l Kolejka jest także rodzajem tabeli. Różni się od zwykłej tabeli tym, że zakres numerów rejestrów w kolejce wynosi od 1 do L, a nie od 0 do L-1. Innymi słowy, wartości QU1~QUL odnoszą się odpowiednio do wskaźników Pr = 1 do L, a Pr = 0 oznacza, że kolejka jest pusta.

l Kolejka jest instrukcją typu FIFO, tj. dane, które pierwsze wejdą do kolejki będą pierwszymi danymi, które z niej wyjdą. Kolejka składa się z L kolejnych 16- lub 32-bitowych rejestrów (instrukcja P) rozpoczynając od rejestru QU, jak pokazano na poniższym schemacie:

image.png

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to stan wejścia „I/O” określa czy dane IW wejdą do kolejki (kiedy „I/O” = 1) czy wyjdą z niej i zostaną przeniesione do OW (kiedy „I/O” = 0). Jak pokazano na schemacie powyżej, wartości IW będą zawsze zapisywane w pierwszym rejestrze (QU1) w kolejce. Po wprowadzeniu wartość do kolejki, wskaźnik Pr zostanie automatycznie zwiększona o 1, aby wskazywał zawsze daną, która jako pierwsza weszła do kolejki. Po wyjściu z kolejki wartości wskazanej przez Pr, zostaje ona przeniesiona bezpośrednio do OW. Wartość Pr zostaje wtedy zmniejszona o 1, aby wskaźnik wskazywał na najstarszą z wartości, które pozostały w kolejce.

l Jeżeli żadne wartości nie weszły jeszcze do kolejki lub wszystkie dane wyszły z kolejki (Pr = 0), to stan znacznika pustej kolejki EPT, zostanie ustawiony na 1. Wówczas, nawet w przypadku kolejnej operacji wyjścia danych, instrukcja ta nie zostanie wykonana. W przypadku, gdy dane będą wprowadzane do kolejki, ale nigdy nie będą z niej wyprowadzane, kolejka po pewnym czasie stanie się pełna (wskaźnik Pr wskaże pozycję QUL), a stan znacznika pełnej kolejki FUL, zostanie ustawiony na 1. Wówczas, nawet w przypadku kolejnej operacji wejścia danych, instrukcja ta nie zostanie wykonana. Wskaźnik w tej funkcji wykorzystywany jest podczas wprowadzania danych do kolejki, w celu wskazania danej, która weszła do niej najwcześniej. Inne fragmenty programu, nie powinny zmieniać wartości wskaźnika, gdyż funkcja ta może się wykonać nieprawidłowo. W przypadku aplikacji wymagającej ustawienia wartości Pr, dopuszczalny zakres dla tej wartości wynosi od 0 do L (0 oznacza pustą kolejkę, natomiast wartości od 1 do L oznaczają odpowiednio od QU1 do QUL). Jeżeli zakres ten zostanie przekroczony, stan wyjścia błędu wskaźnika „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

image.png

 

 

image.png

 

 

FUN 111 D P STACK

STOS (STACK)

FUN 111 D P STACK

image.png

 

 

l Tak jak w przypadku kolejki, stos także jest rodzajem tabeli. Charakter wskaźnika jest dokładnie taki sam jak w przypadku kolejki, tzn. Pr = 1 do L, co odnosi się odpowiednio do ST1 do STL, a Pr = 0 oznacza, że stos jest pusty.

l Stos jest odwrotnością kolejki i jest instrukcją typu LIFO. Oznacza to, że wartość, która została wprowadzona do stosu jako ostatnia, opuści stos jako pierwsza. Stos składa się z L kolejnych 16- lub 32-bitowych rejestrów (instrukcja D ) rozpoczynając od ST, jak pokazano na poniższym schemacie:

 

image.png

 

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to stan wejścia „I/O” określa czy wartość IW zostanie wprowadzona do stosu (kiedy „I/O” = 1) czy też wartość w stosie, wskazana przez wartość wskaźnika Pr (czyli dane wprowadzone do stosu najpóźniej) zostanie z niego pobrana i  przeniesiona do OW (kiedy „I/O” = 0). Dane wprowadzane są na zasadzie stosu, dlatego też przed wprowadzeniem danych, wartość wskaźnika Pr zostanie zwiększona o 1 w celu wskazania szczytu stosu. Dane wskazane przez wskaźnik Pr (czyli dane wprowadzone do stosu najpóźniej), które opuszczają stos zostaną przeniesione do OW, po czym wartość Pr zmniejszy się o 1. Wskaźnik Pr będzie zawsze wskazywał daną, która została wprowadzona do stosu jako ostatnia.

l Jeżeli żadne dane nie weszły jeszcze do stosu lub wszystkie dane opuściły stos (Pr = 0), to stan wyjścia pustego stosu „EPT” zostanie ustawiony na 1. Wówczas, nawet w przypadku kolejnej operacji wyjścia danych, instrukcja ta nie zostanie wykonana. W przypadku, gdy większa ilość danych będzie wprowadzana, niż wyprowadzana ze stosu, to stos po pewnym czasie stanie się pełny (wskaźnik Pr wskaże pozycję STL), a stan wyjścia pełnego stosu „FUL”, zostanie ustawiony na 1. Wówczas, nawet w przypadku kolejnych operacji wprowadzania danych, funkcja nie zostanie wykonana. Wskaźnik stosu, identycznie jak wskaźnik kolejki, nie powinien być zmieniany przez inne funkcje. W przypadku aplikacji wymagającej ustawienia wartości Pr, dopuszczalny zakres dla tej wartości wynosi od 0 do L (0 oznacza pusty stos, natomiast wartości od 1 do L oznaczają odpowiednio od ST1 do STL). Jeżeli zakres ten zostanie przekroczony, stan wyjścia błędu wskaźnika „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

image.png

 

 

image.png


FUN 112 D P BKCMP

PORÓWNANIE BLOKOWE

(BLOCK COMPARE(DRUM))

FUN 112 D P BKCMP

image.png

 

l Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), zostanie zrealizowane porównanie wartości Rs, z kolejnymi dolnymi i górnymi granicami, tworzonymi przez L kolejnych par 16- lub 32-bitowych (modyfikator D) rejestrów, rozpoczynających się od Ts (każda sąsiadująca para 2 rejestrów od T0 tworzy górną i dolną granicę). Jeżeli wartość Rs mieści się w danym zakresie, pomiędzy górną a dolną granicą, to stan odpowiedniego bitu w D zostanie ustawiony na 1, w przeciwnym wypadku, stan ten zostanie ustawiony na 0.

l Kiedy M1975=0, to w sytuacji, gdy istnieje para, w której górna wartość graniczna jest mniejsza niż dolna wartość graniczna, stan wyjścia błędu „ERR” zostanie ustawiony na 1, a wynikiem porównania dla tej pary będzie stan 0.

l Kiedy M1975=1, to nie istnieją powyższe ograniczenia w relacji pomiędzy górną a dolną granicą. Taki przypadek można stosować w elektronicznych przełącznikach bębnowych z obrotem 360°.

 

image.png

 

 

l Aktualnie, funkcja ta jest przełącznikiem bębnowym, która może być wykorzystana w procedurach obsługi przerwań sprzętowych, gdzie w połączeniu z instrukcją natychmiastowego odświeżania wejść/wyjść (IMDIO), może służyć jako precyzyjny przełącznik elektroniczny.

image.png


l Program na schemacie powyżej wykorzystuje enkoder obrotowy lub inny detektor kąta obrotu (podłączony bezpośrednio do mechanizmu obrotowego), w celu stworzenia odpowiednika mechanicznego bębna (patrz mechanizm ograniczony przerywaną linia na schemacie poniżej). Poprzez regulację górnych i dolnych wartości granicznych, użytkownik może dowolnie zmieniać zakres aktywacji wyjść, dla danego kąta obrotu. Nie jest to możliwe do wykonania przy użyciu tradycyjnego mechanizmu bębnowego.

Mechanizm bębnowy imitowany przez powyższy program

 

image.png

 

image.png


FUN 113 D P SORT

SORTOWANIE WARTOŚCI (DATA SORTING)

FUN 113 D P SORT

image.png

 

●         Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja posortuje wartości w rejestrach S w porządku rosnącym (jeżeli A/D = 1) lub malejącym (jeżeli A/D = 0) i zapisze wynik sortowania w rejestrach począwszy od D.

●        Dopuszczalny zakres długości danych dla operacji sortowania L, wynosi od 2 do 127. W przypadku innej długości, wyjście „ERR” zostanie ustawiony na 1, a operacja sortowania nie zostanie przeprowadzona.

 

image.png

 

 

image.png

 

FUN 114 D P Z-WR

ZAPIS DO STREFY (ZONE WRITE)

FUN 114 D P Z-WR

image.png


●         Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja przeprowadzi operację ustalenia wartości w strefie zmiennych, zgodnie ze stanem wejścia 1/0. Wskazana strefa rejestrów lub bitów zostanie wyzerowana (gdy „1/0” = 0) lub ustawiona na 1 (gdy „1/0” = 1).

 

 

image.png

 

W powyższym przykładzie, gdy X0=1, rejestry R0~R9 zostaną wyzerowane.

 

image.png

 

 W powyższym przykładzie, gdy X0=1, bity M5~M11 zostaną wyzerowane.

Operacje na macierzach

Nr fun Mnemonik Funkcjonalność Nr fun Mnemonik Funkcjonalność
120 MAND AND macierzy 126 MBRD Odczytaj bit z macierzy
121 MOR OR macierzy 127 MBWR Wpisz bit do macierzy
122 MXOR XOR macierzy 128 MBSHF Przesuń bity macierzy
123 MXNR XNOR macierzy 129 MBROT Obróć bity w macierzy
124 MINV Zaneguj macierz 130 MBCNT Zlicz stany bitów w macierzy
125 MCMP Porównaj macierze


●         Macierz składa się z dwóch lub więcej kolejnych rejestrów 16-bitowych. Liczba rejestrów w macierzy nazywa się długością macierzy (L). Jedna macierz zawiera łącznie L×16 bitów (punktów) i to właśnie bit jest podstawową jednostką dla każdej operacji.

●         Funkcje macierzowe traktują bity macierzy 16×L jako zestaw kolejnych punktów (oznaczonych od M0 do M16L-1). Niezależnie od tego czy macierz składa się z rejestrów czy nie, przedmiotem operacji jest bit a nie  wartością numeryczna.

●         Funkcje macierzowe wykorzystywane są głównie do przetwarzania stanów dyskretnych, takich jak: wpisywanie, kopiowanie, porównywanie, wyszukiwanie, itp. pomiędzy pojedynczym stanem a macierzą lub pomiędzy macierzami. Funkcje te są wygodne w zastosowaniu dla pewnych, szczególnych rodzajów aplikacji.

●         Większość funkcji macierzowych, wykorzystuje 16-bitowy rejestr wskaźnika, w celu określenia danego punktu w macierzy. Rejestr ten nazywany jest wskaźnikiem macierzy (Pr). Jego poprawnym zakresem jest 0 do 16L-1, który odnosi się odpowiednio do bitów M0 do M16L-1 w macierzy.

●         Wśród operacji macierzowych, znajdują się takie operacje jak: przesuń w prawo/lewo i obróć w prawo/lewo. Przesunięcie w kierunku starszego bitu, nazywamy kierunkiem w lewo, natomiast przesunięcie w kierunku młodszego bitu, nazywamy kierunkiem w prawo (patrz schemat poniżej).

image.png

FUN 120 P MAND

AND MACIERZY (MATRIX AND)

FUN 120 P MAND

image.png

 

 

 

Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja zrealizuje operacje logicznego AND (jeżeli stan 2 bitów będzie 1, wynikiem będzie 1; w innym wypadku wynikiem będzie 0) pomiędzy bitami dwóch macierzy źródłowych Ma i Mb o długości L. Wynik zostanie zapisany w bitach macierzy docelowej Md, która ma tą samą długością (operacja AND realizowana jest pomiędzy bitami o tych samych pozycjach). Na przykład, jeżeli Ma0 = 0, Mb0 = 1, to Md0 = 0; jeżeli Ma1 = 1, Mb1 = 1, to Md1 = 1; itd., aż do wykonania operacji AND na bitach Ma16L-1 i Mb16L-1.

image.png

image.png

W programie po lewej, jeżeli stan X0 zmieni się z 0→1, na bitach macierzy: Ma, stworzonej z rejestrów od R0 do R4 i macierzy Mb, stworzonej z rejestrów od R10 do R14, wykonana zostanie operacja logicznego AND. Wyniki zostaną zapisane na bitach macierzy Md ,stworzonej z rejestrów od R20 do R24. Wyniki przedstawione są na schemacie poniżej.

 

image.png


FUN 121 P MOR

OR MACIERZY (MATRIX OR)

FUN 121 P MOR

image.png

 

 

Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja zrealizuje operacje logicznego OR (jeżeli stan któregokolwiek z 2 bitów będzie 1, wynikiem będzie 1; gdy stan obu z nich będzie 0, wynikiem będzie 0) pomiędzy bitami dwóch macierzy źródłowych Ma i Mb o długości L. Wynik zostanie zapisany w bitach macierzy docelowej Md, która ma tą samą długość (operacja OR realizowana jest pomiędzy bitami o tych samych pozycjach). Na przykład, jeżeli Ma0 = 0, Mb0 = 1, to Md0 = 1; jeżeli Ma1 = 0, Mb1 = 0, to Md1 = 0; itd., aż do wykonania operacji OR na bitach Ma16L-1 i Mb16L-1.

image.png

image.png

W programie po lewej, jeżeli stan X0 zmieni się z 0→1, na bitach macierzy: Ma, stworzonej z rejestrów od R0 do R4 i macierzy Mb, stworzonej z rejestrów od R10 do R14, wykonana zostanie operacja logicznego OR. Wyniki zostaną zapisane na bitach macierzy Md ,stworzonej z rejestrów od R10 do R14. W tym przykładzie, macierz docelowa Md i macierz źródłowa Mb, są tą samą macierzą, zatem macierz Mb zostanie nadpisana wynikami operacji OR. Wyniki przedstawione są na schemacie poniżej

 

image.png


FUN 122 P MXOR

XOR MACIERZY (MATRIX EXCLUSIVE OR(XOR))

FUN 122 P MXOR

image.png

 

 

Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja zrealizuje operacje logicznego XOR (jeżeli stan 2 bitów będzie różny, wynikiem będzie 1; w innym wypadku wynikiem będzie 0) pomiędzy bitami dwóch macierzy źródłowych Ma i Mb o długości L. Wynik zostanie zapisany w bitach macierzy docelowej Md, która ma tą samą długość L. Na przykład, w przypadku realizacji operacji XOR na bitach o tych samych numerach, jeżeli Ma0 = 0, Mb0 = 1, to Md0 = 1; jeżeli Ma1 = 1, Mb1 = 1, to Md1 = 0; itd., aż do wykonania operacji XOR na bitach Ma16L-1 i Mb16L-1

image.png

image.png

W programie po lewej, jeżeli stan X0 zmieni się z 0→1, na bitach macierzy: Ma, stworzonej z rejestrów od R0 do R4 i macierzy Mb, stworzonej z rejestrów od R10 do R14, wykonana zostanie operacja logicznego XOR. Wyniki zostaną zapisane na bitach macierzy Md ,stworzonej z rejestrów od R20 do R24. Wyniki przedstawione są na schemacie poniżej

 

image.png


FUN 123 P MXNR

XNOR MACIERZY

(MATRIX EXCLUSIVE NOR(XNR))

FUN 123 P MXNR

image.png

 

Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), funkcja zrealizuje operacje logicznego XNOR (jeżeli status 2 bitów będzie identyczny, wynikiem będzie 1; w innym wypadku wynikiem będzie 0) pomiędzy bitami dwóch macierzy źródłowych Ma i Mb o długości L. Wynik zostanie zapisany w bitach macierzy docelowej Md, która ma tą samą długość L (operacja XNOR realizowana jest pomiędzy bitami o tych samych pozycjach). Na przykład, jeżeli Ma0 = 0, Mb0 = 1, to Md0 = 0; jeżeli Ma1 = 0, Mb1 = 0, to Md1 = 1; itd., aż do wykonania operacji XNOR na bitach Ma16L-1 i Mb16L-1

image.png

image.png

Jeżeli „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P na bitach macierzy: Ma, stworzonej z rejestrów od R0 do R4 i macierzy Mb, stworzonej z rejestrów od R10 do R14, wykonana zostanie operacja logicznego XNOR.. Wyniki zostaną zapisane na bitach macierzy Md ,stworzonej z rejestrów od R10 do R14. Wyniki przedstawione są na schemacie poniżej.

 

image.png

FUN 124 P MINV

ZANEGUJ MACIERZ (MATRIX INVERSE)

FUN 124 P MINV

image.png

 

Jeżeli wejście sterujące „EN" = 1 lub zmieni się z 0 na 1 (instrukcja P), to sstan wszystkich bitów macierzy Ms, o długości L, zostanie zanegowany (wszystkie bity o stanie 1, zostaną zmienione na 0, natomiast bity o stanie 0, zostaną zmienione na 1). Wynik zostanie zapisany na bitach macierzy docelowej Md.

image.png

image.png

W programie po lewej, jeżeli stan X0 zmieni się z 0→1, bity macierzy stworzonej z rejestrów od R0 do R4, zostaną zanegowane (ponieważ w przykładzie, macierze Ms i Md są tą samą macierzą). Wyniki przedstawione są na schemacie poniżej.

 

image.png


FUN 125 P MCMP

PORÓWNAJ MACIERZE (MATRIX COMPARE)

FUN 125 P MCMP