Skip to main content

7 - część 2

FUN 105110 D P R-T_SQUEUE

WYSZUKAJKOLEJKA WARTOŚĆ W TABELI

(REGISTER TO TABLE SEARCH)QUEUE)

FUN 105110 D P R-T_SQUEUE

image.pngimage.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), funkcjato rozpoczniestan wyszukiwaniewejścia od„I/O” pierwszegookreśla rejestruczy wdane tabeliIW Tswejdą do kolejki (kiedy „FHD”I/O” = 1 lub gdy wartość wskaźnika Pr osiągnie wartość L-1), lub od kolejnego rejestru (Tspr + 1) określonegoczy przezwyjdą wartośćz wskaźnikaniej i zostaną przeniesione do OW (kiedy „FHD” = 0 i Pr < L-1), w celu odszukania pierwszej danej różnej niż Rs (kiedy D/S = 1) lub równej Rs (kiedy D/SI/O” = 0). Jak pokazano na schemacie powyżej, wartości IW będą zawsze zapisywane w pierwszym rejestrze (QU1) w kolejce. Po odnalezieniuwprowadzeniu rejestruwartość spełniającegodo określone warunki, nastąpi automatyczne zatrzymanie wyszukiwania, akolejki, wskaźnik Pr wskażezostanie odnalezionyautomatycznie rejestr,zwiększona jednocześnieo wyjście1, odnalezionoaby „FND”wskazywał ustawionezawsze zostaniedaną, 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 1.najstarszą Poz przeszukaniuwartości, ostatniegoktóre rejestru tabeli, wykonanie funkcji zostanie zatrzymane niezależnie od tego czy rejestr został odnaleziony. W takim wypadku, znacznik „END” zostanie ustawiony na 1, a wartość Pr zatrzyma się na L-1. Przy kolejnej realizacji instrukcji, wartość Pr automatycznie powróci na górną pozycjępozostały w tabeli (Pr = 0) w celu ponownego rozpoczęcia wyszukiwania od początku tabeli.kolejce.

l PrawidłowymJeżeli zakresemżadne wskaźnikawartoś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-1.L W(0 przypadkuoznacza wykroczeniapustą pozakolejkę, natomiast wartości od 1 do L oznaczają odpowiednio od QU1 do QUL). Jeżeli zakres ten zakres,zostanie wyjścieprzekroczony, stan wyjścia błędu wskaźnika „ERR” zostanie ustawiony na 1, a funkcja nie zostanie wykonana.

 

image.pngimage.png


 

 

image.png