Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Wykład 11: Kody i metody korekcji błędów
Dzisiejszy wykład Wyjątki.
Język ANSI C Funkcje Wykład: Programowanie komputerów
dr A Kwiatkowska Instytut Informatyki
SIECI KOMPUTEROWE WYKŁAD 4. WARSTWA ŁĄCZA DANYCH
Języki programowania C++
Michał Łasiński Paweł Witkowski
Metody ataku na algorytmy kryptograficzne oparte na informacjach z ulotu elektromagnetycznego Robert Borzęcki.
Systemy plików FAT12, FAT16, FAT32, NTFS.
Podstawowe składniki funkcjonalne procesora i ich rola.
Informatyka Stosowana
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
Programowanie w C Wykład 3
Temat nr 10: System przerwań
Instytut Fizyki Teoretycznej
Wykład 2 struktura programu elementy języka typy zmienne
Analiza kosztu zamortyzowanego
Ochrona danych wykład 2.
Ochrona danych wykład 3.
Schemat Hornera Mgr inż. Michał Szucki.
Elektronika cyfrowa i mikroprocesory
Systemy liczbowe.
Kod Graya.
Programowalny układ we-wy szeregowego 8251
Technika Mikroprocesorowa 1
Układy kombinacyjne cz.2
Podstawy układów logicznych
Podstawy informatyki 2013/2014
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
Wymiana informacji w sieciach komputerowych
Liczby całkowite dodatnie BCN
Warstwa łącza danych.
Wykład 7 Synchronizacja procesów i wątków
Podstawy Techniki Cyfrowej
Złożone układy kombinacyjne
Programowanie Niskopoziomowe
URZĄDZENIA TECHNIKI KOMPUTEROWEJ
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Zmienne i typy danych w C#
Podstawy Techniki Cyfrowej
Wybrane aspekty programowania w C++ (i nie tylko)
Zasady arytmetyki dwójkowej
Układy i systemy mikroprocesorowe
Pętle Zajęcia 6.
METODY REPREZENTOWANIA IFORMACJI
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
CZYM JEST KOD BINARNY ?.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Detekcja i korekcja błędów w transmisji cyfrowej.
PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES
Elementy cyfrowe i układy logiczne
Technika Mikroprocesorowa 1
Wstęp do Informatyki - Wykład 6
Interfejsy synchroniczne
Układy asynchroniczne
Mikrokontrolery z rdzeniem ARM Cortex-M0+ Energooszczędność
Opisy funkcji Adres strony WWW :
Mikrokontrolery System przerwań
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Programowanie I Rekurencja.
Mikrokontrolery MSP430 DMA
Transmisja radiowa Arduino & nRF24L01P
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska BSS Integralność Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

BSS - Integralność Proces transmisji może w prowadzać błędy do przesyłanych wiadomości – błędy pojedyncze lub grupowe Detekcja: Wymaga uznania, że niektóre wiadomości są nieważne Wymaga dodatkowych bitów (nadmiarowość) Kod (n,k) zawiera słowa kodowe n-bitowe z k-bitami danych i r=(n-k) bitami nadmiarowymi Korekcja Korekcja błędów: wiele słów kodowych jest zmapowanych do tego samego słowa danych Detekcja i retransmisja 01-2014 Zygmunt Kubiak

Odległość Hamminga BSS - Integralność Odległość Hamminga dwóch słów bitowych = liczba pozycji na których różnią się te słowa Jeśli słowa kodowe mają minimalną odległość Hamminga D, wtedy można wykryć D-1 błędów bitowych Jeśli dostępne słowa kodowe mają minimalną odległość Hamminga D, wtedy można skorygować [(D-1)/2] błędów bitowych 1 HD=2 01-2014 Zygmunt Kubiak

BSS - Integralność Kod 01-2014 Zygmunt Kubiak

BSS - Integralność Błąd detekcji 01-2014 Zygmunt Kubiak

BSS - Integralność Błąd niewykryty 01-2014 Zygmunt Kubiak

BSS - Integralność Detekcja błędów 01-2014 Zygmunt Kubiak

BSS - Integralność Korekcja błędów 01-2014 Zygmunt Kubiak

Kodowanie parzystości: BSS - Integralność Parzystość 1-bit zabezpieczenia - detekcja Każde słowo kodowe zawiera parzystą liczbę jedynek 010 110 100 000 011 111 101 001 Kodowanie parzystości: Biały – błąd 01 11 10 00 Dostępne słowa danych 01-2014 Zygmunt Kubiak

Niebieski – korekcja na 0 BSS - Integralność Głosowanie 1-bitowa korekcja z głosowaniem Każde słowo jest n-razy powtarzane 1 Dostępne słowa danych 010 110 100 000 011 111 101 001 Głosowanie: Biały – korekcja na 1 Niebieski – korekcja na 0 01-2014 Zygmunt Kubiak

Kodowanie parzystości: Niebieski – korekcja na 0 BSS - Integralność Przykłady Parzystość Głosowanie 010 110 100 000 011 111 101 001 Kodowanie parzystości: Biały – błąd 01 11 10 00 Dostępne słowa 010 110 100 000 011 111 101 001 Głosowanie: Biały – korekcja na 1 Niebieski – korekcja na 0 1 Dostępne słowa 01-2014 Zygmunt Kubiak

Techniki cyfrowej detekcji błędów BSS - Integralność Techniki cyfrowej detekcji błędów Dwuwymiarowa parzystość Wykrywa do 3 błędnych bitów Dobre rozwiązanie dla paczek błędów Słowo kontrolne IP Proste dodawanie Prosta realizacja programowa Słowo kontrolne CRC Skuteczne rozwiązanie matematyczne (Galois Fields) Uproszczenia w realizacji programowej Proste w realizacji sprzętowej Powszechnie stosowane w protokołach transmisji 01-2014 Zygmunt Kubiak

Parzystość dwuwymiarowa BSS - Integralność Parzystość dwuwymiarowa Wykorzystana parzystość 1- wymiarowa Dodany drugi wymiar Dodano dodatkowy bajt Komentarz Wykrywa wszystkie błędy 1-, 2- i 3- bitów oraz dużo błędów 4-bitowych 1 1111011 Parzystość bitów Bajt Parzystości 0101001 1101001 1011110 0001110 0110100 1011111 Dane 01-2014 Zygmunt Kubiak

Słowo kontrolne IP BSS - Integralność Idea Słowo kontrolne IP Dodać wszystkie słowa Wysłać wszystkie słowa Słowo kontrolne IP Wykorzystanie uzupełnienia 1-kowego dla 16-bitowych słów kodowych Przykład Słowo kodowane: 5 3 = 8 Postać binarna 0101 0011 = 1000 Suma komplementarna 0111 Prosta implementacja 01-2014 Zygmunt Kubiak

Słowo kontrolne IP BSS - Integralność u_short cksum(u_short *buf, int count) { register u_long sum = 0; while (count--) sum += *buf++; if (sum & 0xFFFF0000) // gdy przeniesienie to je usunąć sum &= 0xFFFF; sum++; } return ~(sum & 0xFFFF); 01-2014 Zygmunt Kubiak

Modbus – LRC (ang. Longitudinal Redundancy Check) BSS - Integralność Modbus – LRC (ang. Longitudinal Redundancy Check) Krok 1 - dodać wszystkie wymagane bajty Krok 2 - zanegować wynik (uzupełnienie jedynkowe) Krok 3 - dodać 1 (uzupełnienie dwójkowe) LRC Przykładowy kod Funkcja przedstawia sposób wyznaczenia bajta LRC w języku C BYTE LRC (BYTE *nData, WORD wLength) { BYTE nLRC = 0 ; // LRC char initialized for (int i = 0; i < wLength; i++) nLRC += *nData++; return (BYTE)(-nLRC); } // End: LRC Zygmunt Kubiak

Modbus – LRC (ang. Longitudinal Redundancy Check) BSS - Integralność Modbus – LRC (ang. Longitudinal Redundancy Check) Procedura z dokumentacji Modbus LRC Generation Function static unsigned char LRC(auchMsg, usDataLen) //the function returns the LRC unsigned char *auchMsg; // message to calculate LRC upon unsigned short usDataLen; //quantity of bytes in message { unsigned char uchLRC = 0; //LRC char initialized while (usDataLen––) //pass through message buffer uchLRC += *auchMsg++; //add buffer byte without carry return ((unsigned char)(–((char)uchLRC))); // return twos complement } Operacje równoważne a = -b; a = ~b + 1; Zygmunt Kubiak

Słowo kontrolne CRC (ang. Cyclic Redundancy Check) BSS - Integralność Słowo kontrolne CRC (ang. Cyclic Redundancy Check) Cel Maksymalizacja zabezpieczenia, minimalizacja ekstra bitów Idea Dodanie k bitów nadmiarowych do n-bitowej wiadomości N-bitowy komunikat może być przedstawiony jako n-bitowy wielomian, w którym każdy bit odpowiada współczynnikowi wielomianu Przykład Wiadomość = 10011010 Wielomian = 1 x7  0 x6  0 x5  1 x4  1 x3  0 x2  1 x  0 = x7  x4  x3  x 01-2014 Zygmunt Kubiak

Przykład kodowania BSS - Integralność Słowo kontrolne CRC (ang. Cyclic Redundancy Check) Przykład kodowania 1001 1101 1000 1011 1100 101 Nadmiar m mod c 10011010000 Komunikat plus k zer Wynik: Transmisja komunikatu z dodanym nadmiarem: 10011010101 G(x) = x3  x2  1 = 1101 Generator M(x) = x7  x4  x3  x = 10011010 Komunikat 1101 01-2014 Zygmunt Kubiak

Odebrany komunikat bez błędów BSS - Integralność Słowo kontrolne CRC (ang. Cyclic Redundancy Check) Przykład dekodowania – brak błędów 1001 1101 1000 1011 1100 Nadmiar m mod c 10011010101 Odebrany komunikat bez błędów Wynik: Poprawny test CRC G(x) = x3  x2  1 = 1101 Generator P(x) = x10  x7  x6  x4  x2  1 = 10011010101 Odebrany komunikat 1101 01-2014 Zygmunt Kubiak

Realizacja sprzętowa – analog wielomianu G(x) BSS - Integralność CRC (ang. Cyclic Redundancy Check) Realizacja sprzętowa – analog wielomianu G(x) G(x) = x4  x  1 01-2014 Zygmunt Kubiak

Realizacja sprzętowa - kodowanie BSS - Integralność CRC (ang. Cyclic Redundancy Check) Realizacja sprzętowa - kodowanie G(x) = x4  x  1 01-2014 Zygmunt Kubiak

Realizacja sprzętowa – dekodowanie BSS - Integralność CRC (ang. Cyclic Redundancy Check) Realizacja sprzętowa – dekodowanie G(x) = x4  x  1 01-2014 Zygmunt Kubiak

CRC (ang. Cyclic Redundancy Check) BSS - Integralność CRC (ang. Cyclic Redundancy Check) 01-2014 Zygmunt Kubiak

CRC (ang. Cyclic Redundancy Check) BSS - Integralność CRC (ang. Cyclic Redundancy Check) G(x) = x3  x  1 01-2014 Zygmunt Kubiak

CRC (ang. Cyclic Redundancy Check) BSS - Integralność CRC (ang. Cyclic Redundancy Check) 01-2014 Zygmunt Kubiak G(x) = x3  x  1

CRC (ang. Cyclic Redundancy Check) – dwie realizacje G(x) BSS - Integralność CRC (ang. Cyclic Redundancy Check) – dwie realizacje G(x) Realizacja sprzętowa układu dzielącego G(x) = x3  x  1 Wada – dane przy kodowaniu trzeba uzupełnić o r bitów (same zera) Zmodyfikowana, sprzętowa realizacja układu wyznaczającego CRC dla G(x) = x3  x  1 01-2014 Zygmunt Kubiak

BSS - Integralność CRC (ang. Cyclic Redundancy Check) Realizacja sprzętowa – kodowanie – inna realizacja – szybsza operacja kodowania + Wejście danych x3 SQ 2 1 x0 x2 G(x) = x3  x2  1 01-2014 Zygmunt Kubiak

Realizacja sprzętowa – dekodowanie inna realizacja BSS - Integralność CRC (ang. Cyclic Redundancy Check) Realizacja sprzętowa – dekodowanie inna realizacja + Wejście danych x3 SQ 2 1 x0 x2 01-2014 Zygmunt Kubiak

Generator pseudolosowy BSS - Integralność CRC (ang. Cyclic Redundancy Check) Generator pseudolosowy G(x) = x4  x  1 01-2014 Zygmunt Kubiak

Wielomiany generujące BSS - Integralność CRC (ang. Cyclic Redundancy Check) Wielomiany generujące CRC C(x) CRC-8 x8  x2  x1  1 (0x107 => 0x07) CRC-10 x10  x9  x5  x4  x1  1 (0x633) CRC-12 x12  x11  x3  x2  x1  1 (0x180F) CRC-16 x16  x15  x2  1 (0x18005 => 0x8005) CRC-CCITT x16  x12  x5  1 (0x11021 => 0x1021) CRC-32 x32  x26  x23  x22  x16  x12  x11  x10  x8  x7  x5  x4  x2  x1  1 (0x104C11DB7 => 0x04C11DB7) 01-2014 Zygmunt Kubiak

Przykłady BSS - Integralność CRC (ang. Cyclic Redundancy Check) Podstawowy algorytm CRC-32 01-2014 Zygmunt Kubiak

Przykłady BSS - Integralność CRC (ang. Cyclic Redundancy Check) Modyfikacja algorytmu CRC-32 01-2014 Zygmunt Kubiak

CRC (ang. Cyclic Redundancy Check) BSS - Integralność CRC (ang. Cyclic Redundancy Check) Przykład - tablicowy algorytm CRC-32 Wygenerowanie tablicy cd 01-2014 Zygmunt Kubiak

CRC (ang. Cyclic Redundancy Check) BSS - Integralność CRC (ang. Cyclic Redundancy Check) Przykład - tablicowy algorytm CRC-32 Wyznaczenie CRC-32 z wykorzystaniem tablicy cd 01-2014 Zygmunt Kubiak

BSS - Integralność Algorytm Modbus – wyznaczanie CRC Załadowanie FFFFh do 16-bitowego rejestru CRC. Pobranie bajta z bloku danych i wykonanie operacji XOR. z młodszym bajtem rejestru CRC (CRCL0) – wynik do rej. CRC. Przesunięcie zawartości rejestru CRC w prawo o jeden bit (na pozycje MSB zostaje wpisane 0). Sprawdzenie bitu LSB w rejestrze CRC. Jeżeli jego stan jest 0, to następuje powrót do pkt. 3, jeżeli 1, to wykonywana jest operacja XOR rejestru CRC ze stałą A001h Powtórzenie operacji 2, 3, 4, 5 dla kolejnego bajta wiadomości. Krok 6 jest wykonywany dla wszystkich bajtów wiadomości. Zawartość rejestru CRC po wykonaniu wszystkich powyższych operacji jest poszukiwaną wartością CRC Uwaga, dla Modbus wielomianem generującym jest G(x) = x16 + x15 + x2 + 1 01-2014 Zygmunt Kubiak

BSS - Integralność Modbus – wyznaczanie CRC G(x) = x16 + x15 + x2 + 1 LSB == 1 G(x) = x16 + x15 + x2 + 1 01-2014 Zygmunt Kubiak

BSS - Integralność Modbus – wyznaczanie CRC void main() { unsigned char data[NUMDATA+2]; // Bufor wiadomości unsigned char Crc_HByte, Crc_LByte; unsigned int Crc; .... Crc=0xFFFF; for (i=0; i<NUMDATA; i++) Crc = CRC16 (Crc, data[i] ); } Crc_LByte = (Crc & 0x00FF); // Low byte calculation Crc_HByte = (Crc & 0xFF00) / 256; // High byte calculation 01-2014 Zygmunt Kubiak

BSS - Integralność Modbus – wyznaczanie CRC // CRC16 calculation // ---------------- unsigned int CRC16(unsigned int crc, unsigned int data) { const unsigned int Poly16=0xA001; unsigned int LSB, i; crc = ((crc^data) | 0xFF00) & (crc | 0x00FF); for (i=0; i<8; i++) LSB=(crc & 0x0001); crc=crc/2; if (LSB) crc=crc^Poly16; } return(crc); 01-2014 Zygmunt Kubiak

Dziękuję Zygmunt Kubiak 09-2006