top of page

DAC

DAC realizzato con logica sequenziale utilizzando la tecnica R2R.

Sono perfettamente al corrente che tale realizzazione, date principalmente le tolleranze ristrettissime teoricamente richieste, non potrà rivaleggiare (per lo meno in termini di numeri) con un qualsiasi "chippino" da un dollaro, ma vuoi mettere la poesia di un DAC interamente costruito in casa e senza segreti!

Ciò che mi ha attirato, infatti, è proprio la possibilità di completo controllo della conversione, del filtraggio etc.

Il presupposto di partenza è stata una valutazione teorica di cosa mi sarei potuto aspettare, date le tolleranze del componenti a disposizione: devo dire che quanto simulato si è poi riflesso nella realtà e, sorprendentemente ( ma non troppo) le cause di distorsione sono state da ricercare non soltanto nella tolleranza delle resistenze impiegate.

2018-08-14.png

Il programma che ho utilizzato per la simulazione crea un segnale, a determinata risoluzione e frequenza, attenuato di 6dBfs a cui ho sovrapposto un rumore random (bianco) a -80dBfs.

La simulazione, tracce R2R, dimostra che la distorsione che ci si può aspettare dato un errore nel ladder del 0,2% , vale circa lo 0,094%.

Esperienze reali confermano (simpaticamente) questa previsione: resistenze allo 0,1%, in tradizionale, sono infatti reperibili su RS a prezzo umano: allora ci possiamo tentare! 

2018-08-14 (2).png

Una anticipazione:una misura reale, dove è stato ganerato un segnale con le caratteristiche di quello simulato: notiamo che la distosione, purtroppo di armoniche dispari, si attesta su valori compatibili con la simulazione.

2018-08-14 (3).png
R2R Unveiled
IMG_1833.JPG

R2R nel suo contenitore di Zama, a catalogo Elfin. In alto il ricevitore SPDIF: una scheda commerciale pensata per il Raspberry ed, in origine, come ricevitore I2S.

Il chip è il WM8804 Wolfson, la scheda modificata ora RICEVE un flusso SPDIF, genera i segnali I2S e ritrasmette su interfaccia ottica.

Sotto, su millefori il DAC; la scheda in basso è il buffer, fatto con due OPA604 (mi piace il loro suono)!

Il tutto è alimentato a 5V, non si vede ma ci sono un alimentatore per gli OP (TDMA0515) ed un buffer optoisolato che, oltre alla sua funzione tipica, provvede alla conversion 3V3--5V del segnale I2S.

Schema.png

Schema elettrico R2R: finora era tutto nella mia mente: possono esserci degli errori.

Lo ricontrollerò e se necessario lo aggiornerò: lo schema effettivamente realizzato usa un inverter per il word clock: la xor è meglio perchè annulla i ritardi tra i canali.

Da questo circuito ricaverò il PCB definitivo.

Non ci sono ancora tag.

16/08/2018 Qualche considerazione

La distorsione di R2R dipende essenzialmente dall'imprecisione del ladder, dalla resistenza Ron dei commutatori, dalle alimentazioni etc.etc.etc.

Ho notato che sommare un Offset al segnale applicato riduce la distorsione ai bassi livelli.

-75dBgen.jpg
-75dbin.jpg

Le immagini rappresentano l'acquisizione con Miniscope del segnale generato (440Hz,-75dB) ed il segnale reso all'uscita di R2R: l'andamento è buono, siamo a -75dB.

Applicando un Offset, leggermente meno di 0,5  (consideriamo che APO normalizza a 1), la distorsione scende drasticamente: circa 1% per un livello della fondamentale di -75 dB!

Per un segnale applicato di -20dB l'effetto è ancora significativo: 0,32% senza offset e 0,134% con, oltre tutto principalmente armoniche di ordine pari.

Purtroppo non è la condizione ideale: si perde un bit, e lo stream è corrotto.

Addio BitPerfect.

-75innoofs.jpg

Sempre stessi livelli e frequenza, ma senza Offset in DC. Ovvero, applicando un offset al segnale generato ho fatto si che il bit più significativo non cambiasse: la distorsione è drammaticamente scesa.

Senza offset il risultato è quello a sinistra.

Ricordo che siamo a -75 dB, o se preferiamo notiamo la scala dell'ampiezza che è tarata in Samples: la componente in DC non appare dato che la scheda che esegue l'acquisizione non arriva alla DC.

Quindi un sistema, al prezzo della perdita di un bit, esiste per migliorare la situazione: l'offset è stato imposto con APO Equalizer, che consente la funzione: "Copy: R=R+0.49, in questo caso.

Riprova tra un po'
Quando verranno pubblicati i post, li vedrai qui.
bottom of page