Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

DCM i dynamiczna zmiana fazy

11 Gru 2007 15:45 1560 5
  • Poziom 15  
    Witam
    Mam pytanie odnośnie dynamicznej zmiany fazy w DCM Xilinxa. Chcę zrobić aplikację, która zmienia fazę o zadaną wartość (np. odczytaną z tablicy bądź pamięci). Parametr decydujący o zmianie wartości fazy to PHASE_SHIFT. Pytanie jak przekazać do niego wartość. Próbowałem przypisać do PHASE_SHIFT wartość sygnału ale niestety nie działa:?:.
    Pozdrawiam

    Dodano po 40 [minuty]:

    Witam
    Dziękuję za odpowiedź. Zdaję sobie sprawę że "ziarno" z jaką można przesuwać fazę jest ograniczone. Niemniej mam problem z wczytaniem tejże wartości do parametru PHASE_SHIFT. Nota aplikacyjna Xilinxa nie zawiera informacji jak aktualizować ten parametr w trakcie pracy DCM.Przejrzę załączoną dokumentację, może ona ułatwi mi sprawę :idea:.
    Pozdrawiam
  • Pomocny post
    Poziom 18  
    obinobi napisał:
    Parametr decydujący o zmianie wartości fazy to PHASE_SHIFT. Pytanie jak przekazać do niego wartość. Próbowałem przypisać do PHASE_SHIFT wartość sygnału ale niestety nie działa:?:.

    Parametry nie są dynamiczne, są to statyczne elementy interfejsu. Wartość przesunięcia zwiększa się bądź zmniejsza sterując portami PSEN, PSINCDEC, PSCLK.

    obinobi napisał:

    Przejrzę załączoną dokumentację, może ona ułatwi mi sprawę :idea:.

    Od tego mogłeś zacząć :D
    Pozdrawiam
  • Poziom 27  
    obinobi napisał:
    Chcę zrobić aplikację, która zmienia fazę

    jesli to nie sekret - czemu to bedzie sluzyc ?
    J.A
  • Poziom 15  
    Tak na wstępie przypadkowo usunąłem pierwszą odpowiedź na mój post. Z załączoną notą Xilinxa XAPP462 zapoznałem się wcześniej, ale mylnie sądziłem, że można parametr PHASE_SHIFT zmieniać. Czyli jak dobrze rozumiem, jeżeli parametr ten zdefiniowany jest jako X to przy kolejnych cyklach np. inkrementacji fazy sygnał wyjścia zostanie przesunięty o 2X, 3X względem wejścia, aż nie nie przekroczy określonego limitu (wtedy STATUS(0) ma stan wysoki). Póki co przesuwa fazę o X i na tym koniec (pewnie błędy przy sterowaniu).
    Co do aplikacji to mogę wstępnie odpowiedzieć, iż tyczy się ona zagadnień związanych z szeroko pojętym DSP.
    Pozdrawiam
  • Poziom 18  
    obinobi napisał:
    Czyli jak dobrze rozumiem, jeżeli parametr ten zdefiniowany jest jako X to przy kolejnych cyklach np. inkrementacji fazy sygnał wyjścia zostanie przesunięty o 2X, 3X względem wejścia, aż nie nie przekroczy określonego limitu (wtedy STATUS(0) ma stan wysoki).

    Żle rozumiesz. PHASE_SHIFT określa Ci fazę początkową, jest o liczba z przedziału -255 do 255, ale jest to dwa razy zawinięty na siebie przedział 0 do 255. Parametr CLKOUT_PHASE_SHIFT określa czy chcesz zmieniać fazę i czy w ogóle chcesz używać linii opóźniającej. Narastające zbocze na PSCLK przy PSEN='1', PSINCDEC='1', zwiększa opóźnienie o 1/256 część okresu, narastające zbocze na PSCLK przy PSEN='1', PSINCDEC='0', zmniejsza opóźnienie o 1/256 część okresu. Limitem jest "długość" linii opóźniającej z tego co pamiętam około 1ns.
    obinobi napisał:

    Co do aplikacji to mogę wstępnie odpowiedzieć, iż tyczy się ona zagadnień związanych z szeroko pojętym DSP.

    Byle nie zbyt szeroko. :D Jeśli chcesz zrealizować oversampling to od tego też jest nota aplikacyjna, chyba nawet z przykładami. Strzelałem z tym oversampling'iem więc prosze mnie nie krytykować.
  • Poziom 12  
    obinobi napisał:
    Tak na wstępie przypadkowo usunąłem pierwszą odpowiedź na mój post.


    Witam,

    Tak na prawdę to ja przez przypadek usunąłem mój post. Niewiele wniesie on nowego ale wkleję jego zawartość, żeby była jasność i przejrzystość tego wątku.

    cantona83 napisał:

    Z dynamiczną zmianą fazy związane są wejścia
    - PSEN, '1' - aktywacja phase shifting, '0' - deaktywacja
    - PSINCDEC - '0' zmniejsz fazę o 1/256, '1' zwiększ fazę o 1/256
    - PSCLK - zegar wejściowy, w którym zmieniamy fazę,

    oraz wyjścia:
    - PSDONE - '1' operacja przesunięcia wykonana poprawnie, '0' - operacja przesunięcia w trakcie wykonywania
    - STATUS[0] - Overflow '1' kiedy została osiągnięta wartość -255 lub + 255.

    Jeżeli dobrze zrozumiałem to byś chciał zmieniać fazę o dowolną wartość, a w dynamicznej zmianie fazy, można ją zwiększać lub zmniejszać o 1/256 fazy co cykl zegara.

    Zamieszczam dobry dokument opisujący DCM.


    Za zamieszanie przepraszam:D
    Załączniki: