Problema di precisione di un DDS a frequenze molto basse


8

La prima volta nella mia vita sto usando questo chip DDS (AD9850) per creare un'onda sinusoidale con la frequenza desiderata, dove carico il codice della tabella di ricerca e la frequenza desiderata. comando tramite a con microcontrollore. Quindi le mie conoscenze al momento sono molto limitate.

La cosa sembra andare bene finora, ma il problema è a frequenze molto basse. A 1Hz e anche 0,5Hz sembra a posto. Ma ho bisogno anche di 0,1Hz.

Ecco l'output di DDS quando invio il numero 0.1 al DDS tramite il microcontrollore:

inserisci qui la descrizione dell'immagine

Nel mio codice invio il comando da PC a micro come stringa e lo converto in doppio. Ma per semplicità e per verificare utilizzo questo codice e per 0.1Hz ho impostato sendFrequency (0.1) nel loop.

Ma come vedi il periodo è di circa 11,5 secondi invece di 10 secondi per il comando 0,1Hz.

Spero di poter spiegare bene il problema. C'è un modo per calibrare o mettere a punto questo in modo da ottenere risultati più accurati? O dovrei vivere con la precisione? Tra dove nella scheda tecnica si può fare riferimento a tale incertezza relativa?


1
quindi, qual è la parola di controllo che stai inviando al chip DDS e qual è l'orologio di riferimento che stai usando per il chip DDS? Cosa ti aspettavi che accadesse e quanto distano questi 11,5 secondi? Avremo bisogno di molte più conoscenze sul tuo sistema!
Marcus Müller,

@ MarcusMüller Uso questo codice softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html appena modificato, ma il core è lo stesso. Non sono riuscito a dedurre quale sia l'orologio utilizzato dal codice. Ho fornito il codice e il chip cos'altro ti serve di più, fammi fornire.
floppy380,

hai collegato il chip a un clock di riferimento. Sei letteralmente l'unico in questo mondo che può dirci qual è l'orologio di riferimento; il circuito è seduto di fronte a te, non a noi!
Marcus Müller,

Oh, vedo, ho pensato che fosse corretto o modificato dal codice. Misurerò e tornerò.
floppy380,

È questo modulo telecnatron.com/modules/ad9850/index.html quindi sembra 125MHz
floppy380

Risposte:


9

Non è una cosa di precisione, è la risoluzione.

La parte anteriore della scheda tecnica specifica la risoluzione di accordatura di 0,0291Hz con un clock di 125 MHz.

0.0291125×106232 Hz (poiché l'accumulatore di fase è di 32 bit)

Quindi questo è circa il 30% della frequenza di uscita desiderata. Ciò deriva dal risultato dell'aggiunta dell'LSB della parola di sintonizzazione all'accumulatore di fase a 125 MHz - per una determinata frequenza di clock, è inerente al chip e al numero di bit scelti per l'accumulatore di fase e la parola di sintonizzazione.

Puoi provare a ridurre la frequenza di clock: il minimo è 1MHz, quindi dovresti essere in grado di migliorare la risoluzione di oltre due ordini di grandezza, a circa +/- 0,23% a 0,1Hz.

0.23×1031×106232 Risoluzione Hz con un orologio da 1 MHz

Sfortunatamente, altre cose dovranno cambiare per prestazioni ottimali (in particolare il filtro di uscita, che in genere è un filtro LC ellittico del 7 ° ordine su questi moduli).

Se non hai mai bisogno di andare sopra, diciamo, 1Hz, puoi semplicemente aggiungere un filtro RC con un taglio di, diciamo, 100Hz all'uscita esistente e sarà accettabile per molti scopi.


1
Nulla divide i 125MHz da quello che posso vedere (a parte il DDS stesso, ovviamente). Dovresti dissaldare l'oscillatore e sostituirlo con un modulo di frequenza (inferiore) diverso. Oppure disabilitalo e applica un clock esterno (potrebbe avere un input di abilitazione .. puoi cercarlo). È una modifica hardware.
Spehro Pefhany,

1
Lo fa, ovviamente, ma non ci hanno messo abbastanza bit per la tua applicazione. Se avessero aggiunto altri 8 bit alla parola accordata e all'accumulatore di fase saresti felice (e le persone che non hanno bisogno di frequenze così basse dovrebbero pagare un po 'di più e inviare più bit per sintonizzare il DDS in modo da non farlo sii felice).
Spehro Pefhany,

1
Corretta. Ma supporta un clock da 1 MHz, quindi non tutto è perduto, anche per la tua applicazione. Il filtro di uscita del modulo (quegli induttori e condensatori e resistori) non sarà appropriato, quindi l'uscita tenderà a essere rumorosa con una frequenza di clock molto più bassa.
Spehro Pefhany,

1
Niente a che vedere con i pin. Ma l'orologio del modulo e il filtro di uscita sono progettati per 125 MHz fissi.
Spehro Pefhany,

1
@SpehroPefhany - Gli FG da banco di fascia bassa possono usare chip DDS pre-usati. Inoltre, circuiti integrati come AD9106 possono eseguire la generazione arbitraria di forme d'onda di tipo A / FG (a frequenza fissa). (Quelli di fascia più alta userebbero davvero un FPGA + RAM e un DAC separato, ma sono ancora la stessa cosa di base a cuore, semplicemente implementando la propria implementazione :)
ThreePhaseEel

7

Quello che stai cercando nel foglio dati è la risoluzione di sintonizzazione di frequenza. Per questo chip è 0,0291 Hz per un ingresso di clock di riferimento di 125 MHz. La frequenza verrà arrotondata a un multiplo di questo numero. Questo numero si basa sulla frequenza dell'ingresso di clock del chip.

Ad esempio, 0,1 Hz verrà arrotondato a 0,0873 Hz (0,0291 * 3). Il periodo per 0,0873 Hz è di 11,5 secondi, che è quello che stai vedendo.

Una frequenza di clock in ingresso inferiore fornirà una maggiore precisione alle frequenze più basse. Quindi, se si desidera una migliore precisione a frequenze più basse, ridurre la frequenza di clock.


Come si calcola l'output arrotondato freq.? Ad esempio, se invio 0,5 al chip, puoi mostrare quale formula utilizzata e quale sarebbe l'output? In modo che io possa prevedere per ciascuno
floppy380

Arrotonda per eccesso a un multiplo di 0,0291. Per trovare i multipli più vicini, dividere 0,5 per 0,0291, arrotondare per difetto al numero intero più vicino e moltiplicare per 0,0291. 0,5 / 0,0291 = 17,18 che arrotondiamo a 17. Quindi 17 * 0,0291 = 0,4947. Quindi, se si immette 0,5Hz, si vedrebbe effettivamente 0,4947Hz
Pangus,

Oh bello, posso anche tracciare l'errore contro freq. Ora-
floppy380

@ChrisStratton Oops. si hai ragione. Ho modificato la mia risposta. Grazie
Pangus,

1
Puoi fare la modulazione di frequenza e la modulazione di ampiezza ma non penso che tu possa cambiare la tabella di ricerca sul chip. Se sei interessato a creare forme d'onda arbitrarie, potrebbe valere la pena esaminare un chip diverso o ottenere un DAC e provare a creare il tuo DDS
Pangus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.