2. Przetwarzanie analogowo-cyfrowe

2.1. Wiadomości podstawowe o przetwarzaniu analogowo-cyfrowym

We współczesnym Świecie zdominowanym przez komputery oraz urządzenia i media cyfrowe, przetwarzanie (konwersja) sygnałów - przenoszących dźwięki, obrazy, filmy i inne informacje - na postać cyfrową jest bardzo istotną i powszechną operacją, realizowaną przez urządzenia nazywane przetwornikami analogowo-cyfrowymi, lub krócej przetwornikami A/C, lub angielskim akronimem ADC - od słów: Analog to Digital Converter

Zapisane cyfrowo dane multimedialne mogą być przechowywane na cyfrowych nośnikach jak płyty CD, DVD, pendrajwy czy dyski, oraz przetwarzane komputerowo. Dla zaprezentowania tych informacji człowiekowi muszą one najczęściej być poddane odwrotnej konwersji: cyfrowo-analogowej co realizują przetworniki DAC (Digital to Analog Converter). Tak musi być np. w przypadku dźwięku.

Przetwarzanie analogowo-cyfrowe składa się z trzech procesów:
     - próbkowania
     - kwantowania
     - kodowania

Próbkowanie polega na wyznaczeniu momentów pomiarów wartości napięcia elektrycznego (ang.: voltage) podawanego na wejście przetwornika A/C (reprezentującego sygnał ciągły, analogowy), w taki sposób aby otrzymany ciąg liczb możliwie wiernie odwzorowywał zmiany tego sygnału. Najczęściej pomiar czyli "pobieranie próbki" odbywa się co stały okres Dt zwany okresem próbkowania (ang.: sampling period, sampling time), a jego odwrotność to częstotliwość próbkowania fp=1/Dt. Im większa częstotliwość próbkowania (czyli krótszy okres próbkowania) tym większa szybkość konwersji (conversion rate) i tym dokładniejsze może być odwzorowanie zmian przebiegu wejściowego co pokazuje poniższy rysunek.


Rys. 1. Szybkość próbkowania (źródło: http://www.thine.co.jp/en/products/pr_details/Video-ADC.html)

Dolną granicę częstotliwości próbkowania określa twierdzenie o próbkowaniu (twierdzenie Kotielnikowa-Shannona). Według niego częstotliwość próbkowania musi być co najmniej dwukrotnie większa od częstotliwości najwyższej składowej sygnału wejściowego, aby dało się w zadowalający sposób odtworzyć z sygnału cyfrowego sygnał oryginalny.
Jeśli warunek ten nie jest spełniony to w charakterystyce częstotliwościowej sygnału cyfrowego pojawią się fałszywe składowe zwane aliasami, a zjawisko to nazywa się aliasingiem.


Kwantowanie to po prostu cyfrowy pomiar czyli przedstawienie mierzonej wartości jako liczby elementarnych kwantów (najczęściej liczby binarnej - w układzie dwójkowym), podobnie jak mierzoną w centymetrach lub milimetrach długość wyrażamy jako liczbę działek o szerokości odpowiednio centymetra lub milimetra. Precyzja pomiaru zależy od liczby poziomów (kwantów) odpowiadających pełnemu zakresowi mierzonego napięcia (patrz Rys. 2) a nazywanej rozdzielczością przetwornika.

Rozdzielczość podawana jest jako liczba bitów przeznaczonych do zapisu wyniku pomiaru. Ponieważ przy pomocy n bitów można zapisać wartości od zera do 2n-1 więc n bitowa rozdzielczość odpowiada 2n-1 poziomom kwantowania. Na przykład cztero-bitowy przetwornik dzieli zakres pomiaru na 24-1=15 przedziałów, 8-mio bitowy na 28-1=127 a 10 bitowy na 1023.

Kwantowanie może być realizowane różnymi metodami ale każda z nich wymaga odpowiedniego czasu. Na ogół pożądany jest jak najkrótszy czas pomiaru przy równoczesnym zapewnieniu wystarczającej rozdzielczości przetwornika.

Jednym ze sposobów kwantowania jest wytwarzanie schodkowo narastającego napięcia porów-naw-czego tak długo aż zrówna się ono z napięciem mierzonym, a następnie zapamiętanie liczby schodków (czyli kwantów) jako wyniku pomiaru. Na Rys. 2. Przetwornik powinien zapewnić działki (schodki) równej szerokości, czyli skalę liniową ale w praktyce może wystąpić błąd. liniowości.


Rys. 2. Rozdzielczość kwantowania poziomów wielkości wejściowej (źr. jak wyżej)

Taki sposób kwantowania wymaga jednak stosunkowo wiele czasu - w najgorszym przypadku tyle ile trzeba na wygenerowanie maksymalnej liczby schodków. Na przykład dla 6-ciobitowego ADC 32 cykle generatora.

Inny sposób kwantowania polega na aproksymacji wagowej i przypomina ważenie na wadze szalkowej przy użyciu zestawu 6-ciu odważników (dla przetwornika 6-cio bitowego) z których każdy następny jest o połowę lżejszy. Inaczej mówiąc ich masy są proporcjonalne do wag kolejnych bitów liczby dwójkowej np.: 128, 64, 32, 16, 8, 4, 2, 1. Ważenie ciała o nieznanej masie rozpoczyna się od położenia na szalce największego odważnika a następnie na zdejmowaniu lub dokładaniu kolejnych coraz lżejszych, zależnie do tego czy suma ich mas przewyższa masę ciała ważonego czy nie. Pomiar odbywa się w 6-ciu krokach a nie 32. Gdy uzyskana w danym kroku wartość przekracza mierzoną to zapisywane jest zero a w przeciwnym przypadku 1. Na rysunku poniżej uzyskano w ten sposób wartość binarną 010011 co odpowiada mierzonej wartości równej 19 bo 0*32 + 1*16 + 0*8 + 0*4 + 1*2 + 1*1=19


Rys. 3. Kwantowanie przez aproksymację wagową

Istnieje wiele innych sposobów kwantowania - na przykład pośrednio przez pomiar czasu lub częstotliwości - a ich nazwy są przeważnie również nazwami poszczególnych typów przetworników A/C.


Kodowanie

Ponieważ wyniki kwantowania są liczbami binarnymi (dwójkowymi) to potrzebny jest jeszcze etap kodowania ich do postaci dziesiętnej lub do kodu najodpowiedniejszego do przesyłania na przykład kodu z kontrolą parzystości lub kodu korekcyjnego.


2.2. Wykresy sygnału sinusoidalnego

Sygnał sinusoidalny ma bardzo istotne znaczenie gdyż inne sygnały okresowe mogą być na podstawie transformacji Fouriera przedstawione jako suma składowych sinusoidalnych.

Przypomnienie

Należy pamiętać, że w programach matematycznych argumenty funkcji trygonometrycznych - jak sin(x) - muszą być kątami wyrażonymi w radianach.

Radian to miara łukowa kąta: stosunek długości łuku do długości promienia. Przykładowo: kąt pełny 360 stopni to 2πR/R = 2π radianów (ok.6,28 radiana), a kąt 180 stopni to π radianów. A więc 1 radian to 180/π = ok. 57,3 stopnia.

Sygnał sinusoidalny w funkcji czasu przedstawiany jest jako funkcja: sin(ω*t) gdzie parametr ω to prędkość kątowa w radianach na sekundę. Wynika to z przyjęcia, że funkcja sinus powstaje jako rzut na oś pionową, długości promienia jednostkowego (R=1) obracającego się z prędkością kątową ω, więc kąt (droga kątowa) x = ω*t

Okres drgań T to czas jednego obrotu (o kąt 2π radianów) skąd prędkość kątowa: ω= 2π/T albo ω = 2π*f gdzie f=1/T jest częstotliwością drgań

2.3. Szybka transformacja Fourier'a

Dokładniejsze wyjaśnienie i przykłady zastosowania funkcji fft() są w następujących miejscach:
a) w języku angielskim:
Matlab documentation fft
Matlab documentation - Fourier Transforms
Using Fast Fourier Transforms and Power Spectra in LabVIEW
b)
Przykład w języku polskim