Jak działa Bufor Cykliczny?
Rozdział 2 Animacja Bufora Cyklicznego
Rozdz. 2.1 Wstęp
Przekonasz się jakim wspaniałym narzędziem jest animacja. Zamiast pisać, że zawartość rejestru A wpisana będzie do rejestru B pod warunkiem że… itd, to tylko klikasz zegar i samemu badasz układ cyfrowy! Poczujesz się jak Pan Jourdain z Moliera który odkrył, że całe życie mówił prozą. Polecam włączenie audio.
Rozdz.2. 2 Bardzo ważne!!! Jak wchodzić i wychodzić z każdej animacji
Animację wywołujesz ją klikając napis ANIMACJA. znajdujący się pod większością rysunków. Wchodzisz wtedy na odpowiednią stronę serwera SCRATCH-a ale jednocześnie wychodzisz ze strony tego kursu! Dlatego gdy już wszystko jest jasne, powróć klikając klasyczny windowsowy przycisk ze strzałką “powrót do poprzedniej strony”.
Rys. 2-1
Jak wracać z animacji do kursu.
Rozdz. 2.3 Animacja Bufora Cyklicznego
Kliknij niebieski napis ANIMACJA pod Rys. 2-2 a potem zieloną flagę aby ustawić stan początkowy.
Rys. 2-2
Cykl napełniania i opróżniania Bufora Cyklicznego ANIMACJA
Klikając zegar zaobserwuj jak tekst “Ala ma kota” jest wprowadzany z UDR poprzez Bufor Cykliczny do pamięci RAM.
Zauważysz że:
– w trakcie cyklu Napełniania Bufora Cyklicznego kolejne znaki bajty z UDR są wprowadzane do głowy węża H–>wąż przyrasta w prawo
– w trakcie cyklu Opróżniana Bufora Cyklicznego najwcześniej wprowadzone bajty do Bufora Cyklicznego są “wymiatane” z ogona węża T do pamięci RAM–>wąż “skraca” się w prawo
– Zmiana cyklu z Napełnianie na Opróżnianie gdy w głowie H pojawi się znak spacji
– Zmiana cyklu z Opróżnianie na Napełnianie gdy bufor jest pusty. Innymi słowy gdy T=H lub “śmierć węża”
W analizie pomocna może być też instrukcja obsługi obok animacji.
Rozdz. 2.4 Uwagi dla programisty
Korzystając z powyższych informacji można napisać program w assemblerze lub innym języku (np. C++) pod konkretny system mikroprocesorowy. Tu ze względów dydaktycznych zastosowano bufor 8 bajtowy. Z tekstem “Ala ma kota” nie ma problemu, ale już np. z “Aleksandra ma kota” system zgłupieje. Wąż zacznie zjadać swój ogon. Zaradzić temu można bardzo łatwo. Należy zwiększyć rozmiar Bufora Cyklicznego np. do 32 bajtów. W języku polskim rzadko są większe wyrazy niż 32-literowe i system powinien działać prawidłowo. Niezależnie od tego, stan gdy T=H w cyklu napełniania bufora, oznacza “zjadanie ogona”. Należy napisać wtedy program obsługi tego niekorzystnego zjawiska, np. miganie lampki w najprostszym przypadku. Z kolei stan T=H w cyklu opróżniania bufora to “bufor pusty”.
Głównym zadaniem programisty jest wybranie odpowiedniego momentu przełączania cyklu napełnianie/opróżnianie.
W przypadku przejścia cyklu z opróżniania bufora na napełnianie bufora sprawa jest chyba oczywista. Jest to stan T=H w cyklu opróżniania. Bufor jest wtedy pusty, albo inaczej węża nie ma głowy bo pokrywa się ona z ogonem–> T=H.
Inaczej jest z przejściem cyklu z napełnianie bufora na opróżnianie bufora. Tu programista może sobie kombinować. W naszym przykładzie sygnałem tym był znak spacji. A można inaczej. Np. sygnał zbliżającego się przepełnienia bufora. Np. gdy w buforze 32 bajtowym jest już 30 bajtów. Lub jeszcze inaczej…
.