1 <!-- subject: Transmisja cyfrowa -->
2 <!-- date: 2008-02-13 15:53:24 -->
3 <!-- tags: sygnał cyfrowy, teoria sygnałów, kody korekcyjne -->
4 <!-- categories: Articles, Techblog -->
6 <p>Zainspirowany wpisem Michała Górnego postanowiłem napisać coś o transmisji cyfrowej. Wszak wielkości w naturze rzadko kiedy występują w postaci cyfrowej--aby się takiej doszukać należy zejść aż do poziomu cząstek elementarnych i analizowanie spinów i innych niezrozumiałych dla zwykłego człowieka parametrów. Jak więc to się dzieje, że komputer operuje na bitach? Co to w ogóle ta telewizja cyfrowa?
10 <p>Żeby nie motać za bardzo (i nie udawać, że wiem o czym piszę)
11 ograniczę się na początek do sygnałów przesyłanych przez zwykły kabel
12 miedziany. Prąd w nim płynący ma zasadniczo dwa parametry--natężenie
13 oraz napięcie--które mają wartości ciągłe przeto są wartościami
14 analogowymi. Umówmy się na początek, iż sygnał będziemy kodować za
15 pomocą napięcia i załóżmy jednocześnie, że wszystko jest tak zrobione,
16 iż w kablu naszym występują napięcia zero
0–
5 woltów. Teraz wystarczy
17 jedno proste założenie: Niech wszystko poniżej
1,
5 wolta oznacza stan
18 niski, a wszystko powyżej
3,
5 woltów oznacza stan wysoki i gotowe!
20 <p>A co z takim razie z wartościami pomiędzy
1,
5 a
3,
5 wolta? Są to
21 poziomy niedozwolone i sygnalizujące błąd transmisji. Podejście takie
22 ukazuje w czym tak naprawdę transmisja cyfrowa jest lepsza od
23 analogowej. Otóż, w realnym świecie, jeżeli po jednej stronie kabla
24 nadamy sygnał
<code>u(t)
</code> to po drugiej stronie
25 odczytamy
<code>u′(t) = u(t) + delta(t)
</code>
26 gdzie
<code>delta(t)
</code> to jakieś losowe zakłócenia. W przypadku
27 sygnału analogowego nie mamy żadnej możliwości odfiltrować tych
28 zakłóceń--nie wiadomo wszak czy są to zakłócenia czy prawidłowy
29 sygnał. Przy transmisji cyfrowej możemy, bo wszak, wystarczy, aby
30 nadawca wysyłał stan niski jako pół, a stan wysoki jako
4,
5 wolta
31 i wówczas nawet zakłócenia o wartości jednego wolta nie będą w stanie
32 zaburzyć transmisji, a zakłócenia o wartości do
3 woltów będzie można
33 wykryć. To czy stan wysoki oznacza jedynkę, a stan niski zero czy na
34 odwrót jest już kwestią wtórną.
36 <p>A czy możnaby ustalić więcej niż dwa zakresy? Np. wysoki, niski
37 i średni? Oczywiście można. Wówczas transmisja przebiegałaby
38 szybciej, ale za to byłaby bardziej podatna na zakłócenia.
40 <p>Dodatkowo sygnał cyfrowy, w przeciwieństwie do analogowego, umożliwia
41 zastosowanie kodów wykrywających błędy. Dość prymitywną metodą, ukazującą
42 jednak sens, jest suma wszystkich słów o zadanej długości modulo jakaś wartość.
43 Bardziej zaawansowaną metodą są kody CRC (dodawane przecież do ramek
44 ethernetowych, IPv4 i TCP) projektowane specjalnie dla tego celu. Aby wykryć
45 błąd w transmisji można również użyć innych funkcji mieszających takich jak
46 np. MD5 (stosowane przy ściąganiu plików; tak jakby ktoś nie wiedział o co biega
47 z tymi plikami
<code>CHECKSUM.md5
</code>) czy SHA1.
49 <p>Ponadto, można zastosować kody korekcyjne umożliwiające odtworzenie
50 zakłóconej (do pewnego stopnia przynajmniej) transmisji. Najprostszym
51 przykładem jest wysyłanie każdego bitu trzy razy. Dzięki temu, jeżeli
52 odbiorca odbierze dwa razy jedynkę i raz zero to
<em>koryguje
</em>
53 taką sytuację przyjmując jako odebraną wartość jedynkę (z tego co mi
54 wiadomo, kodowanie takie jest wykorzystywane w niektórych pamięciach
57 <p>O wiele wydajniejszym sposobem jest zastosowanie kodów Hamminga,
58 które dzielą bity sekwencji o konkretnej długości na nachodzące na
59 siebie grupy i do każdej z grup dodają po bit parzystości tak, aby
60 w każdej grupie liczba jedynek była parzysta. Jeżeli jakiś bit
61 zostanie przekłamany bity parzystości dla grup, w których on się
62 znajduje będą miały złą wartość. Sztuczka polega na takim podziale na
63 grupy, aby widząc, w których grupach nastąpił błąd transmisji móc ten
64 błąd poprawić. W zależności od liczby dodanych bitów parzystości kod
65 może być w stanie poprawić różną liczbę błędów, a jeszcze większą
66 liczbę przekłamań wykryć.
68 <p>No i to chyba tyle. Zupełnie oddzielnym tematem jest przesyłanie
69 sygnałów (czy to analogowych czy cyfrowych) w eterze i jak to się
70 dzieje, że na tym samym terenie może działa jednocześnie wiele stacji
71 radiowych czy telefonicznych i do tego jeszcze możemy rozmawiać przez
72 komórkę stojąc obok kilku access pointów.
75 <!-- date: 2008-02-13 17:33:17 -->
77 <!-- nick_url: http://radmen.jogger.pl -->
79 <p>Masz błąd: „XML Parsing Error: mismatched tag. Expected:
</p
>.
<br />
80 Location: http://mina86.jogger.pl/
2008/
02/
13/transmisja-cyfrowa/
<br />
81 Line Number
67, Column
323:”
84 <!-- date: 2008-02-13 17:35:56 -->
85 <!-- nick: Michał Nazarewicz -->
86 <!-- nick_url: http://mina86.com -->
88 <p>Dzięki za info. Muszę w końcu nabrać zwyczaju oglądania wpisu po opublikowaniu…
91 <!-- date: 2008-02-13 17:36:09 -->
93 <!-- nick_url: http://radmen.jogger.pl -->
98 <!-- date: 2008-02-13 17:36:33 -->
99 <!-- nick: Michał Nazarewicz -->
100 <!-- nick_url: http://mina86.com -->
102 <p>Hehe… fajna sprawa to komentowanie przez jabbera. :P
105 <!-- date: 2008-02-13 17:37:04 -->
106 <!-- nick: radmen -->
107 <!-- nick_url: http://radmen.jogger.pl -->
109 <p>Inaczej pozostałbyś w błogiej nieświadomości o tym :P
112 <!-- date: 2008-02-15 18:35:10 -->
114 <!-- nick_url: http://gim.jogger.pl -->
116 <p>„Dodatkowo sygnał cyfrowy, w przeciwieństwie do analogowego, umożliwia zastosowanie kodów wykrywających błędy. […] Innymi sposobami są kody CRC czy nawet MD5.”
118 <p>może mi się wydaje, ale wychodzi jakbyś traktował MD5 jako EDC/ECC, a on takowym kodem nie jest. Zresztą sam wspominałeś ostatnio o hash-ach.
121 <!-- date: 2008-02-18 14:49:56 -->
122 <!-- nick: mina86 -->
123 <!-- nick_url: https://mina86.com/ -->
125 <p>Gdyż MD5 może być (i jest) stosowany jako EDC (jako ECC raczej nie). Skoro CRC jest to czemu nie MD5? Zarówno różne wersje CRC jak i MD5 to funkcje mieszające i mogą być wykorzystywane do detekcji błędów.
128 <!-- date: 2008-02-18 15:18:12 -->
130 <!-- nick_url: http://gim.jogger.pl -->
132 <p>raczej średnio. CRC byl projektowany jako kod wykrywający błędy i ma dość mocne podstawy matematyczne. Właściwości CRC są dokładnie znane, wiadomo jakie rodzaje błędów jest w stanie wykryć a jakie nie, jakie wielomiany dobierać i w jaki sposób stopień wielomianu ma wpływ na możliwości detekcji błędów.
<br />
133 MD5 natomiast jest funkcją hashującą, które opisałeś ogólnie w pierwszym z tej serii artykułów. MD5 jest zaprojektowana by „mieszać” bity i tyle. Za EDC stoi całkiem spora teoria kodów (polecam wykłady Madhu Sudana) MD5 ma się nijak do tej teorii :)
<br />
134 Moim skromnym zdaniem funkcje hashujące a kody wykrywające i korygujące błędy to dwie różne rzeczy i raczej nie należy tych pojęć mieszać.
137 <!-- date: 2008-02-19 19:16:18 -->
138 <!-- nick: mina86 -->
139 <!-- nick_url: http://mina86.com -->
141 <p>Zmieniłem troszkę artykuł.