Skocz do zawartości
IGNORED

I2S left/right data separator do DAC'a


mikexx

Rekomendowane odpowiedzi

Witam!

Mam przetwornik zrobiony na DIR 1701 i PCM1730 i cenię sobie jego brzmienie, ale chciałbym zrobić nowy układ na dwa przetworniki pracujące w trybie różnicowym, czy ma ktoś może schemat układu separującego sygnał cyfrowy na 2 układy PCM

Wiem, że da się to zrobić na przerzutnikach D ale nie mam pojęcia jak.

Odnośnik do komentarza
https://www.audiostereo.pl/topic/21631-i2s-leftright-data-separator-do-daca/
Udostępnij na innych stronach

Niestety ja robiłem w VHDL-u do układu CPLD XC9572XL Xilinxa , miało to docelowo sterować dwa AD1952 ale nie mam na razie czasu na dokończenie tego projektu . W necie można znależć wiele schematów separatorów ale mają jedną zasadniczą wadę :opierają swoje działanie wyłącznie na negowaniu próbki, wiec na wyjściu DAC będzie DC error pół biedy jezeli układ przcuje na 24 bitowym rejestrze błąd będzie pewnie na poziomie szumu ale jak na 16 bitowym to trzeba go korygować albo stosować sprzężenia AC.

Pewnie chodzi o małe przesunięcie w fazie sygnału po negacji ?

A gdybym za tym układem a przed DAC'em dał jeszcze układ synchronizujący na przerzutnikach ( coś ala Stelmach ) miałoby to szansę zadziałać ?

Nie-chodzi o to że próbki w systemie są w kodzie uzupełnień do dwóch więc po negacji występuje 1 bitowy błąd wartości próbki aby go skorygować należy dodać arytmetycznie 1.

Co niestety powoduje koniecznośc użycia sumatora albo kodera priorytetowego aby wskazać cyfrówce od którego bitu ma negować.inne rozwiązanie to mozliwośc takiego zakodowania np.epromu aby podając jako adres próbkę zwracał jej odwróconą wartośc.

Mam jakiegos Parasounda (schemat) ale jest to tam tak brzydko narysowane że sam się w tym nie łapię zamiast elementów logicznych pokazany view scalaka od góry i połączenia :-( ,komuś bardzo zależało aby nikt nie skopiował tego schematu ,szukam dalej jak znajdę do wrzuce link.

Witam ponownie !

Faktycznie przejrzałem kilka z projektów separatorów stosowanych w DAC-ach DIY i niestety są one do pojedynczych przetworników a jeżeli jest podwójny to ma niezależne wejścia dla każdego kanału więc do DAC ze zintegrowanym interfejsem się nie przydadzą :-( Ale zmobilizowałeś mnie do opracowania takiego układu na scalakach serii 74xxx , będzie to raczej wersja uproszczona mojego projektu w CPLD przełożona na standardowe bramki , tak czy inaczej będzie ona zawierać dla każdego kanału:dwa rejestry przesuwne ośmiobitowe , licznik 5 bitowy , kilka multiplexerów 2 na 1 , parę bramek i przerzutników , uproszczona więc nie będzie prawidłowej negacji arytmetycznej ,jedynie negacja logiczna próbki .Tak więc mimo wszystko projekt będzie miał swoją powierzchnię :-) Myślę że do poniedziałku będę miał wstępny schemat obydwu kanałów ,może nawet wrzucę symulację z ModelSima :-)

dzięki za zainteresowanie

Widziałem zdjęcie zmontowanej płytki do takiego DAC'a na stronie highfidelity.pl i jest tam ok. 8 scalaków ale jest też układ przetaktowujący na przerzutnikach, wrzucam zdjęcie...

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Witam

Zaprojektowałem taki układ o następujących cechach:

- wydzielenie ze strumienia I2S kanału lewego i prawego

- negacja próbek w kodzie uzupełnień do 2

- korekta dla negacjii próbki -32768 na +32767 (w zapisie 16bitowym U2 nie ma wartości +32768)

- uformowanie dwóch strumienii wyjściowych I2S zawierających odpowiednio kanał LEWY+ LEWY-

oraz PRAWY+ PRAWY- (strumienie te są wyrówane czasowo tzn: jednoczesnie są podane dane dla

kanału lewego i prawego dla próbki n

- recloking

 

Układ zaprojektowałem dla I2S wg. standartu Philipsa tzn. sygnał WS-44.1kHz, CLK=2,8224MHz, próbki 32 bitowe przy czym wykorzystywane tylko 16 najstarszych bitów, sygnał WS przesunięty o 1 bit względem bitu MSB próbki. (odpowiada to trybowu 2/3 dla układu odbiornika SPDIF CS8412)

 

Cały układ upchnąłem w programowalnym CPLD Xilinxa XCR3064. Scalak jet programowalny w układzie co pozwala na ewentualne korekty. Układ został przetestowany tylko w komputerze (symulacja post fitting).

Zaprojektowałem też płytkę PCB. Na płytce znajdują się:

- zasilacz 5V, 3V

- bufory wej. 74LVX04 (konwersja 5V->3V) i wyj 74HCT04 (konwersja 3V->5V)

W zależności od reszty układu bufory wej. wyj. nie muszą być montowane

- układ CPLD XCR3064

- generator kwarcowy do reclokingu

 

Projekt miał być wykorzystany do budowy przetwornika DAC w układzie mono róźnicowym z odbiornikiem SPDIF

(CS8412 -> Splitter -> 2x DAC CS4390/CS4398 -> AD825/826) (a la DAC P.Stelmacha)

 

Próbowałem przekonwertować schemat do JPEGa, ale przy rozdzielczościach dostępnych na forum jest nieczytelny. Schemat w formacie PDF mogę przesłać na życzenie.

 

Publikowane przeze mnie projekty mogą być wykorzystywane tylko w celach hobbistycznych.

Wykorzystanie w celach komercyjnych wymaga zgody autora.

 

Pozdrawiam

JarekC

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

post-3707-100002024 1170276661_thumb.jpg

post-3707-100002025 1170276659_thumb.jpg

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Taki separator L/R był w audionote kit 1.1 na 74ch02 ale jakos nie odpalał:/ pewnie specjalnie podali coś źle, jak np. zasilanie DAC na schemacie odwrotnie zaznaczone były + i - fajne z nich chłopaki ;)

Witam !

Mam już w zasadzie opracowany jeden kanał na układach serii 74xxx . Ale uprzedzam że wygląda to strasznie:-) (już wiem za co lubię CPLD)Jako dobrą nowinę mogę napisać iż układ jest pełny bez żadnych uproszczeń lecz zrealizowany w nieco inny spoób niż w moim projekcie ,chodziło głownie o to by maksymalną szerokością szyny danych wykorzystywanych wewnętrznie były 4 bity . W moim projekcie w CPLD wygląda to mniejwięcej tak(dla lewego kanału):dane są ładowane do rejestru po czym po zakończonej sekwencji ładowania ,układ który można nazwać koderem priorytetowym wyszukuje najmniej znaczącą jedynkę (mamy 16 okresów zegara martwych w trakcie których nic się nie dzieje dane pozostaja stabilne)w próbce i generuje kod 5 bitowy uwzględniając warunki próbka jest "0" lub próbka jest "-32768" kod ten jest porównywany w następnym cyklu z sygnałem licznika zsynchronizowanego z sygnałem LRCK numerującego bity w subramce i po decyzji negować nie negować zawracany z powrotem do rejestru .W projekcie na 74xxx można by zrobić podobnie wykorzystując standardowe kodery priorytetowe podłączone na odwrót LSB do MSB, MSB do LSB ale wpadłem na prostsze rozwiązanie po prostu przy każdym wystapieniu jedynki na wejściu in przy wysokim poziomie lrck zatrzaskuję stan licznika i wykorzystuję to w następnym cyklu (ostatecznie zatrzaśnie się stan licznika przy najmniej znaczącej jedynce), dodatkowo dla stanów "0" i "-32768" zapamiętuję czy była chociaż jedna jedynka w próbce czy nie (dla obydwu tych stanów sygnał w zatrzaku po przejściu całej próbki to"0000")oczywiście po wystąpieniu pełnej ramki audio zatrzaski są zerowane.Dla kanału prawego wygląda to trochę inaczej , ostatecznie dane na wyjściu dla R i L opóźnionę są o jedną subramkę sygnału lrck.

No nareszcie cieszę się, że ktoś się zainteresował tematem bo na forum do tej pory nic takiego nie znalazłem.

bitrate> Czekam z niecierpliwością na cały układ ( gwarantuje ze przetestuję go jak najszybciej !!! )

>mikexx, bitrate

Tworzenie tego układu na serii 74xx w dzisiejszych czasach to lekkie szaleństwo jeżeli są dostępne CPLD za kilka złotych z darmowymi narzędziami. Zabawa w projekt płytki ew. drutowanie prototypu na 74xxx zajmie sporu

czasu a ewentualne poprawki będą uciążliwe, również wybór rejestrów przesuwających z serii 74xxx jest mały.

CPLD i FPGA to naprawdę fajne układy i jeęli ktoś bawi się techniką cyfrową to warto po nie sięgnąć.

 

Jeżeli jesteście zainteresowani przetestowaniem mojego układu, to mogę zrobić w przyszłym tygodniu 2-3 prototypy i podesłać Wam.

 

>bitrate

W moim układzie zlikwidowałem przesunięcie pomiędzy lewym a prawym kanałem, dane dla kolejnych próbek n,n+1,n+2 są wysuwane jednocześnie (dodatkowy rejestr opóźniający)

 

>mikexx

Jestem z Krakowa

JarekC> Zdaję sobie sprawę że jest to pewien anachronizm:-) Również proponowałem koledze mikexx rozwiązanie w CPLD ale rozumiem jego lęk przed tymi układami i językami HDL i chcę wykonać ten projekt w 74xxx chociazby aby przypomniec sobie starą dobrą cyfrówkę . Wiem że w VHDL-u można zbudować sobie element spełniający dokładnie taką funkcję jaką chcemy , sam zrealizowałem coś podobnego tyle że I2s 24 bit (w poprzednim wpisie pomyliłem się przy opisywaniu mojego układu).

 

Źle się wyraziłem ;-) (jak zwykle;-)) dane L i R wychodzą równocześnie ale opóźnione o pół ramki do danych wejściowych:-)

Jak na razie nie jest źle - znalazłem kilka drobnych błędów w połączeniach bramek :D

Kolega oglądając co wyprawiam w PADS2004 wydusił tylko " o kurczę ale Meksyk" :D

Pozdrawiam.

Mały wrzut z symulacji układu na 74xxx tu jeszcze przed podłączeniem układu do negacji więc wyjściowa próbka L jest taka sama jak /L no i Brak jeszcze wyjsciowego sygnału LRCKO zanegowanego LRCK ;)

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

JarekC>rozumiem twoje zdziwienie, że chcę zrobić ten układ w takiej przedpotopowej technologii ale do tej pory raczej mało zajmowałem się cyfrówką ( oprócz własnego przetwornika ), a tym bardziej takimi układami jak CPLD

aha jeżeli mógłbyś mi polecić jakieś narzędzia do projektowania tego typu układów to byłbym wdzięczny, rozumiem, że potrzebne jest coś w rodzaju przystawki takiej jak np. do progr. EPROM'ów ?

no i ja też jestem z Krakowa !

Tylko przewód Jtag do portu równoległego komputera (dosyć prosty) układy są programowane w systemie:-)Programy do projektowania Xilinx -> ISE7,1 ,Altera->Quartus 2 (z tych ważniejszych trzęsących światkiem CPLD/FPGA producentów)

są darmowe i dostępne na stronach producentów (po zarejestrowaniu).

Wrzucam screena z symulacji po podłączeniu układu negującego - cel już blisko :) Ale rzeczywista realizacja w TTL zależeć będze głównie od projektu płytki (aby uniknąć przesłuchów ,odbić itp. ) zasianie ,terminacja każdej linii , topologia ścieżek i masy.

Pozdrawiam

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Zastanawiam się czy nie przesunać tego wszystkiego jeszcze o jeden impuls zegarowy (razem z RLCKO) ,dało by to większą swobodę przy negowaniu prawej próbki , bo teraz jestem na granicy czasów setup/hold przerzutnika wyjściowego (mówię o prawym kanale).

Właśnie zakończyłem projektowanie separatora:)Jeżeli ten temat kogoś jeszcze interesuje niebawem wrzucę schemat , została jeszcze optymalizacja , i usunięcie logiki nadmiarowej. W załączeniu symulacja behawioralna w symulatorze VHDL (miał być Modelsim ,jest Active-HDL Aldeca)Symulacja używa modeli układów serii 74xxx funkcjonalnie zgodnych z rzeczywistymi układami TTL.Oczywiście nie oznacza to że układ będzie się tak grzecznie zachowywał w rzeczywistości (nawet w CPLD występują różnice między symulacją behawioralną a implementacyjną)przedewszystkim dojdą opóźnienia propagacyjne wynikające z czasów propagacji samych bramek ale również opóżnienia wynikające z długości linii zegara ,resetów ,itd. itp. Żeby zweryfikować działanie układu po prostu trzeba wykonać prototyp :-)

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.



  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
  • Biuletyn

    Chcesz być na bieżąco ze wszystkimi naszymi najnowszymi wiadomościami i informacjami?
    Zapisz się
  • KONTO PREMIUM


  • Ostatnio dodane opinie o sprzęcie

    Ostatnio dodane opinie o albumach

  • Najnowsze wpisy na blogu

×
×
  • Dodaj nową pozycję...

                  wykrzyknik.png

Wykryto oprogramowanie blokujące typu AdBlock!
 

Nasza strona utrzymuje się dzięki wyświetlanym reklamom.
Reklamy są związane tematycznie ze stroną i nie są uciążliwe. 

 

Nie przeszkadzają podczas czytania oraz nie wymagają dodatkowych akcji aby je zamykać.

 

Prosimy wyłącz rozszerzenie AdBlock lub oprogramowanie blokujące, podczas przeglądania strony.

Zarejestrowani użytkownicy + mogą wyłączyć ten komunikat oraz na ukrycie połowy reklam wyświetlanych na forum.