Charakterystyka ogólna
Powszechne zastosowanie mikroprocesorów oraz kontrolerów we współczesnych urządzeniach domowych, biurowych oraz przemysłowych postawiło ważne zadanie połączenia tej izolowanej inteligencji w zwarty system umożliwiający wymianę informacji pomiędzy poszczególnymi jego elementami. Przykładem rozwiązania tego problemu są sieci lokalne (LAIK umożliwiające komunikację pomiędzy systemami komputerowymi na obszarze budynku, przedsiębiorstwa a nawet miasta.
W lokalnych sieciach komputerowych każda stacja może przejąć kontrolę nad szeregowym łączem transmisyjnym i przesłać dane do innej stacji. Typowa LAN łączy setki stacji komputerowych i transmituje dane z szybkością pomiędzy 1 – 10 Mbit/s na odległość od 400 do ponad 1 km. Sieci lokalne są jednak kosztowne, posiadają złożone protokoły transmisji, wymagają specjalizowanych kontrolerów i oprogramowania systemowego. Dla większych systemów konieczny jest też profesjonalny zarządca sieci.
Połączenie ze sobą niewielkiej ilości urządzeń znajdujących się na niedużym obszarze za pośrednictwem LAN wydaje się nieekonomiczne. Opracowano zatem inne, lepiej dopasowane do poszczególnych zastosowań standardy wymiany informacji pomiędzy systemami (urządzeniami) cyfrowymi
Przedstawiony szeregowy interfejs oznaczony symbolem D2BUS (Digital Data Bus) opracowany przez firmę Philips, który umożliwia transmisję danych z szybkością 100 kbitów/s (7.8 kbajtów/s) pomiędzy urządzeniami odległymi od siebie do 150 m. D2BUS pozwala zaadresować do 4096 jednostek jakkolwiek tylko 50 urządzeń można podłączyć do 150 metrowego segmentu. Łącze transmisyjne magistrali D2BUS jest jednokanałowe i może nim być para przewodów skręconych lub inny kabel, na przykład koncentryczny.´
O ile interfejs I2CBUS pomyślano jako szeregowe łącze pomiędzy układami scalonymi lub modułami urządzenia, o tyle D2BUS, w intencji projektantów, ma służyć do łączenia urządzeń znajdujących się jednak w bliskim sąsiedztwie. W specyfikacji interfejsu podano przykład zastosowania magistrali D2BUS do połączenia sprzętu audiowizualnego. Przyjęto tu nowoczesne wykonanie poszczególnych urządzeń, tzn., wykorzystanie magistrali I2CBUS do łączenia modułów wewnątrz urządzenia, oraz zewnętrzną magistralę D2BUS jako łącze transmisyjne pomiędzy urządzeniami.
Podstawowe cechy magistrali D2BUS to:
możliwość przejęcia kontroli nad magistralą przez którekolwiek z urządzeń wyposażonych w funkcję sterowania transmisją danych,
usunięcie lub wyłączenie urządzenia nie zakłóca pracy pozostałych jednostek podłączonych do magistrali,
zakłócenia na magistrali nie powodują błędnego funkcjonowania urządzeń,
złączem magistratowym jest audio/video Euroconnector (z podłączonymi dwom przewodami sygnałowymi).
D2BUS przewidziano do pracy w różnych środowiskach (przemysł, biuro, mieszkanie oraz urządzenia złożone na przykład samochód) i w związku z tym wyposażono w możliwość transmisji danych z różnymi szybkościami właściwymi dla danego urządzenia.
Istnieją następujące tryby transmisji:
Tryb 0 (mode 0) – szybkość transmisji nominalnie do 209 znaków/s. W trybie 0 toleruje częstotliwości generatora taktu kontrolera magistrali może wynosić 25%, co pozwala zastosowanie prostego generatora, opartego na elementach RC. Kontrolerem magistrali może być mikroprocesor urządzenia (o ile nie jest całkowicie zajęty realizacją funkcji urządzi a cały protokół transmisji realizowany jest programowo.
Tryb 1(mode 1) – szybkość transmisji nominalnie do 2457 znaków/s. W trybie 1 jest już sprzętowa realizacja kontrolera magistrali, jakkolwiek może on pracować z tolerancją wewnętrznego zegara (25%). Pozwala to, podobnie jak w trybie 0, na zastosowanie prostego generatora taktu opartego na elementach RC.
Tryb 2 (mode 2) – szybkość transmisji do 7760 znaków/s. Tryb ten wymaga kontrolera magistrali ze stabilnym zegarem wewnętrznym (0,5%) wykorzystującym rezonator kwarcowy.
Wymienione tryby transmisji mogą występować w tym samym systemie. Na przykład drukarka może pracować w trybie 1, a napęd dyskowy w trybie 2. Podłączony do magistrali procesor, chcąc wyprowadzić dane na drukarkę, ustali tryb 1 transmisji, a przy komunikacji z napędem, przełączy tryb na tryb 2. Tak więc jakakolwiek inteligentna jednostka podłączona do interfejsu D2BUS może komunikować się z którąkolwiek inną jednostką.
Z punktu widzenia przesyła danych na magistrali D2BUS, urządzenia do niej podłączone mogą być jednostkami typu master lub slave. Jednostką typu master może być każde urządzenie zdolne do przejęcia kontroli nad magistralą, tzn. do inicjacji oraz sterowania transmisją. W zależności od kierunku transmisji, jednostka może być nadajnikiem lub odbiornikiem. Powracając do poprzedniego przykładu, drukarka jest odbiornikiem, a stacja dysków może pracować zarówno jako odbiornik (operacja zapisu) lub jako nadajnik (o racja odczytu).
W systemie D2BUS przejąć kontrolę nad magistralą (być masterem) może którakolwiek z jednostek wyposażonych w funkcję master. W tym celu urządzenie wystawia na magistralę unikalny bit start. Jeżeli więcej niż jedna jednostka próbuje podczas trwania tego bitu przejąć kontrolę nad magistralą, to uruchamiany jest protokół arbitrażowy rozstrzygający o tym, które urządzenie będzie masterem. Protokół ten realizowany jest podczas wysyłania kolejnych bitów kontrolnych. I tak, po bicie start, każde z rywalizujących o dostęp do magistrali urządzeń wysyła kod określający tryb, w którym urządzenie chce pracować niższy tryb ma wyższy priorytet. Jeżeli wszystkie jednostki nadają w tym samym trybie transmisji, arbitraż jest kontynuowany. Po bitach określających tryb, każda jednostka transmituje swój adres własny. Ponieważ adresy są unikalne, na tym etapie arbitrażu musi nastąpić jego rozstrzygnięcie. Zasada jest prosta – urządzenie, które jako pierwsze wyśle 1, podczas gdy pozostałe wysyłają 0, wypada z arbitrażu. Zasada ta wynika z faktu, że sygnały generowane przez jednostki podłączone do D2BUS realizują funkcję iloczynu na drucie (wired – AND).
Urządzenie, które wygrało arbitraż zostaje masterem i przejmuje kontrolę nad magistralą. Aby nie dopuścić do zmonopolizowania magistrali przez jedno urządzenie, masterem można być tylko na czas przesłania jednej jednostki informacyjnej (ramki). Czas ten nazywany jest szczeliną.
Każdą ramkę podzielić można na 6 pól. Kolejne pola zawierają:
bit start,
bity określające tryb transmisji
adres własny mastera,
adres urządzenia slave,
bity kontrolne,
pole danych.
Master, który przejął kontrolę nad magistralą wysyła adres jednostki (urządzenia slave), z którą chce nawiązać łączność. Następnie wyprowadzane są bity kontrolne, określające kierunek transmisji. Jako ostatnie przesyłane są bajty danych. Podczas transmisji odbiornik wystawia potwierdzenie oznaczające poprawne odebranie adresu slave, bitów kontrolnych oraz każdego z bajtów danych
W trybach 1 i 2 maksymalna liczba przesyłanych bajtów zależy od kierunku transmisji Jeżeli transfer danych odbywa się od mastera do slave, master generuje zarówno wartość bitu jak i impulsy synchronizacji. Przy transmisji od slave do mastera, wartość bitu ustawia slave, ale impulsy synchronizacji wystawia master. Dlatego też w tym drugim przypadku w szczelinie czasowej można przesłać mniej bajtów. Maksymalna ilość bajtów przesyłana w szczelinie czasowej w poszczególnych trybach pracy wynosi;
tryb 0 – 2 bajty w każdym kierunku,
tryb 1 – 32 bajty przy transmisji master do slave, 16 bajtów przy transmisji slavc master,
tryb 2 – 123 bajty przy transmisji master do slave, 64 bajty przy transmisji slavc master.
Urządzenie może nie wykorzystać całej szczeliny czasowej, ale nie może przesyłać dar przez czas dłuższy niż jedna szczelina. Jeżeli po zakończeniu tego czasu master stale c nadawać lub odbierać musi ponownie przystąpić do arbitrażu;
Są jednak przypadki, w których master nie może stracić kontroli nad jednostką slave przykład master wybrał jeden z rejestrów w jednostce slave, ale nie zdążył w swojej szczelinie czasowej zapisać danych do tego rejestru. Jeżeli w następnej szczelinie koni nad magistralą przejąłby inny master i dokonał zmiany rejestru, to poprzedni master mógłby dokończyć swojego zadania po ponownym przejęciu kontroli nad magistralą. uniknąć takiej sytuacji master może przypisać daną jednostkę do siebie, co oznacza dostęp innych jednostek master do takiej jednostki slave jest blokowany, aż do c usunięcia przypisania. Przypisanie dokonywane jest poprzez wysłanie odpowiednich blokach w polu kontrolnym.
Arbitraż
Każda jednostka chcąca przejąć kontrolę nad magistralą D2BUS musi się po? arbitrażowi, który polega na porównaniu kolejnych bitów pola trybu transmisji i master wszystkich jednostek rywalizujących ze sobą o dostęp do łącza. Zasady arbitrażu są następujące: .
Po umieszczeniu każdego z bitów pola trybu transmisji na magistrali, sprawdza jej stan – jeżeli wynosi on wysoki (co oznacza, że nie ma jednostki rywalizującej o dostęp o mniejszej szybkości transmisji), arbitraż jest kontynuowany. W ten sposób, po wysłaniu wszystkich bitów trybu, pozostają w arbitrażu jednostki o tym samym trybie transmisji.
Podczas arbitrażu obowiązuje priorytet wynikający ze sposobu podłączenia jednostek do magistrali. Jest to podłączenie realizujące funkcję iloczynu na drucie, co oznacza dominację stanu niskiego.
I tak:
im niższy tryb tym wyższy priorytet,
w przypadku takiego samego trybu większy priorytet przypisany jest mniejsze mu adresowi.
Bit startu
Jednostka chcąca zostać masterem sprawdza, czy są na magistrali jakieś ramki oraz, gdy magistrala jest wolna, próbuje przejąć nad nią kontrolę. Jednostka, która nie chce być masterem monitoruje jedynie stan magistrali. Aby zainicjować przesył ramki, jednostka wystawia na magistralę w stan niski przez ściśle określony i unikalny czas. Unikalny oznacza tutaj, że czas trwania stanu niskiego w bicie startu´ jest różny, i przede wszystkim dłuższy, od czasu trwania tego stanu w innych bitach interfejsu D2BUS (jest to długie zero, charakterystyczne dla bitu start). Pozostałe jednostki rozpoznają ten stan jako bit start.
Po zakończeniu bitu start, rywalizujące o dostęp do łącza jednostki rozpoczynają wyprowadzanie bitów pola trybu transmisji. Jednostki slave monitorują magistralę i sprawdzają, czy nie zostały zaadresowane. Jeżeli stan niski w transmitowanym bicie jest za krótki, aby bit ten był bitem start, wszystkie jednostki powracają do stanu monitorowania.
Pole bitów określających tryb transmisji
W interfejsie D2BUS możliwa jest wymiana danych z trzema różnymi szybkościami. Szybkość transmisji jednostek określona jest przez bity pola tryb. Po zakończeniu bitu start, biorące udział w arbitrażu jednostki master (które mogą być w różnych trybach transmisji) wyprowadzają bity określające tryb transmisji:
tryb 0 = 0,
tryb 1 = 10,
tryb2=110.
Jednostki slave, które są wolniejsze od szybkości transmisji ustalonej na magistrali, przechodzą do stanu monitorowania.
Pole adresu mastera
Jeżeli dwie lub więcej jednostki master transmitują z taką samą szybkością, arbitraż jest kontynuowany podczas przesyłania bitów adresu mastera. Master o najmniejszym adresie wygrywa rywalizację (wynika to z właściwości funkcji logicznej iloczynu na drucie). Jednostki master wyprowadzają swój adresu rozpoczynając od najbardziej znaczącego bitu oraz, w czasie obecności poszczególnych bitów na łączu, sprawdzają stan magistrali. Jeżeli różni się on od wartości wyprowadzanego bitu, rezygnują z rywalizacji o sterowanie magistralą, kontynuując pracę jako potencjalne jednostki slave. Na końcu 12 bitowego pola adresu pozostaje tylko jeden, stale transmitujący master, który zamyka pole adresowe bitem parzystości, zmuszając w ten sposób pozostałe jednostki do sprawdzenia ważności adresu.
Pole adresu jednostki slave
Master, który wygrał arbitraż, transmituje następnie bity adresu jednostki slave, z którą chce nawiązać kontakt. Jako pierwszy przesyłany jest najbardziej znaczący bit 12 bitowego pola adresu jednostki slave. Po wyprowadzeniu adresu slave, master wystawia bit parzystości, co pozwala na sprawdzenie poprawności odbioru bitów adresu. Może się zdarzyć, że zaadresowana jako slave jednostka jest wyłączona, uszkodzona lub też w ogóle nie została podłączona do magistrali. Aby wykryć taką sytuację jednostka master, po wysłaniu adresu jednostki slave, oczekuje na potwierdzenie. Wszystkie potencjalne jednostki slave są zatem zobowiązane do odczytu stanu magistrali, co najmniej do chwili, kiedy któryś z bitów adresu slave nie zgadza się z odpowiadającym mu bitem adresu własnego. Jeżeli natomiast adres slave jest identyczny z adresem własnym jednostki oraz sprawdzono parzystość adresu master i adresu slave oceniając ją jako poprawną, to jednostka slave generuje potwierdzenie. Jeżeli stwierdzono błąd parzystości, to zaadresowana jednostka nie wysyła potwierdzenia (co oznacza błędny odbiór adresu) i przechodzi do stanu monitorowania.
Pole bitów kontrolnych
Pole bitów kontrolnych składa się z czterobitowego słowa wysyłanego w kolejności od najbardziej znaczącego bitu (MSB) do najmniej znaczącego bitu (LSB). Słowo to określa znaczenie wiadomości, a więc informuje o kierunku transmisji, czy jednostka slave ma być przypisana do mastera lub nie, czy wiadomość reprezentuje dane, status, adres przypisania pamięci lub rozkaz. Pole kontrolne kończy bit parzystości, po którego wysłaniu master oczekuje na bit potwierdzenia. Jeżeli jednostka slave potwierdzi odbiór słowa kontrolnego, master przechodzi do transmisji następnego pola, jeżeli nie, to master może podjąć próbę ponownego przesłania bitów kontrolnych. Jednostka slave czyta bity kontrolne i sprawdza parzystość słowa kontrolnego. Jeżeli nie może zrealizować operacji określonej kodem słowa kontrolnego lub stwierdza błąd parzystości, to nie wystawia potwierdzenia i przechodzi do stanu monitorowania. Jeżeli parzystość jest poprawna oraz jednostka slave może wykonać zdalny rozkaz z mastera, to wystawia potwierdzenie i przechodzi do następnego pola.
Pole danych
Pole to reprezentuje dane zapisywane przez jednostkę master do lub odczytywane z jednostki slave. Dane zorganizowane są w bajty (przesyłane poczuwszy od MSB), za każdym bajtem następuje bit EOD (End Of Data), bit parzystości P oraz bit potwierdzenia A. Bit EOD informuje odbiornik, czy ostatnio przesłany bajt kończy wiadomość, czy też nie. Jest on konieczny, ponieważ ramka może być krótsza niż szczelina czasowa. Jeżeli ramka nie zawiera maksymalnej liczby bajtów, stan niski bitu EOD ostatniego bajtu oznacza koniec wiadomości, przy założeniu, że następujący potem bit potwierdzenia będzie odebrany lub nadany poprawnie.
Operacja zapisu na magistrali
W przypadku operacji zapisu na magistrali, jednostka master transmituje bity danych, bit EOD, oraz bit P i oczekuje na bit A. Jednostka slave odbiera dane, bity EOD i P, po czym sprawdza parzystość i przy braku błędu wystawia bit A. Jeżeli wystapi bład parzystości, to jednostka slave nie akceptuje danych i nie wysyła potwierdzenia. W takiej sytuacji master może podjać kolejna próbę przesłania danych, o ile tylko nie zakończyła się szczelina czasowa. Jeżeli nie ma błędu parzystości, jednostka slave akceptuje dane i wysyła potwierdzenie. Następnie rozpoczyna transmisję następnego bajtu, przy założeniu, że ramka nie została zakończona lub też nie zakończyła się szczelina czasowa. Bit EOD podczas operacji zapisu nadawany jest przez jednostkę master. Stan wysoki tego bitu oznacza, że aktualnie wysyłany bajt nie jest ostatnim bajtem ramki oraz jego numer jest mniejszy od maksymalnej liczby bajtów w ramce. Stan niski bitu oznacza, że jednostka master nie ma więcej bajtów do przesłania, lub że kolejny bajt nie zmieści się już w szczelinie czasowej.
Operacja odczytu na magistrali
Podczas operacji odczytu jednostka master wystawia wszystkie impulsy oraz bit potwierdzenia, jednostka slave natomiast wyprowadza bity danych, bit EOD i bit parzystości. Po odebraniu pełnego bajtu danych, bitu EOD oraz P, jednostka master sprawdza parzystość. W przypadku stwierdzenia błędu, master odrzuca dane i nie wystawia potwierdzenia. Jeżeli bieżąca szczelina czasowa nie została zakończona, master może ponownie odczytać dane i kontynuować tę operację aż do zaakceptowania bajtu lub do zakończenia szczeliny czasowej. Jeżeli nie ma błędu parzystości, master przyjmuje dane i generuje bit A, po czym przechodzi do odbioru następnego bajtu o ile stan bitu EOD bajtu poprzedniego był wysoki i nie zakończyła się szczelina czasowa.
Protokół bitowy
Bity wyprowadzane na magistralę interfejsu D2BUS składają się z czterech części;
część poczatkowa reprezentowana poziomem wysokim (preparation period),
część synchronizacyjna reprezentowana poziomem niskim (synchronization period),
część określajaca rzeczywista wartość bitu (data period),
część końcowa reprezentowana poziomem wysokim (stop period)
Czas trwania bitów oraz ich poszczególnych części zależy od szybkości transmisji (trybu transmisji), typu bitu, maksymalnej wartości czasu propagacji na magistrali, czasu narastania i opadania sygnału w odbiorniku. W przypadku bitów biorących udział w arbitrażu, druga i trzecia część bitu są podzielone na dwa podprzedziały czasowe. Pozwala to masterowi, rywalizującemu o dostęp do magistrali, na sprawdzenie panujących na niej warunków, przed kontynuacja starań o dostęp do łącza.
W następujących dalej definicjach różnych typów bitów, odcinki czasowe związane z masterem są oznaczone przez Tl, T2 itd, natomiast. odcinki czasowe związane z działaniem jednostki slave przez Ta, Tb itd. Dodanie znaku ´ (na przykład T1´, T2´, Ta´) oznacza, że odcinki czasowe reprezentują już następny bit.
Poszczególne części bitu zostały dalej nazwane stanami. Mówi się zatem na przykład; że w czasie T1 bit znajduje się w stanie T1, w czasie Ta w stanie Ta itd.
Do opisu sekwencji stanów bitów różnych typów zastosowano następującą konstrukcję:
STAN (x) – pewien wycinek czasowy x bitu (x = Tl, T2, T3, T4, TS, T6, Ta, Tb, Tc)
WARUNEK – warunki ważne w chwili pojawienia się zbocza zegarowego,
AKCJA – akcja, która będzie podjęta w momencie pojawienia się zbocza zegarowego, na którym warunki są spełnione.
Na układy logiczne generujące bity, standard interfejsu D2BUS nakłada pewne ograniczenia: ? rezultat akcji oraz warunki muszą być stabilne pomiędzy kolejnymi impulsami zegarowymi (tzn. przez okres sygnału zegarowego),
opóźnienie pomiędzy zboczem impulsu zegarowego a sygnałem na magistrali jest uwzględnione w opóźnieniu wnoszonym przez nadajnik.
bus_in – sygnał wejściowy reprezentujący stan magistrali,
bus_out -sygnał wyjściowy układu generacji bitów,
master rqu – żądanie dostępu do magistrali,
rel_bit – reprezentuje wartość (0 lub 1) odebranego bitu,
arb_not_lost – kontynuacja arbitrażu,
arb_lost – wystąpienie z arbitrażu,
last_bit – ostatni bit wiadomości,
not last bit – nie ostatni bit wiadomości.
Definicja procedury:
błąd przebiegów czasowych (timing error) – wykonanie procedury obsługi t przebiegów czasowych, po której następuje przejście do stanu Ta bitu start. Definicja danych
clcnt – zawartość licznika, który zlicza impulsy zegarowe i generuje interwały cza: proporcjonalne do swojej zawartości. Licznik wraz z układem sterującym wyznacza trwania kolejnych stanów bitu.
Bit startu
Jednostka, która chce być masterem testuje, czy na magistrali jest stan wysoki. Stan niski oznacza, że magistrala jest-zajęta. Jeżeli stan wysoki na magistrali trwa dostatecznie długo, master wysyła bit startu. Bit startu sygnalizuje wszystkim pozostałym jednostkom rozpoczęcie transmisji.
Jednostka master.
T1= jeżeli jednostka chce zostać masterem i stan na magistrali jest wysoki przez czas T1, to przechodzi do T2. Wysoki stan na magistrali oznacza, że żadna inna jednostka nie wygenerowała bitu start i magistrala jest wolna. Jeżeli jednostka chce zostać masterem i podczas T1 wykryła stan niski, to przystępuje do arbitrażu i przechodzi do stanu Tb
(przebieg czasowy jednostki slave) utrzymując swoje wyjście w stanie wysokim: Jak widać jednostka master podczas arbitrażu może realizować przebiegi jednostki slave aby nie zniekształcić bieżącej wiadomości. Naturalnie wszystkie jednostki, zarówno rywalizujące o dostęp do magistrali jednostki master, jak i jednostki slave, muszą wykrywać bit start. Wykrywanie tego bitu polega na sprawdzeniu, czy czas trwania stanu niskiego jest dostatecznie długi (bit start), czy nie (inny bit).
T2 – master w stanie T2 wystawia stan. niski na magistralę i sprawdza, czy rzeczywiście jest na niej niski poziom sygnału. Jeżeli tak, to przechodzi do stanu T3. Brak stanu niskiego na magistrali oznacza błąd przebiegu czasowego.
T3 – podczas T3 na magistrali musi być niski poziom. Następnie master przechodzi do stanu T4 ustawiając stan wysoki. Stwierdzenie wysokiego poziomu na magistrali podczas T3 oznacza wystąpienie błędu przebiegu czasowego, ponieważ T3 jest interwałem reprezentującym unikalne długie zero, charakterystyczne dla bitu start.
T4 – jeżeli poziom wysoki zostanie stwierdzony podczas T4, jednostka przechodzi do T1´. Wystąpienie stanu niskiego na magistrali na końcu czasu T4 oznacza błąd przebiegu czasowego.
Jednostka slave:
Ta = jest to stan monitorowania magistrali. Jeżeli zostanie stwierdzony niski poziom, jednostka przechodzi do stanu Tb jako potencjalny slave.
Tb – podczas Tb na magistrali musi być stan niski. Jeżeli tak jest, to jednostka przechodzi do stanu Tc, jeśli nie, oznacza to, że aktualnie przesyłany bit nie jest bitem start. W takim przypadku jednostka powraca do stanu Ta.
Tc – realizacja sekwencji czasowej jednostki slave podczas bitu start nie musi oznaczać, że urządzenie nie może ubiegać się o kontrolę nad magistralą. Jeżeli w czasie Tc jednostka stwierdzi ~ na magistrali stan wysoki i chce zostać masterem, to przechodzi do stanu Tl´ i realizuje dalej sekwencję czasową jednostki master.
Jeżeli jednostka nie chce być masterem, przechodzi do stanu Ta´ jako potencjalny slave i realizuje sekwencję czasową jednostki slave. Utrzymywanie się na magistrali na końcu czasu Tc stanu niskiego, oznacza błąd przebiegu czasowego.
Bit arbitrażowy
Tl – jeżeli podczas Tl na magistrali jest stan wysoki, to jednostka przechodzi do stanu T2. Jeżeli podczas T1 zostanie stwierdzony niski poziom na magistrali, master przechodzi do T3 utrzymując swoje wyjście w stanie wysokim. Oznacza to, że inny master wygenerował impuls synchronizacji dla bieżącego bitu.
T2 – master generuje impuls synchronizujący poprzez wymuszenie poziomu niskiego na magistrali. Jeżeli niski poziom pojawi się na magistrali, master przechodzi do stanu T3, utrzymując stan niski na swoim wyjściu. Wysoki poziom na magistrali pod koniec T2 oznacza błąd przebiegu czasowego.
T3 – na końcu czasu T3 master przechodzi do stanu T4.
T4 – na początku T4, master uczestniczący w arbitrażu transmituje wartość bitu, która bierze udział w procedurze arbitrażowej. Na końcu T4 jednostka odczytuje magistralę i przechodzi do T5. Jeżeli poziom na magistrali jest taki jak wartość bitu, master kontynuuje rywalizację o kontrolę transmisji. jeżeli nie (na przykład master stwierdził stan niski, gdy sam ustawił stan wysoki), wypada z arbitrażu.
T5 – jeżeli pod koniec TS na magistrali jest poziom niski, jednostka przechodzi do T6. Jeżeli poziom jest wysoki, następnym stanem jest T1´. Master. który wypadł z arbitrażu przechodzi do Ta´ zamiast do Tl´.
T6 – master ustawia stan wysoki na wyjściu i sprawdza poziom na magistrali. Jeżeli jest on wysoki, to przechodzi do Tł´. Jednostka, która wypadła z arbitrażu przechodzi do Ta´ jako potencjalny slave. Utrzymanie się stanu niskiego na magistrali pod koniec T6 oznaćza błąd przebiegu czasowego.
Jednostka slave:
Ta – podczas Ta na magistrali powinien być wykryty stan niski. jeżeli tak się zdarzy, to jednostka przechodzi do Tb. Jeżeli nie, to wystąpił błąd przebiegu czasowego.
Tb – na końcu Tb jednostka slave próbkuje stan na magistrali. Jeżeli rozpozna poziom wysoki, następnym stanem jest Ta´, jeżeli niski, to przechodzi do Tc.
Tc – jeżeli podczas Tc wykryto stan wysoki, następnym stanem jest Ta´.~ Poziom pisk magistrali na końcu Tc oznacza błąd przebiegu czasowego.
Bit. Jednostka master do jednostki slave
W ten sposób nazwano grupę bitów tworzących adres jednostki slave, pole kontrolne oraz pole danych. Bity na wymienionych polach posiadaj wspólny format
Jednostka master:
T1 – podczas T1 na magistrali musi być poziom wysoki. Jeżeli tak jest, jednostka przechodzi do stanu T2. Stwierdzenie poziomu niskiego oznacza błąd przebiegu czasowego. T2 – master generuje impuls synchronizacyjny przez wymuszenie stanu niskiego na magistrali. Utrzymywanie się poziomu wysokiego podczas T2 oznacza błąd przebiegu czasowego. Jeżeli w ~ czasie T2 był poziom niski, to jednostka master przechodzi do stanu T3.
T3 – w czasie T3 maaster wyprowadza dane (wystawia wartość bitu) na magistralę, po czym przechodzi do T4.
T4 – w stanie T4 jeednostka master ustawia stan wysoki. Wystąpienie stanu niskiego pod koniec T4 oznacza błąd przebiegu czasowego, Jeżeli nie wystąpi stan niski (na magistrali będzie poziom wysoki), następuje przejście do T2´.
Jednostka slave:
Ta – w czasie Ta powinien być stwierdzony niski stan na magistrali. Jeżeli tak jest, jednostka slave przechodzi do Tb. Utrzymywanie się stanu wysokiego przez Ta oznacza błąd przebiegu czasowego.
Tb – na końcu Tb jednostka próbkuje magistralę i odczytuje wartość bitu. Jeżeli na magistrali jest poziom wysoki, następnym stanem jest Ta´, jeżeli niski, jednostka przechodzi do stanu Tc.
Tc – natychmiast po stwierdzeniu poziomu wysokiego na magistrali, jednostka przechodzi do Ta´. Stan niski na końcu Tc oznacza błąd przebiegu czasowego.
Bit jednostka slave do jednostki master
Jednostka master:
Tl – nie dotyczy tego bitu (T1 zawsze wynosi zero)
T2 – jednostka master generuje impuls synchronizacji wymuszając niski poziom na magistrali. Na końcu T2, jeżeli stwierdzony zostanie poziom niski na magistrali, jednostka master przechodzi do T3. Wysoki poziom na magistrali podczas T2 oznacza błąd przebiegu czasowego.
T3 – podczas T3 jednostka master ustawia stan wysoki, po czym próbkuje magistralę w celu odczytu wartości bitu transmitowanego przez jednostkę slave i przechodzi do T4. T4 – na końcu T4 na magistrali powinien być poziom wysoki. Jeżeli tak jest, jednostka master przechodzi do T2´, jeżeli nie, to wystąpił błąd przebiegu czasowego.
Jednostka slave:
Ta – po stwierdzeniu na magistrali poziomu niskiego generowanego przez jednostkę master, jednostka slave przechodzi do Tb. Utrzymywanie się na końcu Ta poziomu wysokiego na magistrali oznacza błąd przebiegu czasowego.
Tb – podczas Tb jednostka slave transmituje właściwą wartość bitu. Jeżeli pod koniec Tb na magistrali jest poziom wysoki, jednostka slave przechodzi do stanu Ta´, jeżeli niski, do stanu Tc.
Tc – podczas Tc na magistrali powinien się pojawić poziom wysoki. Jeżeli tak się stanie, jednostka slave przejdzie do stanu Ta´, jeżeli nie, wystąpił błąd przebiegu czasowego.
Wykorzystanie bitów w protokole D2BUS
Bity kontrolne
Cztery bity kontrolne określaj rodzaj operacji, jak to przedstawia tablica 6.1.
leżeli jednostka A jest przypisana jednostce B, to może ona na żądanie innych jednostek niż B, wykonywać następujace funkcje sterujące:
B3 B2 B1 BO funkcja sterująca
0 0 0 0 odczyt statusu jednostki slave
0 1 0 0 odczyt młodszego bajtu adresu przypisania
0 1 0 . 1 odczyt najstarszej czwórki adresu przypisania
Podane powyżej kody nie zmieniają statusu jednostki slave, jako urządzenia przypisanego jednostce master. Jednostka A może jednak wykonywać wszystkie funkcje na żądanie jednostki B.
Bit końca danych
Dla zasygnalizowania, że dany bajt jest ostatnim bajtem ramki, dodano jeden bit na końcu każdego bajtu danych. Znaczenie bitu końca danych jest następujące:
1 – nie ostatni bajt danych (not last bit), 0 – ostatni bajt danych (last bit).
Bit końca danych włączony jest do kontroli parzystości. Bit parzystości
Bitem parzystości zabezpieczone są
bity adresu jednostki master,
bity adresu jednostki slave,
bity danych wraz z bitem końca danych.
W systemie D2BUS, bit kontroli parzystości wypracowywany jest według zasady nieparzystości (odd parity), tzn. przy nieparzystej ilości jedynek w zabezpieczanym polu, bit kontrolny posiada wartość 0; przy parzystej ilości jedynek, bit kontrolny posiada wartość 1.
Bit potwierdzenia
Dla potwierdzenia poprawności transmisji w systemie D2BUS wprowadzono bit potwierdzenia. W zasadzie istnieją trzy różne bity potwierdzenia. Wspólne dla nich jest, że:
0 oznacza potwierdzenie pozytywne,
1 oznacza potwierdzenie negatywne (brak potwierdzenia).
Kody rozkazów zdalnych
B3 B2 Bt I BO I Rodzaj operacji I
0 0 0 0 Odczyt statusu jednostki slave
0 1 Zarezerwowane da przyszłego zdefiniowania
0 0 1 0 Odczyt statusu jednostki slave i przypisanie jednostki slave jednostce master
0 0 1 1 Odczyt danych i przypisanie jednostki slave jednostce master
0 1 0 0 Odczyt młodszej części adresu przypisania (8 bitów)
0 1 0 1 Odczyt najstarszej czwórki adresu przypisania
0 1 1 0 Odczyt statusu jednostki slave i usuniecie przypisania
0 1 1 1 Odczyt danych i usuniecie przypisania
1 0 0 0 Zapis adresu pamięci i przypisanie jednostki slave jednostce master
1 0 0 1 Zarezerwowane do przyszłego zdefiniowania
1 0 1 0 Zapis rozkazu i przypisanie jednostki slave jednostce master
1 0 1 1 Zapis danych i przypisanie jednostki slave jednostce master
1 1 0 0 Zarezerwowane do przyszłego wykorzystania
1 1 0 1 Zarezerwowane do przyszłego wykorzystania
1 1 1 0 Zapis rozkazu i usuniecie przypisania
1 1 1 1 Zapis danych i usuniecie przypisania
Pierwszy bit potwierdzenia wysyłany jest przez jednostkę slave, która rozpoznała swój adres. Potwierdzenie powinno być negatywne w następujących przypadkach:
błąd parzystości adresu jednostki master lub adresu jednostki slave,
tryb transmisji zbyt wysoki dla jednostki slave,
wystąpienie błędu przebiegu czasowego,
jednostka slave nieobecna.
W tych sytuacjach transmisja zostanie zatrzymana.
Drugi bit potwierdzenia wysyłany jest przez jednostkę slave po odebraniu bitów kontrolnych. Potwierdzenie to nie jest wystawiane w następujących przypadkach:
błąd parzystości bitów kontrolnych,
bufor odbiornika jest niepusty i bit B3 = 1,
brak danych w buforze danych w sytuacji, gdy B3 = 0 i słowo kontrolne nie jest rozkazem odczytu statusu lub adresu przypisania,
jednostka slave jeśt przypisana innemu masterowi za wyjątkiem odczytu status u i adresu przypisania,
jednostka slave nie posiada pamięci i master zamierza wystawić adresy pamięci, ? jednostka slave nie jest przypisana do jednostki master a odebrała rozkaz podania swojego adresu przypisania,
wystąpienie błędu przebiegu czasowego,
odebranie zarezerwowanych kodów sterujących.
W podanych przypadkach transmisja jest zatrzymywana.
Trzecim bitem potwierdzenia jest bit wysyłany po odebraniu każdego bajta danych. Odbiór danych nie jest potwierdzany w następujących sytuacjach:
wystąpił błąd parzystości,
stwierdzono błąd przebiegu czasowego w odbiorniku podczas ostatniego transferu (ostatni transfer oznacza transmisję po wysłaniu poprzedniego bitu potwierdzenia), .
bufor odbiornika jest pełny i nie można zaakceptować bajta,