Pokrewne
menu      tanie lcd, arm, 12MB, modem gsm i zasilacz :)
menu      detekcja SELECT V (CCIR,ZWEI,EEA) na ARM-ie ?
menu      GCC pod arm'a (LPC2106) linkowanie mniejszego kodu
menu      BANDWIDTH: Jaką największą prędkość pobierania z Polski udało wam się uzyskać?
menu      ARM (atmel) i slow clock
menu      EP od którego numeru jest o ARM?
menu      ARM LPC2294 - magistrala CAN
menu      ARM z Ethernetem na pokladzie
menu      ARM & LCD interface
menu      Srodowisko dla ARM A791SAM7Sxxx
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • biegajmy.htw.pl
  • ARM - prędkość wyliczania sin(x)





    Krzysztof - 18-08-2006 17:46
    ARM - prędkość wyliczania sin(x)
      Może ktoś to robił, ewentualnie może ktoś
    to wie: z jaką prędkością da się wyliczać
    wartość sinusa na procesorach serii ARM?

    Krzysiek

    PS.
    Może ktoś tego będzie szukał:
    na mikrokontrolerach serii AVR przy standardowych
    bibliotekach da się wyliczać max. niecałe 3000
    razy/sek wartość sinusa...





    BartekK - 18-08-2006 18:45

      Krzysztof napisał(a):
    > z jaką prędkością da się wyliczać
    > wartość sinusa na procesorach serii ARM?
    > na mikrokontrolerach serii AVR przy standardowych
    > bibliotekach da się wyliczać max. niecałe 3000
    > razy/sek wartość sinusa...
    co prawda nie odpowiem na twoje pytanie - ale czy trzeba wyliczac? a nie
    mozna zrobic "tabelki" z gotowymi wynikami, np znormalizowanymi, gdzie
    max sinusa to pelny zakres (dla danego typu zmiennej), a potem sobie
    tylko odnajdywac w tabelce wartosc dla danego kata ?

    --
    | Bartlomiej Kuzniewski
    | http://drut.org/
    | http://www.allegro.pl/show_user_auctions.php?uid=338173




    Krzysztof - 19-08-2006 16:45

      > co prawda nie odpowiem na twoje pytanie - ale czy trzeba wyliczac? a nie
    > mozna zrobic "tabelki" z gotowymi wynikami, np znormalizowanymi, gdzie
    > max sinusa to pelny zakres (dla danego typu zmiennej), a potem sobie
    > tylko odnajdywac w tabelce wartosc dla danego kata ?

    Testowałem tą metodę (na mikrokontrolerach AVR, tabela o rozmiarze
    kilkuset bajtów), ale do mojego zastosowania jest zbyt mało dokładna.
    Potrzebuję miec wartości sinusa dla niemal dowolnych kątów, bo później
    wyliczone wartości trafiają na przetowrnik D/A. Potrzebuję generowac
    częstotliwości (sinusoida) z zakresu 330-350Hz, przy niskim poziomie
    zniekształceń (pierwsza harmoniczna najwyżej -40 dB).
    Ale gdyby tabela wartości była dużych rozmiarów (kilkadziesiąt kB)
    może dałoby to zamierzony efekt...

    Pzdr.
    K.




    Jarosław Grolik - 19-08-2006 18:45

      Witam

    Użytkownik "Krzysztof" <krzysztof.gedroyc_NOSPAM_@wp.pl> napisał w
    wiadomości news:ec766v$sq1$1@nemesis.news.tpi.pl...

    > Potrzebuję miec wartości sinusa dla niemal dowolnych kątów, bo później
    > wyliczone wartości trafiają na przetowrnik D/A. Potrzebuję generowac
    > częstotliwości (sinusoida) z zakresu 330-350Hz, przy niskim poziomie
    > zniekształceń (pierwsza harmoniczna najwyżej -40 dB).

    A może dało by się użyć jakiegoś DDS-a zamiast programowo generować sinusa ?

    Pozdrawiam

    Jarek Grolik





    Grzegorz Kurczyk - 19-08-2006 21:45

      Użytkownik Krzysztof napisał:
    >> co prawda nie odpowiem na twoje pytanie - ale czy trzeba wyliczac? a
    >> nie mozna zrobic "tabelki" z gotowymi wynikami, np znormalizowanymi,
    >> gdzie max sinusa to pelny zakres (dla danego typu zmiennej), a potem
    >> sobie tylko odnajdywac w tabelce wartosc dla danego kata ?
    >
    >
    > Testowałem tą metodę (na mikrokontrolerach AVR, tabela o rozmiarze
    > kilkuset bajtów), ale do mojego zastosowania jest zbyt mało dokładna.
    > Potrzebuję miec wartości sinusa dla niemal dowolnych kątów, bo później
    > wyliczone wartości trafiają na przetowrnik D/A. Potrzebuję generowac
    > częstotliwości (sinusoida) z zakresu 330-350Hz, przy niskim poziomie
    > zniekształceń (pierwsza harmoniczna najwyżej -40 dB).

    A ilu bitowy jest ten przetwornik D/A ?

    Pozdrawiam
    Grzegorz




    Krzysztof - 19-08-2006 21:45

      > A ilu bitowy jest ten przetwornik D/A ?

    Przetowrnik jest 16-bitowy.
    Dla informacji dodam, że potrzebuję naraz generowac dwa przebiegi o
    podobnych częstotliwościach (330-350Hz)...

    K.




    JR - 19-08-2006 23:45

      Użytkownik "Krzysztof" :

    > Przetowrnik jest 16-bitowy.
    > Dla informacji dodam, że potrzebuję naraz generowac dwa przebiegi o
    > podobnych częstotliwościach (330-350Hz)...
    >

    możesz spróbować zastosować na wyjściu C/A ostry filtr dolnoprzepustowy
    analogowy fgr = 370..400Hz, taki jaki ongiś stosowało się w torze CD-Audio
    w czasach przed C/A 1-bit z wielokrotnym oversamplingiem ( żyratory
    i takie inne Butherwothy/Czebyszewy);
    zerknij na jakieś gotowce i przeskaluj na niższe częstotliwości;
    powinieneś dostać bardzo czyste przebiegi nawet przy mało dokładnym
    wyznaczeniu sinusa;

    a od strony programowej szukaj algorytmu pod: "DTMF Generation"
    a szczególnie "Artificial Sine Wave Generation Using SX Microcontroller"
    pod mikrokontrolery Scenixa;
    mała ilość kodu i świetna szybkość algorytmu

    --
    pzdr.
    JR




    J.F. - 20-08-2006 08:48

      On Sat, 19 Aug 2006 21:41:01 +0200, Krzysztof wrote:
    >> A ilu bitowy jest ten przetwornik D/A ?
    >
    > Przetowrnik jest 16-bitowy.
    > Dla informacji dodam, że potrzebuję naraz generowac dwa przebiegi o
    >podobnych częstotliwościach (330-350Hz)...

    Po pierwsze - kolejne probki mozna wyliczyc w ogole bez sinusa,
    po drugie - mozesz to sobie stablicowac i interpolacje liniowa miedzy
    wezlami wprowadzic,
    po trzecie - dla tej dokladnosci to i wielomian obliczeniowy moze byc
    krotszy.

    J.




    Piotr Wyderski - 20-08-2006 12:45

      Krzysztof wrote:

    > Może ktoś to robił, ewentualnie może ktoś
    > to wie: z jaką prędkością da się wyliczać
    > wartość sinusa na procesorach serii ARM?

    Na ARMie nie robiłem, ale na FPGA tak -- tam częstotliwość
    ograniczała wydajność bloku RAM, co na Cyclone dawało ~250 MHz.
    Algorytm był prosty i generował dokładność 17,3 bitu. Zgaduję, że
    na ARMie da się osiągnąć co najmniej kilka milionów sampli na sekundę.
    Pomysł jest następujący: stablicuj sobie wartości sinusa w zakresie
    podzielonym na 256 i pobieraj je indeksując starszym bajtem akumulatora
    fazy. Dodaj do tego wynik interpolacji liniowej, obliczony z iloczynu
    różnicy
    dwóch kolejnych próbek i młodszego bajtu akumulatora fazy. I to wszystko.

    Na FPGA oszczędzałem RAM, więc trzymałem tylko 256 18-bitowych
    wartości z pierwszej ćwiartki kątów i na podstawie dwóch najstarszych
    bitów akumulatora fazy dokonywałem korekcji kąta i znaku. Akumurator
    miał więc efektywnie 18 bitów. Ze wzgledu na sekwencyjną naturę
    procesorów na ARMie może się to nie opłacać.

    > na mikrokontrolerach serii AVR przy standardowych
    > bibliotekach da się wyliczać max. niecałe 3000
    > razy/sek wartość sinusa...

    Jeśli ktoś potrzebuje więcej, to są metody niestandardowe...
    Sądzę, że kilkaset tysięcy próbek na sekundę bym z niego wycisnął.

    Pozdrawiam
    Piotr Wyderski




    PAndy - 21-08-2006 10:45

     
    "J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
    news:dsvfe2hufd8r6b2frhj76cm0c76q2q9o2u@4ax.com...
    > On Sat, 19 Aug 2006 21:41:01 +0200, Krzysztof wrote:
    >>> A ilu bitowy jest ten przetwornik D/A ?
    >>
    >> Przetowrnik jest 16-bitowy.
    >> Dla informacji dodam, że potrzebuję naraz generowac dwa przebiegi
    >> o
    >>podobnych częstotliwościach (330-350Hz)...
    >
    > Po pierwsze - kolejne probki mozna wyliczyc w ogole bez sinusa,
    > po drugie - mozesz to sobie stablicowac i interpolacje liniowa miedzy
    > wezlami wprowadzic,
    > po trzecie - dla tej dokladnosci to i wielomian obliczeniowy moze byc
    > krotszy.

    z DSP - jeszcze czasem po prostu wystarczy zasymulowac bezstratny obwod
    LC
    A pzoa tym CORDIC i masa innych roziwazan. pamietac nalezy o symetrii
    sinusa wiec wystarczy liczyc wartosc dla jednej cwiartki a pozsotale
    uzyskuje sie przez proste zanegowanie
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • konstruktor.keep.pl
  • Design by flankerds.com