Ćwiczenie 3 - Teleinformatyk

Transkrypt

Ćwiczenie 3 - Teleinformatyk
Zespół Szkół Technicznych w Suwałkach
Pracownia Sieci Teleinformatycznych
Ćwiczenie Nr 3
PRZETWARZANIE ANALOGOWO-CYFROWE I CYFROWOANALOGOWE
Opracował Sławomir Zieliński
Suwałki 2012
Cel ćwiczenia
Utrwalanie wiadomości na temat przetwarzania analogowo-cyfrowego i cyfrowo-analogowego.
Niniejsze ćwiczenie oparte jest na darmowym środowisku programistycznym GNU Octave [1].
Zadania
1. Korzystając z notatek z przedmiotu przetwarzanie i obróbka sygnałów, biblioteczki zawodowej
lub z zasobów internetowych wykonaj następujące polecenia:
a. Naszkicuj schemat blokowy typowego przetwornika A/C zawierający takie podzespoły
jak filtr anty-aliasingowy, koder, kwantyzer i układ próbkująco-pamiętający.
b. Wskaż, który z wyżej wymienionych podzespołów jest podzespołem stratnym, a który
bezstratnym. Odpowiedź uzasadnij.
2. Wyjaśnij, na czym polega warunek Nyquista i jakie są jego techniczne konsekwencje przy
doborze parametrów pracy przetwornika A/C.
3. Wyjaśnij, do jakiego celu używany jest filtr anty-aliasingowy. Naszkicuj przykład jego
charakterystyki częstotliwościowej.
4. Korzystając z notatek z przedmiotu przetwarzanie dźwięku i obrazu wyjaśnij, na czym polega
zjawisko aliasingu, a następnie sporządź wykres ilustrujący zjawisko niejednoznaczności
próbkowania (aliasingu) w dziedzinie czasu.
5. Zainstaluj, a następnie uruchom program GNU Octave, zgodnie ze wskazówkami zawartymi w
ćwiczeniu na temat modulacji AM oraz FM. Następnie uruchom program o następującym kodzie:
Fs = 48000;
Fs2 = 550; % Czestotliwosc probkowania [Hz]
t = 0: 1/Fs: 0.02;
t2 = 0: 1/Fs2: 0.02;
f1 = 440;
% Czestotliwosc sygnalu probkowanego [Hz]
f2 = 110;
y1 = sin(2*pi*f1*t);
y2 = -sin(2*pi*f2*t);
y12 = sin(2*pi*f1*t2);
plot(t, y1,’b’,t,y2,’r’,’linewidth’,3); hold on
stem(t2,y12,’r’); hold off
xlabel(‘Czas [sek.]’); ylabel(‘Amplituda’)
Program ten wygeneruje wykres ilustrujący zjawisko aliasignu w dziedzinie czasu.
Wygenerowany wykres (patrz Rys. 1) przedstawia kolorem niebieskim przebieg czasowy
analogowego sygnału sinusoidalnego o częstotliwości 440 Hz. Sygnał ten po spróbkowaniu z
częstotliwością 550 Hz może być niejednoznacznie odtworzony jako sygnał sinusoidalny o
częstotliwości 110 Hz, co przedstawia wykres czerwony.
str. 2
Rys. 1. Ilustracja zjawiska niejednoznaczności próbkowania (aliasingu) w dziedzinie czasu.
Dokonaj zrzutu z ekranu uzyskanego wykresu, a następnie zapisz go w pliku tekstowym
w edytorze tekstu (np. MS Word). Następnie opatrz go odpowiednim komentarzem. Na przykład
napisz, co oznacza krzywa niebieska, krzywa czerwona, pionowe kreski z czerwonymi kółkami.
Swoimi słowami wyjaśnij, co ilustruje niniejszy wykres.
6. Pewien sygnał zawierający dwie składowe sinusoidalne o jednakowej amplitudzie oraz
o częstotliwościach wynoszących odpowiednio 1 i 3 kHz został spróbkowany z częstotliwością
wynoszącą 5 kHz. Korzystając z notatek z przedmiotu przetwarzanie i obróbka sygnałów sporządź
wykresy przedstawiające:
a. widmo częstotliwościowe sygnału oryginalnego,
b. widmo częstotliwościowe sygnału spróbkowanego,
c. charakterystykę częstotliwościową filtru rekonstrukcyjnego,
d. widmo sygnału zrekonstruowanego.
W zadaniu tym należy założyć, że filtr rekonstrukcyjny posiada idealną charakterystykę dolnoprzepustową o częstotliwości odcięcia równej częstotliwości Nyquista oraz o jednostkowym
wzmocnieniu.
Opisz podobieństwa i ewentualne różnice pomiędzy widmami sygnału oryginalnego
i zrekonstruowanego. W przypadku wystąpienia różnic podaj, co mogło być ich przyczyną.
7. Dany jest sygnał sinusoidalny o częstotliwości 10 kHz. Sygnał ten został spróbkowany,
a następnie zrekonstruowany przy użyciu filtru posiadającego idealną charakterystykę dolnoprzepustową o częstotliwości odcięcia równej częstotliwości Nyquista oraz o jednostkowym
str. 3
wzmocnieniu. Naszkicuj w sprawozdaniu widma sygnału zrekonstruowanego dla przypadków,
gdy częstotliwość próbkowania wynosiła:
a. fp = 48000 Hz
b. fp = 22000 Hz
c. fp = 18000Hz
d. fp = 12000 Hz
Napisz, w którym przypadku można zaobserwować zjawisko aliasingu oraz w jaki sposób
zjawisko to się zamanifestowało.
8. Wykorzystując program o poniższym kodzie zweryfikuj poprawność wykresów sporządzonych
ręcznie w zadaniu poprzednim.
Fs = 48000;
% Czestotliwosc probkowania [Hz]
f = 10000;
% Czestotliwosc sygnalu [Hz]
t = 0: 1/Fs: 2^16/f;
y = sin(2*pi*f*t);
N = length(y)
w = window(@kaiser,N);
Widmo = fft(y.*w');
f=Fs*(0:(N/2))/N;
n=length(f);
M = 20*log10(abs(Widmo));
plot(f,abs(M(1:n)))
xlabel('Czestotliwosc [Hz]');
ylabel('Magnituda [dB]');
grid on
Powyższy program umożliwia wykreślenie zrekonstruowanego widma sygnału sinusoidalnego, co
przedstawia rysunek 2. Rysunek ten przedstawia zrekonstruowane widmo sygnału
sinusoidalnego o częstotliwości 10 kHz spróbkowanego z częstotliwości 48 kHz. W celu zmiany
częstotliwości próbkowania i częstotliwości sygnału próbkowanego należy odpowiednio
zmodyfikować pierwszą i drugą linię powyższego kodu.
Uzyskane widma częstotliwościowe dla częstotliwości próbkowania z poprzedniego zadania
należy dołączyć w postaci zrzutów z ekranu do wcześniej utworzonego pliku tekstowego. Każdy
ze zrzutów powinien być opisany tak, aby wiadomo było, co on przedstawia.
Opisz w sprawozdaniu podobieństwa i różnice widm częstotliwościowych wykreślonych ręcznie
w poprzednim zadaniu oraz wygenerowanych komputerowo w zadaniu bieżącym.
str. 4
Rys. 2. Przykład widma częstotliwościowego sygnału sinusoidalnego o częstotliwości 10 kHz
spróbkowanego z częstotliwością 48 kHz.
9. Zjawisko aliasingu w dziedzinie częstotliwości może również być zilustrowane przy pomocy
programu o poniższym kodzie:
Fs = 48000;
t = 0: 1/Fs: 1;
fmax = 10000;
% Czestotliwosc maksymalna [Hz]
y = chirp(t,0,1,fmax);
specgram(y,512,Fs,kaiser(256,5),220)
Program ten generuje sygnał kosinusoidalny o częstotliwości płynnie zmieniającej się w czasie,
począwszy od 0 Hz, a skończywszy na częstotliwości maksymalnej fmax. Następnie program
dokonuje widmowej analizy spektrograficznej wygenerowanego sygnału. Czas generowanego
sygnału wynosi 1 sekundę.
Przy poprawnym uruchomieniu programu na ekranie komputera powinien pojawić się wykres
przedstawiony na rysunku 3. Rysunek ten przedstawia spektrogram sygnału kosinusoidalnego,
którego częstotliwość płynnie zmienia się od 0 do 10 kHz wciągu 1 sekundy. Oś pozioma wykresu
reprezentuje czas w sekundach, oś pionowa częstotliwość w hercach, natomiast kolor
reprezentuje energię sygnału.
str. 5
Rys.3. Spektrogram sygnału kosinusoidalnego, którego częstotliwość wciągu 1 sekundy zmienia się
od 0 do 10 kHz.
Zmodyfikuj powyższy program zmieniając częstotliwość maksymalną z 10 do 15 kHz, a następnie
uruchom program. Wygenerowany rysunek w postaci zrzutu z ekranu dodaj do uprzednio
utworzonego dokumentu tekstowego, opatrując go odpowiednimi komentarzami.
10. Zmodyfikuj powyższy program w ten sposób, aby częstotliwość maksymalna na końcu
generowanego sygnału wynosiła odpowiednio:
a. fmax = 20 kHz,
b. fmax = 25 kHz,
c. fmax = 30 kHz,
d. fmax = 40 kHz.
Dla każdego z powyższych przypadków wygeneruj spektrogram i dołącz go do uprzednio
utworzonego dokumentu, dodając do każdego z wykresów odpowiednie opisy.
Zapisz sprawozdaniu, który z wykresów ilustruje zjawisko aliasingu. Zapisz również, w jaki sposób
zjawisko to się zamanifestowało.
11. Wyjaśnij w sprawozdaniu, co jest zadaniem kwantyzera.
12. Sporządź charakterystykę wejściowo-wyjściową kwantyzera o rozdzielczości:
a. 2-bitowej,
b. 3-bitowej.
str. 6
Oś pozioma powinna przedstawiać wartości sygnału na wejściu kwantyzera, natomiast oś
pionowa powinna reprezentować wartości na jego wyjściu.
13. Przy użyciu poniższego kodu zweryfikuj poprawność wykresów kwantyzera sporządzonych w
zadaniu poprzednim. Kod ten umożliwia wygenerowanie charakterystyki przejściowej
kwantyzera o zadanej rozdzielczości bitowej. Dla przykładu, rysunek 4 przedstawia
charakterystykę kwantyzera o rozdzielczości 4-bitowej.
x = -1: 0.0001: 1;
y = q(x, 4);
plot(x, y, 'LineWidth', 2);
xlabel('Sygnal wejsciowy')
ylabel('Sygnal wyjsciowy')
grid on
Rys. 4. Charakterystyka przejściowa 4-bitowego kwantyzera.
Uwaga! Dla poprawnej pracy powyższego programu należy w katalogu roboczym zapisać
funkcję o nazwie q.m zawierającą następujący kod:
function y = q(x, bits)
x = x / 2 + 0.5;
str. 7
b = 2^bits-1;
y = round(x*b)/b;
y = 2 * (y - 0.5);
W tym celu należy w edytorze tekstu skopiować powyższy kod do nowego pliku i zapisać go w
katalogu roboczym programu Octave pod nazwą q.m
Uzyskane w niniejszym zadaniu wykresy reprezentujące charakterystyki przejściowe 2-bitowego
i 3-bitowego kwantyzera należy w postaci odpowiednich zrzutów z ekranu zapisać w uprzednio
utworzonym dokumencie, opatrując je odpowiednimi informacjami.
Opisać w sprawozdaniu podobieństwa i różnice pomiędzy charakterystykami kwantyzerów
naszkicowanymi ręcznie w zadaniu poprzednim i charakterystykami uzyskanymi w zadaniu
niniejszym.
14. Poniższy kod programu umożliwia symulację pracy kwantyzera o zadanej rozdzielczości bitowej.
Przykładowo, rysunek 5 przedstawia działanie kwantyzera o rozdzielczości 2-bitowej. Wykres
górny reprezentuje analogowy sygnał podany na wejście kwantyzera x, wykres środkowy
przedstawia sygnał na wyjściu kwantyzera y, natomiast wykres dolny reprezentuje sygnał błędu,
czyli różnicę (x – y) pomiędzy sygnałem analogowym a sygnałem skwantowanym. Błędy te
pojawiające się w czasie trwania sygnału określane są mianem szumów kwantyzacji.
B = 2;
% Rozdzielczosc bitowa kwantyzera [bit]
Fs = 50000;
% Czestotliwosc probkowania [Hz]
t = 0: 1/Fs: 0.002;
f = 1000;
% Czesotliwosc sygnalu [Hz]
y = sin(2*pi*f*t);
yq = q(y, B);
e = y - yq;
subplot(3,1,1); fplot (@sin, [0, 4*pi]);
axis ([0 4*pi -1 1]); legend ('');
axis("labely","tic");
ylabel('Sygnal analogowy')
subplot(3,1,2); stem(t,yq,'markersize',3);
ylabel('Sygnal skwantowany')
subplot(3,1,3); stem(t,e,'markersize',3);
ylabel('Szum kwantyzacji')
axis ([0 0.002 -1 1]);
xlabel('Czas [sek.]')
str. 8
Rys. 5. Przykład działania 2-bitowego kwantyzera.
Przy użyciu powyższego kodu dokonaj symulacji pracy kwantyzera o rozdzielczości:
a. 2-bitowej,
b. 3-bitowej,
c. 4-bitowej,
d. 16-bitowej.
Pozostałe parametry symulacji, czyli częstotliwość sygnału (1000 Hz) oraz częstotliwość
próbkowania (50 kHz), pozostawić niezmienione zgodnie z oryginalnymi wartościami w kodzie
programu.
Wykonać zrzuty z ekranu dla każdego z badanych przypadków i dołączyć do uprzednio
sporządzonego dokumentu. W sprawozdaniu zapisać wniosek płynący z przeprowadzonych
symulacji.
str. 9
15. Korzystając z kodu programu z poprzedniego zadania dla kwantyzera posiadającego 2-bitową
rozdzielczość wygenerować sygnały dla następujących częstotliwości próbkowania:
a. fp = 10 kHz,
b. fp = 100 kHz,
c. fp = 500 kHz,
d. fp = 1 MHz.
Częstotliwość kwantowanego sygnału powinna w każdym przypadku wynosić 1000 Hz
(oryginalna wartość w kodzie programu).
Uzyskane wykresy w postaci zrzutów z ekranu dołączyć do uprzednio utworzonego dokumentu
opatrując je odpowiednimi informacjami.
W sprawozdaniu zapisać na podstawie uzyskanych wykresów, czy prawdziwe jest następujące
stwierdzenie:
„Zwiększanie częstotliwości próbkowania polepsza dokładność kwantowanego sygnału”.
16. Dokument zawierający zrzuty z ekranu uzyskane podczas dzisiejszych zajęć zademonstrować
nauczycielowi prowadzącemu zajęcia.
17. Korzystając z notatek z przedmiotu przetwarzanie i obróbka sygnałów, biblioteczki zawodowej
lub z zasobów internetowych zapisz w sprawozdaniu wzór określający stosunek sygnału do
szumu kwantyzacji SNR w zależności od rozdzielczości bitowej kwantyzera. Podać źródło
informacji.
Na podstawie zapisanego wzoru określ stosunek sygnału do szumu dla kwantyzerów o
rozdzielczości bitowej wynoszącej odpowiednio:
a)
b)
c)
d)
4 bity,
8 bitów,
16 bitów,
24 bity.
Napisz w sprawozdaniu, który z powyższych kwantyzerów jest lepszy i dlaczego.
Opracowanie
Odpowiedzi do powyższych pytań oraz wyniki badań wraz z ich opisem należy przekazać
prowadzącemu w postaci pisemnego sprawozdania na zakończenie danego ćwiczenia.
Literatura
[1] GNU Octave, http://www.gnu.org/software/octave/ , data dostępu: wrzesień 2012.
str. 10

Podobne dokumenty