# Direct Digital Synthesis

Con Direct Digital Synthesis (DDS) si indica un metodo per generare, usando elettronica digitale, una arbitraria forma d'onda periodica partendo da un singolo oscillatore di riferimento.
La sintesi digitale elimina tutti i tempi d'assestamento, i ringing, gli errori dei PLL ed altri sistemi di sintesi ed il solo errore generato è dovuto all'oscillatore di riferimento.

## Principi di funzionamento

Un circuito di base per la DDS consiste in un controllore elettronico, una RAM, un riferimento di frequenza (di solito un oscillatore a cristallo), un contatore e un convertitore digitale-analogico (DAC). Il circuito deve essere dapprima "programmato" e quindi può generare la forma d'onda desiderata.

## Programmazione

Durante questa procedura, il controllore elettronico riempie la RAM di dati. Ogni dato è una parola digitale che rappresenta l'ampiezza della forma d'onda all'istante corrispondente all'indirizzo della RAM in cui si trova il dato. L'insieme dei dati in RAM costituisce quindi il vettore delle ampiezze della forma d'onda da generare. Se, per esempio, la prima metà della RAM è costituita da zeri e la seconda parte da parole a tutti 1, la RAM rappresenta un'onda quadra con duty cycle al 50%. È possibile comunque creare altri tipi di forma d'onda.

## Generazione

Per l'effettiva generazione, il contatore (più propriamente chiamato accumulatore di fase) viene fatto avanzare di un certo incremento ad ogni colpo di clock dell'oscillatore di riferimento. Il valore del contatore (la fase) è usato come indirizzo di lettura del dato residente nella RAM. Infine, il DAC converte ogni singolo codice in uscita dalla RAM, in un livello di tensione, generando così una forma d'onda analogica.
Per generare una forma d'onda periodica, il circuito è programmato in modo che la RAM sia scandita in un periodo pari al periodo desiderato della forma d'onda. Per esempio, se la frequenza di riferimento è 1 MHz, se la RAM contiene 1000 dati e se si usano incrementi di fase di 1, una scansione completa della RAM è effettuata in 1000 / 1 MHz = 1 ms, e la frequenza dell'onda generata sarà 1 / 1 ms = 1 kHz.
Questo sistema può generare frequenze più elevate semplicemente aumentando l'incremento di fase, di modo che il contatore scandisca la RAM più rapidamente, per esempio leggendo un dato sì e uno no. Riprendendo l'esempio precedente, l'incremento di fase era 1, si può quindi portare a 2, ottenendo una frequenza di uscita doppia. Aumentando l'incremento di fase si ha un controllo meno fine della frequenza. Per esempio, passando da un incremento di fase di 10 a uno di 11 o di 9, la frequenza varia del 10%. Maggiore è la precisione richiesta per la frequenza, più bit sono necessari nel contatore e nel DAC.

## Dettagli realizzativi

Le realizzazioni pratiche di solito hanno una dimensione della RAM pari a una potenza di 2 e lavorano con accumulatori di fase a 32 bit (di conseguenza anche l'incremento di fase è a 32 bit). In genere la RAM ha 256 o 1024 locazioni e quindi solo 8 o 10 bit dell'accumulatore di fase costituiscono l'indirizzo vero e proprio della RAM. I rimanenti bit sono usati come parametro per una interpolazione tra due elementi adiacenti in RAM. Spesso è sufficiente una interpolazione lineare. L'oscillatore di riferimento ha una frequenza generalmente compresa tra 1 MHz e qualche centinaio di MHz.
La frequenza massima ottenibile è inferiore alla frequenza dell'oscillatore di riferimento e rischia di essere tanto più distorta quanto più vi si avvicina. Infatti, l'incremento di fase dev'essere molto elevato e la RAM viene scandita in pochi colpi di clock, producendo una forma d'onda con pochi punti.
Esistono anche realizzazioni software della DDS, limitate generalmente alle frequenze audio.
Tra le applicazioni della DDS ci sono: generatori di funzione, miscelatori, modulatori e sintetizzatori di suono. Viene anche utilizzata nei sistemi di guerra elettronica, insieme alla sua evoluzione la Digital Radio Frequency Memory.
Le Sound Blaster hanno il generatore di frequenze del sintetizzatore basate su DDS

## DDS integrati moderni

Componenti come l'AD9850/51 della Analog Devices non possiedono RAM di tabella della forma d'onda e la sostituiscono con una mask ROM in cui è scritta una tabella sinusoidale eliminando la necessità di programmazione