====== Magistrale szeregowe ======

Interfejsy COM (RS-232C) 
Magistrale USB, FireWire(IEEE 1394), I2C


==== RS-232 ====
 
jest magistralą komunikacyjną przeznaczoną do szeregowej transmisji danych. Najbardziej popularna wersja tego standardu, RS-232C pozwala na transfer na odległość nie przekraczającą 15 m z szybkością maksymalną 20 kbit/s.
Standard RS-232 opisuje sposób połączenia urządzeń DTE (ang. Data Terminal Equipment) tj. urządzeń końcowych danych (np. komputer) oraz urządzeń DCE (ang. Data Circuit-terminating Equipment), czyli urządzeń komunikacji danych (np. modem).


==== FireWire(IEEE 1394) ====

zewnętrzny interfejs, za pomocą którego można podłączyć do komputera różne urządzenia peryferyjne. Standard ten umożliwia transmisję danych z szybkością nawet 400 MB/s, co ma zastosowanie głównie przy obróbce dźwięku i obrazu o wysokiej rozdzielczości. Do pojedynczego portu IEEE 1394 można podłączyć maksymalnie 63 urządzenia zewnętrzne. Potrzebny jest do tego specjalny sześciożyłowy kabel, w którego skład wchodzą dwie pary oddzielnie ekranowanych kanałów danych oraz dwa przewody zasilające. Przewody zasilające mogą dostarczać napięcie od 8 do 14 V oraz prąd dochodzący do 1,5 A. W większości przypadków eliminuje to potrzebę użycia zewnętrznego źródła zasilania poszczególnych węzłów oraz umożliwia podtrzymanie transmisji nawet przy wyłączonym lub nieprawidłowo funkcjonującym urządzeniu. W standardzie FireWire, podobnie jak w USB, możliwe jest podłączanie i odłączanie urządzeń do komputera w czasie jego pracy (hot-plug), a spięte w taką sieć urządzenia zdolne są do samoistnej konfiguracji. Dzięki temu wszystkie urządzenia mogą samodzielnie komunikować się ze sobą nawet bez pośrednictwa komputera.


==== I2C ====

Magistrala wykorzystywana w 8 bitowych mikrosterownikach jednoukładowych. Pomiędzy urządzeniami przyłączonymi do magistrali informacje przenoszą dwie szyny:
**SDA** - dane szeregowe
**SCL** - zegar szeregowy
Urządzenia podpięte do magistrali rozpoznawane są po unikalnym adresie, który dodatkowo zawiera takie informacje jak:
Czy urządzenie jest mikrosterownikiem, czy może pracować jako nadajnik lub odbiornik.

Architektura magistrali składa się z:
  * Nadajnika(wysyła dane do magistrali)
  * Odbiornika(Odbiera dane z magistrali)
  * Urządzenia nadrzędnego(tzw. Master - inicjuje transfer, wytwarza sygnały zegarowe i kończy transfer)
  * Urządzenia podrzędnego(tzw. Slave - urządzenia adresowane przez urządzenie nadrzędne)

Dodatkowo wyróżnia się następujące terminy:
  * Wielonadrzędność - więcej niż jedno urządzenie nadrzędne może próbować sterować magistralą w tym samym czasie bez  zakłócenia informacji
  * Obsługa zgłoszeń konfliktowych - procedura pozwalająca na to że, jeśli więcej niż jedno urządzenie nadrzędne ciągle próbuje sterować magistralą, to tylko jedno może to robić i wiadomość nie jest zakłócona
  * Synchronizacja - procedura do synchronizacji sygnałów zegarowych dwu lub więcej urządzeń


==== USB i opis rozszerzony ====

(ang. Universal Serial Bus) nowoczesny standard uniwersalnej magistrali szeregowej umożliwiającej podłączenie do komputera zewnętrznych urządzeń peryferyjnych. Interfejs ten obsługiwany jest przez większość popularnych systemów operacyjnych (Windows od wersji OSR2 a Linux od 2.2.12) i umożliwia jednoczesne przesyłanie różnego typu informacji (np. danych dla drukarki w czasie realizacji połączenia telefonicznego) nie powodując przy tym wzajemnych zakłóceń (przewód połączeniowy zapewnia przy tym również zasilanie urządzenia). Transmisja odbywa się przy wykorzystaniu różnego, zależnego od specyfikacji danego urządzenia pasma, którego odpowiednim dostosowaniem zajmuje się zintegrowany z płytą specjalizowany kontroler.

Na organizację systemu USB składają się postanowienia dotyczące:
  * magistrali i przebiegu transmisji danych
  * zewnętrznych urządzeń systemu USB
  * głównego sterownika magistrali USB

W systemie USB szczególną pozycję, jako jednostka zarządzająca magistralą USB, zajmuje komputer macierzysty. Sprawuje nadzór nad magistralą i dołączonymi do niej urządzeniami. Komputer kontroluje dostęp urządzeń do magistrali - urządzenie uzyskuje dostęp do magistrali tylko w wyniku uzyskania zezwolenia od komputera macierzystego. Ponadto komputer macierzysty sprawuje nadzór nad logiczną konfiguracją magistrali. Powiązania komputera macierzystego są opisane przez normę ISO.

Poniżej przedstawiam najważniejsze pojęcia związane z magistralą USB:
  * Bajt synchronizacji (SYNC Field) - zakodowana NRZI sekwencja siedmiu zer zakończona jedynką, poprzedzająca każdy pakiet danych przesyłany magistralą USB. Wykorzystywany do dostrojenia urządzeń wejściowych.
  * Funkcja (Function) - funkcja pełniona przez przyłączone do magistrali USB urządzenia.
  * Główny sterownik (Host Controller) - kontroler magistrali USB. Znajdujące się po stronie komputera macierzystego układy interfejsowe i związane z nimi oprogramowanie.
  * Identyfikator pakietu (PID - Packet ID) - ośmiobitowe pole na początku pakietu danych zawierające zakodowany typ pakietu.
  * Klient (Client) - rezydujący w komputerze macierzystym program użytkowy, który współdziała z wykonywanymi programami aplikacyjnymi przy organizowaniu transmisji danych pomiędzy urządzeniem wykonawczym a komputerem macierzystym.
  * Kod odwrotny bez powrotu do zera (NRZI - non-return-to-zero-inverted) - metoda kodowania pozwalająca uniknąć, podczas transmisji szeregowej, przesyłania impulsów zegarowych(kod samo synchronizujący się).
  * Komunikat (Message) - postać informacji przesyłanej w potoku danych.
  * Kontrola sekwencji pakietów danych (Data Toggles) - mechanizm kontrolujący na przemienność parzystych i nieparzystych pakietów danych. Polega na sprawdzaniu zgodności identyfikatorów PID (DATA0 i DATA1) ze stanem jednobitowych przełączników ustawionych w nadajniku i odbiorniku.
  * Nagłówek wstępny (PRE - Preamble) - wysyłany przez komputer specjalny pakiet, którym poprzedzane są dane dla urządzeń działających powoli. Pozwala koncentratorom rozpoznać dla jakiego typu urządzenia(wolnego czy szybkiego) przeznaczona jest informacja.
  * Odpowiedz negatywna (NAK - Negative Acknowledgment) - pakiet wysłany przez urządzenie wykonawcze (nigdy przez komputer macierzysty) oznaczający brak akceptacji odebranych danych lub brak gotowości do nadawania.
  * Potok (Pipe) - abstrakcyjny obiekt, za pośrednictwem którego program wykonywany na komputerze macierzystym realizuje przepływ danych pomiędzy tzw. punktem końcowym w urządzeniu wykonawczym a buforem w pamięci komputera.
  * Przekaz przerwaniowy (Interrupt Transfer) jeden ze sposobów przesyłania danych magistralą USB. Pozwala urządzeniom, które tego potrzebują, od czasu do czasu w wyznaczonych okresach obsługi przesyłać do komputera macierzystego niewielkie porcje danych np. zgłoszenie potrzeby obsługi.
  * Przekaz sterujący (Control Transfer) - asynchroniczna, inicjowana przez oprogramowanie komputera macierzystego, łączność typu zapowiedź-odpowiedź typowo wykorzystywana w operacjach przesyłania konfiguracji, komend i komunikatów stanu.


=== Kodowanie danych przy transmisji USB ===

Dane wysłane na magistralę dzielone są na pakiety i kodowane metodą NRZI. Ponieważ kod NRZI jest kodem samosynchronizującym nie trzeba oddzielnie przesłać impulsów zegarowych. W przeciętnej metodzie kodowania jedynka jest reprezentowana przez brak zmiany poziomu a zero przez zmianę poziomu. Bity danych kierowane są na magistralę USB w kolejności od mniej znaczących do bardziej znaczących. Ciąg bitów, jeszcze przed zakodowaniem NRZI, jest modyfikowany przez wstawienie zera po każdej wykrytej sekwencji 6 jedynek. Ma to ochronić układy pętli PLL w odbiorniku przed zablokowaniem. W odbiorniku, po rozkodowaniu danych, wstawione zera są usuwane.
Jeszcze wcześniej, zanim zostanie przeprowadzone wstawianie bitów i kodowanie NRZI, na początku każdego wysłanego na magistralę pakietu danych, zostaje doklejony bajt synchronizacji SYNC(sekwencja 7 zer zakończona jedynką). Na końcu Każdego pakietu generowany jest trwający 2 bity znacznik końca pakietu EOP.

----
Coś więcej o RS i USB w trochę inny sposób:
{{:wspolczesne_systemy_komputerowe:rs_usb.pdf|rs_usb.pdf}}