eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › DDS, prośba o wyjaśnienie
Ilość wypowiedzi w tym wątku: 16

  • 1. Data: 2010-03-18 19:02:09
    Temat: DDS, prośba o wyjaśnienie
    Od: "Robbo" <n...@y...com>

    Witam,

    Przeczytałem zasadę działania DDS i wydaje
    mi się, że wszystko zrozumiałem.
    Potem znalazłem opis pewnego projektu
    http://www.scienceprog.com/avr-dds-signal-generator-
    v20/
    i nie rozumiem, w jaki sposób autor
    uzyskuje częstotliwość od 1 do 65kHz,
    a ma stablicowane tylko 256 próbek sinusa.
    Będę wdzięczny za wyjaśnienie.

    Z góry dziękuję.

    Robbo



  • 2. Data: 2010-03-18 19:11:17
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: BartekK <s...@N...org>

    W dniu 2010-03-18 20:02, Robbo pisze:
    > Przeczyta?em zasad? dzia?ania DDS i wydaje
    > mi si?, ?e wszystko zrozumia?em.
    > Potem znalaz?em opis pewnego projektu
    > http://www.scienceprog.com/avr-dds-signal-generator-
    v20/
    > i nie rozumiem, w jaki spos?b autor
    > uzyskuje cz?stotliwo?? od 1 do 65kHz,
    > a ma stablicowane tylko 256 pr?bek sinusa.
    No to widocznie nie zrozumiałeś.
    Zakres częstotliwości uzyskuje się wybierając "prędkość odtwarzania"
    tych próbek. Próbki zawierają tylko wartości chwilowe.
    Łatwiej może byś zrozumiał gdyby autor miał 360 próbek skatalogowanych,
    i dla sinusa ustawiał co 1stopień kolejną próbkę z tabeli. A jak szybko
    stopnie się zmieniają - do tego zależy częstotliwość, jeśli będziesz
    zmieniał stopnie (numery próbek z tabeli) z częstotliwością (prędkością)
    1/360s to cały sinus wymalujesz w czasie 360/360=1s czyli uzyskasz 1Hz.
    Oczywiście nie ma sensu przechowywać 360próbek, bo w układzie cyfrowym
    po pierwsze łatwiej się liczy do pełnych potęg dwójki, a w dodatku skoro
    "góra i dół" sinusa (0-180st i 180-360) są takie same tylko odwrócone co
    do znaku. I nie ma sensu przechowywać całego kawałka 0-180st, skoro
    90-180st jest taki sam jak 0-90 tylko odtwarzany od tyłu. Dzięki temu
    odcinek 0-90st zapisujesz "niby tylko" na 256próbkach, tylko te próbki
    odtwarzasz z odpowiednią kolejnością i ze znakiem, a to przekłada się na
    1024 próbki na całego sinusa, całkiem ładny przebieg dając.

    --
    | Bartlomiej Kuzniewski
    | s...@d...org GG:23319 tel +48 696455098 http://drut.org/
    | http://www.allegro.pl/show_user_auctions.php?uid=338
    173


  • 3. Data: 2010-03-18 19:31:11
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: "Robbo" <n...@y...com>

    Nie wiem, czy się rozumiemy, a mi zależy,
    żeby dobrze zrozumieć DDS i wymieniony projekt
    generatora.
    Załóżmy, że dla 1Hz układ "wypluwa"
    na wyjście po kolei 256 próbek.
    Dla częstotliwości 2Hz korzysta już tylko
    z połowy próbek -- "wypluwa" co drugą
    próbkę. Przy 256Hz wypluwa już tylko jedną próbkę
    na okres.
    Nie rozumiem, jak może dojść do 65kHz i mieć
    na wyjściu sinusoidę.
    Będę wdzięczny za wyjaśnienie. Z góry dzięki.

    Robbo



  • 4. Data: 2010-03-18 20:17:20
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: Sebastian Biały <h...@p...onet.pl>

    Robbo wrote:
    > i nie rozumiem, w jaki sposób autor
    > uzyskuje czestotliwo?ae od 1 do 65kHz,
    > a ma stablicowane tylko 256 próbek sinusa.

    Masz licznik o wielkiej pojemnosci A.

    Masz stałą o niewielkiej wartości B

    Dodajesz w ciasnej pętli B do A bez przerwy.

    Bierzesz najstarsze osiem bitów z A i to jest indeks w tablicy twojego
    sinusa. Dzieki temu ze A się czasem przepelnia bezustannie przechodzisz
    przez swoje 256 próbek sinusa.

    Sinus na wyjsciu układu bedzie nie lepszy niż 256 próbek sinsua, a jesli
    B stanie się niebezpiecznie wysokie - może byc gorszy, bedziesz wtedy
    przeskakiwał próbki z tablicy.

    Zerknij sobie tutaj:

    http://www.myplace.nu/avr/minidds/index.htm

    Główna pętla DDS jest tak mala, że łatwo pojąć nawet bez znajomosci
    asemblera.


  • 5. Data: 2010-03-18 20:41:43
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: BartekK <s...@N...org>

    W dniu 2010-03-18 20:31, Robbo pisze:
    > Nie wiem, czy si? rozumiemy, a mi zale?y,
    > ?eby dobrze zrozumie? DDS i wymieniony projekt
    > generatora.
    > Za??my, ?e dla 1Hz uk?ad "wypluwa"
    > na wyj?cie po kolei 256 pr?bek.
    > Dla cz?stotliwo?ci 2Hz korzysta ju? tylko
    > z po?owy pr?bek -- "wypluwa" co drug?
    > pr?bk?. Przy 256Hz wypluwa ju? tylko jedn? pr?bk?
    > na okres.
    > Nie rozumiem, jak mo?e doj?? do 65kHz i mie?
    > na wyj?ciu sinusoid?.
    > B?d? wdzi?czny za wyja?nienie. Z g?ry dzi?ki.
    Wszystko źle :)
    Dla 1Hz układ wypluwa po kolei 256 próbek, w odstępach 1/256sekundy.
    Dla 2Hz układ wypluwa po kolei 256 próbek, w odstępach 1/512sekundy.
    Dla 256Hz układ wypluwa po kolei 256 próbek, w odstępach 1/(256*f[HZ]) itd.
    Dla 65kHz (65000Hz) układ wypluwa po kolei 256 próbek, w odstępach
    1/16640000 sekundy czyli z prędkością 16,64 MHz (coś wysoko, Atmega by
    musiała być taktowana z 32MHz, by "co takt" mogła zmieniać wartość na
    porcie)

    --
    | Bartlomiej Kuzniewski
    | s...@d...org GG:23319 tel +48 696455098 http://drut.org/
    | http://www.allegro.pl/show_user_auctions.php?uid=338
    173


  • 6. Data: 2010-03-18 20:51:07
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: "Robbo" <n...@y...com>

    Dzięki za odpowiedź.

    > Masz licznik o wielkiej pojemnosci A.
    >
    > Masz stałą o niewielkiej wartości B
    >
    > Dodajesz w ciasnej pętli B do A bez przerwy.
    >
    > Bierzesz najstarsze osiem bitów z A i to jest indeks w tablicy twojego
    > sinusa. Dzieki temu ze A się czasem przepelnia bezustannie przechodzisz
    > przez swoje 256 próbek sinusa.
    >
    > Sinus na wyjsciu układu bedzie nie lepszy niż 256 próbek sinsua, a jesli B
    > stanie się niebezpiecznie wysokie - może byc gorszy, bedziesz wtedy
    > przeskakiwał próbki z tablicy.

    Jeśli dobrze zrozumiałem...
    Jeśli B jest relatywnie niewielkie, to trzeba wielu obiegów pętli,
    żeby najstarsze osiem bitów A zmieniło swoją wartość o jeden. W ten sposób
    przez wiele obiegów pętli na wyjściu uC utrzymuje się ta sama stablicowana
    próbka sinusa. Zatem mamy tu jakgdyby do czynienia z rozciąganiem.

    Jeśli B jest tak dobrane, że każdy obieg pętli powoduje, że te najstarsze
    osiem bitów A zwiększa się o jeden, to co obieg pętli mamy na wyjściu uC
    kolejne stablicowane próbki sinusa.

    Jeśli B jest na tyle duże, że każdy obieg pętli powoduje, że te najstarsze
    osiem bitów A zwiększa się o więcej niż jeden, to niektóre stablicowane
    próbki sinusa są omijane; np. jeśli co obieg pętli wartość ośmiu
    najstarszych
    bitów zwiększa się o 2, to ma wyjściu uC mamy co drugą próbkę.


    > Zerknij sobie tutaj:
    >
    > http://www.myplace.nu/avr/minidds/index.htm
    >
    > Główna pętla DDS jest tak mala, że łatwo pojąć nawet bez znajomosci
    > asemblera.

    Widziałem to. Czytałem w dokumentacji Atmela o znaczeniu
    mnemonika "lpm", ale nie udało mi się ustalić, skąd czerpie on informację,
    spod jakiego adresu ma pobrać bajt w sytuacji, gdy nie stoją po
    nim żadne argumenty.

    Robbo



  • 7. Data: 2010-03-18 20:55:24
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: Sebastian Biały <h...@p...onet.pl>

    Robbo wrote:
    > Je?li dobrze zrozumia?em...

    Mniej więcej dobrze.

    >>http://www.myplace.nu/avr/minidds/index.htm
    >>G?ówna petla DDS jest tak mala, ?e ?atwo poj?ae nawet bez znajomosci
    >>asemblera.
    > Widzia?em to. Czyta?em w dokumentacji Atmela o znaczeniu
    > mnemonika "lpm", ale nie uda?o mi sie ustaliae, sk?d czerpie on informacje,

    Z adresu pamieci wskazywanego przez Z.

    Poczytaj tutaj:

    http://www.avr-asm-tutorial.net/avr_en/beginner/REGI
    STER.html


  • 8. Data: 2010-03-18 21:09:49
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: J.F. <j...@p...onet.pl>

    On Thu, 18 Mar 2010 20:31:11 +0100, Robbo wrote:
    >Nie wiem, czy się rozumiemy, a mi zależy,
    >żeby dobrze zrozumieć DDS i wymieniony projekt
    >generatora.
    > Załóżmy, że dla 1Hz układ "wypluwa"
    >na wyjście po kolei 256 próbek.
    >Dla częstotliwości 2Hz korzysta już tylko
    >z połowy próbek -- "wypluwa" co drugą
    >próbkę.

    Nie chce mi sie przez ten kod przebijac - ale DDS dziala inaczej.
    "wypluwa" probki bardzo czesto - w tym przypadku tak czesto jak sie
    procesor wyrobi, powiedzmy 1MHz, czy jak kto woli co 1us.

    Za kazdym razem oblicza jaka ma byc wartosc probki.
    Jesli syntezuje 1Hz - to bardzo czesto nowa probka bedzie taka sama
    jak stara. Trudno zreszta zeby bylo inaczej jesli mamy do dyspozycji
    tylko 8-bitowy DAC.

    Jesli syntezuje 65kHz, to co 1us przeskakuje o wiecej bitow i probek.

    A jak oblicza? Dosc prosto.

    Mamy np 32 bitowy rejestr, zwany dalej "faza". Traktujemy go tak ze on
    odpowiada pelnemu "obrotowi" czy jak kto woli okresowi, czyli jedna
    jednostka odpowiada 360/2^32 stopnia.

    Co chwila dodajemy do tego rejestru "skok". Jesli chcemy wygenerowac
    1Hz przy cyklu 1MHz/1us, to w ciagu miliona cykli rejestr fazy
    powinien sie "przekrecic". Skok powinien wiec wynosic
    2^32/1000000 = 4294.967296

    Ulamkowej liczby dodawac nie damy rady, bedziemy wiec dodawac np 4295,
    uzyskujac czestotliwosc 1.0000076.. Hz.
    Ta odchylka sie nie przejmujemy, albo dobieramy lepiej parametry.


    Teraz skupmy sie na najstarszym bajcie rejestru fazy - on tez podaje
    faze, tylko z rozdzielczoscia 360/256 stopnia.. Moze wprost wybierac
    wartosc probki z tablicy sinusa. Albo trojkata.

    Poniewaz ten bajt zmienia sie po dodaniu ok 16.7 mln do rejestru fazy,
    w naszym przykladzie bedzie sie zmienial co ok 3906.2 cykli zegara.

    Jesli chcemy generowac 2Hz, dodajemy co cykl 8590, i probka zmienia
    sie co ~1853 cykle.

    A przy 65000Hz, co cykl dodajemy 279 172 874, czyli za kazdym razem
    przestakujemy ok co 1us przeskakujemy co ok 17 probek w tablicy.

    >Nie rozumiem, jak może dojść do 65kHz i mieć
    >na wyjściu sinusoidę.

    Jak sie dokladnie przyjrzec na cyfrowym oscyloskopie, to szemrana ta
    sinusoida :-)

    Ale w AD twierdza ze wystarczaja im nawet 3 probki na okres :-)

    Duzo zalezy czy mozemy sobie pozwolic na filtr dolnoprzepustowy.

    J.


  • 9. Data: 2010-03-18 21:24:14
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: "Robbo" <n...@y...com>

    No to dobrze wiedzieć, jak działa DDS.
    Czyli cała kwestia rozbija się o to, że
    z akumulatora odczytujemy tylko pewną
    liczbę najstarszych bitów. W ten sposób
    przez kilka kolejnych cykli pracy układu
    może pojawić się próbka sinusa spod tego
    samego adresu w pamięci.
    Natomiast, jeśli zwiększamy rejestr o odpowiednio
    dużą wartość (tak aby co cykl pracy najstarsze
    brane pod uwagę bity akumulatora zmieniały
    swoją wartość), to dopiero wtedy na wyjściu
    pojawia się co któraś stablicowana próbka.
    Zmyliły mnie opisy DDS-ów, które
    znalazłem (a było ich trzy). Tam wszędzie
    była mowa o tym, że odczytuje się cały
    akumulator (a nie np. najstarsze bity).
    Tylko w jednym z opisów znalazłem informację,
    że można sobie akumulator rozszerzyć
    o część ułamkową (czyli mniej więcej to samo,
    co mamy odczytując tylko najstarsze bity).

    Robbo



  • 10. Data: 2010-03-18 23:51:05
    Temat: Re: DDS, pro?ba o wyja?nienie
    Od: shg <s...@g...com>

    On 18 Mar, 21:41, BartekK <s...@N...org> wrote:
    > W dniu 2010-03-18 20:31, Robbo pisze:> Nie wiem, czy si rozumiemy, a mi zale y,
    > > eby dobrze zrozumie DDS i wymieniony projekt
    > > generatora.
    > >      Za my, e dla 1Hz uk ad "wypluwa"
    > > na wyj cie po kolei 256 pr bek.
    > > Dla cz stotliwo ci 2Hz korzysta ju tylko
    > > z po owy pr bek -- "wypluwa" co drug
    > > pr bk . Przy 256Hz wypluwa ju tylko jedn pr bk
    > > na okres.
    > > Nie rozumiem, jak mo e doj do 65kHz i mie
    > > na wyj ciu sinusoid .
    > > B d wdzi czny za wyja nienie. Z g ry dzi ki.
    >
    > Wszystko źle :)
    > Dla 1Hz układ wypluwa po kolei 256 próbek, w odstępach 1/256sekundy.
    > Dla 2Hz układ wypluwa po kolei 256 próbek, w odstępach 1/512sekundy.
    > Dla 256Hz układ wypluwa po kolei 256 próbek, w odstępach 1/(256*f[HZ]) itd.
    > Dla 65kHz (65000Hz) układ wypluwa po kolei 256 próbek, w odstępach
    > 1/16640000 sekundy czyli z prędkością 16,64 MHz (coś wysoko, Atmega by
    > musiała być taktowana z 32MHz, by "co takt" mogła zmieniać wartość na
    > porcie)
    >
    > --
    > | Bartlomiej Kuzniewski
    > | s...@d...org  GG:23319  tel +48 696455098  http://drut.org/
    > |http://www.allegro.pl/show_user_auctions.php?uid=33
    8173

    Obawiam się, że to jednak Ty nie rozumiuesz zasady działania DDS.

    Robbo dobrze napisał, DDS ma stałą częstotliwość próbkowania, a
    zmienny jest krok (inkrement) fazy, z tym że podany przykład dotyczył
    akurat próbkowania z czestotliwością 256 Hz, żeby uzyskać wyższą
    częstotliwość trzeba oczywiście z wyższą częstotliwością próbkować.

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: