Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Przesunięcie o 90 stopni

psiemek 16 Mar 2008 00:01 3679 12
  • #1
    psiemek
    Level 21  
    Witam,
    Mam mały problem czy w pakiecie DSP do Quartusa jest jakiś komponent do przesunięcia sygnału analogowego podanego na przetwornik A/C o 90 stopni ?? Nie wiem czy jest sens kupować ten pakiet do tego problemu. A może zna ktoś jakiś sposób na rozwiązanie problemu. Komponent musi działać od prawie 0 Hz do powiedzmy 100Hz
  • #2
    elektryk
    Level 42  
    Nie do końca rozumiem problem, wydaje mi się że przesunięcie sygnału to zwykłe przesunięcie próbek. Nie rozumiem o chodzi z tym zakresem częstotliwości, bo jeśli chcesz mieć przesunięcie o 90* sygnału względem siebie to albo masz gwarancje że sygnał składa sie z jednej częstotliwości albo musisz określić co rozumiesz przez pojęcie przesunięcia o 90* sygnału składającego się z wielu sygnałów sinusoidalnych.
  • #3
    [g.d.]
    Level 18  
    Coś mi świta że całkowanie powoduje przesunięcie o 90', może potrzebujesz poprostu filtr dolnoprzepustowy, niekoniecznie cyfrowy. Może napisz coś więcej, czy potrzebujesz praktyczne rozwiązanie czy akademickie. Może J.Akiś ekspert podpowie więcej w kwestii Quartus-a.
  • #4
    dex
    Level 27  
    dobrze kolega prawi tylko że jeszcze dochodzi 'minus' ale to chyba nie problem.

    ∫sin(x)=-cos(x)+C , także sin(x)'=cos(x) jeśli mowa o sygnale składającym się z jednej częstotliwości. Niektóre filtry mają ciekawe charakterystyki , może taki wykorzystać- filtr Hilberta (-90stopni)m filtr rózniczkujący(90stopni).

    https://www.elektroda.pl/rtvforum/topic281768.html
  • #5
    [g.d.]
    Level 18  
    dex wrote:
    dobrze kolega prawi tylko że jeszcze dochodzi 'minus' ale to chyba nie problem.
    ∫sin(x)=-cos(x)+C , także sin(x)'=cos(x)


    Nie żebym się czepiał ale -cos(x)=sin(x-pi/2), więc chyba jest O.K.

    dex wrote:
    jeśli mowa o sygnale składającym się z jednej częstotliwości.


    Nigdzie w tych wzorach nie widzę zależności od częstotliwości, więc przyznam że nie rozumiem dlaczego miałoby tak być akurat tylko dla jednej częstotliwości. Jeśli tak, to pytanie dla jakiej? :D
  • #6
    dex
    Level 27  
    Nie wchodzę w zaczepki.. To co napisałem to proste wzory ze szkoły średniej które można znaleźć w każdych tablicach. Wynika z nich że można przesunąć fazę w 'lewo lub w prawo' całkując czy to rózniczkując. Każdy przekształci sobie to co mu pasuje.

    Co do częstotliwości to się zastanów jak przy złozonym pasmowym,sygnale, będziesz analizował przesunięcie fazy.
  • #7
    sosen21
    Level 12  
    Moim zdaniem układy całkujące i różniczkujące się nie nadadzą ze względu na swoją charakterystykę amplitudową. Ja bym się zainteresował transformatą i filtrem Hilberta. Filtr Hilberta posiada teoretycznie "płaską" charakterystykę amplitudową. Nie wiem niestety jak się go realizuje w praktyce - można policzyć splot. Charakterystyka fazowa może być płaska jednak tylko w pewnym zakresie.

    Jeśli używasz Matlaba to taki cyfrowy filtr możesz sobie zaprojektować w fdatool i wygenerować kod VHDL za pomocą HDL Coder. Może jest prostszy sposób ale ja znam taki.
  • #8
    psiemek
    Level 21  
    Hmm przeglądałem właśnie teorię o filtrze Hilberta i właśnie chodziło mi o coś takiego. Problem jest w tym że znalazłem gdzieś na jakiejś stronie że jest to filtr teoretycznie niesyntetyzowalny. Ciekawe co to znaczy :) Czy wie ktoś czy znajdę go w jakimś pakiecie (np. DSP do Quartusa) ? Ewentualnie czy to dobra droga opisana przez "Sosen21". Nigdy nie robiłem tego w ten sposób choć wydaje się ciekawy.

    Pozdrawiam i dziękuję za podpowiedzi.
  • Helpful post
    #9
    sosen21
    Level 12  
    Idealnego filtru Hilberta nie zrealizujesz w praktyce. Da się jedynie zrobić taki filtr dla pewnego zakresu częstotliwości i odpowiedniego rzędu aby charakterystyka amplitudowa była w miarę płaska w zadanym zakresie. Bo po co Ci filtr idealny jeśli masz jakieś swoje, zadane próbkowanie, które jest sporo niższe od nieskończoności;) Wszystko możesz dobrać w Matlabie. Jeśli jednak jest prostszy sposób (gotowy komponent) to oczywiście warto spróbować. Pozdrawiam.
  • Helpful post
    #11
    elektryk
    Level 42  
    [g.d.] wrote:
    Nigdzie w tych wzorach nie widzę zależności od częstotliwości, więc przyznam że nie rozumiem dlaczego miałoby tak być akurat tylko dla jednej częstotliwości. Jeśli tak, to pytanie dla jakiej? :D
    A widzisz więcej niż jedną? We wzorach podane jest sin(x) i tyle, a nie ma sin(w1*t)+sin(w2*t) etc.
    Zgodnie z transformatą Fouriera każdy sygnał niesinusoidalny można rozbić na harmoniczne, jeśli teraz każdą harmoniczną przesunąć o 90* i zrobić odwrotną transformatę to masz sygnał taki o jaki pytasz. Problem jest tylko jak to zrobić matematycznie na jakimś układzie cyfrowym, bo transformata FFT czy DFT to nie problem, przesunięcie o 90* też da się zrobić, ale wynikiem tego będzie charakterystyka przypominająca "grzebień". Te częstotliwości które będą dokładnie w prążka widma będą dokładnie przesunięte, inne mogą nie być dokładnie, albo w ogóle wycięte.
    psiemek wrote:
    Właśnie o to mi chodzi. Mi potrzeba filtr Hilberta działający w zakresie powiedzmy 1Hz - 1kHz. Wie może ktoś czy jest on w jakimś pakiecie do jakiejś rodziny FPGA ?
    Ale filtr Hilberta to model abstrakcyjny, tam gdzie się go używa do modulacji stosuje się kompletne modulatory analogowe. A co do problemu, to musisz jeszcze określić o jaką "dokładność" przesunięcia chodzi. Wszystko ogranicza się do pasma w jakim ma układ działać, jeśli będzie bardzo wąskie to wystarczy próbkować sygnał (o częstotliwości Y Hz) z częstotliwością X Hz, a następnie opóźnić sygnał o X/(4*Y) próbek. Tyle że to będzie działać wyłącznie dla częstotliwość Y (oraz bliskich). Najlepiej to sobie przesymulować, np w Matlab.
  • Helpful post
    #12
    sosen21
    Level 12  
    W Matlabie można zaprojektować odpowiedni filtr (HDL Coder napisze go za nas w VHDLu lub Verilogu). Im wyższy rząd filtru tym bardziej płaska charakterystyka amplitudowa. Oczywiście można poddać taki filtr symulacji. Nie wiem jak obliczeniowo poradzi sobie FPGA z filtrem Hilberta wyższego rzędu (nie znam się) ale można spróbować. W załączniku kilka przykładowych charakterystyk amplitudowych (w funkcji unormowanej częstotliwości) dla filtrów rzędu 20, 50 i 100. Jak widać filtr rzędu 100 daje już całkiem przyzwoite rezultaty. Gdybym miał czas to sam bym się pobawił - to dla mnie ciekawy temat (FPGA+DSP).
  • #13
    psiemek
    Level 21  
    Dzięki za informacje. Tyle że nadal nikt mi nie odpowiedział czy w którymś pakiecie jest ten filtr Hilberta. Jeżeli ma ktoś pakiet DSP do Quartusa to proszę o info czy tam jest taki klocek. Pomysł z Matlabem jest fajny ale na razie szukam prostszej metody o ile jest takowa.

    Pozdrawiam
    Przemek