Pracownia problemowa

2. Bezpośrednia synteza cyfrowa

Bezpośrednia synteza cyfrowa (ang. Direct Digital Synthesis) to najnowsza metoda generacji przebiegów o rozmaitych kształtach i częstotliwościach stablilzowanych źródłem kwarcowym (lub atomowym). W przeszłości ze względu na wymagania co do podzespołów i wysokie koszty metoda ta była stosowana wyłącznie w wysokiej klasy sprzęcie profesjonalnym. Dzięki postępom w technologii układów scalonych DSS zaczyna powoli wypierać PLL z coraz większej klasy zastosowań. Nadal jednak jest to metoda droższa, choć ceny układów systematycznie spadają. W DSS przebieg wyjściowy jest wytwarzany w sposób całkowicie cyfrowy, można wręcz powiedzieć, że jest on obliczany.

Schemat układu syntezy bezpośredniej

Zasada działania
Próbki w pamięci ROM

Próbki sinusoidy umieszczone w pamięci ROM syntezera.

Generowany przebieg dla słowa przestrajającego = 1

Wybierane próbki i generowany przebieg
dla słowa przestrajającego równego 1.

Generowany przebieg dla słowa przestrajającego = 2

Wybierane próbki i generowany przebieg
dla słowa przestrajającego równego 2.

Generowany przebieg dla słowa przestrajającego = 3

Wybierane próbki i generowany przebieg
dla słowa przestrajającego równego 3.
Bazowym sygnałem do generacji przebiegów metodą bezpośredniej syntezy cyfrowej jest sygnał zegarowy. Z reguły jest on wytwarzany przez generator kwarcowy. Zbocze sygnału zegarowego powoduje wpisanie nowej wartości z wyjścia sumatora do akumulatora fazy. Liczba umieszczona w tym akumulatorze jest używana jako adres pamięci ROM zawierającej próbki funkcji sinus. Wybrane próbki są podawane (w rytm sygnału zegara) na przetwornik cyfrowo-analogowy, a powstający na wyjściu tego przetwornika sygnał jest filtrowany w klasycznym analogowym filtrze dolnoprzepustowym. W tym samym czasie do poprzedniej zawartości akumulatora fazy jest dodawane słowo przestrajające. Nowa wartość zostanie wpisana do akumulatora fazy kolejnym zboczem zegara. Jeżeli w sumatorze następuje przepełnienie, bit przeniesienia jest odrzucany, a więc po dojściu do końca pamięci ROM układ zaczyna pobierać próbki z jej początku. Słowo przestrajające określa częstotliwość sygnału wyjściowego. Jeżeli wynosi ono 1, to na przetwornik C/A podawane są kolejne próbki z ROM. Wtedy częstotliwość sygnału wynosi:

f = F / 2n

gdzie F to częstotliwość sygnału zegara, a n to ilość bitów w adresie pamięci. Przykładowo jeżeli F = 1 MHz a pamięć zawiera 2048 próbek (n = 11) to minimalna częstotliwość przebiegu wynosi 488,28125 Hz. Zwiększenie słowa przestrajającego do wartości m powoduje pobieranie co m-tej próbki z pamięci a więc częstotliwość rośnie m razy. Minimalna ilość próbek jaka może się składać na okres przebiegu wyjściowego to 4, jeżeli w pamięci ROM jest stablicowana funkcja sinus, i 2 jeżeli w ROM-ie mamy funkcję cosinus (dla sinusa jeżelibyśmy pobrali próbkę o adresie 0 i adresie w połowie pamięci, to dostalibyśmy dwa zera). W naszym przykładzie więc maksymalna wartość słowa przestrajającego wynosi 512 (sin) lub 1024 (cos) i osiągamy przy tym częstotliwości odpowiednio 250 lub 500 kHz.
Skok częstotliwości
Minimalną wartość o jaką możemy zmieniać częstotliwość wyjściową, nazywamy skokiem częstotliwości. W zwykłym syntezerze DDS jest on równy najmniejszej częstotliwości (przy słowie przestrajającym równym 1). Zmniejszenie skoku pociąga za sobą zwiększenie rozmiaru pamięci z próbkami i to w tempie wykładniczym (np. przy zegarze 1 MHz zejście ze skokiem poniżej 1 Hz wymaga 1 MB pamięci ROM). Istnieje jednak znacznie mniej kosztowny sposób zmniejszenia skoku, mianowicie poszerzenie akumulatora fazy o część "ułamkową", która jest brana pod uwagę przy akumulacji fazy, ale nie jest brana pod uwagę przy adresowaniu pamięci. Wracając do naszego przykładu - dodanie 6 "ułamkowych" bitów do akumulatora fazy zmniejszy skok z 488,28125 Hz do 15,25878906 Hz. W rozwiązaniach scalonych syntezerów DDS akumulator fazy ma typowo 32 bity, co nawet przy zegarze 100 MHz pozwala osiągać rozdzielczość 0,023 Hz.
Uzyskiwanie "okrągłych" częstotliwości
Najczęściej pożądana jest "okrągła" wartość skoku np. 1 czy 5 Hz, co jest trudne do osiągnięcia ze względu na to, że pojemność akumulatora wyrażana jest potęgą dwójki. Pierwszym sposobem jest zastosowanie zegara o częstotliwości będącej w Hz potęgą dwójki, np. 1,048576 MHz zamiast 1 MHz, jednak takie oscylatory kwarcowe są trudno dostępne. Lepszym sposobem jest zastosowanie sumatora i akumulatora fazy zliczających w kodzie BCD, wtedy pojemność akumulatora jest całkowitą potęgą liczby 10. Przy adresowaniu pamięci niezbędny jest transkoder z kodu BCD na NKB, albo próbki muszą być rozmieszczone w pamięci tak, aby możliwe było bezpośrednie adresowanie w BCD (co jednak wymaga większej pojemności całkowitej pamięci).

Literatura
  1. Pechanec M. Mark Pechanec's Direct Digital Synthesis, 1998.
  2. Diorio C., Humes T. Direct and Indirect Frequency Synthesis in the 0.5 - 20GHz Frequency Range, 1997
  3. Papay Z. DDS Technology, 2000.
  4. Puccio G. Layout Design of a Direct Digital Frequency Synthesizer as a Frequency Dehopper for a Spread Spectrum Communication system, rozdział 3.5 Digital Frequency Synthesizers, 1994.
  5. Surber J., McHugh L. Single-Chip Direct Digital Synthesis vs. the Analog PLL, Analog Devices 1997.
  6. Synthesizer Products Data Book, Qualcomm Inc. 1997.
  7. Introduction to Direct Digital Synthesis, Intel Corp. 1991.
  8. Papay Z. Numerical Distortion in Single-Tone DDS, 2001.
  9. AD9850 CMOS, 125 MHz Complete DDS Synthesizer datasheet, Analog Devices 1999.