No cóż, czas i na nowy projekt, ale tym razem z jednym AD1865 :) Wspominałem w projekcie na 32x AD1865, że DAC na jednym AD1865 na pewno będzie, ale jeszcze nie miałem wtedy pomysłu jak to zrobić. Głównym problemem był filtr cyfrowy dla układu AD1865, ponieważ pakowanie następnych słabo dostępnych kości (AD1865 już taką jest) mija się z celem. Można wrzucić DF1704 bądź DF1706, ale co to za projekt z następnymi nudnymi rozwiązaniami :) Po pewnym czasie natchnęło mnie na projekt z ASRC jakim jest AD1896, który mógłby pracować jako filtr cyfrowy i usuwać odbicia (ang. imaging) od 0,5 fs dzięki czemu "jedynym" wymaganiem byłby odpowiedni filtr analogowy usuwający wszystko po fs. Dlaczego akurat AD1896 jako ASRC skoro jest kilka różnych na rynku i być może lepszych? Wynikło to z faktu, że znam filtr w AD1896 i wiem, że jest po prostu dobry, ponieważ taki sam miałem w DSP ADAU1452 od Analog Devices. Zresztą, to nie tylko moje zdanie, ponieważ kolega raven1895 też bardzo chętnie go stosuje a na temat AD1896 można znaleźć tylko pozytywne opinie.
No dobra, ale jak ten DAC działa skoro nie został użyty jakikolwiek filtr w osobnym układzie? Czy jest to NOS? No nie, ale działa bardzo prosto, ponieważ sam ASRC jest filtrem cyfrowym, tylko jego zdolność nadpróbkowania kończy się na dosyć niskiej częstotliwości około 192 kHz, ale jak najbardziej potrafi wyciąć odbicia w paśmie do fs (192 kHz). Napisałem "około", ponieważ można go "wykręcić" na trochę więcej i tak też zrobiłem. Do takiego ASRC wchodzi sobie sygnał audio od 32 kHz do 192 kHz (Tak, chyba jako jedyny DAC z AD1865 ma możliwość pracy na formatach 24/192 i to nie przy idei "NOS", a posiadając filtr cyfrowy z prawdziwego zdarzenia), zostając potem "przekonwertowanym" na stałą wartość wyjściową jaką jest fs na poziomie 210,9375 kHz. Dlaczego akurat taka wartość a nie przykładowo 192 kHz? Z prostego względu - nic to nie zmienia, a dodatkowe 20 kHz dodaje mi ponad 10 dB spadku w filtrze analogowym :)
Wszystkie fajnie jak do tej pory, mamy filtr cyfrowy, mamy przetwornik, no to jeszcze potrzebny nam jest stopień analogowy, który wytnie wszystko zaraz za wyjściowym fs. No i tutaj robią się schodki, ponieważ gdyby wycięcie wszystkiego poza 192 kHz byłoby proste, to każdy by takie rozwiązanie używał. W innym wypadku gdy tego nie wytniemy, to odbicia wrócą do pasma audio i będą się z nim modulować (nieliniowa charakterystyka elementów elektronicznych potrafi zrobić swoje). Tak właśnie jest w aplikach typu NOS, tylko tam trzeba byłoby ustawić filtr analogowy już na połowę fs zgodnie z częstotliwością Nyquista, ponieważ nie ma żadnego filtru cyfrowego, który mógłby wyciąć odbicia do fs. Dla formatu CD musiałby to być filtr analogowy o zboczu około -96 dB (no generalnie mniej, ale to już inna historia, ponieważ zależy to od przetwornika i jego wewnętrznej archtektury) już za 22,05 kHz. Nie da się takiego filtru zaprojektować, a nawet jakby się dało i faktycznie wyciąłby odbicia, to okazałoby się, że już nie gra tak jak audiofile sobie tego życzą, tj. nie występują modulacje odbić z pasmem audio :) Trochę się zapędziłem, ale wracając jednak do filtru analogowego, który wytnie wszystko poza 192 kHz, musi on być bardzo stromy. Bessel to ogólnie najlepsze rozwiązanie jeśli mówimy o odpowiedzi impulsowej, ale spadek jest zbyt łagodny i nie osiągnęlibyśmy odpowiedniego tłumienia, Butterworth ma już znacząco lepszy spadek, ale jego odpowiedź impulsowa jest trochę narwana, a Chebyshev to już w ogóle odpada z powodu passband ripple. No i właśnie dlatego został wybrany dość egzotyczny filtr, który znajduje się pomiędzy Besselem a Butterworth i został nazwany "Linear phase with equiripple error of 0.05". Wartości filtru pasywnego, tj. złożonego z samych cewek i kondensatorów można znaleźć w książce Williamsa (Electronic Filter Design Handbook). Na bazie pasywnych wartości został wyliczony filtr aktywny. Ma on odpowiedni spadek, liniową fazę oraz odpowiedź impulsowa jest na dobrym poziomie. Co jednak nie zmienia faktu dużego rzędu, który jest wymagany. W tym wypadku filtr analogowy jest aż 10-rzędu z f3 na 45 kHz oraz zostało użyte rozwiązanie aktywne znane pod nazwą "frequency dependent negative resistance", czyli po prostu ujemna rezystancja zależna od częstotliwości. Czasami znane pod nazwą "GIC". Tutaj muszę wspomnieć, że te rozwiązanie widziałem już u kolegi raven1985, więc nic tutaj nie jest nowego, a tylko odpowiednio zaadaptowane do potrzeb :) W każdym wypadku filtr został tak stworzony, aby wzmacniacze operacyjne, które filtrem operują, nie były bezpośrednio w sygnale audio. Sygnał widzi "tylko" rezystorki (no prawie, ponieważ wirtualnie konwertowane są one na cewki, ale to inna historia).
Poniżej schemat filtru analogowego:

Stopień analogowy z I/V i buforem:

Przezornie za C3 polecam wlutować kondensator o wartości 22 pF w celu kompensacji AD797. Nie zrobi to krzywdy, a może uratować od ewentualnych oscylacji.
Pasmo filtru:

Pomiar rzeczywisty:

Mniej więcej 0,85 dB spadku przy 20 kHz względem średnicy oraz około 0,45 dB spadku przy 15 kHz.
Wartości filtru wyliczyłem na bazie skalowania impedancji z 10 nF kondensatorem. Nie chciałem mieć za dużych wartości rezystancji. Jak widać filtr ma już spadek ponad 90 dB na 210 kHz co jest wystarczającą wartością :)
W danej chwili DAC wygląda tak:

Akurat w wersji testowej fs jest ustawiony na 192 kHz, ale to się już zmieniło w finalnej wersji.
Poniżej pomiary wersji testowej, którą mam polutowaną. Na początek THD:

THD: 0,0013%
THD+N: 0,0016%
Drugi pomiar to intermodulacja sygnałów 19k+20k:

IMD: 0,00095%
Na razie tyle.
Podsumowując:
- DAC na starej dobrej kości R-2R AD1865. Kto słuchał, ten wie, że ta kostka jest genialna :) A to co potrafi, to dopiero można posłuchać w odpowiedniej aplikacji.
- DAC przyjmuje formaty do 32/192. Nie spotkałem się jeszcze aby jakikolwiek DIY DAC z tą kością tyle potrafił w prawidłowej aplikacji, tj. z filtrem cyfrowym.
- DAC posiada izolowane wejście I2S (można podpiąć Amanero lub inne zabawki).
- Wystarczy transformator 3x 15v bądź 2x 15V + 1x 7-15V po minimum 0,5A i można grać (mostki prostownicze i zasilacze są na PCB).
- DAC ma być dla forum jak tylko go skończę (nie wiem ile mi to zajmie).
- Resztę schematu udostępnię jak tylko ogarnę definitywne wartości elementów.
- PCB jest na czterech warstwach, ponieważ nie chciałem iść na kompromisy z prowadzeniem masy w przetworniku cyfrowo-analogowym.
No dobra, ale jak ten DAC działa skoro nie został użyty jakikolwiek filtr w osobnym układzie? Czy jest to NOS? No nie, ale działa bardzo prosto, ponieważ sam ASRC jest filtrem cyfrowym, tylko jego zdolność nadpróbkowania kończy się na dosyć niskiej częstotliwości około 192 kHz, ale jak najbardziej potrafi wyciąć odbicia w paśmie do fs (192 kHz). Napisałem "około", ponieważ można go "wykręcić" na trochę więcej i tak też zrobiłem. Do takiego ASRC wchodzi sobie sygnał audio od 32 kHz do 192 kHz (Tak, chyba jako jedyny DAC z AD1865 ma możliwość pracy na formatach 24/192 i to nie przy idei "NOS", a posiadając filtr cyfrowy z prawdziwego zdarzenia), zostając potem "przekonwertowanym" na stałą wartość wyjściową jaką jest fs na poziomie 210,9375 kHz. Dlaczego akurat taka wartość a nie przykładowo 192 kHz? Z prostego względu - nic to nie zmienia, a dodatkowe 20 kHz dodaje mi ponad 10 dB spadku w filtrze analogowym :)
Wszystkie fajnie jak do tej pory, mamy filtr cyfrowy, mamy przetwornik, no to jeszcze potrzebny nam jest stopień analogowy, który wytnie wszystko zaraz za wyjściowym fs. No i tutaj robią się schodki, ponieważ gdyby wycięcie wszystkiego poza 192 kHz byłoby proste, to każdy by takie rozwiązanie używał. W innym wypadku gdy tego nie wytniemy, to odbicia wrócą do pasma audio i będą się z nim modulować (nieliniowa charakterystyka elementów elektronicznych potrafi zrobić swoje). Tak właśnie jest w aplikach typu NOS, tylko tam trzeba byłoby ustawić filtr analogowy już na połowę fs zgodnie z częstotliwością Nyquista, ponieważ nie ma żadnego filtru cyfrowego, który mógłby wyciąć odbicia do fs. Dla formatu CD musiałby to być filtr analogowy o zboczu około -96 dB (no generalnie mniej, ale to już inna historia, ponieważ zależy to od przetwornika i jego wewnętrznej archtektury) już za 22,05 kHz. Nie da się takiego filtru zaprojektować, a nawet jakby się dało i faktycznie wyciąłby odbicia, to okazałoby się, że już nie gra tak jak audiofile sobie tego życzą, tj. nie występują modulacje odbić z pasmem audio :) Trochę się zapędziłem, ale wracając jednak do filtru analogowego, który wytnie wszystko poza 192 kHz, musi on być bardzo stromy. Bessel to ogólnie najlepsze rozwiązanie jeśli mówimy o odpowiedzi impulsowej, ale spadek jest zbyt łagodny i nie osiągnęlibyśmy odpowiedniego tłumienia, Butterworth ma już znacząco lepszy spadek, ale jego odpowiedź impulsowa jest trochę narwana, a Chebyshev to już w ogóle odpada z powodu passband ripple. No i właśnie dlatego został wybrany dość egzotyczny filtr, który znajduje się pomiędzy Besselem a Butterworth i został nazwany "Linear phase with equiripple error of 0.05". Wartości filtru pasywnego, tj. złożonego z samych cewek i kondensatorów można znaleźć w książce Williamsa (Electronic Filter Design Handbook). Na bazie pasywnych wartości został wyliczony filtr aktywny. Ma on odpowiedni spadek, liniową fazę oraz odpowiedź impulsowa jest na dobrym poziomie. Co jednak nie zmienia faktu dużego rzędu, który jest wymagany. W tym wypadku filtr analogowy jest aż 10-rzędu z f3 na 45 kHz oraz zostało użyte rozwiązanie aktywne znane pod nazwą "frequency dependent negative resistance", czyli po prostu ujemna rezystancja zależna od częstotliwości. Czasami znane pod nazwą "GIC". Tutaj muszę wspomnieć, że te rozwiązanie widziałem już u kolegi raven1985, więc nic tutaj nie jest nowego, a tylko odpowiednio zaadaptowane do potrzeb :) W każdym wypadku filtr został tak stworzony, aby wzmacniacze operacyjne, które filtrem operują, nie były bezpośrednio w sygnale audio. Sygnał widzi "tylko" rezystorki (no prawie, ponieważ wirtualnie konwertowane są one na cewki, ale to inna historia).
Poniżej schemat filtru analogowego:

Stopień analogowy z I/V i buforem:

Przezornie za C3 polecam wlutować kondensator o wartości 22 pF w celu kompensacji AD797. Nie zrobi to krzywdy, a może uratować od ewentualnych oscylacji.
Pasmo filtru:

Pomiar rzeczywisty:

Mniej więcej 0,85 dB spadku przy 20 kHz względem średnicy oraz około 0,45 dB spadku przy 15 kHz.
Wartości filtru wyliczyłem na bazie skalowania impedancji z 10 nF kondensatorem. Nie chciałem mieć za dużych wartości rezystancji. Jak widać filtr ma już spadek ponad 90 dB na 210 kHz co jest wystarczającą wartością :)
W danej chwili DAC wygląda tak:

Akurat w wersji testowej fs jest ustawiony na 192 kHz, ale to się już zmieniło w finalnej wersji.
Poniżej pomiary wersji testowej, którą mam polutowaną. Na początek THD:

THD: 0,0013%
THD+N: 0,0016%
Drugi pomiar to intermodulacja sygnałów 19k+20k:

IMD: 0,00095%
Na razie tyle.
Podsumowując:
- DAC na starej dobrej kości R-2R AD1865. Kto słuchał, ten wie, że ta kostka jest genialna :) A to co potrafi, to dopiero można posłuchać w odpowiedniej aplikacji.
- DAC przyjmuje formaty do 32/192. Nie spotkałem się jeszcze aby jakikolwiek DIY DAC z tą kością tyle potrafił w prawidłowej aplikacji, tj. z filtrem cyfrowym.
- DAC posiada izolowane wejście I2S (można podpiąć Amanero lub inne zabawki).
- Wystarczy transformator 3x 15v bądź 2x 15V + 1x 7-15V po minimum 0,5A i można grać (mostki prostownicze i zasilacze są na PCB).
- DAC ma być dla forum jak tylko go skończę (nie wiem ile mi to zajmie).
- Resztę schematu udostępnię jak tylko ogarnę definitywne wartości elementów.
- PCB jest na czterech warstwach, ponieważ nie chciałem iść na kompromisy z prowadzeniem masy w przetworniku cyfrowo-analogowym.
Skomentuj