24
6. Transmisja i generacja sygnałów okresowych
Cele ćwiczenia
Zapoznanie ze środowiskiem programistycznym Code Composer Studio.
Zapoznanie z urządzeniem TMX320C5515 eZdsp.
Zapoznanie z podstawami programowania urządzenia TMX320C5515 eZdsp
w języku C.
Obserwacja zjawisk wynikających z twierdzenia o próbkowaniu, aliasingu
i niejednoznaczność reprezentacji sygnału przez ciąg próbek.
Zapoznanie z metodami programowej generacji sygnałów okresowych.
Transmisja sygnałów przez urządzenie TMX320C5515 eZdsp
Z analogowych zacisków zewnętrznych zestaw TMX320C5515 eZdsp jest
widziany, jako urządzenie analogowe przetwarzające analogowy sygnał wejściowy
x(t) w analogowy sygnał wyjściowy y(t). Wewnątrz urządzenia sygnał analogowy
x(t) jest zamieniany w sygnał cyfrowy x[n], następnie przetwarzany cyfrowo
w sygnał cyfrowy y[n], który jest zamieniany w sygnał analogowy y(t) dostępny na
wyjściu urządzenia, rysunek 5.1.
25
Rys. 5.1. Schemat przetwarzania sygnału analogowego przez zestaw TMX320C5515 eZdsp
We wszystkich uruchamianych programach dla próbek wejściowych
i wyjściowych przyjęto nazwy
left_input – wejściowa próbka kanału lewego,
right_input – wejściowa próbka kanału prawego,
left_output – wyjściowa próbka kanału lewego,
right_output – wyjściowa próbka kanału prawego.
Do komunikacji procesora z kodekiem wykorzystywane są dwie funkcje
aic3204_codec_read(*int, *int) i aic3204_codec_write(*int, *int),
z których pierwsza pobiera próbki wejściowe, a druga wysyła próbki na wyjście.
Na listingu 5.1 przedstawiony jest kod procedury transmisji próbek z wejścia na
wyjście.
Listing 5.1. Kod procedury transmisji próbek z wejścia na wyjście
aic3204_codec_read(&left_input, &right_input); // czytanie próbek. left_output = left_input; // transmisja z wejścia na wyjście right_output = right_input; // można zamienić na własny kod aic3204_codec_write(left_output, right_output); // wysłanie próbek
TMX320C5515 eZdsp
Kodek
TLV320AIC3204Procesor TMX320C5515
left_input right_input
Algorytm
CPS
left_output right_outpu
t
A/C
C/A
x[n]
y[n]
x(t)
y(t)
fp
26
Program przesyłający próbki z wejścia na wyjście nie przetwarza sygnału, ale
może być punktem wyjścia dla programu cyfrowego przetwarzania sygnału,
wystarczy umieścić odpowiedni kod przetwarzania sygnału między instrukcją
pobrania próbek z wejścia, a instrukcją wysłania próbek na wyjście.
Laboratoryjne badania programu transmisji sygnału z wejścia na wyjście
(nazywanego po angielsku Talkthru lub Audio Loopback) pozwalają na zbadanie
właściwości przetwarzania analogowo-cyfrowego i działania układu rekonstrukcji
sygnału analogowego.
Doświadczenie 5.1. Badanie transmisji sygnału przez urządzenie TMX320C5515
eZdsp – program TT.
1. Uruchomić program TT – przyciskami zmienia się szybkość próbkowania,
dostępne wartości to 8, 16, 24 i 48 kHz .
2. Uruchomić programy przyrządów pomiarowych Generator i Oscylograf.
3. Ustawić poziom sygnału generatora tak, aby nie wystąpił efekt jego nasycenia,
fp = 8 kHz.
4. Zbadać transmisję przez urządzenie sygnałów sinusoidalnych
o częstotliwościach (2,4 kHz; 5,6 kHz) i (3,5 kHz; 3,8 kHz) – pomierzyć
przebiegi czasowe (oscylogramy) i widma sygnałów wyjściowych przy
wszystkich szybkościach próbkowania.
5. Zbadać transmisję przez urządzenie sygnałów prostokątnych
o częstotliwościach (320 Hz, 880 Hz) i (2,4 kHz; 5,6 kHz) – pomierzyć
przebiegi czasowe i widma sygnałów wyjściowych przy wszystkich
szybkościach próbkowania.
W sprawozdaniu:
1. Wyjaśnić, co się stało z sygnałami o częstotliwości 5,6 kHz, gdy fp = 8 kHz?
2. Wyjaśnić, dlaczego niektóre zrekonstruowane sinusoidy mają zmienną
amplitudę?
27
3. Wyjaśnić, dlaczego podając na wejście sygnał prostokątny o częstotliwości
2,4 kHz dla fp = 8 kHz na wyjściu otrzymuje się sinusoidę?
4. Analizę wyników zilustrować wybranymi wykresami.
Błędy rekonstrukcji sygnału analogowego
W zrekonstruowanym sygnale sinusoidalnym o częstotliwości bliskiej
częstotliwości Nyguista równej 0,5fp pojawiają się widoczne zniekształcenia, które
można zobaczyć na rysunku 5.2, przedstawiającym wynik rekonstrukcji sygnału
sinusoidalnego o częstotliwości 3900 Hz pomierzony na wyjściu urządzenia
TMX320C5515 eZdsp; fp = 8 kHz.
Rys. 5.2. Wynik rekonstrukcji sygnału sinusoidalnego o częstotliwości = 3900 Hz, fp = 8 kHz
Przyczynę zmian amplitudy zrekonstruowanej sinusoidy można zidentyfikować
obserwując jej widmo amplitudowe przedstawione na rysunku 5.3.
28
Rys. 5.3. Pomierzone widmo amplitudowe zrekonstruowanego sygnału sinusoidalnego
o częstotliwości = 3900 Hz, fp = 8 kHz
W widmie tym występuje stłumiony pożądany prążek rekonstruowanej sinusoidy
o częstotliwości równej 3900 Hz i dodatkowo niepożądany prążek o częstotliwości
równej 4100 Hz, który powinien zostać usunięty przez dolnoprzepustowy filtr
układu rekonstrukcji sygnału analogowego. W idealnym układzie filtr
rekonstrukcyjny powinien usuwać wszystkie składowe sygnału analogowego
o częstotliwościach większych od częstotliwości Nyquista = 4 kHz. Ponadto filtr
nie powinien tłumić składowych o częstotliwościach poniżej częstotliwość
Nyquista. W rzeczywistych układach rekonstrukcji sygnału analogowego filtry
dolnoprzepustowe mają charakterystyki znacząco odbiegające od ideału i dlatego,
aby zadawalająco zrekonstruować sygnał analogowy, należy spełnić warunek
wynikający z twierdzenia o próbkowaniu z odpowiednim zapasem. Ów zapas
zależy od jakości filtru i wymaganej jakości zrekonstruowanego sygnału.
Na rysunku 5.4 przedstawiono pomierzoną charakterystykę amplitudową
toru sygnału z analogowego wejścia na analogowe wyjście urządzenia
TMX320C5515 eZdsp przy fp = 8 kHz.
29
Rys. 5.4. Pomierzona charakterystyka amplitudowa toru sygnału z analogowego wejścia na
analogowe wyjście urządzenia TMX320C5515 eZdsp, fp = 8 kHz
Charakterystyka toru sygnału z analogowego wejścia na analogowe wyjście
obejmuje transmitancje dolnoprzepustowego wejściowego filtru antyaliazingowego
i dolnoprzepustowego wyjściowego filtru rekonstrukcyjnego.
Rysunek 5.4 pozwala oszacować stromość zboczy filtru antyaliazingowego
i rekonstrukcyjnego platformy TMX320C5515 eZdsp. Na odcinku od 3,5 kHz do
4,5 kHz tłumienie toru sygnału rośnie o ponad 70 dB, co daje stromość zbocza =
70/log(4,5/3,5) = 641 dB/dekadę. Dzieląc obliczoną stromość zbocza na dwa filtry,
wychodzi, że każdy z nich powinien mieć zbocze o stromości ponad 300
dB/dekadę, co jest niezwykle trudne do uzyskania w filtrze analogowym.
Wymagania stawiane analogowym filtrom antyaliazingowym i rekonstrukcyjnym
można zmniejszyć zwiększając szybkość próbkowania przy tym samym paśmie
użytecznym. Dzięki nadpróbkowaniu i decymacji wymagania stawiane filtrowi
antyaliazingowemu można podzielić na dwa filtry jeden analogowy drugi cyfrowy.
Podobnie stosując interpolację można postąpić z filtrem rekonstrukcyjnym.
30
Nadpróbkowanie, decymacja i interpolacja sygnału cyfrowego
Filtr antyaliazingowy powinien zablokować zawijanie się do pasma
użytecznego składowych niepochodzących z tego pasma. Przyjmując fp = 48 kHz
i pasmo użyteczne = 20 kHz, pasmo zaporowe antyaliazingowego filtru
dolnoprzepustowego powinno zaczynać się na częstotliwości 28 kHz. Przyjmując
minimalne tłumienie w paśmie zaporowym = 60 dB, wymagana stromość zbocza
wyniesie 60/log(28/20) = 410 dB/dekadę. Przyjmując fp = 96 kHz pasmo
zaporowe filtru dolnopasmowego powinno zaczynać się na częstotliwości
96 – 20 = 76 kHz i wymagana stromość zbocza wyniesie 60/log(76/20) ≈ 100
dB/dekadę. Dla fp = 192 kHz wymagana stromość zbocza wyniesie 60 dB/dekadę.
Zwiększenie szybkości próbkowania nazywane nadpróbkowaniem pozwala
na zmniejszenie stromości zbocza filtru analogowego i dokonanie dalszej filtracji
antyaliazingowej przez łatwiejszy w realizacji filtr cyfrowy. Po filtracji cyfrowej
można zmniejszyć częstotliwość próbkowania do wymaganej poprzez decymację.
Filtr rekonstrukcyjny ma podobne parametry jak filtr antyaliazingowy
i przy jego realizacji można postąpić podobnie. Przed filtracją analogową można
zwiększyć szybkość próbkowania i odsunąć dalej repliki widma od pasma
użytecznego. Robi się to w dwóch etapach: najpierw pomiędzy istniejące próbki
wstawia się próbki zerowe następnie filtruje sygnał dolnoprzepustowym filtrem
interpolacyjnym. Filtr interpolacyjny powinien usunąć składowe widma powyżej
pasma użytecznego.
Kolejne doświadczenie pozwala prześledzić właściwości przetwarzania
analogowo-cyfrowego, zaobserwować aliazing i niejednoznaczność reprezentacji
sygnału przez ciąg próbek. Pełny tor sygnału, w programie Decymator,
przedstawiony na rysunku 5.5
Rys 5.5. Pełny tor sygnału w programie Decymator
LPF C/A A/C 6:1 LPF
31
składa się z
1. przetwornika C/A pracującego z częstotliwością 48 kHz,
2. filtru dolnoprzepustowego o częstotliwości granicznej = 4 kHz pełniącego rolę
filtru antyaliazingowego,
3. decymatora 6:1 pełniącego rolę układu próbkującego,
4. filtru dolnoprzepustowego o częstotliwości granicznej = 4 kHz pełniącego rolę
filtru rekonstrukcyjnego,
5. przetwornika A/C pracującego z częstotliwością 48 kHz.
W programie Decymator przyciskami zmienia się tor sygnału w kanałach lewym
i prawym (włącza i wyłącza filtry), aktualne składniki toru sygnału są wypisane na
konsoli i na wyświetlaczu. Pomijając filtr antyalizingowy można obserwować
aliazing i niejednoznaczność reprezentacji sygnału przez ciąg próbek. Pomijając
filtr rekonstrukcyjny można obserwować okresowe widmo spróbkowanego
sygnału, tylko do częstotliwości 24 kHz.
Doświadczenie 5.2. Badanie transmisji sygnału przez urządzenie TMX320C5515
eZdsp – program Decymator.
1. Uruchomić program Decymator.
2. Dobierając odpowiednie częstotliwości sygnału wejściowego i tor sygnału bez
filtru antyaliazingowego zaobserwować aliazing i niejednoznaczność
reprezentacji sygnału przez ciąg próbek.
3. Zaobserwować widmo próbek sygnału wyjściowego, gdy pominięty jest filtr
rekonstrukcyjny.
W sprawozdaniu:
1. Umieścić przykładowe wykresy przedstawiające badane zjawiska.
Na rysunkach 5.6 i 5.7 przedstawiono przykładowe wykresy uzyskane
w doświadczeniu 5.2.
32
Rys. 5.6. Ciąg impulsów próbkujących o częstotliwości = 4 kHz na wyjściu analogowym
urządzenia TMX320C5515 eZdsp, fp = 48 kHz
Rys. 5.7. Widmo częstotliwościowe próbek prostokąta o częstotliwości = 700 Hz, fp = 8 kHz
uzyskanych z pominięciem filtru antyaliazingowego (u góry), widmo zrekonstruowanego
prostokąta z widocznym aliasingiem (u dołu)
Generacja sygnałów okresowych
Najprostszym sposobem wygenerowania sygnału okresowego jest zapisanie
w pamięci procesora obliczonych zewnętrznym programem próbek jednego okresu
tego sygnału i okresowe wysyłanie ich na wyjście. Metoda ta jest prosta i nie
obciąża procesora, ale nie pozwala dowolnie zmieniać częstotliwości
generowanego sygnału. Inną metodą jest obliczanie najpierw bieżącej
unormowanej fazy sygnału a następnie wartości sygnału dla tej fazy.
Analogowy przebieg sinusoidalny dany jest wzorem
33
)2sin()sin()( 00 ftAtAtx , (5.1)
gdzie A – amplituda, ω – pulsacja, f – częstotliwość, φ0 – faza początkowa. Ciąg
próbek sygnału danego wzorem (5.1) ma postać
)2sin()sin(][ 00 fnTAnTAnx (5.2)
gdzie T jest okresem próbkowania. Wzór ten można przedstawić także w postaci
)sin()sin(][ 00 FnAnTAnx (5.3)
gdzie
pffT /2 (5.4)
jest pulsacją cyfrową, a
pffF /2/ (5.5)
jest unormowaną cyfrową częstotliwością.
Przyjmując, że częstotliwość f spełnia warunek pp fff wynikający
z twierdzenia o próbkowaniu, to 11 F i unormowaną cyfrową częstotliwość
można zapisać jako liczbę w formacie Q15 z wykorzystaniem całego zakresu tych
liczb, czyli możliwie najdokładniej.
Wyrażony w radianach argument sinusa (kąt fazowy) 02][ ftt jest
liniową funkcją czasu i może przyjmować dowolne wartości rzeczywiste.
W obliczeniach numerycznych liniowo rosnący kąt fazowy może przekroczyć
zakres liczb danego typu i wystąpi przepełnienie, dlatego wykorzystując
okresowość sinusa należy kąt fazowy sprowadzić do przedziału [0, 2π) albo
[–π, π). Wykorzystując okresowość sinusa wzór (5.3) można zapisać w postaci
34
])[sin())2mod)/((sin()sin(][ 00 nAFnAFnAnx , (5.6)
gdzie 2mod)/(][ 0 Fnn jest unormowaną fazą należąca so przedziału
[0, 2).
Unormowaną fazę sygnału można obliczać rekurencyjnie
.2mod)][(]1[
,/]0[ 0
Fnn
(5.7)
Jeśli obliczenia dane wzorem (5.7) są wykonywane w arytmetyce modularnej na
liczbach całkowitych Q15, to modyfikacja fazy wymaga wykonania tylko
instrukcji dodawania – modulo 2 jest wykonywane automatycznie, gdy wystąpi
przepełnienie. Jeśli wynik jest zadeklarowany jako zmienna bez znaku to należy do
przedziału [0, 2), a jeśli wynik jest zadeklarowany jako zmienna ze znakiem, to
należy do przedziału [–1, 1). W uruchamiany w laboratorium programach zmienna
przechowująca wynik jest zmienną ze znakiem.
Unormowaną częstotliwość formacie Q15 FQ15, dla fp = 48 kHz, można
obliczyć na podstawie wzoru
14143016
151515 2/223702
48000
2
48000
2222 ffff
fFF
p
Q , (5.8)
instrukcją
int F = ( (long)f * 22370 ) >> 14;
Dla fp = 8 kHz unormowana częstotliwość 11
15 2/16777fFQ a instrukcja, która
ją oblicza, ma postać
int F = ( (long)f * 16777 ) >> 11;
35
Do obliczenia wartości sinusa można wykorzystać funkcję sine() z biblioteki
TMS320C55x™ DSPLIB, która oblicza wartość sinusa dla unormowanej fazy.
Nagłówek funkcji na postać
ushort sine(DATA *x, DATA *r, ushort nx);
gdzie x[] jest wektorem danych unormowanych faz x[n] ,
jest wektorem obliczonych wartości funkcji sinus, nx jest wymiarem
wektorów x[] i r[], n = 0, 1, …, nx – l.
Wartości próbek sinusoidy można obliczać na podstawie rozwinięcia
funkcji sin(x) w szereg potęgowy
...!9!7!5!3
)sin(9753
xxxx
xx , x , (5.9)
lub na podstawie wielomianu aproksymującego. Funkcja sine()
wykorzystuje wielomian 5. stopnia aproksymujący funkcję sin(πx) dla
]/21 ,0[x [?].
,800293,15446778,0325196,502026367.0140625,3
)sin(5432
55
44
33
221
xxxxx
xaxaxaxaxax
(5.10)
Wartość funkcji sine() dla argumentów z poza przedziału ]2/1,0[ można
obliczyć wykorzystując okresowość sinusa oraz wzory redukcyjne
)sin()sin( xx i )sin()sin( xx .
Doświadczenie 5.3. Pomiary generatora przebiegów sinusoidalnych – program
Generator.
1. Uruchomić program Generator – przyciskami zmienia się typ generowanego
przebiegu, ostatnia pozycja pozwala na wprowadzenie z konsoli częstotliwości
generowanych sygnałów i wybór szybkości próbkowania.
36
2. Wygenerować analogowe przebiegi sinusoidalne o częstotliwościach 100 Hz,
1 kHz, 3 kHz, 3333 Hz, 3,8 kHz, 3,95 kHz, przy szybkości próbkowania
fp = 8 kHz.
3. Zaobserwować generowane przebiegi.
4. Pomierzyć widmo amplitudowe generowanych przebiegów.
W sprawozdaniu:
1. Umieścić przebieg czasowy i wykres widma amplitudowego sygnału
o częstotliwości 3,95 kHz – na wykresie widma amplitudowego ręcznie opisać
składowe i zaznaczyć częstotliwość Nyquista.
2. Umieścić 2 wybrane przez autorów przebiegi czasowe i odpowiadające im 2
wykresy widma amplitudowego badanych przebiegów.
3. Wyjaśnić kształt generowanych przebiegów oraz kształt ich widma
amplitudowego.
Generator przebiegów piłokształtnych, trójkątnych
i prostokątnych
Przy analizie widna generowanych przebiegów przydatne będą ich
rozwinięcia w szereg Fouriera. Na rysunku 5.7 przedstawiono przebieg
piłokształtny, którego próbki oblicza program Generator (wartość szczytowa
a = 1).
a
T 0 2T
−a
y
x −T 3T
37
Rys. 5.7. Przebieg piłokształtny
Rozwinięcie w szereg Fouriera przebiegu piłokształtnego z rysunku 5.7, dla a = π,
2T , dane jest następującym wzorem [4]
...
3
3sin
2
2sin
1
sin2
xxxy . (5.11)
Rozwinięcie w szereg Fouriera przebiegu trójkątnego przedstawionego rysunku
5.8,
Rys. 5.8. Przebieg trójkątny
dla a , 2T , dane jest wzorem [4]
...
5
5cos
3
3cos
1
cos4
2 22
xxxy
. (5.12)
Rozwinięcie w szereg Fouriera sygnału prostokątnego o wartości szczytowej
równej a, okresie równym 2π, zerowej składowej stałej i współczynniku
wypełnienia równym 50% ma postać [4]
...
5
5sin
3
3sinsin
4 xxx
ay
. (5.13)
Z powyższego wzoru wynika, że fala prostokątna jest przebiegiem
szerokopasmowy, zawierającym nieskończenie wiele nieparzystych
harmonicznych. Przyjmując, że składowa podstawowa fali prostokątnej ma
a
T 0 2T
y
x −T 3T
38
amplitudę równą 1, amplituda n-tej harmonicznej wyniesie 1/n, gdzie n = 3, 5, 7, ...
(amplitudy parzystych harmonicznych są równe 0). Amplitudy kolejnych
nieparzystych harmonicznych fali prostokątnej maleją powoli, co utrudnia
dyskretyzację przebiegów prostokątnych. Aby, w miarę poprawnie,
zrekonstruować przebieg prostokątny, musi on zawierać sporą liczbę
harmonicznych, co wymusza dużą szybkość próbkowania – kilkadziesiąt razy
większą od częstotliwości fali prostokątnej. We wzorach (5.11), (5.12) i (5.13)
widać mniejszą zawartość harmonicznych w przebiegu trójkątnym niż
piłokształtnym i prostokątnym, co ma istotny wpływ na kształt generowanych
sygnałów analogowych.
Na rysunku 5.9 przedstawiono przebieg czasowy (oscylogram)
zrekonstruowanej fali prostokątnej o częstotliwości 320 Hz wygenerowanej przez
program Generator – szybkość próbkowania równa 8 kHz.
Rys. 5.9. Przebieg czasowy generowanej fali prostokątnej o częstotliwości = 320 Hz,
fp = 8 kHz
Próbki obliczane przez program, na podstawie których zrekonstruowano sygnał, są
próbkami przebiegu prostokątnego zawierającego wszystkie harmoniczne, nie
zastosowano tu żadnego filtru antyaliasingowego. W generowanym sygnale
harmoniczne o częstotliwościach większych od częstotliwości Nyquista są podczas
39
rekonstrukcji sygnału analogowego tłumione przez filtr dolnoprzepustowy i nie ma
ich w pomierzonym widmie sygnału przedstawionym na rysunku 5.10.
Rys. 5.10. Widmo amplitudowe generowanej fali prostokątnej o częstotliwości = 320 Hz,
fp = 8 kHz
W wyniku przeplatania się widm, w paśmie podstawowym pojawiają się natomiast
dodatkowe prążki widma, widoczne na rysunku 5.10, pochodzące od nieusuniętych
przez filtr antyaliasingowy składowych widma o częstotliwościach większych od
częstotliwości Nyquista.
Istotny wpływ na kształt generowanych przebiegów prostokątnych, oprócz
zjawiska aliasingu, mają obwody wyjściowe zestawu TMX320C5515 eZdsp,
w których występują kondensatory sprzęgające odcinające napięcia stałe i tłumiące
składowe widma o małych częstotliwościach. Kondensatory sprzęgające powodują,
że jeśli kolejne próbki mają stałą wartość, to wyjściowe napięcie analogowe
eksponencjalnie maleje do zera.
Doświadczenie 5.4. Pomiary generatora przebiegów piłokształtnych, trójkątnych
i prostokątnych – program Generator.
40
1. Wygenerować analogowe przebiegi piłokształtne, trójkątne i prostokątne
o częstotliwościach 200 Hz, 310 Hz i 700 Hz; szybkość próbkowania
fp = 8 kHz.
2. Zaobserwować generowane przebiegi.
3. Pomierzyć widmo amplitudowe generowanych przebiegów.
W sprawozdaniu:
1. Umieścić wykresy przebiegów czasowych sygnałów o częstotliwości 310 Hz
i wykresy ich widma amplitudowego.
2. Wyjaśnić kształt generowanych sygnałów oraz kształt ich widma
amplitudowego.
3. Na wykresach widma amplitudowego ręcznie ponumerować harmoniczne.