Jump to content
JarekC

Konwerter USB-I2S-SPDIF na TAS1020B tryb asynchroniczny 24bit/96kHz

Recommended Posts

Witam,

 

Jak już wspominałem na forum jakiś czas temu rozpocząłem prace na konwerterem

USB-I2S-SPDIF opartym o układ TAS1020B pracujący w trybie asynchronicznym.

 

Jak pewnie wiadomo części osób tryb asynchroniczny jest bardzo słabo udokumentowany

i przetworniki wykorzystujące TAS1020B głównie bazują na licencji Wavelenth Audio lub CEntrance

Ja postanowiłem powalczyć z tym tematem i dołączyć do grona osób, którym udało się zrealizować ten

tryb transmisji. W pracy głównie zajmuję się techniką cyfrową i interfejs USB nie jest mi obcy.

 

Głównym problemem przy realizacji projektu są błędy w dokumentacji układu TAS1020b i tak naprawdę

brak wsparcia technicznego technicznego ze strony TI.Po przedstawieniu problemu TI poprzez e-mail

jak i na forum technicznym TI nie uzyskałem odpowiedzi na zgłoszone problemy. A zewnętrzna firma

do której zostałem przekierowany w ogóle nie raczyła odpowiedzieć na e-maila. Zaznaczę że, korespondencję

prowadzę nie jako osoba prywatna ale jako przedstawiciel firmy w której pracuję.

 

Tak więc pozostałem z problemami sam ale większość z nich udało mi się rozwiązać jest więc szansa na

pozytywne zakończenie projektu.

 

A założenia są następujące.:

 

1. Etap 1

- Konwerter USB-I2S tryb asynchroniczny 24bit/96kHz, Master Clock generowany przez TAS1020B przy pomocy wew. syntezera

- dostępne FS 44.1, 48, 88,2 96Khz

- I2S w trybie 32bit, 1bit delay, Fmclk=512*Fs

- sygnał Mute

- sygnalizacja aktualnego trybu pracy

- zasilanie z USB lub zew. zasilacza

 

2. Etap2

- Master Clock generowany przez 2 zewnętrzne generatory 22,5792Mhz (dla 44,1 i 88,2) 24,576Mhz (dla 48, 96)

- osobne zasilania dla TAS i generatorów

 

3. Etap3

- separacja galwaniczna szyny USB (ADUM4160)

 

4. Etap4

- dołożenie transmitera SPDIF (dostępne są albo Wolfson WM8804 albo Crystal CS8406)

 

 

Aktualnie projekt jest na Etapie 1.

Zrezygnowałem z zakupu płyty startowej do TASa ze względu na cenę 400$

oraz tego że, wymaga ona i tak zewnętrznego układu debuggura za następne kilkaset $.

Mam już zrobiony prototyp płytki TAS1020B + własny sprzętowy debbuger pozwalający na pełną kontrolę nad TAS1020B.

 

Tryb adaptacyjny już działa, to taka wprawka aby poznać wszystkie problemy związane z TAS1020B

Tryb asynchroniczny też już częściowo uruchomiony zostało jeszcze doszlifowanie algorytmu dla

kanału zwrotnego Feedback i ogólne "wyczyszczenie" kodu.

 

O postępach prac będę starał się informować na bieżąco.

Chcę aby na początek powstał moduł pozwalający podłączyć istniejące przetworniki DAC do PC poprze USB.

 

Co do formy dostępności rozwiązania to na razie nie mogę wiele powiedzieć

gdyż projekt jest dofinansowany przez firmę w której pracuję.

Będę się starał aby był dostępny dla DIY w formie kitów lub gotowych modułów.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Jak to będzie tak kapitalne, jak sterownik do lampowca, to już się nie mogę doczekać. ;)


W sprawie zegarów/zasilaczy/stabilizatorów proszę pisać na [email protected]

Szczegóły na www.muzgdiy.wordpress.com

Share this post


Link to post
Share on other sites

Jak to będzie tak kapitalne, jak sterownik do lampowca, to już się nie mogę doczekać. ;)

Popieram

 

BTW nie miałem pojęcia, że temat jest taki skomplikowany! Nie znam się na tym niestety, więc nie pomogę, ale gorąco kibicuję!

Share this post


Link to post
Share on other sites

Jestem pod wrażeniem. Mógłbyś napisać coś więcej o programowaniu tego układu?

Share this post


Link to post
Share on other sites

Fakt, temat bardzo ciekawy. Płytkę prototypową robiłeś jako zbliżonego klona oryginalnej? Czy sam kombinowałeś?

Coś na wzór zewnętrzny 8052 z programatorem, połączony za TAS1020 i jakieś czytniki rejestrów i/lub diody podłączone do różnych portów w TAS/8052 czy

bardziej realna aplikacja? A może jedno i drugie. Pod czym i w czym piszesz? Zakładam, że w C (zarówno po stronie hosta jak i MCU)?


"Not everything that is worth measuring is measurable and not everything measurable is worth measuring." --A. Einstein

Share this post


Link to post
Share on other sites

Trochę kubeł zimnej wody

Ten układ TAS1020 to żadne cudo w dodatku dość stare ?

Czy nie ma czegoś nowszego ?

Share this post


Link to post
Share on other sites

>max-bit

Może jest stary ale ma wszystko co potrzeba tzn:

- obsługę Endpointów ISO

- wbudowanego Codeca I2S

- DMA pośredniczące pomiędzy USB a Codec

- możliwość taktowania Codeca zewnętrznym zegarem

- możliwość użycia własnego oprogramowania

 

Ograniczeniem jest 24bit/96kHz ale i tak wyższe bitrete wymagaja obsługi USB Audio Class 2.0

(nie mylić z USB 2.0) a Microsoft aktualnie w żadnym systemie tego nie obsługuje.

Można kupić licencje drivera np od TheSycon ale to kosztuje kilka lub kilkanaście tysięcy $

Napisanie drivera jest poza moim zasięgiem i tak naprawdę to firmy potrafiące to zrobić

można policzyć na palcach jednej ręki.

 

Zaleta 24/96 jest to, że podłączamy i gra bez instalacji jakiś dodatkowych driverów.

Do tej pory nie udało mi się znaleźć układu który posiadałby USB HS i Codeca I2S z możliwością

taktowania zewnętrznym zegarem, np wszystkie ARMy które mają I2S nie zezwalają na zew. zegar

Można to złożyć z dwóch układów np uP z USB HS i FPGA z I2S ale o tym można myśleć dopiero

jak 24/96 będzie w pełni uruchomione. Pytanie ile osób wykorzystuje 24/192 czy 24/384.

 

>barmanekm

Aktualnie do testów mam zbudowany pełny tor tzn:

PC-USB-TAS1020B-I2S-DAC(CS4334)-Wzmacniacz

 

TAS pracuje w trybie z zewnętrznym procesorem, dzięki temu mam pełna kontrolę nad rejestrami

i pamięcią z możliwością pułapek i pracy krokowej.

 

Cały firmware jest napisany w C z wstawkami assemblerowymi w newralgicznych momentach.

Nie korzystam z wbudowanych procedur ROM. Ze względu na kiepską dokumentację TASa

wolę panować nad całym kodem.

 

Jutro postaram się wrzucić zdjęcia układu.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Fakt jest jeden sztuka w zbudowaniu takowego układu jest (nawet całkiem spora :))

Sensowność hmmm wątpliwa .... tak naprawdę, ale jak ktoś chce się sprawdzić to nie powiem niech buduje to wyzwanie dla projektanta.

Share this post


Link to post
Share on other sites

Ja uważam, że sensowność jest. Żeby nie robić zaraz polemiki, to powiem że chociażby ze względów komercyjnych. Ale do USB Audio, najlepsze wydają mi się rozwiązania bazujące na FPGA. Z racji prostoty zasady działania, i pewnej niezależności pomiędzy formatem wejściowym a możliwościami urządzenia.

 

Firma oferująca przykładowe rozwiązania

http://fpga.cool.coocan.jp/electrart/usb_dual_audio.html

Edited by barmanekm

"Not everything that is worth measuring is measurable and not everything measurable is worth measuring." --A. Einstein

Share this post


Link to post
Share on other sites

>barmanekm

 

W FPGA najczęściej jest tylko realizowany codec 12S, SPDIF, DSD

natomiast komunikacja USB jest realizowana przez specjalizowany układ.

Realizacja USB w FPGA jest trudna, zabiera wiele zasobów a dodatkowo

i tak wymaga USB PHY.

Przypuszczam że w zapodanym linku jest to Cypress CY68013

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Czyli tak, jak Musiland Monitor.

post-20270-036387000 1291730906_thumb.jpg


W sprawie zegarów/zasilaczy/stabilizatorów proszę pisać na [email protected]

Szczegóły na www.muzgdiy.wordpress.com

Share this post


Link to post
Share on other sites

Znam większość dostępnych na rynku rozwiązań typu M-Audio M2Tech, Xmos itp.

Na razie zapadła jednak decyzja że będzie to TAS1020B, za dużo czasu już

poświęciłem na rozgryzienie tego układu aby teraz zmieniać koncepcję.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

A co jest w M2Tech? Ja myślałem, że właśnie TAS. W Wavelength chyba też.


"Not everything that is worth measuring is measurable and not everything measurable is worth measuring." --A. Einstein

Share this post


Link to post
Share on other sites

Fajny temat, szczególnie, że założenia z Twojego pierwszego posta są zbieżne z tym co ja kiedyś planowałem. Uruchomiłem tryb adaptacyjny i wszystko działało. Dalej nie miałem już niestety czasu na zabawę z trybem asynchronicznym. W mojej implementacji jednak nie używałem zewnętrznego kontrolera (debugowanie najpierw na 2 LEDach a później po UART mi wystarczało:)) i korzystałem z procedur z ROMu. Dostępny kod od TI przepisałem pod kompilator sdcc. Trochę się namęczyłem (tragiczna dokumentacja), ale się udało i mam nadzieję, że dokończę ten projekt :)

 

Mam kilka pytań. Jakiego kompilatora używasz? Jaki masz zewnętrzny kontroler? Wdziałem, że prosisz o deskryptory w innych wątkach. Otrzymałeś może jakiś z karty działającej w trybie asynchronicznym?

Share this post


Link to post
Share on other sites

>barmanekm

 

W T2Tech używają na froncie USB Cypressa CY7C68013A jako nadajnik SPDIF był chyba Crystal CS8406.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Witam,

 

Zgodnie z obietnicą fotka prototypu.

 

Aktualnie poszukuję dostawcy generatorów kwarcowych 22,579200MHZ i 24,57600 MHZ

Najlepiej w SMD (3.3V, HCMOS, 25ppm). Szczególnie z tym pierwszym są problemy.

 

Pozdrawiam

JarekC

 

>jedras

Tak dostałem deskryptor odczytany z rDAC. Chociaż sam używam trochę bardziej rozbudowanego,

oprócz terminali IN,OUT mam jeszcze blok FEATURE.

Jeżeli chcesz ten odczytany z rDAC do podeślij mi e-maila.

post-3707-051365300 1291907957_thumb.jpg

Share this post


Link to post
Share on other sites

Na generatory 22.5792MHz znalazło by się pewnie dużo chętnych,którzy nieukończyli Dac T.J z powodu ich braku.

Share this post


Link to post
Share on other sites

Witam,

 

Nie znam tego projektu. Czy tam jest potrzebny rezonator czy generator?

Na razie mam oferty ale trzeba kupić minimum 360 sztuk.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Aktualnie poszukuję dostawcy generatorów kwarcowych 22,579200MHZ i 24,57600 MHZ

Najlepiej w SMD (3.3V, HCMOS, 25ppm). Szczególnie z tym pierwszym są problemy.

 

Uzywam te drugi sam szukam te pierwsze :-)


www.sparus.pl

Share this post


Link to post
Share on other sites

Aktualnie poszukuję dostawcy generatorów kwarcowych 22,579200MHZ i 24,57600 MHZ

Najlepiej w SMD (3.3V, HCMOS, 25ppm). Szczególnie z tym pierwszym są problemy.

 

Mogę poratować 1 szt. no góra dwoma z tego zamówienia ale nie SMD.

 

http://www.audiostereo.pl/zamowienie-na-kwarc-225792_44991.html/page__p__1137185__fromsearch__1#entry1137185

Share this post


Link to post
Share on other sites

Witam,

 

Zgodnie z obietnicą fotka prototypu.

 

Aktualnie poszukuję dostawcy generatorów kwarcowych 22,579200MHZ i 24,57600 MHZ

Najlepiej w SMD (3.3V, HCMOS, 25ppm). Szczególnie z tym pierwszym są problemy.

 

Pozdrawiam

JarekC

 

>jedras

Tak dostałem deskryptor odczytany z rDAC. Chociaż sam używam trochę bardziej rozbudowanego,

oprócz terminali IN,OUT mam jeszcze blok FEATURE.

Jeżeli chcesz ten odczytany z rDAC do podeślij mi e-maila.

 

Mam cały karton w dobrej cenie takich układów: ICS502 czyli PLL Clock Multiplier oraz IDT74FCT3807/A czyli Clock Driver.

A dokładnie to są własnością kolegi Luis'a.

Stosując kwarc 11.xxx MHz uzyskasz łatwo "nietypowe" 22.xxxMHz

Obecnie mam w produkcji układ zegara na tej kości.

ICS502.pdf

IDT74FCT3807_A-1.pdf


www.sparus.pl

Share this post


Link to post
Share on other sites

>Waldi_06

 

PLL i syntezer mam wbudowany w TAS1020B.

Więc w podstawowej wersji bez problemu mogę uzyskać 24.576000MHz i 22.579201MHz z wew.syntezera.

Niestety karta katalogowa nic nie mówi na temat wielkości generowanego jittera.

 

Pomiary wykonane przez Gordona z Wavelength Audio pokazują spora różnicę w wyjściowym jitterze

dla róznego źródła zegara master:

 

PCM2706 3433ps

TAS1020B Adaptive mode changed every 4ms standard code: 2838ps

TAS1020B Adaptive my slow mode PLL code: 632ps

TAS1020B Async USB mode internal PLL: 482ps

TAS1020B Async USB mode OSC to MCLKi port generating I2S output: 73.2ps

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Mogę poratować 1 szt. no góra dwoma z tego zamówienia ale nie SMD.

 

http://www.audiostereo.pl/zamowienie-na-kwarc-225792_44991.html/page__p__1137185__fromsearch__1#entry1137185

Chętnie wezmę 2szt tylko,że ja potrzebuje generatorów a ty masz kwarce z tego co widzę.Jak to wtedy zaaplikować,trzeba dodać jakieś zewnętrzne elementy?

Share this post


Link to post
Share on other sites

Chętnie wezmę 2szt tylko,że ja potrzebuje generatorów a ty masz kwarce z tego co widzę.Jak to wtedy zaaplikować,trzeba dodać jakieś zewnętrzne elementy?

 

Faktycznie ma kwarce, a nie generatory. Sorry za pomyłkę.

 

>V343

 

To nie była oferta handlowa tylko chęć pomocy przy tak istotnym projekcie skierowana do JarekC.

Share this post


Link to post
Share on other sites

Odgrzebuje watek, mam nadzieje ze projekt nie umarl...? Ciekaw jestem jak postepy w pracach jesli sa takowe, no i kiedy w przyblizeniu bedzie mozna sie doczekac gotowego rozwiazania? Pozdrawiam projektanta.

Share this post


Link to post
Share on other sites

Witam,

 

Projekt nie umarł ale niestety trochę zwolnił.

Końcówka roku w firmie i okres świąteczny spowodowała spowodowała brak czasu na DIY.

Również ze względu na dołujący poziom forum rzadziej zaglądam i piszę.

 

Mam nadzieję,że w ten weekend trochę podgonię.

Jeden z problemów rozwiązałem, chociaż przyczyna problemu nie została wyjaśniona pomimo

kontaktów z pomocą techniczną TI i firmą InDesign.

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

A przyglądał się ktoś może układom firmy XMOS? Np. taki XS1-L2??

 

A konkretnie, to chyba jest jakieś gotowe rozwiązanie:

http://www.scantec-online.de/knowledge-base/technology-transfer/2010-heft-2/multi-channel-usb-audio-20.html?L=1

Edited by Muzg

W sprawie zegarów/zasilaczy/stabilizatorów proszę pisać na [email protected]

Szczegóły na www.muzgdiy.wordpress.com

Share this post


Link to post
Share on other sites

>Waldi_06

 

PLL i syntezer mam wbudowany w TAS1020B.

Więc w podstawowej wersji bez problemu mogę uzyskać 24.576000MHz i 22.579201MHz z wew.syntezera.

Niestety karta katalogowa nic nie mówi na temat wielkości generowanego jittera.

 

Pomiary wykonane przez Gordona z Wavelength Audio pokazują spora różnicę w wyjściowym jitterze

dla róznego źródła zegara master:

 

PCM2706 3433ps

TAS1020B Adaptive mode changed every 4ms standard code: 2838ps

TAS1020B Adaptive my slow mode PLL code: 632ps

TAS1020B Async USB mode internal PLL: 482ps

TAS1020B Async USB mode OSC to MCLKi port generating I2S output: 73.2ps

 

Pozdrawiam

JarekC

 

Pomyślałem inaczej - dobry kwarc, lub zegar i masz "dowolny" zegar z niskim jitterem


www.sparus.pl

Share this post


Link to post
Share on other sites

>Muzg

 

Tak znam te układy, mam nawet podpisany NDA dotyczący dokumentacji "XMOS USB Audio Class 2.0 Reference Design".

Nad XMOSem można by się zastanawiać w przypadku wielokanałowości lub 192kHz i więcej.

Wady to:

- wymagany zewnętrzny PHY dla USB (niestety trudnodostępny i drogi, dokumentacja wymaga podpisania osobnego NDA)

- wymagania dotyczące zasilania (sekwencyjność)

- spory pobór mocy

- konieczność poznania języka XC (programowy opis sprzętu)

- słaba dokumentacja techniczna opisująca działanie (kanałów, sprzętowej wielowątkowości itp)

- brak dostępu do źródeł biblioteki USB

 

Pozdrawiam

JarekC

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.