Ogłoszenie

Collapse
No announcement yet.

Odbiornik SPDIF WM8804 z dwoma wejściami

Collapse
X
 
  • Filtr
  • Czas
  • Pokaż
Clear All
new posts

    Odbiornik SPDIF WM8804 z dwoma wejściami

    Kiedyś, przy okazji zamawiania płytek, mój kolega wspomniał, że przydałby mu się odbiornik SPDIF. Długo nie myślałem i machnąłem płytkę na WM8804 korzystając z noty katalogowej, z opcją zamontowania odbiornika optycznego lub transformatorka SPDIF. Z czasem ciut rozwinąłem projekt i polepszyłem funkcjonalność - teraz na pokładzie jest selektor. Układ obsługuje 24bit/192kHz po kablu koncentrycznym, jeżeli chodzi o toslink - zależy od odbiornika.

    W tym momencie odbiornik wygląda tak:



    Moduł optyczny:



    Płytka:



    Jak to działa? Otóż na PCB znajduje się miejsce do przylutowania odbiornika typu TORX, w przypadku, gdyby ktoś chciał przykręcić PCB do tyłu obudowy. Z przodu PCB jest też odłamywana, mała płytka, która umożliwia podłączenie odbiornika do głównej płytki za pomocą kabelka :)
    Gniazdo RCA podłącza się za pomocą kabla, który trzeba wlutować w płytkę. Ewentualnie można wlutować dwa goldpiny i do nich się podpinać.

    Wybór źródła dokonuje się za pomocą zworki - można to realizować mikrokontrolerem albo zwykłym przełącznikiem - służy do tego 3 pinowe złącze :)
    Układ, który realizuje przełączanie to po prostu jednokanałowy multiplekser. W tym przypadku użyłem 74LVC1G157, ale są dziesiątki układów, które można by tam zalutować.

    Płytka ma zintegrowany zasilacz z mostkiem prostowniczym. Można pominąć mostek i w jego miejsce dać dwie zworki 0805, wtedy moduł należy zasilić napięciem stałym. Kondensator leży na płasko, więc całość jest dość kompaktowa.

    Schemat:



    Nie ma tutaj niespodzianek. Złącze wyjściowe ma wyprowadzone 3.3V do zasilenia izolatora. Moduł jest kompatybilny z moim selektorem I2S, który "kiedyś" także opublikuję :P

    Projekt jest publiczny i udostępniam do niego wszystkie materiały. Gdyby ktoś chciał, PCB się znajdzie, można też zamówić więcej. Poniżej BOM i schemat w PDF.
    Raster otworów to N*10mm, więc układ pasuje do płyt montażowych modushop. W razie pytań, proszę pisać :)
    image_7802.pdf
    Schemat WM8804.pdf

    #2
    Trzeba wspomnieć, że WM8804 w takiej konfiguracji nie zrobi lock'a na 176,4 kHz. Strumień 192 kHz powinien działać, ale 176,4 kHz nie będzie, ponieważ układ tych strumieni nie potrafi rozróżnić w konfiguracji sprzętowej

    Skomentuj


      #3
      Powiem szczerze, że nawet nie wiedziałem, aczkolwiek wydaje mi się, że 176.4 kHz to raczej rzadka częstotliwość próbkowania :) Jak będę miał chwilę to przetestuję.

      Skomentuj


        #4
        Sprawdź też 192 kHz, ponieważ coś mi się wydaje, że nie będzie działał Ja osobiście tego układu nie testowałem, ale datasheet mówi swoje:



        Raczej wątpliwe, że układ sam zmienia swoje wartości PLL_N i PLL_K w trybie sprzętowym.

        Skomentuj


          #5
          Wczoraj grałem na 192/24 bity... chyba że Xonar U7 coś pochrzanił, bo z niego był generowany sygnał SPDIF.

          Skomentuj


            #6
            Jak nie grasz poprzez ASIO to mixer Windowsa robi resampling do niższej częstotliwości, tj. takiej, która jest wybrana w opcjach urządzenia.

            Skomentuj


              #7
              I właśnie xonar miał ustawione wyjściowe 192/24 bit :) Sprawdzę jeszcze jej będzie okazja.

              Skomentuj


                #8
                No to powinien działać Przeglądając datasheet wpadłem jeszcze na poniższe wpisy:





                Inaczej pisząc 192 kHz powinien działać, ale 176,4 kHz nie będzie.

                Skomentuj


                  #9
                  Nie testowałem, ale z tego co pamiętam to np. w sdr-widget jest kod w asemblerze avr32, który wykrywa sample rate na podstawie I2S frame clk i przestawia te rejestry PLLki: https://github.com/borgestrand/sdr-w...l/src/wm8805.c
                  Bo wewnętrzny detektor sample rate wm8804/5 jest zawodny i w ogóle nie rozróżnia fs n*44100 i n*48000. Akurat wszystkie częstotliwości oprócz 192k da się niby obsłużyć jednym ustawieniem PLL. I I2S frame clk jest niby poprawnie generowany, mimo że PLLka nie ma locka.

                  EDIT:
                  Tylko, że to wszystko dotyczy SW mode wm8804/5.
                  Last edited by sylvester; 18.06.2018, 18:14.

                  Skomentuj


                    #10
                    Ostatnio robiłem więcej testów i wyniki były ciekawe.
                    176.4 kHz zgodnie z tym co mówił .3lite nie działa, okropny szum :) także lutowanie układu który przełącza coax/opt ma duże znaczenie i topnik może powodować problemy przy 192kHz!

                    Tym razem miałem trochę lepsze narzędzia pomiarowe, więc z całą pewnością stwierdzam że 192kHz działa - ale! Istotne jest źródło. Coax z komputera stacjonarnego szumiał na 192, a puszczony z xonara już nie :) Wniosek z tego taki, że jakość źródła ma znaczenie.

                    Skomentuj


                      #11
                      Zamieszczone przez Holgin Zobacz posta
                      Wniosek z tego taki, że jakość źródła ma znaczenie.
                      Moim zdaniem WM8804 nie lockuje prawidłowo na daną częstotliwość wejściową powyżej 96 kHz. Fakt, można mieć fuksa i przy dobrych wiatrach zrobi locka na sztywne 192 kHz bez zmiany standardowych wartości PLL_N i PLL_K, ale generalnie nie jest to zapewnione. Sam się tego obawiałem, więc fajnie, że ktoś to sprawdził

                      W praktyce jednak aby WM8804 działał prawidłowo powyżej 96 kHz to trzeba zmienić wartości PLL_N i PLL_K. Na pewno po zmianie tych wartości mógłbyś zrobić locka na 192 kHz z płyty głównej :)
                      Last edited by .3lite; 18.07.2018, 10:36.

                      Skomentuj


                        #12
                        Zamieszczone przez .3lite Zobacz posta
                        Moim zdaniem WM8804 nie lockuje prawidłowo na daną częstotliwość wejściową powyżej 96 kHz. Fakt, można mieć fuksa i przy dobrych wiatrach zrobi locka na sztywne 192 kHz bez zmiany standardowych wartości PLL_N i PLL_K, ale generalnie nie jest to zapewnione. Sam się tego obawiałem, więc fajnie, że ktoś to sprawdził

                        W praktyce jednak aby WM8804 działał prawidłowo powyżej 96 kHz to trzeba zmienić wartości PLL_N i PLL_K. Na pewno po zmianie tych wartości mógłbyś zrobić locka na 192 kHz z płyty głównej :)
                        Jutro napiszę maila do Cirrus Logic, ciekawe co mi odpowiedzą :) Zapytam też o zauważalnie większy pobór mocy (~85mA) niż napisany w datasheet.
                        Na diyaudio była mała dyskusja na ten temat i twierdzą, że 192 kHz w trybie hardware jest obsługiwane, aczkolwiek scenariusz, gdzie 192 kHz łapie "fuksem", tylko przy sygnale dobrej jakości, całkiem do mnie przemawia :) Choć przy graniu z płyty głównej szum/charczenie było niesłyszalne w pierwszej chwili.

                        Chciałbym mieć oscyloskop z pasmem >=200MHz i analizator stanów logicznych, żeby porównać zbocza i inne parametry sygnału.. :)

                        - - - - - aktualizacja - - - - -

                        W sumie - kusi mnie też, żeby wrzucić tam generator 7x5mm zamiast kwarcu. Mam takie poczucie, że zegar będzie wyższej jakości, ale to czysto subiektywne, nie poparte niczym odczucie :)

                        Skomentuj


                          #13
                          Ja tego układu nigdy nie testowałem, więc w praktyce domyślam się na bazie podanych informacji :) Najlepiej po prostu wziąć prosty MCU, WM8804 uruchomić w trybie programowym i zmieniać wartości PLL_N i PLL_K obserwując status LOCK. Tak samo myślę, że nie ma potrzeby liczenia częstotliwości aby poprawnie ustawić wartości PLL. Datasheet mówi o tym, że jak PLL ustawione jest na ten drugi tryb do 192 kHz to przy strumieniu 176,4 kHz status LOCK będzie co chwilę się zmieniał (cyt. The unlock signal will continually toggle between a locked and unlocked state"). W takim wypadku można przestawić PLL_N i PLL_K na następne wartości i sprawdzić, czy tym razem udało się uzyskać locka. Nie próbowałem, ale warto to sprawdzić.

                          Skomentuj


                            #14
                            .3lite: czy byla jakas silna motywacja dlaczego nie użyć wm8805 i selektora zrodla bezposrednio wbudowanego? Pytam bo sam chce w przyszlosci zrobić preamp cyfrowy i zastanawiam sie czy wm8805 czy tez jakis niezależny selektor cyfrowego audio.
                            Last edited by hessus; 21.07.2018, 21:50.

                            Skomentuj


                              #15
                              Nie sądzę aby była jakakolwiek różnica.

                              Skomentuj


                                #16
                                Jak kiedyś się nauczę programować na tyle, żeby poprawnie komunikować się z WM8804/5, pewnie zrobię taki "kombajn", który będzie rozwinięciem mojego sterownika DAC/selektora I2S, ale na tą chwilę jest ten projekcik, prosty i łatwy, bez programowania :)

                                Skomentuj


                                  #17
                                  192 kHz jednak działa i to na dwóch płytkach - z selektorem i bez. 192kHz z komputera stacjonarnego nie działało, bo nie było rezystora terminującego 75R na pierwotnym uzwojeniu trafa :) Teraz już jest wszystko ok i gra wszystko oprócz 176.4kHz.

                                  Skomentuj


                                    #18
                                    Kolejny update:
                                    W przypadku niebieskiego PCB z pojedynczym wejściem, bez multipleksera, dołożenie 75R równolegle do uzwojenia pierwotnego transformatora rozwiązuje wszystkie problemy i WM8804 prawidłowo działa z 44.1, 48, 88.2, 96 oraz 192 kHz - czyli wszystko oprócz 176.4 kHz, tak jak pisał .3lite.

                                    Jeżeli chodzi o czarne PCB z multiplekserem, sprawa jest trochę trudniejsza - dołożenie rezystora równolegle powoduje obciążenie wyjście cyfrowego w źródle, tym samym poziom sygnału spada. Efekt tego jest taki, że układ scalony "gubi" bity, bo stan HIGH w strumieniu SPDIF jest na granicy "łapania" przez multiplekser - przynajmniej taka jest moja teoria :) Poprzednim razem przy testach miałem oscyloskop i widziałem zależność amplitudy od rezystora przed/za transformatorem. Z drugiej strony, bez rezystora jest problem z impedancją i w tym przypadku 192kHz nie działa dobrze, a do tego przy zmianie Fs PLL potrzebuje kilka sekund żeby złapać LOCK'a, co objawia się głośnym, nieprzyjemnym szumem.

                                    Aktualnie gram na 470R i to zdaje się być dobrym kompromisem :) Ale w następnej rewizji PCB dołożę dzielnik podnoszący poziom sygnału przed multiplekserem o kilkaset mV, co powinno rozwiązać problem.

                                    Skomentuj


                                      #19
                                      Dodałem nie dzielnik, a konwersję SPDIF->TTL z prawdziwego zdarzenia. Współczesne układy logiczne dostępne są w bardzo wygodnych, małych obudowach, więc udało się to fajnie, zgrabnie zrealizować :) Teraz nie ma prawa być już żadnych problemów, nie ma szumów, LOCK jest łapany praktycznie od razu :)

                                      Wspomnę też, że złącze IN_CTRL ma 3 piny - masa, 3V3 oraz wejście selektora. W wersji samodzielnej, podłączamy tam przełącznik mechaniczny (3 piny) lub mikrokontroler (2 piny) i tak robimy selekcje. W przypadku używania tej płytki jako modułu w selektorze I2S, użyty jest tylko środkowy pin - Input Selector - pozostałe dwa są nieużywane.

                                      Analogicznie, złącze ARK 3.5mm GND | VCC, także jest nieużywane w przypadku, gdy ten odbiornik jest zastosowany w selektorze. Oryginalnie służy do zasilania modułu napięciem AC (wtedy oznaczenia nie mają różnicy, lutujemy mostek na warstwie BOTTOM) lub DC (zamiast mostka zworki 0805, także na BOTTOM) i wtedy wiemy gdzie + a gdzie masa :)

                                      Skomentuj


                                        #20
                                        Mam prośbę do tych którzy już złożyli ten układ o podesłanie listy części .

                                        Skomentuj

                                        Czaruję...
                                        X