SATA – Kody w życiu codziennym

   Moja przygoda z kodami rozpoczęła się na początku lat 60, gdy z podziwem uczestniczyłem w seansach nadawczo odbiorczych kolegi krótkofalowca, który za pomocą kodów Morsea nawiązywał  łączność  z  całym światem. Kod Morse’a – stworzony w 1838 przez Samuela Morse’a  i Alfreda Vaila sposób reprezentacji alfabetu, cyfr  i  znaków specjalnych za pomocą dźwięków, błysków światła, impulsów elektrycznych lub znaków popularnie zwanych kreską i kropką.

Morsea

Pod koniec lat 60 na studiach w ramach ćwiczeń sam kodowałem proste procedury programowe za pomocą kodów ASCII, które przeniesione na tasiemkę papierową kompilowane była przez operatora maszyny cyfrowej ODRA 1204. ASCII (czyt. aski; American Standard Code for Information Interchange, – 7 bitowy kod przyporządko-wujący liczby z zakresu 0−127, literom alfabetu angielskiego, cyfrom, znakom przystankowym, symbolom oraz poleceniom sterującym. Na przykład litera „a” jest kodowana jako liczba 97, a  znak spacji  jest kodowany  jako  32. https://pl.wikipedia.org/wiki/ASCII.  Procedury pisałem na taśmie papierowej za pomocą dalekopisu telekomunikacyjnego, który miał klawiaturę podobna do maszyny do pisania oraz perforator taśmy dziurkowanej.  Taśmy dziurkowane (perforowane) – ścieżkowe, kodowały 7-bitowy kod ASCII, gdzie ósma ścieżka służyła jako bit parzystości.  Pasek mniejszych dziurek służył jako perforacja dla zębatego kółka mechanicznego czytnika lub perforatora, a dla czytnika fotoelektrycznego służył jako wskaźnik poprzecznego rzędu bitów.

Taśma_dziurkowana-8_sciezek_Odra1300

Kolejny kontakt z kodami  w latach 80-tych i 90-tych, to komputery PC w których obowiązywał  standard ATA transferu danych dla  dysków HDD. ATA ( Advanced Technology Attachment) – interfejs systemowy  w  komputerach klasy PC i Amiga, przeznaczony do komunikacji z dyskami twardymi, zaproponowany w 1983 przez firmę Compaq. Używa się także zamiennie skrótu IDE (Integrated Drive Electronics), od 2003 roku (kiedy wprowadzono SATA) standard ten jest określany jako PATA (od „Parallel ATA”). Na początku XXI wieku ze zdumieniem dowiedziałem się, że powstał nowy standard SATA Serial ATA (ang. Serial Advanced Technology Attachment, SATA) – szeregowa magistrala komputerowa, który przesyła szeregowo dane cyfrowe i oferuje parametry dużo lepsze od PATA, https://pl.wikipedia.org/wiki/ATA_(technologia).
Z niedowierzaniem zastanawiałem się jak to jest możliwe, żeby transfer szeregowy strumienia bajtów wyeliminował dotychczasowy stabilny  transfer równoległy, bajtów cyfrowych. Powód  okazał się prozaiczny, a mianowicie  standard PATA działa w technice TTL tzn.:, 5V, który stanowi istotne ograniczenie w zwiększaniu szybkości transferu danych – związanym z przepustowością kolejnych wersji interfejsu (ATA/33, ATA/66, ATA/100, ATA/133).

Z ogólnodostępnej literatury okazało się, że w standardzie SATA zastosowano technologie LVDS (Low Voltage Differential Signaling)  oraz kodowanie 8b/10b, które zapewnia wiarygodne przesyłanie danych z prędkościami gigabatowymi, z stabilnym odtwarzaniem zegara taktującego odczyt sygnału po stronie odbiorczej, dzięki ograniczeniu widma sygnału szeregowego.  8b/10b kody transmisyjne zostały opracowane przez firmę IBM na początku lat 1980  i  gwarantują wielokrotne występowanie zboczy sygnału w każdym bajcie oraz usunięcie składowej stałej poprzez równoważenie liczby zer i jedynek.  Częste zmiany stanu w strumieniu pozwalają odbiornikowi na synchronizację z odbieranymi danymi.  Usunięcie składowej stałej umożliwia stosowanie sprzężenia AC, co ułatwia transmisje w długich kablach oraz wykorzystanie modułów optycznych. Autorem nowego sposobu kodowania 8b/10b okazał się Peter Franaszka, który jako pracownik IBM w latach 80-tych prowadził prace rozwojowe nad nowymi systemami kodowania informacji cyfrowej. Sposób kodowania 8b/10b zastrzeżony został  przez IBM  patentem US4486739 Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code, IBM, Peter A. Franaszek; Albert X.Widmer, Data patentu: 04.12.1984. Ponieważ omawiany patent jest skierowany do wąskiej grupy fachowców z dziedziny kodów cyfrowych proponuje omówić jego praktyczne aspekty na przykładzie standardu SATA, co może być ciekawe dla zwykłego użytkownika komputerów PC.

MAGISTRALA SERIAL ATA

   Standard Serial ATA powstał w wyniku ewolucji prac konstrukcyjnych nad kolejną wersją równoległego złącza ATA (Advanced Technology Attachments – interfejsu komunikacji z dyskami stałymi ) stosowanego zarówno w komputerach PC jak również w serwerach. Specyfikacje magistrali Serial ATA w wersji 1.0 uzgodniono w grudniu 2000, w ramach grupy roboczej w skład której wchodzą : INTEL, APT, DELL, IBM, MAXTOR i SEAGATE, a zatwierdzono w sierpniu 2001.   Serial ATA kontynuuje kierunek rozwoju zapoczątkowany przez inne udane standardy transmisji danych oparte również na szeregowym łączu transmisyjnym.   Obowiązujące w chwili obecnej standardy transmisji takie jak Usb, FireWire, Ethernet i inne stosują z powodzeniem właśnie szeregowa transmisję danych z dużą szybkością i wydajnością. Obecne systemy Ultra ATA/133 wykorzystują 80 – stykowe połączenie kablowe, które zastąpiło przestarzałe 40 stykowe połączenie pierwotnej specyfikacji ATA, przeznaczonej do komunikacji z dyskami stałymi w komputerach PC. Linie równoległej magistrali ATA sterowane są sygnałami o poziomach logicznych techniki TTL tzn.: około 5V.   Obowiązująca obecnie technologia LVDS (Low Voltage Differential Signaling) stosowana przy transmisji danych pomiędzy układami scalonymi dużej skali integracji dopuszcza jedynie około 500mV napięcia różnicowego na wejściu odbiorczym.  W przypadku Serial ATA rozpiętość napięcia w kanale transmisyjnym  wynosi właśnie ± 250mV wokół napięcia zera, przy obciążeniu 100 Ohm. Niski poziom napięcia przesyłanego sygnału pociąga za sobą zmniejszenie napięcia zasilającego układy nadawcze i odbiorcze, a co za tym idzie mniejsze pole elektromagnetyczne, zakłócenia i przesłuchy.

   Serial ATA nie jest w istocie magistralą, lecz łączy ze sobą dwa punkty, kontroler na płycie głównie  z dyskiem stałym, za pomocą dwóch równoległych kanałów: nadawczego i odbiorczego. Połączenie w kanałach zrealizowane jest w technologii LVDS, która stosuje różnicowe przesyłanie sygnałów analogowych za pomocą pary przewodów. Wprowadzenie Serial ATA  nie wymaga żądnych zmian w architekturze współczesnych komputerów PC, ponieważ jej twórcy zagwarantowali pełną zgodność z opisem dotychczasowego standardu ATA aż do poziomu rejestrów. Oznacza to, że  zmiana protokołów transmisji odbywa się tylko na poziomie sprzętowym w układach a nie dotyczy warstwy aplikacji i sterowników systemowych. Serial ATA dopuszcza możliwość pracy w trybie (Hot Plugged), który zapewnia włączanie i odłączanie dysków od kontrolera bez potrzeby wyłączania komputera.

Dopuszczalna długość przewodów połączeniowych w przypadku Serial ATA wynosi 1m, co stanowi 2,5 razy więcej niż w przypadku taśmy połączeniowej wykorzystywanej w dotychczasowym systemie ATA. Kabel sygnałowy magistrali ATA  składa się z czterech przewodów A+/A- (od kontrolera do dysku) i B+/B- ( w kierunku przeciwnym ) oraz trzech towarzyszących im przewodów masy. Kabel zasilający 15-stykowy zawiera szyny napięć +3,3V,+5V,+12V z których każda dla zmniejszenia strat zakończona jest trzema równoległymi kontaktami oraz kontakty masy.  Uproszczony schemat elektryczny  kanału transmisyjnego A (A+/A-), kanał B (B+/B-) jest jego lustrzanym odbiciem, przedstawia rysunek ilustrujący galwaniczne połąc33zenie nadajnika z odbiornikiem w technologi LVDS.

Fig1

W kanale A+/A- obowiązuje niskie napięcie sygnału różnicowego o rozpiętości +250/-250 mV wokół napięcia odniesienia 0V. Strumień danych cyfrowych o poziomach „1” lub „0” logicznego steruje układem przełącznika który kieruje prąd źródła prądowego 10mA do linii A+ lub A-.  Impedancja własna symetrycznej linii przesyłowej A+/A- wynosi 100Ohm. Fizyczny transfer danych cyfrowych wykorzystuje kodowanie NRZ (Non Return Zero), którego  zasadę w odniesieniu do kanału magistrali Serial ATA ilustruje uproszczony rysunek:

Fig2

   W odniesieniu do magistrali Serial ATA kod NRZ znany w literaturze również pod nazwą kodu bipolarnego, posiada poziom napięcia +250mV na wejściu odbiornika odpowiadający cyfrowej „1” logicznej oraz poziom –250mV dla cyfrowego „0” logicznego. Przy szybkości transferu 150 MB/s nominalny czas trwania jednego bitu wynosi 1/150Ghz=666ps, który wynika z zależności określającej szybkość transmisji Serial ATA: 150MB/s x 10 = 1.5 Ghz, gdzie: mnożnik 10 wynika z zastosowania kodu 8/10b w celu zapewnienia stałego poziomu składowej stałej  sygnału analogowego w torze przesyłowym A+/A- .  W ramach komunikacji w każdym z kanałów przesyłane są trzy rodzaje struktur sygnałowych: – symbole (Primitives ); – ramki FIS (Frame Information Structure);  –  kody CRC.
Wszystkie  symbole posiadają stałą długość 1DW (4 bajty ) i powtarzalną strukturę  w której pierwszy nadawany bajt B0 jest zawsze znakiem kontrolnym typu Kxx.y a pozostałe bajty B1,B2,B3 stanowią znaki Dxx,y. Przykładowo dla symbolu SOF (Start of Frame) znak kontrolny przyjmuje wartość K28.3,  a pozostałe znaki przyjmują wartości przedstawione na rysunku.

SOF

Wyjątek od tej reguły stanowi struktura  symbolu ALIGN,  który wykorzystuje znak kontrolny K28.5.  Symbole przeznaczone są do sterowania magistralą Serial ATA tzn. dysku lub kontrolera i sygnalizacji jej stanów  oraz separacji pozostałych struktur. Dane użytkowe transmitowane są w ramkach, które zabezpieczone są 32 bitowym kodem CRC (struktura o długości 1DW) dla którego wielomian generacyjny posiada postać :

        CRC32 = X32 + X26  +  X 23  +  X22  +  X16  ……………………………… X2 + X +  1

Magistrala Serial ATA zapewnia komunikacje w trybie full-duplex dzięki zastosowaniu dwóch jednakowych kanałów komunikacyjnych nadawczego i odbiorczego – Tx/Rx. Protokół nadawczy Serial ATA jest symetryczny z potwierdzeniem co oznacza, że transmisja jest realizowana w obu kierunkach w celu zapewnienia obustronnego sterowania. Ponieważ transmisja szeregowa charakteryzuje się pracą bez dodatkowego przesyłania sygnału zegarowego w torze transmisyjnym, strona odbiorcza zmuszona jest do odtworzenia sygnału zegarowego z otrzymanego ciągu sygnałów sterujących oraz danych.   Problem ten rozwiązuje zastosowanie kodu 8/10b,  który zapewnia niezawodne odtwarzanie sygnału zegarowego po stronie odbiorczej, dzięki ograniczonej długości sekwencji bez zmiany polaryzacji w transmitowanym sygnale. W celu zobrazowania wymiany danych w kanałach Tx/Rx Serial ATA  przedstawiono na rysunku uproszczony diagram symboli towarzyszących ramce danych.

KontrolerSATA

   W stanie jałowym kontroler wysyła symbole synchronizacji SYNC, dla zapewnienia synchronizacji toru a następnie za pomocą symboli X_RDY sygnalizuje stronie odbiorczej, w tym przypadku urządzeniu HD, że ma gotowe dane do wysłania.  Urządzenie HD po odbiorze znaku SYNC potwierdza nawiązanie łączności z kontrolerem za pomocą symboli SYNC wysyłanych zwrotnie.  Odbiór symboli X_RDY z kontrolera, urządzenie HD kwituje przez wysłanie w odwrotną stronę symboli gotowości odbioru danych RRDY.  Kontroler dekoduje symbole RRDY i rozpoczyna nadawanie danych w RAMCE. Urządzenie HD zwrotnie kwituje przesyłane z kontrolera dane za pomocą symboli RIP,  które sygnalizują bezbłędny odbiór.

Fig5

Strukturę każdej ramki danych transmitowanej w kanale  magistrali Serial ATA rozpoczyna symbol startu ramki SOF, po którym następuje ciąg danych DATA. Ciąg danych DATA może zostać rozdzielany symbolami HOLD, które zapewniają ciągłość ramki w przypadku gdy kontroler nie posiada danych do wysłania. Na zakończenie ramki danych przesyłana jest wartość CRC obliczona po stronie kontrolera oraz symbol końca ramki EOF.  Urządzenie HD po otrzymaniu kompletu danych wysyła zwrotnie symbol ROK tzn. potwierdzenie zgodności obliczonej sumy kontrolnej CRC odebranych danych z otrzymaną w ramce wartością CRC.  Z kolei kontroler po zakończeniu nadawania ramki danych wysyła symbole WTRM, które sygnalizują stronie odbiorczej, w tym przypadku urządzeniu HD, oczekiwanie na potwierdzenie bezbłędnego odbioru nadawanych danych.  Po zakończeniu sukcesem etapu nadawania danych kontroler ponownie wysyła symbole SYNC w celu podtrzymania synchronizacji z urządzeniem odbiorczym, w tym przypadku urządzeniem HD.  Magistrala w której krążą wyłącznie symbole SYNC znajduje się w stanie jałowym.

Listasymboli

Specyfikacja Serial ATA definiuje 7 rodzajów ramek z których każda jest zbudowana z 32- bitowego nagłówka 1DW oraz słów danych DW, gdzie: DW-32 bitowe słowo cyfrowe.

NAGŁÓWEK

1DW

                   DANE

2048 DW

    W pierwszym bajcie 32 – bajtowego nagłówka przesyłana jest sygnatura typu ramki. Układy odbiorcze dekodują nagłówek i przygotowują się do interpretacji przesyłanych danych. Ramki mogą mieć różną długość od 1 DW do  2049 DW. Ramka z sygnaturą 73H w nagłówku zawiera dane przesyłane w magistrali Serial ATA. Ramka z sygnaturą 58H w nagłówki jest ramką kontrolną umożliwiającą dokonanie testów układów w/w magistrali.  Pozostałe nagłówki ustawiają parametry transferu danych w trybie PIO lub DMA. Dla zapewnienia ciągłości rozwoju standardu ATA/ATAPI specyfikacja Serial ATA akceptuje grupy rejestrów sterujących (AT Task File ), obowiązujące w poprzednim standardzie.  Oznacza to w praktyce że Serial ATA posługuje się tym samym mechanizmem dostępu do sektorów danych dysku, z tą różnicą że stosowane są dwa zestawy rejestrów SRB (Shadow Register Block). Jeden zestaw zdefiniowany jest w kontrolerze a drugi w obsługiwanym dysku Serial ATA.  Przykładowo zapis rejestrów SRB w kontrolerze odbywa się z wykorzystaniem ramki o sygnaturze 34H w  w urządzeniu o sygnaturze 27H. Transfer danych może być realizowany zarówno w trybie PIO (ramka z sygnaturą 5FH) jak i trybie DMA ( programowanie ramką z sygnaturą 41H, podającą adres bufora i liczbę znaków, aktywacja ramką z sygnaturą 39H).

Planowany rozwój magistrali Serial ATA

GENERACJA Prędkość magistrali

(10 bitów)

Pasmo przepustowe

(8 bitów)

SATA –1 (150 MB/S ) 1,5 Gb/s 1,2 Gb/s
SATA –2 (300MB/S) 3 Gb/s 2,4 Gb/s
SATA –3 (600MB/S) 6 Gb/s 4,8 Gb/s

W planach przewiduje się, że magistrala Serial ATA będzie używana przez najbliższe 10 lat z dwoma skokami wydajności w tym okresie SATA-2  i SATA –3. W chwili obecnej dostępne są odpowiednie adaptery (dongle) zapewniające konwersję ze standardu  Serial ATA na Ultra ATA/133 lub w kierunku odwrotnym. Dostępne konfiguracje adapterów przy równoległym występowaniu obu standardów przedstawia rysunek funkcjonalny.

Fig6

Magistrala Serial ATA stosuje do przesyłania danych oraz komend sterujących pakiety sterujące o długości 40 bitów, które powstają w wyniku kodowania słowa 32 bitowego, składającego się z 4 bajtów, do postaci słowa 1DW o długości 40 bitów. Do kodowania stosuje się kodery 8/10b, w którym każdy bajt wejściowy zamieniany jest na ciąg 10 bitowy, co ilustruje przedstawiony rysunek.

Fig7

Schemat blokowy kodera 8/10b zastrzeżonego w patencie US 4486739  ilustruje zasadę kodowania pojedynczego bajtu danych.

Schematfunkcjakodera

Wejściowy bajt A,B,C,D,E,F,G,H  przesyłany jest do rejestru rozdzielacza, który przekazuje bajty A,B,C,D,E do układów cyfrowych realizujących funkcje kodującą kodera 5/6b, a bajty F,G,H do układów cyfrowych realizujących funkcje kodujące kodera 3/4b. Sygnał sterujący, jako bit K, przekazywany jest poprzez rejestr rozdzielacza  do układów obliczających funkcje kodujące a następnie do koderów 5/6b i 3/4b. Dane z układów funkcji kodujących 5/6b i 3/4b oraz układu nieparzystości trafiają do układów koderów 3/4b i 5/6b. Zakodowane słowo 10-bitowe otrzymuje formę abcdei-fghj, która następnie przepisywane jest do szeregowego rejestru przesuwnego z którego dane wysyłane są szeregowo w takt sygnału zegarowego. Zgodnie ze specyfikacja standardu Serial ATA kodowane bajty danych zapisywane są symbolicznie jako Dxx.y (jako bajt danych) lub jako K28.y. Wartość znacznika xx odpowiada wartości dziesiętnej ciągu bitów E,D,C,B,A  i zawiera się w przedziale wartości od 0 do 31. Wartość znacznika y może przyjmować wartości od 0 do 7 i odpowiada wartości dziesiętnej ciągu bajtów H,G,F. Przykładowa wartości kodowanych bajtów zawiera tabela.

WARTOŚĆ HGFE – DCBA EDCBA-HGF OZNACZENIE
10h 0001-0000 10000-000 D16.0
3FH 0011-1111 11111-001 D31.1

Postać kodu wyjściowego abcdei – fghj dla wybranego znaku nie jest stała lecz ma dwie alternatywne formy zależne od parametru jakim jest współczynnik nieparzystości. Postaci alternatywnego kodu bajtu D31.1 w zależności od wartości współczynnika nieparzystości „+1 „ lub „–1” przedstawiona jest w tabeli zawierającą obie wartości. W celu ilustracji wpływu wartości współczynnika nieparzystości na postać końcową kodu 8/10b wprowadzono oznaczenia, WN(S) – współ. nieparzystości startowy, WN(K) – współ. nieparzystości końcowy .

 

Symbol

SŁOWO WEJŚCIOWE

(7:0)

 

WN(S)

SŁOWO WYJŚCIOWE (9:0)  

WN(K)

7  6 5  4 3  2 1 0 9  8  7  6  5  4  3  2  1  0
H G F E D C B A j   h  g   f   i  e  d   c  b  a
 D31.1 0  0 1 1 1  1  1 1      +1 1  0  0  1  0  0  1  0  1  0      -1
 D31.1 0  0 1 1 1  1  1 1      -1 1  0  0  1  1  1  0  1  0  1     +1

3b         5b

gdzie : D31.1 = D31 + Dx.1 oznaczenie  D31 =  1  1  1  1  1   oraz  Dx.1 = 1  0  0

A  B C  D E                        F G H

Diagram

Przykładowo dla WN(S) = +1 bit  słowa wejściowego posiadający wartość „1” logicznej przedstawiony jest w postaci odcinka o nachyleniu +45° w przeciwieństwie do bitu o wartości logicznej „0”, który zobrazowany jest odcinkiem o nachyleniu  – 45°. Charakterystyka kodu 8/10b:

  • stabilizacja składowej stałej sygnału analogowego na poziomie środka zakresu rozpiętości napięcia +250mV¸ – 250mV, sygnału w torze transmisyjnym ;
  • zastosowanie kodowania NRZ do transmisji kodu 8/10b.
  • ograniczenie do pięciu „1” logicznych lub „0” logicznych występujących nieprzerwanie po sobie w kodzie 8/10b;
  • zawiera 268 (10 bitowych) sekwencji kodowych tzn. 256 wartości danych (wejściowe słowo 8 bitowe 0 oraz 12 kodów sterujących;
  • współczynnik nieparzystości WN wyznaczony dla kodu 8/10b bez uwzględnienia jego wartości początkowej, posiada zawsze jedną z trzech wartości +2, 0, -2 , wyliczoną w wyniku sumowania współczynników nieparzystości WN oddzielnie dla kodu 3/4b i 5/6b;
    WN dla 3/4b WN dla 5/6b WN 8/10b
    -2 -2  X
    -2  0 -2
    -2 +2  0
     0 -2 -2
     0  0  0
     0 +2 +2
    +2 -2  0
    +2  0 +2
    +2 +2  X

WN – jest sumą stanów logicznych występujących w zakodowanym słowie wyjściowym przy założeniu że wartości logicznej „1” odpowiada wartość algebraiczna +1 , a wartości logicznej „0” odpowiada wartość algebraiczna -1. Jeżeli liczba „1” logicznych odpowiada liczbie „0” logicznych to współczynnik nieparzystości  WN posiada wartość 0 , a dany kod 8/10b jest nazywany neutralnym pod kątem nieparzystości. W liczbie 268 wartości kodu 8/10b wartość neutralną WN posiada 134 kombinacji kodu. Sprzętowa realizacja kodu 8/10b zapewnia , że wartość wyznaczonego na bieżąco WN dla danego kodu jest zawsze + 1 lub –1. Jeżeli następny kod posiada WN=0 to wartość końcowa WN pozostaje bez zmian tzn.: +1 lub –1. Jeżeli natomiast następny kod posiada WN równy +2 lub –2 to wartość końcowa wyznaczanego na bieżąco WN(K) ulega zmianie na przeciwną tzn.: {+1+(-2)= -1 } , lub {-1+(+2)= +1}. Gdzie X – stan niedozwolony.

Przykład wyznaczania bieżącego WN(K) ilustruje tabela kodu D31.1, która przedstawia możliwość występowania dwóch różnych wartości kodów 8/10b w zależności od wartości WN(S) tzn.: +1 lub –1 obowiązujących a priori (przed kodowaniem ) w/w kodu. Kodowany bajt danych dzielony jest pięcio i trzy bitowe ciągi , które są przetwarzane odpowiednio w sześcio (5/6b) i cztero (3/4b) bitowe kody.  Ciąg 5 bitów jest definiowany przez symbole liter A,B,C,D,E gdzie : najmniej znaczącym bitem LSB jest bit A , podobnie ciąg 3 bitów oznaczony jest symbolami F,G,H gdzie : najmniej znaczącym bitem jest bit F. Prefiks D oznacza, że kodowany bajt zawiera informacje o wybranym  znaku danych ASCII w przeciwieństwie do prefiksu K, który oznacza, że kodowany bajt jest znakiem sterującym.   Oznaczenie D31.1 można zdefiniować w zapisie od LSB do MSB jako:

A B C D E – F G H

1 1 1 1 1 – 1  0 0


 3  1  + 1 = D31.1

Zakodowane 10-bitowe słowo danych oznaczone jest symbolami małych liter :

 a b c d e i f g h j

Kod 8/10b posiada mechanizm samokontroli do którego można zaliczyć :

A) kontrole poprawności kodu 268 kombinacji na 1024 możliwych dla 10-bitowego słowa; B) kontrole poprawności WN – w praktyce zakłada się że początkowa wartość WN(S) powinna przyjmować jedną z dwóch wartości –1 lub +1;  C) kontrole czy liczba jedynek lub zer w jednym ciągu nie przekracza wartości 5; D) kontrolę czy pakiet danych rozpoczyna kod K28.5 , w przeciwnym wypadku pakiet jest odrzucany.

Z dostępnych danych literaturowych ( stan na 2005 rok)  na temat Serial ATA wynika, że z punktu widzenia wydajności przejście z Ultra ATA/133 na Serial ATA nie daje zauważalnych korzyści. Istotną przyczynę stanowi fakt, że wszystkie dostępne kontrolery na płycie głównej podłączone są poprzez szynę PCI, która ogranicza maksymalny transfer do około 100MB/sek. – po prostu szyna PCI pozwala tylko na tyle. Innym powodem może być również to, że wydajność prototypowych dysków Serial ATA porównywalna jest za wydajnością odpowiednika konwencjonalnego dysku UltraATA/133. Pomimo tych ograniczeń należy stwierdzić, że standard Serial ATA skazany jest na sukces, a  to  z  trzech powodów:  po pierwsze oferuje nowoczesny i efektywny sposób szeregowej transmisji danych w stosunku do istniejącego UltraATA /133, zachowując tę samą szybkość; po drugie kable łączące o dopuszczalnej długości 1m,  w Serial ATA są wąskie i podatne na racjonalne ułożenie w obudowie komputera co zapewnia między innymi lepszą cyrkulację powietrza wewnątrz; po trzecie niemniej istotnym powodem może być również możliwość pracy w systemie Hot Plugged, który zapewnia możliwość podłączania dysków Serial ATA bez konieczności wyłączania komputera. What is 8b/10b Line encoding : https://youtu.be/B6JRJ3ax3mc

Wnioski:

Głównym celem kodów transmisji jest przekształcenie widma częstotliwościowego strumienia danych szeregowych tak, aby możliwe było łatwe odzyskanie zegara i sprzężenie AC. Kod musi również zawierać znaki specjalne spoza alfabetu danych dla funkcji, takich jak synchronizacja znaków, separatory ramek oraz w przypadku przerwania, resetowania, bezczynności, diagnostyki itp. Kody są również używane, często w połączeniu z kształtowaniem kształtu sygnału, w celu dostosowania sygnału spektrum bardziej ściśle do określonych wymagań kanału. W większości przypadków pożądane jest zmniejszenie przepustowości przez ograniczenia zarówno składowe wysokiej jak i niskiej częstotliwości, aby zmniejszyć zniekształcenia w nośnikach transmisyjnych, zwłaszcza w kablach elektromagnetycznych lub w ograniczonym paśmie toru nadawczo–odbiorczego, a także ograniczenie  wpływ  zewnętrznych i wewnętrznych zakłóceń na jakość transmisji danych.