Skocz do zawartości
IGNORED

R2R DAC + FPGA


Rekomendowane odpowiedzi

Gdzie ten kod upchnąłeś ;)

 

Piotrze,

jak wspomniałem przepisałem cały kod tak, aby był maksymalnie szybki,

 

najpierw umieściłem bufor w ram-ie, ale sposób adresacji odczytu w poszczególnych polifazach

może przyprawić o ból głowy (chodzi o zrobienie czegoś na kształt adresowalnego rejestru przesuwającego w pamięci statycznej),

potem zrobiłem coś na kształt mikroprogramu, gdzie pamięć adresowała "sama siebie", to rozwiązanie jest bardzo fajne, ale

okazało się dość kłopotliwe przy zmianach współczynników

 

a jeszcze potem okazało się, że przy spełnieniu pewnych warunków xst syntetyzuje taki rejestr przy użyciu slr32 w sliceM

(których w slx9 jest 360)

i co lepsze, poniewaz długość polifazy jest stała i równa 128 to bez problemu można tak zrobić rejestry dla obu kanałów L i R

 

w efekcie cały główny kod mieści sie teraz w niecałych 200 liniach programu, z czego ponad połowa to liczniki generujące adresy.

 

zaś odpowiednio poukładane współczynniki siedzą sobie grzecznie w ram-ie w postaci tablic i czekają w kolejce do mnożenia.

 

Całość działa do ok. 220MHz i w tym scalaku dalej chyba nie dam rady (pojawiają się za duże opóźnienia mult <-> add, z racji bardzo szerokiej szyny nie korzystam tutaj z dsp48)

Ale to umożliwia zrobienie filtru o długości 4096 :)

 

A co to wszystko warte, to zobaczymy...

  • 3 miesiące później...

Program został ukończony równo miesiąc temu, po wakacjach, ale jest to jeszcze inna wersja :)

 

Teraz filtr działa na 200MHz (4x50) asynchronicznie, po nim dane trafiają do kolejki fifo, a z niej do układów wyjściowych

 

filtr ma 4096 tapsy, rdzeń filtru to 35 bitowy multiplikator/adder połączony bezpośrednio do pamięci dual ported ram,

filtr ma stałą wielkość polifazy 256 i w zależności od potrzeb realizuje na raz upsampling i downsampling, co lepsze na tym samym zestawie współczynników :)

np. żeby zrobić docelowy upsampling x8, robimy up x16 i down /2. Działa to perfekcyjnie.

 

Przy filtrze o takiej długości mamy pasmo płaskie do 21kHz, a przy 22kHz tłumienie sięga 100dB, całkowity brak aliasingu.

 

Testy były i się skończyły :) filtr został sprawdzony na prawie wszystkich dostępnych przetwornikach, łącznie z pcm1704.

 

Końcowe wnioski są takie, że im dłuższy filtr tym lepiej, po prostu. Każde zwiększenie długości daje poprawę dźwięku.

Jak dużą? To już indywidualna ocena, jednemu dużą drugiemu małą :)

Na pewno prawdą jest jest to co powiedział jeden z kolegów Waldka (nie pamiętam w tej chwili kto, niestety), że

tego co utracimy w kiepskim filtrze nie da się odzyskać żadnymi metodami.

 

Osobiście przyznam się, że od miesiąca po prostu słucham muzyki :) Na próbę podłączałem 5843 i powiem szczerze,

że nie bardzo jest co porównywać, także mój cd z pmd100 na pokładzie poszedł w odstawkę :)

 

O dźwięku nie umiem ładnie pisać, ale może kolega PJotr, który miał okazję słuchać wszystkich wersji jeszcze coś napisze ?

Dzięki za update.

Pisałeś parę postów wcześniej, że starasz się unikać pll rozumiem, że w ostatnich wersjach jednak używasz pll. Czy pll zastosowany w filtrze może mieć niekorzystny wpływ na dzwięk?

Czy słychać różnice mędzy Minimal, Linear, Intermediate Phase?

Wiem, że to niełatwy pomiar i szacunek ale ile może dodawć jitter'a układ filtra?

 

Chętnie bym posłuchał Twojego filtra. Obecnie słucham PCMów w bez żadnych filtrów w Pure NOS i ciekawe byłoby porównanie.

Realizowany przez soft odtwarzacza/playera upsampling (SOX) jakoś mi do tej pory nie podpasował....

Patrząc na całokształt pracy Olka, jak te filtry się zmieniały w stosunku do fabrycznych,

to na początku była to głównie poprawa w przestrzeni, ułagodzona ale kulturalna góra, nieskompresowana jakby nieograniczona...

Kolejne wersje to pamiętam pojawił się bardziej punktowy/dynamiczny bas, a teraz mam takie wrażenie jakby

głównie było jeszcze więcej powietrza między dźwiękami, szczególnie wyłapuję to na górze.

Ta góra oczywiście czuje się że jest taka nieskrępowana, wydaje się jakby mogła płynąć i płynąć w nieskończoność.

Ale wszystko pozostałe też jest oczywiście OK.

Jest dynamika, piękna barwa (w ostatniej wersji szczególnie wokale są barwniejsze) - nic lepszego do tej pory nie słyszałem :) Gratulacje!

Może niezbyt dokładnie opisałem, jeszcze raz :)

 

rdzeń filtru pracuje asynchronicznie na powielonym za pomocą pll własnym zegarze 200Mhz ( 4x 50Mhz z zewnętrznego rezonatora)

czyli tak: pojawia się próbka wejściowa, filtr przetwarza, wrzuca do bufora fifo i czeka na następną próbkę i tak w kółko :)

 

fifo jest taktowany dwoma niezależnymi zegarami i rozdziela układ w sensie czasowym, wszystkie sygnały wyjściowe są pochodnymi

zegara mclk, który jest dostarczany z zewnątrz i to od jego jakości zależy jitter na wyjściu, pll nic do tego nie ma.

 

Różnice między poszczególnymi typami filtrów są, z tym, że nie są one jakieś spektakularne,

po osłuchaniu okazało się, że najlepszy dźwięk pochodzi z "linear phase", minimal phase zawsze dodawało jakiejś takiej lekkiej ostrości.

 

niestety nie mam możliwości pomiarów szumu fazowego (jeszcze :), ale jak kiedyś liczyłem, to w dużym przybliżeniu xilinx doda

ok. 10ps jittera, z tym, że po całości, szum close-in carrier raczej nie powinien się zmienić,

puryści mogą dodać reclocking (ja jednak w to nie wierzę :)

 

nie znam niestety algorytmów sox-a, więc tu nic nie podpowiem

 

Piotr pięknie opisał to co działo się przez ostatni rok :) ale tak to mniej więcej wyglądało... tak czy inaczej gra to świetnie.

 

Teraz chyba pora zamienić to wszystko w jakiś projekt diy, jak ktoś ma jakieś sugestie, śmiało pisać !

Teraz chyba pora zamienić to wszystko w jakiś projekt diy, jak ktoś ma jakieś sugestie, śmiało pisać !

Byłoby super!

Napisz proszę jak szacujesz ile mógłby kosztować taki filtr (część hardwerowa oraz soft).

Jakie byłyby dostępne opcje do konfiguracji i jak można byłoby je zaaplikować (Dip-switche)?

Waldek wspomniał o formule. Gdyby już powstała część hardwerowa - po Twoim przeglądzie - (zakładam mała płytka PCB z wejściami, wyjściami oraz przełącznikami) to jak zorganizować dystrybucję softu?

Pozdrawiam, B

Z tego co Olek dzisiaj mówił, to raczej układ będzie dostępny.

Trochę to potrwa, ale będzie można nabyć kompletny filtr.

Raczej należy sie spodziewać wersji handlowej, ale to było zapowiadane.

Nie wypowiem się co do kompatybilności.

Przekazuję tylko newsy.

Wszelkie pytania do autora.

Acha i jeszcze jedno - ten projekt nie jest wymienny z tym filtrem do PCM63 , dlatego proszę nie pytajcie mnie o nową wersję do PCM63.

  • 4 miesiące później...

No dobra, znalazłem w końcu trochę czasu i w poniedziałek wysyłam projekt do płytkarni :)

Będzie to wyglądało mniej więcej tak:

 

Ukryta Zawartość

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

 

w następnej kolejności planuję udostępnić projekt daca z pierwszej strony wątku (najprawdopodobniej dla PCM58 i PCM56)

oraz projekt filtra przeznaczonego do montażu w CD (upgrade układów typu YM3414, SM5843 itp.)

Ukryta Zawartość

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

No dobra, znalazłem w końcu trochę czasu i w poniedziałek wysyłam projekt do płytkarni :)

Będzie to wyglądało mniej więcej tak:...

 

O.. widzę dobre wieści.

Czy Twój filtr da radę współpracować z MSCLK=45.1584/49.152 MHz?

Do czego służy ostatni (czwarty) przełącznik w DIPswitchu?

Płytki się produkują :)

 

Z tym zegarem to nie wiem, nie mam jak sprawdzić, niby to tylko kwestia podziału przez 2 i 4, ale wszystko dzieje się na granicy możliwości scalaka, wrzucę wieczorem z ciekawości w symulator i zobaczymy...

 

Ostatni switch to aktualnie wyłączanie ditheringu.

 

W poniedziałek wysyłam pcb daca na PCM58

 

Ukryta Zawartość

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

 

do stereo potrzebne będą dwie takie płytki, do pracy różnicowej 4, wszystkie połączone będą jedną taśmą, zworki umożliwią wybór strumienia, fajnie to powinno wyglądać, taki stack :)

Ukryta Zawartość

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

Niby w teorii powinno działać.

 

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ą )

Niby w teorii powinno działać.

 

Dzięki,

Czy nową wartość zegara/(ów) trzeba byłoby określić w kodzie?

A może można byłoby 'wyciągnąć' jeszcze jeden przełącznik na PCB?

 

Rozumiem, że soft automatycznie dokona rozróżnienia ff i krotności 44,1/48kHz?

>>Czy nową wartość zegara/(ów) trzeba byłoby określić w kodzie?

Tak

 

>>A może można byłoby 'wyciągnąć' jeszcze jeden przełącznik na PCB?

może w następnej wersji :)

 

>>Rozumiem, że soft automatycznie dokona rozróżnienia ff i krotności 44,1/48kHz?

 

Tak, do tego celu używany jest rezonator 50MHz, za pomocą tego sygnału jest mierzona częstotliwość wejściowego lrck.

Pięknie się chłopaki postarali, nie ma się co czepiać :)

 

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ą )

Pięknie się chłopaki postarali, nie ma się co czepiać :)

Bardzo ładnie :-).

Pola lutownicze są pozłacane?

Widzę, że napięcie zasilania na płytce opisane jest jako 5V DC.

Czy FPGA jest zasilany bezpośrednio z 5V (chyba za dużo) czy na płytce jest stabilizator np 3.3V?

Ile mA może konsumować zasilanie płytki?

 

Czekamy na wrażenia po polutowaniu i uruchomieniu pierwszego egzemplarza:-)

Edytowane przez bern

Tak, płytki są złocone.

Fpga wymaga dwóch napięć zasilających 3.3V i 1.2V. Stabilizatory są po stronie bottom. +5V na płytce oznacza po prostu zasilanie napięciem stałym o sensownej wartości.

Cały układ przy pracy 200MHz pobiera 200mA, statycznie kilkanaście mA.

 

Tak wygląda gotowa płytka:

Ukryta Zawartość

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

 

Układ przetestowany statycznie i wszystko działa. W weekend szczegółowe testy.

Ukryta Zawartość

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

Tak, płytki są złocone.

Fpga wymaga dwóch napięć zasilających 3.3V i 1.2V. Stabilizatory są po stronie bottom. +5V na płytce oznacza po prostu zasilanie napięciem stałym o sensownej wartości.

Cały układ przy pracy 200MHz pobiera 200mA, statycznie kilkanaście mA.

 

Tak wygląda gotowa płytka:

Ukryta Zawartość

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

 

Układ przetestowany statycznie i wszystko działa. W weekend szczegółowe testy.

 

A możesz pokazać płytkę od spodu? Ciekawi mnie czy podłączałeś pamięć konfiguracyjną do Spartana 6 czy też to jakaś specjalna wersja z wbudowanym flashem?

Ukryta Zawartość

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

Asustor AS-5002T z MPD + Amanero + AD1865 .3lite DAC + Autorskie PRE + Monobloki Ravlus Amplifilo + kolumny Tatami Audio Hudba

Szybko działasz...

Ile będzie kosztować zmontowany układ dla userów AS?

 

Szybko? Zobacz kiedy zacząłem ten wątek :) schemat i pcb to mniej niż procent całości

Wieczorem napiszę małe podsumowanie i podam co i jak.

 

Czekam z niecierpliwością na układ z PCM58 :)

 

Tak jak obiecałem, płytki się produkują, na początku tygodnia powinny zostać wysłane :)

 

A możesz pokazać płytkę od spodu? Ciekawi mnie czy podłączałeś pamięć konfiguracyjną do Spartana 6 czy też to jakaś specjalna wersja z wbudowanym flashem?

 

Proszę :)

Ukryta Zawartość

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

 

Filtr oparty jest na xc6slx9, według mojej wiedzy nie ma w tej serii układów z wbudowanym flashem, tak jak było w serii 3. Pamięć konfiguracyjna jest na stronie bottom.

 

PCB przetestowane, filtr filtruje, wszystko działa.

 

Mała relacja z testów.

 

testowanie wyjściowych LRCK (miernik z ultrastability time base, skalibrowany gpsdo)

 

os x 16

post-2765-0-79855000-1520695852_thumb.jpg

 

os x8

post-2765-0-90760700-1520695904_thumb.jpg

 

oraz sinus 21kHz z dwóch daców w układzie różnicowym

 

post-2765-0-86186300-1520695970_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ą )

Ukryta Zawartość

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

Podsumowanie.

 

I tak projekt dotarł do końca.

Po pierwsze podziękowania, szczególnie dla dwóch osób. Sa to Waldi_06 oraz PJotr. Waldek zmotywował mnie do dokończenia projektu,bez niego wszystko wylądowałoby w szufladzie, a bez Piotra, który testował kolejne wersje natychmiast i o każdej porze, wszystko trwałoby x razy dłużej. Dzięki!

 

Ostateczne parametry filtru są następujące:

 

-oversampling x16, x8 ustawiany na switchach

-automatyczne ustawianie oversamplingu (x16, x8, x4, x2) w zależności od fs wejściowego

-obsługa fs od 44.1 do 384kHz (wyświetlanie na LED)

-wejście I2S

-wyjście RJ oraz zanegowane RJ 16, 18, 20, 24 bit ustawiane na switchach

-dithering on/off ustawiany na switchach

-długość L=4096 taps

-single stage

-tłumienie wewnętrzne 1dB

-współczynniki 32bit (błąd kwantyzacji na poziomie -150dB)

-wszystkie obliczenia w pełnej dokładności, żadnych zaokrągleń, obcinań itp.

-rdzeń filtru pracujący asynchronicznie z prędkością 200MHz

-wyjściowy bufor fifo

 

Filtr działa podobnie w sensie funkcjonalności do upsamplera, niezależnie od tego co podamy na wejście, na wyjściu otrzymujemy fs=768 lub 384 w zależności od ustawienia switcha.

 

Wymagane zasilanie DC +5V o wydajności 300mA.

Wejścia i wyjścia w standardzie 3.3V (wejścia nie są 5V tolerant !)

 

Charakterystki filtru są następujące:

 

Pasmo przenoszenia dla x16:

Ukryta Zawartość

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

Tłumienie w paśmie zaporowym przekracza 120dB

 

Powiększony fragment

post-2765-0-17546100-1520716599_thumb.jpg

Plaska ch-ka przenoszenia do 21kHz, tłumienie dla 22kHz przeszło 100dB

 

i pasmo przepustowe

post-2765-0-91393300-1520716597_thumb.jpg

zafalowanie ch-ki poniżej 0.0001dB !

 

Zamówiłem więcej płytek, zainteresowanych zakupem filtra, zapraszam na PW.

Cena wynosi 320zł. W cenie pomoc techniczna oraz ewentualne update softu.

 

Pliki projektu w eaglu są free, wystarczy napisać i podać maila.

 

To tyle :)

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ą )
  • 2 tygodnie później...

Jtest

 

Ukryta Zawartość

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

 

Nie jest źle :)

wszystkie prążki poniżej 120dB

szczególnie, że to wykres dla całego systemu tj konwertera usb/i2s i filtru.

Ukryta Zawartość

    Zaloguj się, aby zobaczyć treść.
Zaloguj się, aby zobaczyć treść (możliwe logowanie za pomocą )
  • Pokaż nowe odpowiedzi
  • Dołącz do dyskusji

    Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
    Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

    Gość
    Dodaj odpowiedź do tematu...

    ×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

      Dozwolonych jest tylko 75 emoji.

    ×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

    ×   Przywrócono poprzednią zawartość.   Wyczyść edytor

    ×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.



    • 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.