En Digital Computational Synthesizer (DDS ), även känd som en DDS-krets (Direct Digital Synthesis ), är en elektronisk enhet designad för att syntetisera godtyckliga vågformer och frekvenser från en enda referensfrekvens som tillhandahålls av en klockgenerator . En karakteristisk egenskap hos DDS är att samplen av den syntetiserade signalen beräknas med digitala metoder, varefter de överförs till en digital-till-analog-omvandlare (DAC), där de omvandlas till en analog form ( spänning eller ström ) .
I detta skiljer sig DDS från frekvenssynthesizers baserade på andra principer, till exempel PLL .
De huvudsakliga funktionsblocken i en DDS är: en fasackumulator, en fas-till-amplitudomvandlare, en DAC och ett lågpassfilter . Dessutom innehåller DDS en viss mängd minne som tjänar till att lagra parametrarna för den syntetiserade signalen, såsom frekvens , fas , amplitud , form, etc.
I varje cykel av referensfrekvensen ökar fasackumulatorn (vanligtvis en binär räknare) sitt värde med det värde som skrivs till minnescellen, det tal som skrivs i vilket vanligtvis kallas fasinkrementet. Som ett resultat ökar värdet på fasackumulatorn linjärt med tiden. Därefter omvandlas det på detta sätt beräknade fasvärdet i varje cykel till ett amplitudvärde. I princip kan denna omvandling vara godtycklig och beror på applikationen. I det vanligaste fallet i praktiken, för syntes av harmoniska svängningar, beräknas sinus för det aktuella fasvärdet. Resultatet av beräkningen matas till ingången på DAC, vars utsignal utjämnas från samplingsstegen med ett lågpassfilter.
En av de viktiga egenskaperna hos sådana enheter är den höga upplösningen för att ställa in värdena för reproducerbara frekvenser och deras absoluta noggrannhet (förutsatt att masteroscillatorn är idealisk). Enheter finns tillgängliga med ett avstämningssteg på mindre än 0,00001 Hz, med utgångsfrekvenser från noll hertz till hundratals megahertz och en referensfrekvens i storleksordningen en gigahertz [1] [2] .
Hastigheten (tiden) för att ställa in utgångsfrekvensen från ett värde till ett annat är mycket hög och stabil och bestäms huvudsakligen endast av varaktigheten av impulssvaret för det analoga återställningsfiltret vid synthesizerns utgång; själva omstruktureringen sker praktiskt taget omedelbart. Inställningstiden beror inte på skillnaden mellan den initiala och slutliga frekvensen. Vissa synthesizers av denna typ tillhandahåller bland annat automatiskt linjärt inkrement eller frekvenshopp . I detta fall är fasstegringen inte konstant, utan varierar enligt en given lag.
Som en nackdel kan man peka på en högre strömförbrukning jämfört med PLL-lösningar på grund av den stora mängden beräkningar, och en högre nivå av icke-harmoniska falska komponenter i den syntetiserade signalens spektrum.
Ett tydligt exempel på implementeringen av den beskrivna principen kan vara följande kod på C -språket :
#inkludera <math.h> int nästa_amp ( int dph ) { statisk int fas = 0 ; int amp ; fas += dph ; amp = 511,5 * sin ( 2 * M_PI * fas / 0x100000000L ); returnera & ; }Här är dph fasstegringen, fasen är den nuvarande (momentana) fasen, amp är den nuvarande (momentana) amplituden för den syntetiserade övertonssignalen. Om nästa_amp-funktionen anropas med klockfrekvens , kommer dess returvärden att vara prover av en sinusformad signal med en frekvens och amplitud på 511,5 (trots att returvärdena i sig är heltal). Denna amplitud motsvarar ingångsområdet för en 10-bitars DAC.
Sinusfunktionens periodicitetsegenskap används också här, nämligen det faktum att när fasackumulatorn svämmar över ändras dess värde med 2 32 och sinusargumentet ändras med 2π, vilket inte påverkar resultatet.