Principalele cipuri utilizate pentru implementarea DAC sunt receptorul de intrare Crystal CS8416, o pereche de dac-uri audio TI PCM1792 și un controler PIC16F873. PCM1792 sunt operate fiecare în modul „mono”. Acest lucru nu numai că ar trebui să ofere o conversie mult mai precisă, dar oferă în special un curent de ieșire dublu, care ajută la obținerea unui „drive” suficient pentru ieșirea mea pasivă. O pereche de VCXO-uri (11,28 MHz și 24,57 MHz) de la tentlabs este utilizată pentru a opera în mod nativ rata de eșantionare de intrare: conversia ratei de eșantionare prin filtrare digitală a fost considerată nedorită pentru o reconstrucție audio precisă.

Pentru a obține un ceas DAC curat, intrarea VCXO este condusă de un mic dac serial, controlat de o funcție software PLL din PIC. Această schemă inhibă orice transfer analogic de reziduuri dintr-un ceas spdif inpuit murdar către cipurile PCM1738 audio dac. Calitatea ceasului este îmbunătățită în continuare prin acționarea CS8416 în modul laslave și prin tampoane de „recuperare” între CS8416 și PCM1738.

Ieșirea audio analogică este (deocamdată) cu adevărat pasivă, utilizând un cuplaj al transformatorului de la ieșirea de curent diferențial a PCM1792 la o tensiune de ieșire audio (simplă sau simetrică). Lundahl LL1674 sunt utilizate în acest scop. Au performanțe foarte bune, dar le consider în continuare ca fiind prea scumpe în raport cu celelalte componente DAC. Pentru viitorul (apropiat) intenționez să analizez o etapă activă de ieșire.

Fotografie a imprimării digitale, vedere de sus

eijndhoven

Un PCB de 10x10 cm2 a fost proiectat cu 4 straturi metalice pentru a menține un plan de sol bun. Toată logica digitală este implementată cu componente SMD în partea superioară a PCB-ului. Rețineți aplicarea rezistențelor de serie mici în serie cu majoritatea liniilor digitale, care ajută la suprimarea interferențelor și care ajută la menținerea unui sistem „curat” (fără EMI). În partea stângă vedeți mici transformatoare HF care decuplează intrările coaxiale SPDIF.


Partea inferioară a PCB-ului transportă majoritatea componentelor analogice pentru a crea 5 surse de alimentare separate cu zgomot redus, în special cu surse de alimentare separate pentru jetoanele DAC cu canal stâng și drept. Sursele de alimentare sunt stabilizate cu LED-uri (verzi) ca referință și opamp-uri OPA2227 cu zgomot redus pentru reglare activă. Toate CI-urile digitale au decuplare individuală a alimentării cu condensator și alimentarea curentului prin inductoare individuale pentru amortizare de înaltă frecvență.

Cum să PIC Software PLL pentru recuperarea ceasului

Navigând pe net, pare greu de găsit exemple despre cum să implementați un PLL bun cu un microcontroler PIC. Permiteți-mi să încerc să explic cum am făcut acest lucru și să discut doar conceptul global: propriul dvs. design PLL ar fi, oricum, oarecum diferit. Rețineți că nu intenționez să explic aici cum funcționează PLL-urile în general: acest lucru nu este destul de ușor și dincolo de scopul acestei pagini.

Scopul unui PLL de recuperare a ceasului este de a crea un semnal de ceas de înaltă calitate (citiți: foarte scăzut cu jitter) de la un ceas de intrare prost (zgomotos). „Jitter” într-un semnal de ceas este perturbarea (eroarea) din perioada de timp presupusă uniformă între marginile succesive (în creștere) ale semnalului de ceas. Acest "jitter" are atât o amplitudine cât și un aspect de frecvență. Pentru a obține o performanță bună a jitterului de joasă frecvență, PLL așa cum este desenat mai sus ar trebui să regleze frecvența ceasului VCXO doar încet, apoi numai cu pași mici. Deoarece intenționăm să ajustăm frecvența VCXO numai la o rată scăzută, PIC are o mulțime de performanțe de calcul pentru a implementa un filtru tipic low-pass PLL.

PIC operează singur pe ceasul VCXO. Ceasul de intrare „murdar” este direcționat către Timer0 în PIC, care trebuie configurat pentru a rula asincron. Acest Timer0 rămâne în funcțiune, odată activat, iar firmware-ul reacționează doar la momentele de încheiere, așa cum este marcat de „T0IF'.

Ceasul VCXO (ceasul intern PIC) este trecut la Timer1, care continuă să numere continuu. Viteza la care ambele contoare se încheie este configurată să fie egală, prin setarea corectă a prescalerului Timer0. Fiecare moment care T0IF se setează, valoarea momentană a Timer1 este capturată. Acest lucru se face de preferință ca o „rutină de întrerupere a serviciului”, deoarece este important să existe o întârziere constantă (previzibilă) între înfășurarea Timer0 și captarea valorii Timer1. Rețineți că niciun contor nu poate fi oprit. Dacă de exemplu - ca în aplicația mea audio - VCXO rulează la 11.289MHz (adică 256 x 44.1kHz, cu 44.1kHz rata de eșantionare audio digitală), ambele contoare se înconjoară la aproximativ 43Hz (este 11.289MHz/4/64K ).

Valoarea capturată a Timer1 este o măsură pentru relația de fază dintre ambele semnale de ceas. (Sau mai precis: pentru relația de fază dintre ceasurile de 43Hz împărțite în jos). Deci, la o rată de 43 Hz, PIC calculează filtrul low-pass PLL pe această valoare capturată pe 16 biți și trimite rezultatul filtrat la serialul DAC mic pentru a seta intrarea VCXO. Jos van Eijndhoven, februarie 2012.
Înapoi la preamplificatorul meu relaxat
Înapoi la o descriere de fundal a atenuatorului