Bezpośrednia synteza cyfrowa DDS

Bezpośrednia synteza cyfrowa (ang. Direct Digital Synthesis) polega na generacji dowolnych przebiegów okresowych, których kształ zapisany jest w pamięci stałej w postaci wartości kolejnych 2n próbek generowanego sygnału. Generator kwarcowy o częstotliwosci fgen ustala takt pobierania kolejnych próbek. Próbki te trafiają do przetwornika cyfrowo-analogowego i zamieniane są na odpowiadające im wartości napięcia. Po przepuszczeniu tego skokowo zmieniającego się napięcia przez filtr dolnoprzepustowy, otrzymujemy wygładzony sygnał, o kształcie zapisanego w pamięci przebiegu i częstotliwości:

fwy = fgen/2n

Układ syntezy DDS wyposażony jest dodatkowo w tzw. akumulator fazy, który powoduje wybieranie, co m-tej próbki. Nowy numer próbki wybieranej z pamięci stałej przez akumulator fazy jest sumą poprzedniego numeru próbki i słowa przestrajającego. Jeżeli w sumatorze nastąpi przepełnienie, summator wybiera ponownie adresy próbek od początku pamięci ROM. Słowo przestrajające wpływa na częstotliwość sygnału wyjściowego. Jeżeli wynosi ono 1, to na przetwornik C/A podawane są kolejne próbki z pamięci ROM, czyli częstotliwość sygnału wyjściowego jest równa:

fwy = fgen/2n

Dla m=2 będzie wybierana co druga próbka. Czyli częstotliwość wyjściowa określona jest wzorem:

fwy= mfgen/2n

Zmniejszenie skoku przestrajania pociąga za sobą konieczność zwiększenia (w tempie wykładniczym) rozmiaru pamięci z próbkami. Np. dla fgen= 1 MHz osiągnięcie skoku poniżej 1 Hz wymaga 1 MB pamięci ROM. Jeżeli zastosujemy scalony syntezer DDS AD9150, to n=32, czyli kształt przebiegu sinusoidalnego zapisany jest w postaci 232=4.294.967.296 próbek. Zatem dla generatora kwarcowego o częstotliwości 120 MHz najmniejsza uzyskana częstotliwość i krok strojenia (dla m=1) będzie wynosić około 0,028 Hz.

Natomiast maksymalna częstotliwość wyjściowa wynika z tego, że teoretycznie, aby odtworzyć przebieg sinusoidalny wystarczą dwie próbki sygnału. Zatem maksymalna wartość częstotliwości wyjściowej wynosi połowę częstotliwości fgen. W praktyce, im z większej liczby próbek składa się generowany sygnał, tym czystsze jest jego widmo częstotliwościowe.

Najczęściej pożądaną wartością skoku przestrajania jest 1Hz, 5Hz, 10Hz itp. Jest to 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, ale takie oscylatory kwarcowe są trudno dostępne. Lepszym sposobem jest zastosowanie sumatora i akumulatora fazy zliczających w kodzie BCD. Pojemność akumulatora jest wtedy całkowitą potęgą liczby 10. Przy adresowaniu pamięci wskaźnik m w kodzie BCD musi być zamieniony za pomocą transkodera na naturalny kod dwójkowy. Najlepszym rozwiązaniem jest poszerzenie akumulatora fazy o część "ułamkową", uwzględnianą przy akumulacji fazy, ale nie braną pod uwagę przy adresowaniu pamięci.

Ustawianie żądanej częstotliwości, czyli podawanie odpowiednich wartości m, najczęściej realizowane jest przez odpowiednio oprogramowany mikrokontroler. Oprogramowanie mikrokontrolera sterujacego powinno korzystać z trybu IDLE (usypiania) procesora. W trybie tym, gdy nie kręcimy gałką i nie używamy klawiatury, procesor przechodzi w stan uśpienia, żeby nie generować zbędnego szumu cyfrowego. Należy także, zaekranować cały układ syntezy, sterownika mikroprocesorowego i klawiaturę, a wszystkie przewody sygnałowe prowadzić przewodem ekranowanym.