Pagina 1 di 2

ADC / DAC virgola mobile o fissa

MessaggioInviato: 15 feb 2024, 12:32
da Roswell1947
Salve ,ho un'altra questione (forse stupida...boh),riguardante gli adc/dac, da chiarire con qualcuno molto più esperto di me .Se ho dei valori in virgola mobile memorizzati in una ROM (p.es look up table con valori di una funzione coseno e seno) e volessi successivamente convertirli in valore analogico (senza usare microcontrollori) che tipo di dac dovrei usare?Mi spiego meglio,per memorizzare dei valori di seno e coseno di certo non potrò usare la rappresentazione con interi e sarò costretto ad utilizzare quella con mantissa ed esponente oppure quella in virgola fissa ,in questo caso come effettuo la conversione in valore analogico?

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 15 feb 2024, 23:06
da GuidoB
Ciao,
Roswell1947 ha scritto:Se ho dei valori in virgola mobile ... e volessi successivamente convertirli in valore analogico (senza usare microcontrollori)

In virgola mobile, senza microcontrollori la vedo dura.

Roswell1947 ha scritto:come effettuo la conversione in valore analogico?

La conversione da virgola mobile a intero è digitale, poi la conversione da intero ad analogico (corrente o tensione elettrica) la fa il DAC.

Per ogni campione, la conversione a intero (in C per esempio) potrebbe essere:

Codice: Seleziona tutto
valoreIntero = (unsigned int)(((valoreVirgolaMobile + 1.0) / 2.0) * (RANGE_DAC - 1));

Per esempio se il DAC è a 8 bit, RANGE_DAC è 256, e:

- il valore -1.0 verrà convertito a 0
- il valore 0.0 verrà convertito a 127
- il valore 1.0 verrà convertito a 255

I valori intermedi ovviamente verranno convertiti a valori intermedi.

Roswell1947 ha scritto:Mi spiego meglio,per memorizzare dei valori di seno e coseno di certo non potrò usare la rappresentazione con interi

Certo che puoi usarla. Memorizzi i valori pronti da dare in pasto al DAC, quelli che escono dalla conversione precedente. Così puoi fare la conversione prima, e a run-time non ti serve fare calcoli.

In questo modo potresti non aver bisogno di un microcontrollore, potrebbe bastarti un contatore digitale come generatore di indirizzi per la ROM.

Roswell1947 ha scritto:che tipo di dac dovrei usare?

Se ti bastano 8 bit, un DAC08 per esempio.

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 18 feb 2024, 13:04
da lelerelele
non vedo come puoi andare a convertire valori inferiori ad 1 con un DAC, (non ne ho mai usati, ma a buon senso mi pare sia così).

Per usare il convertitore, dovrai pure andare a moltiplicare un valore intero per il tuo float, ed avrai un intero a tua volta che convertirai, i decimali andranno persi, prendendo il solo valore intero, quello che puoi fare è aumentare l'intero, arrivando al valore massimo di uscita, fruttando così il numero maggiore di decimli.

saluti.

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 19 feb 2024, 6:47
da IsidoroKZ
Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.

Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 19 feb 2024, 11:12
da stefanopc
Per risparmiare hardware il sistema più utilizzato specialmente in passato era quello di memorizzare direttamente i valori da mandare al DAC.
A esempio da 0 a 255 nel caso di 8Bit.
Il resto era fatto a livello analogico.
Naturalmente oltre alla risoluzione occorre valutare il tempo di conversione e il tempo necessario alla gestione digitale del Micro o/e della lettura della Rom.
A che frequenza è il segnale sinusoidale generato?
Ciao

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 23 feb 2024, 19:48
da Roswell1947
IsidoroKZ ha scritto:Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.

Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.


ok,ma come si gestisce un dac in virgola fissa?nel senso come avviene la conersione con la rappresentazione in virgola fissa?

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 23 feb 2024, 20:33
da MarcoD
ok,ma come si gestisce un dac in virgola fissa?nel senso come avviene la conversione con la rappresentazione in virgola fissa ?


supponi di avere un DAC a 8 bit, sono 256 valori da 0 a 255.
Prepari una tabella di 256 valori interi
Il seno viene calcolato a passi di 360/256 gradi = 1,406

Moltiplichi i valori del seno variabili fra -1 e 1 per 127
e sommi il valore 127

N gradi seno senox127 numero
1 0 0 0 127 metà tensione
2 1,406 0,0245 3,116 130
3 2,82 0,049 6,23 133
.......
45 0,707 89,7 216
...
90 1 127 255 fondo scala
....
270 -1 -127 0 inizio scala

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 23 feb 2024, 21:06
da Roswell1947
OK ma in questo modo nella ROM ci sono numeri interi e non valori del seno rappresentati in virgola fissa

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 23 feb 2024, 21:15
da Roswell1947
IsidoroKZ ha scritto:Perché hai i valori delle funzioni trigonometriche in formato floating? Direi che in fixed point possa andare altrettanto bene. Con una risoluzione di 8bit vicino allo zero hai una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi. Con un 12 bit la risoluzione diventa meglio, intorno a zero, dove la funzione è praticamente lineare, hai una risoluzione di 50", mentre vicino a 1, dove la funzione e è esenzialmente quadratica, migliori di u n fattore 4 e quindi hai una risoluzione di 1.3 gradi circa.

Che io sappia, tutti i dds usano memorie con il seno rappresentato in virgola fissa.


Potresti spiegarmi come mai con una risoluzione di 8bit vicino allo zero si ha una risoluzione di circa 0.2 gradi, mentre vicino a 1 diventa di 5 gradi?
grazie

Re: ADC / DAC virgola mobile o fissa

MessaggioInviato: 24 feb 2024, 4:49
da IsidoroKZ
Roswell1947 ha scritto:OK ma in questo modo nella ROM ci sono numeri interi e non valori del seno rappresentati in virgola fissa


Supponi di volere il seno di 40°, che tensione vuoi all'uscita del convertitore? Se il convertitore ha l'uscita in corrente, che corrente vuoi sempre per lo stesso angolo?

Poi rispondo al problema della risoluzione.