Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe) dr inż Krzysztof Berezowski 220/C3 tel +48 71 320 27-59 krzysztofberezowski@pwrwrocpl 1
Wybrane kody dr inż Krzysztof Berezowski 220/C3 tel +48 71 320 27-59 krzysztofberezowski@pwrwrocpl 2
Rodzaje błędów błędy symetryczne błędy jednokierunkowe błędy asymetryczne wiązki błędów błędy w bajtach (słowach n-bitowych) 3
Rodzaje błędów - przykłady 16-bitowy wektor binarny (4 bajty po 4 bity): X= 1101 0011 0101 1111 Błąd pojedynczy: 1001 0011 0101 1111 Błędy wielokrotne: 1) 1001 0011 0011 1111 potrójny błąd symetryczny 2) 3) 1001 0001 0100 1111 1111 0001 0101 1111 potrójny błąd jednokierunkowy 0 1 wiązka błędów o długości 5 4) 0001 0011 0100 1111 błąd w 2 bajtach Rysunek 27: Przykłady różnych typów błędów 4
Mechanizmy powstawania błędów 1 1 sklejenie z 1 01 nieparzysta liczba inwerterów 10 0 1 10 1 0 1 parzysta liczba inwerterów 01 Rysunek 28: Mechanizm powstawania błędów symetrycznych 5
Mechanizmy powstawania błędów pojedyncze sklejenie z 1 może wystąpić do 4 będów jednokierunkowych x 1 z 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 x 13 x 14 x 15 x 16 z 1 z 2 z 3 z 4 z 5 z 6 z 7 z 8 01 01 01 01 Rysunek 29: Mechanizm powstawania błędów jednokierunkowych w układach PLA 6
Mechanizmy powstawania błędów 4 bits uszkodzenie zasilania ukadu scalonego pamięci RAM A 0 A 1 A 2 n -1 sowo adresowe bajt z będami Rysunek 211: Mechanizm powstawania błędów w bajtach wskutek pojedynczych uszkodzeń pamięci RAM 7
Mechanizmy powstawania błędów Ciąg poprawny 01 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 + Ciąg z błędami maksymalny czas trwania zakóceń = 01 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 OSTATNI PIERWSZY bit błędny czas wiązka błędów o długości 7 Rysunek 210: Mechanizm powstawania wiązki błędów podczas transmisji bitowo-szeregowej 8
Podstawowe klasy kodów wykrywających błędy kody z kontrolą parzystości kod z podwajaniem (duplication) i kod z inwersyjnym powtórzeniem (dual rail) kody arytmetyczne AN i resztowe kody wykrywające błędy w słowach o stałej szerokości kody wykrywające błędy jednokierunkowe kody wykrywające błędy jednokierunkowe w słowach o stałej szerokości 9
Kod z kontrolą parzystości pojedynczy bit kontroli parzystości: parzysty: łączna ilość jedynek jest parzysta np 1001 1000 -> 1001 1000 1 nieparzysty: łączna ilość jedynek jest nieparzysta np 1001 1000 -> 1001 1000 0 wszystkie błędy o krotności nieparzystej prosty koder - i-we funkcja XOR kod systematyczny - bezkosztowe dekodowanie prosty układ kontrolny (i+1)-we funkcja XOR arytmetyczny, bit-sliced (szyny, bufory, etc) 10
Kod z kontrolą parzystości Parzysty lub nieparzysty GÓWNA ZALETA (A) Bit na sowo 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P minimum nadmiaru (B) Bit na bajt 15 14 13 12 11 10 9 8 P 2 7 6 5 4 3 2 1 0 P 1 (Parzysty) (Nieparzysty) wykrywa defekty zasilania: będy (000) i (111) (C) Bit na kilka ukadów Ukad 5 Ukad 4 Ukad 3 Ukad 2 Ukad 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P 4 P 3 P 2 P 1 wykrywa defekt jednego z ukadów scalonych (D) Bit na ukad Ukad 5 Ukad 4 Ukad 3 Ukad 2 Ukad 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P 4 P 3 P 2 P 1 atwa lokalizacja uszkodzonego ukadu scalonego (E) Kontrola parzystości z przeplataniem 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P 4 P 3 P 2 P 1 wykrywa zwarcia między sąsiednimi liniami Rysunek 35: Schematy realizacji kontroli parzystości 11
Kod z podwajaniem Różne klasy uszkodzeń wielokrotnych Wszystkie błędy o krotności nieparzystej Wiele błędów dwukierunkowych 100% nadmiaru (największy wśród kodów) prosty koder i dekoder układ testujący - 2i-we komparator w połączeniu z innym EDC może tworzyć ECC bez wiedzy o aplikacji (modułowo) naturalnie dostępny w niektórych tech logicznych 12
Kod z podwajaniem X=( x 3 x 2 x 1 x 0 ) Z=( z 3 z 2 z 1 z 0 ) Wysylane dane Odebrane dane X X x 0 4-bitowa szyna z 0 Z Z Nadajnik x 1 x 2 z 1 z 2 Odbiornik x 3 z 3 Rysunek 37: System przesyłania danych z inwersyjnym powtórzeniem 13
Kody arytmetyczne kody niezmiennicze względem operacji arytm Zamiast wagi Hamminga - waga arytmetyczna i-ty bit wektora ma wagę arytmetyczną 2 i Krotność błędu arytmetycznego minimalna liczba niezerowych bitów jego repr np podwójny błąd arytmetyczny: X X e = 15 = +2 4 2 0 14
Kod AN optymalny, niesystematyczny (koder/dekoder) układ kontrolny - generator reszty mod A Tabela 32: 3-bitowe liczby zakodowane kodem 3N N 3N Słowo binarne Słowo kodu 3N 0 0 000 00000 1 3 001 00011 2 6 010 00110 3 9 011 01001 4 12 100 01100 5 15 101 01111 6 18 110 10010 7 21 111 10101
Kod 3N p p p p p 5 4 3 2 1 p 0 HA FA FA FA FA HA z 7 z 6 z 5 z 4 z 3 z 2 z 1 z 0 Rysunek 38: Koder dla kodu 3N p 5 p 4 p 3 p 2 p 1 p 0 FA FA FA x 5 x 4 x 3 x 2 x 1 x 0 Rysunek 39: Dekoder kodu 3N układ dzielenia przez 3 16
Sumy kontrolne do przesyłania bloków informacji wszystkie błędy niekumulujące się do sumy kontr pojedynczej i podwójnej ( precyzji ) (x c(b 1),,x c1,x c0 )= inwersyjna resztowa ( l 1 i=0 B i ) mod 2 b (x c(b 1),,x c1,x c0 )=2 b olna resztowa 17 ( l 1 i=0 B i ) mod 2 2b pojedynczą precyzją wykrywa wszystkie błędy, któr (x c(b 1),,x c1,x c0 )= ( l 1 i=0 (x c(2b 1),,x c1,x c0 )= B i ) mod (2 b 1) eregowy: -bitowy sumator z cyklicznym przeniesienie ( l 1 i=0 B i ) mod 2 2b ojnej precyzji wykrywa ww błędy nie wykrywa
Sumy kontrolne Slowo n Slowo 4 Slowo 3 Slowo 2 Slowo 1 Przeniesienie C Suma danych C Suma z przeniesieniem cyklicznym Suma kontrolna Rysunek 324: Formowanie sumy kontrolnej resztowej 18
Kody Hamminga Liniowy optymalny kod korekcyjny Korekta jednego, detekcja dwóch błędów bitowych Dodatkowy bit parzystości - rozróżnienie między wystąpieniem pojedynczego a podwójnego błędu Zasada działania: wykorzystanie parzystości do wyliczenia pozycji błędu długość bloku danych długość komunikatu wypełnienie: wypełnienie jest optymalne dla kodu Hamminga 19
Kody Hamminga Algorytm konstrukcji ponumeruj bity zaczynając od 1 pozycje, które są potęgą dwójki to bity parzystości pozostałe pozycje to bity komunikatu bit parzystości 1 jest liczony z wektorów w których bit pierwszy najmłodszy jest ustawiony bit parzystości 2 jest liczony z wektorów w których bit drugi najmłodszy jest ustawiony bit parzystości 4 jest liczony z wektorów w których bit trzeci najmłodszy jest ustawiony 20
Kody Hamminga Algorytm konstrukcji ponumeruj bity zaczynając od 1 pozycje, które są potęgą dwójki to bity parzystości pozostałe pozycje to bity komunikatu bit parzystości 1 jest liczony z wektorów w których bit pierwszy najmłodszy jest ustawiony bit parzystości 2 jest liczony z wektorów w których bit drugi najmłodszy jest ustawiony bit parzystości 4 jest liczony z wektorów w których bit trzeci najmłodszy jest ustawiony 21
Kody Hamminga http://enwikipediaorg/wiki/hamming_code Która parzystość (parzysta, nieparzysta) jest bez znaczenia (parzysta jest łatwiejsza rachunkowo) 22
Kody Hamminga Kodowanie - przykład X = 0110101 X = 0_110_101 p 1 ( 0_110_101) = 0+1+0+1+1 = 1 p 2 (1_0_110_101) = 0+1+0+0+1 = 0 p 4 (100_110_101) = 1+1+0 = 0 p 8 (1000110_101) = 1+0+1 = 0 MSG = 10001100101 23
Kody Hamminga Obliczanie syndromu - przykład MSG = 10001100100 p 1 (10001100100) = 0+1+0+1+1 = 1 p 2 (10001100100) = 0+1+0+0+1 = 0 p 4 (10001100100) = 1+1+0 = 0 p 8 (10001100100) = 1+0+1 = 0 MSG = 10001100101 24