logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AT91SAM7S256 + UDA1330ATS: jak generować zegar I2S dla zmiennej częstotliwości?

upanie 07 Cze 2006 21:55 1962 6
REKLAMA
  • #1 2708344
    upanie
    Poziom 22  
    Posty: 434
    Pomógł: 33
    Ocena: 7
    Witam.

    Jest problem do rozwiązania. Polega on na tym, że mam procek i DAC-a (audio). Chcę to ze sobą połączyć przez I2S. Wszystko jest super, tyle że DAC musi być napędzany zegarem o częstotliwości np. 256 razy większej od częstotliwości próbkowania odtwarzanego dźwięku. W związku z tym, że częstotliwość próbkowania może się różnić w zależności od nagrania, to pojawia się pytanie: jak generować ten zegar?
    Dane poprzez I2S również muszą być "wsadzane" DACowi z częstotliwością będącą wielokrotnością częstotliwością próbkowania.
    Z procka nie da się wygenerować takiej częstotliwości z rozsądnym błędem.
    Są jakieś układy TI np. PLL1708 generujące odpowiednie sygnały, ale kupić je to byłby wyczyn.
    Jak do tej pory do głowy przychodzi mi tylko DDS no ale to armata na muchy. Jednakowoż nie mam innego pomysłu.
    I tu się pojawia zadanie:
    Masz pomysł? - napisz :)

    procek to AT91SAM7S256
    dac to UDA1330ATS

    upanie
  • REKLAMA
  • #2 2708447
    Jacor
    Poziom 14  
    Posty: 114
    Pomógł: 3
    Ocena: 4
    Mogę Ci sprzedać jedną sztukę PLL1708.
  • REKLAMA
  • #3 2709796
    upanie
    Poziom 22  
    Posty: 434
    Pomógł: 33
    Ocena: 7
    Hmm... jednak da się kupić.
    Dzięki wielkie ale nie skorzystam bo nie o to chodzi aby kupić jedną sztukę.
    Muszę mieć coś co można kupić bez większych problemów bo co będzie jak tę jedną, jedyną sztukę zepsuję albo przyjdzie mi do głowy zrobić drugie takie samo lub podobne urządzenie?
    A może ktoś zobaczy mój projekt i będzie chciał zrobić sobie podbne ;)

    upanie
  • REKLAMA
  • #4 2712912
    upanie
    Poziom 22  
    Posty: 434
    Pomógł: 33
    Ocena: 7
    A może ktoś zna DDSa bez DACa na wyjściu coby generować tylko prostokąta? Dzięki temu mógłby być tańszy.
    Jak do tej pory znalazełem tylko takie, które mają przetworniki do generowania różnych przebiegów. Kupiłem AD9833 i on ma taki przetwornik, ale na szczęście można go podobno wyłączyć i brać "czysty" prostokąt.

    upanie
  • Pomocny post
    #6 3537634
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 134
    Można dość łatwo, trzeba "tylko" w CPLD się pobawić.
    Rzecz wygląda mniej więcej tak jak DDS, ale z pominięciem ROMu i DACa. Wyjściem jest najstarszy bit akumulatora fazy (zegar dla DACa) i sygnał z tegoż bitu podzielony przez (256/ilość bitów na ramkę) - zegar danych.

    Z każdym taktem zegara do akumulatora dodawana jest z góry ustalona wartość programowana na przykład szeregowo przez rejestr przesuwny.

    Zaletą takiego rozwiązania jest to, że można sobie generować dowolne częstotliwości, np. wredne 44.1kHz. Interface szeregowy można (a właściwie w takim układzie to trzeba) uruchomić na ARMie w trybie slave.

    Próbowałem to w jakiegoś Xilinxa z 36 makrokomórkami zmieścić (w Web Packu, w edytorze graficznym smarowałem), oczywiście układ się nie zmieścił, po wybraniu większego okazało się że zajął 37 makrokomórek... chociaż kilka niedoróbek miał, nie wiem ile by zajął napisany w VHDLu, mojemu w każdym razie brakowało jeszcze kilku zatrzasków. Zresztą za mało się na tym znam, nie chciało mi się już więcej kombinować, ale jeżeli by Ci się udało coś takiego zrobić, to chętnie bym się pisał na zaprogramowanego CPLD :>
  • REKLAMA
  • #7 3570163
    upanie
    Poziom 22  
    Posty: 434
    Pomógł: 33
    Ocena: 7
    Trochę czasu już minęło...
    Sprawa pozostała na DDS-ie.

    Zamykam temat.

Podsumowanie tematu

✨ Problem dotyczy generowania zegara I2S o częstotliwości będącej wielokrotnością częstotliwości próbkowania dla połączenia mikrokontrolera AT91SAM7S256 z przetwornikiem DAC UDA1330ATS. DAC wymaga zegara o częstotliwości np. 256 razy większej niż częstotliwość próbkowania, która może się zmieniać w zależności od odtwarzanego nagrania. Mikrokontroler nie jest w stanie wygenerować takiego zegara z odpowiednią precyzją. Propozycje rozwiązań obejmują użycie układu PLL1708 firmy TI, jednak jego dostępność i cena są problematyczne. Alternatywnie rozważano zastosowanie DDS (np. AD9833) do generowania sygnału prostokątnego bez DAC-a, co pozwoliłoby na elastyczne ustawianie częstotliwości. Inna sugestia to implementacja generatora zegara w CPLD, wykorzystującego akumulator fazy i programowalny przyrost fazy, co umożliwia generowanie dowolnych częstotliwości, w tym 44,1 kHz, jednak wymaga to zaawansowanej wiedzy i odpowiedniego sprzętu. Ostatecznie autor zdecydował się na rozwiązanie oparte na DDS, zamykając temat.
Wygenerowane przez model językowy.
REKLAMA