« poprzedni punkt 


3. Sterownik łącza szeregowego

Transmisja szeregowa pomiędzy dwoma urządzeniami odbywa się w taki sposób, że nadajnik i odbiornik połączony jest dwoma przewodami. Jeden z nich jest dołączony do napięcia odniesienia, którym najczęściej jest masa. Drugim przewodem przesyła się sygnały (niski i wysoki poziom) odpowiadające przesyłanym bitom (szeregowo, tj. bit po bicie). Ta niewielka liczba przewodów ułatwia przesyłanie danych na duże odległości. Mała liczba przewodów jest zaletą, ale szybkości transmisji szeregowej są zwykle mniejsze od szybkości transmisji równoległej. Drugą wadą transmisji szeregowej jest konieczność synchronizowania zegarów nadajnika i odbiornika. Problem synchronizacji jest rozwiązywany na dwa sposoby:

- nadajnik i odbiornik są wyposażone w generatory o zbliżonej częstotliwości,
- nadajnik wysyła do odbiornika sygnał zegarowy wraz danymi.

W pierwszym przypadku mówimy o transmisji asynchronicznej, a w drugim o transmisji synchronicznej.

Transmisja asynchroniczna

Transmisja asynchroniczna jest wykorzystywana tylko dla przesyłania krótkich informacji (od 5 do 8 bitów). Wynika to z faktu, że częstotliwości generatorów pracujących w nadajniku i w odbiorniku nie mogą być identyczne. Różnica częstotliwości decyduje przez jaki czas synchronizacja będzie poprawna. Im mniej różnią się częstotliwości generatorów nadajnika i odbiornika, tym dłuższy jest czas synchronizacji. Początek synchronizacji jest wyznaczany przez nadajnik (moment rozpoczęcia transmisji) i jest to zawsze pierwsze opadające zbocze transmitowanego sygnału.

Rysunek XIV.6. Przebieg w asynchronicznej transmisji szeregowej

Na rysunku XIV.6 pokazano przebieg pojedynczej asynchronicznej transmisji szeregowej czyli przesłanie jednego znaku (bajtu). W czasie przerwy w transmisji na linii łączącej nadajnik z odbiornikiem jest stan wysoki. Transmisja rozpoczyna się bitem START (opadające zbocze sygnalizuje początek transmisji i początek tego bitu), którego czas trwania jest wyznaczany przez generator nadajnika. Czas trwania jednego bitu może być równy jednemu okresowi generatora zegara, ale częściej wykorzystuje się generatory o większej częstotliwości i czas trwania bitu jest wtedy kilka-, kilkanaście- lub kilkadziesiąt razy dłuższy od okresu zegara. W takim przypadku łatwiej o zbliżenie częstotliwości zegarów.

Po bicie START pojawiają się bity informacyjne. Liczba ich waha się od 5 do 8. Sterowniki transmisji asynchronicznej (UART) są programowane i można dynamicznie ustalać liczbę bitów w znaku. Programuje się także opcjonalne dodawanie bitu parzystości. Sterownik można zaprogramować, tak aby dodawał bit parzystości lub aby go nie dodawał. Dodatkowo można zaprogramować czy ma dodawać bit parzystości czy nieparzystości. Na końcu transmisji zawsze jest wstawiany bit STOP, który ustawia linię transmisyjną w stan wysoki. Jeśli z jakiś względów nie dopuszcza się aby zaraz po bicie STOP można było uruchamiać następną transmisję, to w sterownikach można zaprogramować czas trwania bitu STOP. Zwykle może on być ustawiany na czas trwania jednego bitu lub z mnożnikiem 1.5 albo 2. Sterowniki transmisji szeregowej mają wyjście dla danych TxD, wejście dla danych RxD oraz standardowe sygnały łącza z modemem DSR, DTR, RTS i CTS.

Rysunek XIV.7. Układ sterownika transmisji szeregowej

Na rysunku XIV.7 pokazano końcówki sterownika transmisji szeregowej (wersja uproszczona - nie zaznaczono wszystkich końcówek) o numerze 8050 w przykładowym połączeniu z modemem.

Transmisja synchroniczna

Trudno sobie wyobrazić aby przesyłanie dużych porcji informacji odbywało się za pomocą transmisji asynchronicznej, gdyż jest to transmisja znak po znaku (bajt po bajcie), a więc bardzo wolna. Stosowane szybkości transmisji asynchronicznej są rzędu 10kb/s. W takim przypadku przesłanie obrazu o rozdzielczości 1024 na 1024 trwałoby ponad 100 sekund. Stosując transmisję synchroniczną można uzyskać większe szybkości oraz przesyłać duże porcje informacji. W czasie przesyłania danych przesyła się także przebieg zegarowy. Zegar można przesyłać na dwa sposoby:

- oddzielnym przewodem,
- zakodować przebieg zegarowy w ciągu bitów danych.

Częściej stosuje się ten drugi sposób. Polega on na tym, że bity nie są kodowane poziomem napięcia jak to dotychczas zakładaliśmy. Aby wraz z danymi przesłać przebieg zegarowy musi być spełniony warunek, aby w czasie trwania każdego bitu nastąpiła co najmniej jedna zmiana poziomu napięcia. Dlatego poszczególnym bitom przypisuje się jedną lub więcej zmian napięcia. Sposobów kodowania spełniających ten warunek jest bardzo wiele. Jako przykładowy sposób kodowania pokazany zostanie kod znany pod nazwą Manchester.

Rysunek XIV.9. Kodowanie typu Manchester

Na rysunku XIV.9 pokazano jak koduje się wartości dwójkowe w kodzie Manchester. Jedynce logicznej odpowiada opadające zbocze w środku czasu trwania bitu, a zeru logicznemu zbocze narastające. Dlatego jeśli dwa kolejne bity mają taką samą wartość, to poziom napięcia musi zmienić się także na początku czasu trwania drugiego bitu. Jeśli kolejne dwa bity mają wartości przeciwne, to na początku trwania bitu zmiana nie zachodzi. Można zauważyć, że w pokazanym sposobie kodowania występują tylko dwie częstotliwości: f (gdy sąsiednie bity mają przeciwne wartości) i 2f (gdy sąsiednie bity mają takie same wartości). Odfiltrowując odpowiednio te częstotliwości w odbiorniku można odtworzyć przebieg zegarowy i wykorzystać go do synchronizacji odbieranego ciągu danych.


« poprzedni punkt