I 2 C BUS (1) Protokół komunikacyjny I 2 C BUS został opracowany przez firmę Philips w celu umożliwienia komunikacji między układami scalonymi Magistrala (bus) składa się z dwóch linii dwukierunkowych: linii danych SDA linii zegara SCL 1
I 2 C BUS (2) Obie linie muszą być podłączone do dodatniego napięcia zasilania: V cc V cc SDA SCL 2
I 2 C BUS (3) Definicja protokołu komunikacji: 1) Przesył danych może nastąpić tylko wtedy, kiedy magistrala jest wolna 2) Podczas przesyłu danych linia danych nie może zmieniać stanu wtedy, kiedy linia sygnału zegarowego jest w stanie wysokim 3) Zmiana stanu linii danych podczas wysokiego stanu linii sygnału zegarowego oznacza sygnał sterujący 3
4) Stany magistrali: I 2 C BUS (4) a) magistrala wolna - obie linie w stanie wysokim b) początek przesyłu danych (START) - sygnał sterujący SCL SDA t BUF t HD_STA 4
I 2 C BUS (5) 4) Stany magistrali (c.d.): c) koniec przesyłu danych (STOP) - sygnał sterujący SCL SDA t SU_STOP 5
I 2 C BUS (6) 4) Stany magistrali (c.d.): d) przesył danych SCL SDA ważne dane ważne dane Na jeden bit danych przypada jeden takt sygnału zegarowego 6
I 2 C BUS (7) Nadajnik -urządzenie, które wysyła dane Odbiornik -urządzenie, które odbiera dane Urządzenie nadrzędne (master) - urządzenie, które generuje sygnał zegarowy Dane są przesyłane bajtami. Po przyjęciu bajtu odbiornik wysyła potwierdzenie (9-ty bit) 7
I 2 C BUS (8) Potwierdzenie: Master generuje dodatkowy takt sygnału zegarowego. Nadajnik wystawia na linię SDA stan wysoki. Odbiornik musi wymusić na linii SDA stan niski przez cały czas, kiedy SCL jest w stanie wysokim. 8
I 2 C BUS (9) Koniec danych (w przeciwieństwie do końca bajtu) jest sygnalizowany przez odbiornik typu master poprzez brak potwierdzenia. Nadajnik pozostawia linię SDA w stanie wysokim, aby master mógł wygenerować sekwencję STOP. 9
I 2 C BUS (10) Przykład: Master - 8051 (np. można użyć linii portu P1) Slave - PCF8582A - EEPROM 256B 1) Zapis danych S SLAVE ADDR. 0AWORD ADDRESSA BAJT DANYCH AP R/W 10
2) Odczyt danych: I 2 C BUS (11) Potwierdzenie od pamięci S SLAVE ADDR. 0 AWORD ADDRESSA S SLAVE ADDR. 1 A R/W BAJT DANYCH A BAJT DANYCH A BAJT DANYCH 1 P Potwierdzenie od 8051 Brak potwierdzenia 11
I 2 C BUS (12) Adresy: Adres urządzenia składa się z 7 bitów. Zwykle cztery z nich są ustalone i oznaczają grupę urządzeń (np. pamięci EEPROM) Pozostałe są programowane (wyprowadzenia podłączane do masy lub zasilania) Najmłodszy bit określa kierunek przepływu danych: 0 - zapis, 1 - odczyt 12
I 2 C BUS (13) Synchronizacja sygnału zegarowego 1) Wszystkie urządzenia typu master generują swój sygnał zegarowy na linii SCL. 2) Synchronizacja wynika ze sposobu podłączenia urządzeń do linii SCL (wired AND) - 0 jest stanem dominującym. 3) Kiedy na linii SCL pojawia się zbocze opadające, wszystkie układy typu master zaczynają odliczać swój niski stan sygnału zegarowego. 13
I 2 C BUS (14) Synchronizacja sygnału zegarowego (c.d.) 4) Stan niski pozostaje na linii SCL dotąd, aż urządzenie wymuszające stan niski najdłużej zakończy odliczanie. 5) Od momentu wykrycia zbocza narastającego na SCL wszystkie układy typu master zaczynają odliczać stan wysoki. 6) Układ, który odlicza stan wysoki najkrócej, wymusi na linii SCL stan niski, itd. 14
I 2 C BUS (15) Synchronizacja sygnału zegarowego (c.d.) wait state U1 Reset licznika U2 SCL 15
I 2 C BUS (16) Arbitraż: 1) Przeprowadzany na linii danych SDA 2) Wygrywa to urządzenie typu master, które pierwsze wyśle stan niski 3) Arbitraż obejmuje wiele bitów, aż do rozstrzygnięcia 4) Urządzenie typu master, które przegrało, może generować sygnał zegarowy do końca bajtu, w którym przegrało. 16
I 2 C BUS (17) 5) Jeżeli rozstrzygnięcie nastąpiło w trakcie przesyłu adresu, to urządzenie, które przegrało, przechodzi w tryb slave receive (bo istnieje możliwość, że ten, który wygrał, odwoływał się do tego, który przegrał. 6) Hand-shake - jeżeli odbiornik typu slave nie nadąża z odbiorem na poziomie bajtów, to po wygenerowaniu potwierdzenia przytrzymuje linię zegara w stanie niskim (urządzenie typu master przechodzi wtedy w stan oczekiwania) aż do czasu, kiedy będzie gotów. 17
CAN - Controller Area Network Sieć CAN opracowana w latach 80-tych przez firmę Bosch -miała być stosowana w systemach pracujących w czasie rzeczywistym Szybki przesył informacji ( do 1Mb/s), duża odporność na zakłócenia - dlatego często stosowana w motoryzacji W samochodach obecne są różnego typu funkcje sterowane elektronicznie, np. wtrysk paliwa, ABS czy ASC (acceleration skid control) 18
CAN - Controller Area Network ASC wymaga synchronizacji pracy silnika oraz wtrysku paliwa, aby można było zredukować obroty, jeżeli koło się ślizga. Jeżeli wykonanie jakiejś funkcji wymaga bieżącej informacji z kilku urządzeń, to urządzenia te należy połączyć w jakąś sieć. Aby ograniczyć liczbę kabli stosuje się transmisję szeregową. 19
CAN - Controller Area Network Węzeł 1 Węzeł 2 CPU CPU Terminator magistrali Sterownik CAN Sterownik CAN Terminator magistrali CAN_H CAN_L 20
CAN - Controller Area Network Przesył danych odbywa się na dwóch liniach: CAN_H oraz CAN_L. Logiczne 0 CAN_H > CAN_L (stan dominujący). Logiczna 1 CAN_H < CAN_L (stan recesywny). Różnicowy przesył danych zwiększa niezawodność!!! Transmisja danych musi być szybka i skuteczna, bo wymaga tego bezpieczeństwo użytkownika (samochód). Jak zatem zorganizować arbitraż??? 21
CAN - Controller Area Network Destination-oriented -każdy węzeł w sieci ma swój adres - tak było do tej pory. Data-oriented lub content-oriented (sieć CAN) - każdy rodzaj przesyłanej informacji ma swój identyfikator. 22
CAN - Controller Area Network Arbitraż przeprowadza się na 11-bitowym identyfikatorze informacji. Wygrywa ten węzeł, który wcześniej wysłał zero (stan dominujący) - węzły monitorują stan linii. Jeżeli wykryją, że na linii pojawił się stan inny, niż ten, który próbowały wystawić, przechodzą w tryb odbioru. Węzeł, który wygrał wysyła swoją informację do końca. Zaleta: przynajmniej jedna informacja została wysłana. 23
CAN - Controller Area Network Każdy rodzaj informacji (np. liczba obrotów silnika, poziom oleju, itd.) ma swój identyfikator. Identyfikator informacji jest tym niższy, im ważniejsza jest informacja. 24
CAN - Controller Area Network Arbitraż -przykład Węzeł nr 1 Węzeł nr 2 Węzeł nr 3 Stan linii przegrał nr 1 przegrał nr 3 25
CAN - Controller Area Network Skuteczny arbitraż to nie wszystko, potrzebne jest także wykrywanie błędów Format danych (standardowy): linia nieaktywna S O F Identyfikator informacji (11 bitów) arbitraż R T R I D E r 0 DLC (4 bity) sterowanie SOF - Start Of Frame - 1 bit dominujący ( 0 ) Identyfikator informacji - arbitraż RTR - Remote Transmission Request dominujący - przesył danych recesywny - prośba o dane 0-8 bajt d danyc 26
CAN - Controller Area Network Format danych (c.d.): linia nieaktywna S O F Identyfikator informacji (11 bitów) arbitraż R T R I D E r 0 DLC (4 bity) sterowanie 0-8 bajt d danyc IDE - IDentifier Extension dominujący - format standardowy (identyfikator 11-bitowy) recesywny - format rozszerzony (identyfikator 29-bitowy) r0 - bit zarezerwowany dla przyszłych zasto 27 sowań (zawsze dominujący)
CAN - Controller Area Network Format danych (c.d.): koniec CRC koniec ACK I D E r 0 DLC (4 bity) 0-8 bajtów danych CRC 15 bitów A C K EOF 3 bity sterowanie dane CRC ACK EOF DLC - Data Length Code (określa długość danych 0-8 bajtów) CRC - Cyclic Redundancy Check ( suma kontrolna) koniec CRC - zawsze recesywny ACK - potwierdzenie (nadajnik zwalnia linię, odbiornik musi wystawić stan dominujący) koniec ACK - zawsze recesywny 28
CAN - Controller Area Network Format danych (c.d.): koniec CRC koniec ACK 0-8 bajtów danych CRC 15 bitów A C K EOF 3 bity dane CRC ACK EOF I N T linia nieaktywna EOF - End Of Frame (3 bity recesywne) INT - INTermission Field - (3 bity recesywne - w tym czasie nie wolno nadawać) 29
CAN - Controller Area Network Format rozszerzony: linia nieaktywna S O F Identyfikator (11 bitów) S R R I D E Identyfikator (18 bitów) R T R r 1 r 0 SRR - Substitute Remote Request - część pola arbitrażu (zawsze recesywny - 1 ) Jeżeli pierwsza część identyfikatora jest taka sama, to wygrywa format standardowy 30
CAN - Controller Area Network Wykrywanie błędów: Suma kontrolna CRC odbiornik oblicza CRC i porównuje z otrzymaną wartością, brak zgodności oznacza błąd. Sprawdzanie formatu ramki Niektóre pola mają ustalone wartości np.: koniec CRC, koniec ACK, EOF, INT Jeżeli w tym polu zostanie odebrana inna wartość niż przewidziana, oznacza to błąd. 31
CAN - Controller Area Network Wykrywanie błędów (c.d.): Sprawdzanie potwierdzenia Odbiornik ma obowiązek wystawić stan dominujący w polu ACK. Jeżeli nadajnik nie wykryje potwierdzenia, zgłasza błąd Monitorowanie stanu linii Jeżeli nadajnik stwierdzi, że poza polem arbitrażu lub potwierdzenia nie udało mu się wystawić żądanej wartości, zgłasza błąd. 32
CAN - Controller Area Network Wykrywanie błędów (c.d.): Bit stuffing W trakcie poprawnej transmisji w pewnych polach ramki SOF, Arbitraż, Sterowanie, Dane, CRC nie może się pojawić więcej niż 5 bitów o tej samej wartości. Po każdych 5 bitach tej samej wartości nadajnik automatycznie wstawia dodatkowy bit o wartości przeciwnej. Odbiorniki automatycznie opuszczają ten bit. Jeżeli go jednak zabraknie, zgłaszają błąd. 33
CAN - Controller Area Network Wykrywanie błędów (c.d.): Komunikat o błędzie: Więcej niż 5 kolejnych bitów o tej samej wartości Wykrywanie awarii węzła: Każdy węzeł posiada dwa liczniki błędów TEC - Transmit Error Counter REC - Receive Error Counter 34
CAN - Controller Area Network Błąd W zależności od typu błędu liczniki są zwiększane o pewną wartość Poprawna transmisja lub odbiór Zawartość odpowiedniego licznika jest zmniejszana (pod warunkiem, że jest różna od zera). 35
CAN - Controller Area Network 6 x 0 6 x 1 TEC lub REC > 127 Error Active TEC i REC < 128 Error Passive TEC > 255 128 x 11 bitów recesywnych Bus Off 36
CAN - Controller Area Network Skuteczność wykrywania błędów: prawdopodobieństwo nie wykrycia błędu danych: 4.7x10-11 Przykład: Sieć CAN pracuje codziennie przez 8 godzin z szybkością 1Mb/s, przy założeniu, że przesyłane komunikaty mają średnio długość 80 bitów, a sieć wykorzystana jest w 50% Jeden nie wykryty błąd pojawi się raz na 1000 lat 37
CAN - Controller Area Network Skuteczność wykrywania błędów: prawdopodobieństwo nie wykrycia błędu danych: 4.7x10-11 Przykład: Sieć CAN pracuje codziennie przez 8 godzin z szybkością 1Mb/s, średnia długość komunikatów 80 bitów, sieć wykorzystana w 50% Jeden nie wykryty błąd pojawi się raz na 1000 lat 38
83C152 83C152 - Universal Communications Controller (oparty na 8051BH) Zwykły port szeregowy (local serial channel - LSC) Maksymalna szybkość transmisji w trybie 0 to 1Mb/s (f osc = 11.059 MHz) Maksymalna szybkość transmisji w trybie 2 to 375 kb/s Ulepszony port szeregowy (Global Serial Channel - GSC), szybkość przesyłu do 2.4 Mb/s, realizuje kilka protokołów przesyłu danych. 39
83C152 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) Format danych: PREAMBUŁA BOF ADRES DANE CRC EOF Preambuła - na przemian zera i jedynki, długość programowalna: 0, 8, 16, 32, 64 bity umożliwia odbiornikom synchronizację informuje pozostałe nadajniki, że linia jest zajęta 40
83C152 CSMA/CD (c.d.) Format danych (c.d.) PREAMBUŁA BOF ADRES DANE CRC EOF BOF -początek ramki (dwie kolejne jedynki) informuje o końcu preambuły oraz o tym, że za chwilę będzie nadawany adres ADRES - adres odbiornika (8 lub 16 bitów), automatyczne rozpoznawanie adresów 41
83C152 CSMA/CD (c.d.) Format danych (c.d.) PREAMBUŁA BOF ADRES DANE CRC EOF DANE - długość dowolna, ale musi być wielokrotnością 8 bitów CRC - suma kontrolna generowana sprzętowo EOF - koniec ramki (wysoki stan linii przez 2 bity) 42
83C152 CSMA/CD (c.d.) Problemy: Jak wykryć błędy transmisji? Jak przeprowadzić arbitraż? 43
Kodowanie danych Błędy transmisji Najprostszym sposobem kodowania danych jest kodowanie poziomem, tj. Niski poziom - 0 Wysoki poziom - 1 Wady: Wysyłanie długich sekwencji może spowodować, że odbiornik się rozsynchronizuje. 44
Błędy transmisji Port szeregowy kontrolera 8051 przesyła dane w porcjach 10 lub 11-bitowych (bit startu, 8 lub 9 bitów danych, bit stopu), problem utraty synchronizacji nie jest więc krytyczny. Bywają jednak protokoły, które dopuszczają możliwość przesyłania danych o znaczącej długości - tutaj problem jest poważny Rozwiązania: Bit stuffing Zmiana sposobu kodowania 45
Błędy transmisji Kod Manchester - dane kodowane zboczem: Zbocze narastające 1 Zbocze opadające 0 sekwencja 110001 Manchester sekwencja 110001 kodowanie poziomem 46
Błędy transmisji Kod Manchester (c.d.) Zbocze powinno pojawić się dokładnie w połowie czasu trwania bitu. Zbocza występują nie częściej niż co 1/2 bitu i nie rzadziej niż co 1 bit Własność tę wykorzystuje się do wykrywania błędów transmisji (np. kolizja) 47
Błędy transmisji Kod Manchester (c.d.) Tolerancja wahań częstotliwości: Zbocze musi się pojawić w środku każdego bitu oraz może się pojawić na granicy bitów. W kontrolerze 83C152 linia odbioru danych jest próbkowana z częstotliwością 8x większą niż częstotliwość przesyłu danych 48
Błędy transmisji Kod Manchester (c.d.) Tolerancja wahań częstotliwości (c.d.) Wynik próbkowania sekwencji 001 powinien być następujący: 11110000:11110000:00001111 System próbkowania toleruje wahania częstotliwości rzędu: a) ± 1 próbka, gdy zbocza oddalone o 1/2 bitu b) ± 2 próbki, gdy zbocza oddalone o 1 bit 49
Błędy transmisji Kod Manchester (c.d.) Tolerancja wahań częstotliwości (c.d.) Badane są trzy przypadki: a) określony stan linii trwa zbyt krótko (wąski impuls) b) brakujące zbocze narastające c) nieoczekiwane zbocze opadające 50
Błędy transmisji Kod Manchester (c.d.) Tolerancja wahań częstotliwości (c.d.) a) Wykrywanie wąskich impulsów: Dany stan linii musi się utrzymywać przez co najmniej 3 próbki: 11110001111 OK 1111001111 źle!!! 51
Błędy transmisji Kod Manchester (c.d.) b) Brakujące zbocze narastające: Zbocze narastające jest zawsze oczekiwane w połowie każdego bitu zaczynającego się od zera Jeżeli poprzednie zbocze (opadające) pojawiło się na granicy bitów, to wahania częstotliwości są tolerowane na poziomie ± 1 próbki: 1111:00001111 idealnie 1111:00000111 OK 1111:00000011 źle!!! 52
Błędy transmisji Kod Manchester (c.d.) Tolerancja wahań częstotliwości (c.d.) b) Brakujące zbocze narastające (c.d.) ± Jeżeli poprzednie zbocze (opadające) pojawiło się w środku poprzedniego bitu, to wahania częstotliwości są tolerowane na poziomie ± 2 próbek: 11110000:00001111 idealnie 11100000:00000111 OK 11100000:00000011 źle!!! 53
Błędy transmisji Kod Manchester (c.d.) c) Nieoczekiwane zbocze opadające: Jeżeli bit rozpoczął się od poziomu wysokiego, to oczekuje się, że w połowie bitu pojawi się zbocze opadające. Jeżeli się nie pojawiło, to zakłada się, że transmitowany jest koniec ramki (linia w stanie wysokim przez 2 bity) Jeżeli w środku następnego bitu pojawiło się zbocze opadające, to znaczy, że nastąpił błąd transmisji. 54
CSMA/CD (c.d.) Po wykryciu kolizji: Arbitraż Węzły, które próbowały dokonać transmisji nadają sygnał blokujący (np. 16 lub 32 logiczne 0 ). Nadawanie sygnału blokującego (jam) umożliwia wszystkim węzłom w sieci zorientowanie się, że nastąpiła kolizja Po nadaniu sygnału blokującego wszystkie węzły wycofują się (tj. przestają obciążać linię) i czekają, aż linia przestanie być aktywna. 55
CSMA/CD (c.d.) INTERFRAME SPACE Arbitraż INTERFRAME SPACE to minimalny czas, który musi upłynąć między dwiema kolejnymi transmisjami, nawet jeżeli nie było żadnej kolizji. To, co dzieje się dalej, zależy od metody arbitrażu 1. Arbitraż losowy normalny (normal random) Jednocześnie z INTERFRAME SPACE odliczany jest czas określony przez rejestr BACKOFF. Decyduje dłuższy z obu czasów. 56
Arbitraż losowy licznik kolizji generator liczb losowych TCDCNT PRBS AND Załaduj BACKOFF ZEGAR BACKOFF BACKOFF=0 57
Arbitraż LICZNIK KOLIZJI TCDCNT - transmission collision detection counter - na początku jego wartość jest równa 0 Po wykryciu pierwszej kolizji z prawej strony wpisywana jest wartość 1, po każdej kolejnej kolizji wpisywane kolejne jedynki pierwsze podejście do nadawania 00000000 pierwsza kolizja 00000001 druga kolizja 00000011 trzecia kolizja 00000111...... ósma kolizja 11111111 58
Arbitraż GENERATOR LICZB LOSOWYCH PRBS - pseudo-random bit sequence BACKOFF - iloczyn logiczny licznika kolizji oraz generatora liczb losowych pierwsza kolizja: druga kolizja: i tak dalej... 00000000 lub 00000001 00000000 lub 00000001 lub 00000010 lub 00000011 59
BACKOFF zlicza w dół. Arbitraż Częstotliwość zliczania (tzw. SLOT TIME) jest programowalną wielokrotnością czasu trwania jednego bitu: SLOT TIME = liczba bitów x czas trwania 1 bitu liczba bitów zapisana w rejestrze specjalnym SLOTTM INTERFRAME SPACE również jest wielokrotnością czasu trwania jednego bitu (zapisaną w rejestrze specjalnym IFS i na ogół różną od SLOTTM) 60
Arbitraż losowy normalny W arbitrażu losowym normalnym zliczanie BACKOFF rozpoczyna się w momencie wykrycia, że linia jest wolna, tzn. równocześnie z rozpoczęciem odliczania czasu INTERFRAME SPACE. Jeżeli BACKOFF=0 i upłynął czas INTERFRAME SPACE, można zacząć nadawać. Co będzie, jeżeli SLOT TIME < INTEFRAME SPACE??? (SLOTTM < IFS) 61
Arbitraż losowy normalny SLOT TIME < INTEFRAME SPACE Załóżmy, że dwa węzły: rozpoczęły nadawanie, wykryły kolizję (pierwszą), przesłały sygnał blokujący, odczekały, aż linia będzie wolna rozpoczęły odliczanie czasu INTERFRAME SPACE i BACKOFF 62
Arbitraż losowy normalny SLOT TIME < INTEFRAME SPACE Po wykryciu pierwszej kolizji zawartość BACKOFF może wynosić albo 00000000, albo 00000001, czyli czas, po którym BACKOFF osiągnie wartość zero, będzie nie większy niż SLOT TIME Oznacza to, że: BACKOFF < INTERFRAME SPACE W rezultacie oba węzły odliczają ten sam czas INTERFRAME SPACE, ponownie przystępują do transmisji i ponownie wykrywają kolizję. 63
Arbitraż losowy normalny SLOT TIME < INTEFRAME SPACE Wartość licznika kolizji się zwiększa, ale BACKOFF nadal może mieć niską wartość (wszystko zależy od zawartości generatora liczb losowych), co oznacza kolejne kolizje. Jeżeli licznik kolizji się przepełni, oprogramowanie może go wyzerować, ale kolizje nadal będą się zdarzać. Arbitraż losowy normalny jest mało skuteczny Jak go poprawić??? 64
Arbitraż losowy 2. Arbitraż losowy alternatywny Odliczanie BACKOFF rozpoczyna się dopiero po odliczeniu INTERFRAME SPACE 3. Arbitraż deterministyczny Stosowany przy dużym obciążeniu sieci. Podobnie jak w arbitrażu losowym alternatywnym odliczanie BACKOFF rozpoczyna się dopiero po odliczeniu INTERFRAME SPACE 65
Arbitraż deterministyczny 3. Arbitraż deterministyczny (c.d.) Odliczanie BACKOFF rozpoczyna się dopiero po odliczeniu INTERFRAME SPACE Każdemu węzłowi przypisuje się pewien numer (zapisany w rejestrze MYSLOT) Im wyższy numer, tym wyższy priorytet Najwyższy numer w sieci wpisywany jest do rejestru TCDCNT każdego węzła sieci. Do rejestru PRBS wpisywana jest wartość 0FFH 66
Arbitraż deterministyczny 3. Arbitraż deterministyczny (c.d.) Podobnie jak poprzednio: BACKOFF = TCDCNT and PRBS czyli jest taki sam dla każdego węzła sieci. BACKOFF zlicza w dół. Jeżeli jego wartość zrówna się z MYSLOT (priorytet węzła), to węzeł może przystąpić do nadawania. Najszybciej przystąpi do nadawania węzeł, który ma najwyższą zawartość MYSLOT. 67
Komunikacja szeregowa Udoskonalenia portu szeregowego kontrola poprawności bitu stopu automatyczne rozpoznawanie adresów sprzętowa suma kontrolna kilka równorzędnych nadajników sposoby wykrywania kolizji i błędów arbitraż Czy można dodać coś jeszcze??? 68
UPI-452 UPI - Universal Peripheral Interface interfejs do procesora zewnętrznego FIFO 8051 DMA 69
UPI-452 FIFO = 128 komórek o długości 9 bitów FIFO jest strukturą o dostępie szeregowym (w przeciwieństwie do dostępu swobodnego) Komunikacja szeregowa jest przeciwieństwem komunikacji równoległej Komunikacja między UPI-452 a procesorem zewnętrznym zachodzi w obu kierunkach, toteż FIFO można podzielić na dwa kanały: kanał wejściowy (μp zewnętrzny do UPI-452) kanał wyjściowy (UPI-452 do μp zewnętrznego) 70
UPI-452 Co jest istotne przy obsłudze dużych bloków danych? 1. Jak uniknąć przesuwania danych do wyjścia? odczyt zapis 71
UPI-452 Co jest istotne przy obsłudze dużych bloków danych? Zamiast przesuwania danych stosuje się wskaźniki zapisu i odczytu. Oba wskaźniki zmieniają się niezależnie, w miarę jak dane napływają do FIFO i są zeń odczytywane. 2. Jak uniknąć przepełnienia FIFO? Sprawa jest prosta: blokujemy zapis, jeżeli FIFO jest pełne. 72
UPI-452 Co jest istotne przy obsłudze dużych bloków danych? 3. Kiedy zezwalać na zapis do FIFO? Zezwalanie na zapis tylko wtedy, kiedy FIFO jest puste, nie ma sensu, zwłaszcza jeżeli bloki danych przesyłanych do FIFO są znacznie krótsze od samego FIFO Zezwalanie na zapis jeżeli wolna jest chociaż jedna komórka FIFO też nie ma sensu, bo procesor na ogół wysyła jakieś paczki danych. Najlepiej wprowadzić progową liczbę bajtów, które 73 muszą być wolne, aby zezwolić na zapis.
UPI-452 Co jest istotne przy obsłudze dużych bloków danych? 4. Zablokować odczyt z pustego FIFO Można poinformować procesor zewnętrzny za pomocą przerwania. Jak funkcjonują wskaźniki odczytu i zapisu? FIFO pracuje jako tzw. bufor cyrkulacyjny: jeżeli wartość wskaźnika przekroczyła długość FIFO, to wskaźnik jest zerowany. 74
Kolejka FIFO Jak funkcjonują wskaźniki odczytu i zapisu? FIFO pracuje jako tzw. bufor cyrkulacyjny: jeżeli wartość wskaźnika przekroczyła długość FIFO, to wskaźnik jest zerowany. Wskaźnik zapisu przechowuje adres komórki, do której będzie zapisany następny bajt. Jest automatycznie inkrementowany po każdym zapisie. Wskaźnik odczytu przechowuje adres następnej komórki do odczytu. Jest automatycznie inkrementowany po każdej operacji odczytu. 75
Kolejka FIFO Przykład 1 a) 0 b) 0 FIFO puste 1 zapis 2B 1 WO=WZ=0 2 WO=0 2 3 WZ=2 3 c) 0 odczyt 2B 1 WYNIK: WO=WZ=2 2 FIFO puste 3 WO=WZ=2 76
Kolejka FIFO Przykład 2 a) 0 b) 0 FIFO pełne 1 odczyt 2B 1 WO=WZ=0 2 WO=2 2 3 WZ=0 3 c) 0 zapis 2B 1 WYNIK: WO=WZ=2 2 FIFO pełne 3 WO=WZ=2 77
Kolejka FIFO Jak odróżnić sytuacje, kiedy kolejka FIFO jest pełna lub pusta, jeżeli w obu przypadkach wskaźniki odczytu i zapisu są sobie równe??? 78
Kolejka FIFO Jeżeli WZ i WO zrównały się w wyniku odczytu, kolejka FIFO jest pusta. Jeżeli WZ i WO zrównały się w wyniku zapisu, to kolejka FIFO jest pełna. 79