- Główny układ scalony „AUDIO DAC” typu PCM2706C (Texas Instruments).
- 1 wyjście analogowe „Line Out” (L/R).
- 1 wyjście cyfrowe SPDIF COAXIAL (CX).
- 1 wyjście cyfrowe SPDIF OPTO (FO).
- Sygnalizowanie stanu pracy układu PCM2706C oraz stanu wyjść za pomocą diod LED.
- Zniekształcenia nieliniowe (THD+N) na wyjściu „Line Out” – 0,006%.
- Stosunek sygnał/szum (SNR) na wyjściu „Line Out”: 98 dB.
- Nierównomierność charakterystyki częstotliwościowej (DAC) ±0,04 dB.
- Przetworniki A/C: 16-bitowe, delta-sigma.
- Akceptowane częstotliwości próbkowania: 32; 44,1; 48 kHz.
- USB – Full Speed ver. 2.0.
Stereofoniczne sygnał analogowy w mikrokomputerze Raspberry Pi jest pobierany bezpośrednio z wyjść PWM0 i PWM1 procesora BCM2835. Zastosowanie karty USB Audio DAC znacznie poprawia jakość wyjściowego analogowego sygnału dźwięku i umożliwia jego transmisję w standardzie S/PDIF.
W ofercie układów audio produkowanych przez firmę Texsas Instruments jest grupa „Stereo Audio DAC with USB Interface”. Są to układy typu PCM2704C, PCM2705C, PCM2706C oraz PCM2707C.
Układy PCM2704C i PCM2705C są kompatybilne pod względem rozmieszczenia wyprowadzeń. Podobnie jest w przypadku układów PCM2706C i PCM2707C. Na mojej płytce drukowanej można wlutować układ PCM2706C albo PCM2707C. Układy te są obsługiwane za pomocą klasy HID (Human Interface Device). Klasa urządzeń HID obejmuje takie urządzenia jak: klawiatury, myszki, przełączniki, joysticki, czytniki kodów kreskowych, termometry i wiele innych układów wejściowych i wyjściowych. Układ PCM2706C umożliwia wykorzystanie trzech (opcjonalnie nawet siedmiu) należących do klasy HID przycisków: Volume+, Volume- oraz Mute (ewentualnie również: Next Track, Previous Track, Stop oraz Play). Systemy Windows powinny rozpoznać podłączone urządzenie klasy HID i automatycznie zainstalować potrzebne sterowniki. Bez potrzeby instalacji dodatkowego oprogramowania w systemach Windows (sprawdziłem w XP, 7)
automatycznie jest instalowane oprogramowanie dla przetwornika DAC (odsługujące S/PDIF Out). Układ PCM2706C jest również rozpoznawany w systemach Linux. Układ ten znajduje się także na liście kompatybilnych z Raspberry Pi przetworników DAC.
Jakość dźwięku dostępnego na wyjściu Raspberry Pi nie jest najlepsza. Napięcie zasilania procesora jest jednocześnie napięciem odniesienia dla wytwarzanych sygnałów audio, więc w pewnych okolicznościach może występować słyszalny przydźwięk sieciowy i/lub dodatkowe „brzęczenie” spowodowane zmianami napięcia podczas odczytu danych z pamięci USB. Wyjścia PWM0 i PWM1 wyposażone są tylko w proste filtry dolnoprzepustowe pierwszego rzędu. Raspberry Pi nie ma też cyfrowego interfejsu S/PDIF.
Opisywany moduł można również dołączyć do laptopa lub komputera stacjonarnego w charakterze „lepszej” karty dźwiękowej. Jej dodatkową zaletą jest możliwość pozbycia się różnych zaburzeń na wyjściach analogowych często występujących na płytach głównych komputerów ze zintegrowanymi kartami.
Układy scalone PCM2706C i PCM2707C
Układy PCM2706/PCM2707 są wyposażone w wewnętrzny stabilizator napięcia 3,3 V, który zasila wewnętrzne bloki funkcjonalne układów PCM2706C/07C. Linie D+ i D– przez interfejs USB SIE komunikują się z blokiem USB Protocol Controller. Jest on odpowiedzialny za transmisję danych do przetwornika C/A i enkodera S/PDIF oraz opcjonalnie do bloku I²S. W strukturze układu scalonego umieszczono również blok generatora kwarcowego 12 MHz. Jego sygnał jest mnożony przez 8 przy użyciu pętli PLL i następnie taktuje blok interfejsu USB oraz generator PLL przetwornika C/A.
Na schemacie blokowym układów PCM2706/PCM2707 elementy występujące tyko w układzie typu PCM2706C oznaczono (1), a elementy występujące tylko w układzie typu PCM2707C oznaczono (2). W układzie typu PCM2706C jest możliwy odczyt trzech (opcjonalnie siedmiu) przycisków – wejścia HID0, HID1 i HID2 (opcjonalnie również FUNC0…3). Mogą one pracować jako przyciski Volume+, Volume– i Mute (opcjonalnie FUNC0…3 mogą pracować jako Next Track, Previous Track, Stop, Play). W prototypie nie zamontowałem żadnych przycisków, ale jest to możliwe. Układ typu PCM2707C nie pozwala na dołączenie przycisków sterujących, ma natomiast szeregowy interfejs do sterowania przez zewnętrzny procesor. Układ PCM2706C jest wytwarzany w obudowie TQFP32.
Dodatkowego omówienia wymaga blok interfejsu I²S. Używa on 5 sygnałów: DIN, SYSCK (MCLK), BCK (BCLK), LRCK (LRCLK) oraz DOUT. Interfejs ten pracuje w formacie 16-bitowym I²S (MSB danych opóźniony o 1 bit).
Blok interfejsu I²S jest uruchamiany jeśli na wejściu FSEL zostanie podane logiczne „0”. Wtedy na wyjściu DOUT pojawiają się dane (16-bitowe próbki audio), a na wyjściach FUNC0…2 sygnały taktujące, odpowiednio: LRCK (LRCLK), BCK (BCLK), SYSCK (MCLK).
Wewnętrzny przetwornik C/A zostaje odłączony od strumienia danych z interfejsu USB, a dane (16-bitowe próbki audio) dla przetwornika C/A są czytane z wejścia DIN (wyprowadzenie FUNC3). Umożliwia to współpracę przez interfejs I²S z zewnętrznym procesorem DSP np. typu TAS300x. Możliwe jest również dołączenie do interfejsu I²S zewnętrznego przetwornika C/A o jeszcze lepszych parametrach, niż wbudowany w układ. Dołączając zewnętrzny przetwornik C/A najlepiej wyjście DOUT połączyć z wejściem DIN – zapewnimy sobie w ten sposób obsługę również wewnętrznego przetwornika C/A.
Jeśli na wejście FSEL zostanie podana logiczna „1”, to na wyjściu DOUT pojawi się przebieg cyfrowy S/PDIF. W tym trybie pracy układów PCM2706C/07C wyprowadzenia HID0…2 i FUNC0…3 pełnią funkcje opisane wcześniej.