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

Xilinx - Wykorzystanie DCM

kulpina 16 Gru 2012 17:07 1995 11
  • #1 16 Gru 2012 17:07
    kulpina
    Poziom 14  

    Mamy ostatnio do zrobienia na zajęciach proste projekty na Spartanach.
    W jednym z nich potrzebuję sygnału 1Hz.
    Na płytce mam zegar 100MHz i dzielenie tego przez 100 milionów nie jest dobrym pomysłem - najlepszym rozwiązaniem jest właśnie wykorzystanie DCMa.

    Jak to zrobić? Tzn jak podłączyć go do reszty bramek? (tak, nie piszemy w VHDLu, ani Verilogu, tylko rysujemy :<).

    Dodam, że szukałem w googlach i nocie, ale nie dopatrzyłem się tam odpowiedzi na tak podstawowe pytanie ;)

    Pozdrawiam
    kulpina

    0 11
  • #2 17 Gru 2012 00:57
    J.A
    Poziom 27  

    kulpina napisał:
    Na płytce mam zegar 100MHz i dzielenie tego przez 100 milionów nie jest dobrym
    pomysłem - najlepszym rozwiązaniem jest właśnie wykorzystanie DCMa.

    DCM moze zmniejszyc wejsciowa czestotliwosc, ale na pewno nie do pojedynczych
    Hz, musisz aprawdzic w datasheet spartana jaka jest najmniejsza osiagalna
    czestotliwosc DCM, a dalej pozostaje zmniejszanie czestotliwosci poprzez licznik;

    kulpina napisał:
    Tzn jak podłączyć go do reszty bramek? (tak, nie piszemy
    w VHDLu, ani Verilogu, tylko rysujemy :<).

    jak narysowac tez nie wiem, nawet nie napisales w jakim narzedziu 'rysujesz';

    j.a

    0
  • #4 17 Gru 2012 13:16
    kulpina
    Poziom 14  

    Jasne, Spartan 3 ;) Mam małą płytkę 100k bramek, używam narzędzi z Xilinxowego Webpacka.
    Nie musi się dać podzielić do 1Hz, wystarczy cokolwiek mniej niż 10MHz, może jakieś kHz, to już wystarczy.

    0
  • #5 08 Sty 2013 12:04
    mikkel
    Poziom 13  

    Nie jestem pewien ale chyba DCM "schodzi" do 10MHz a może do 5. Jeżeli Twoja prośba jest wciąż aktualna to napisz a zrobię tutoriala.

    0
  • #6 08 Sty 2013 15:37
    kulpina
    Poziom 14  

    Jeśli chodzi o schematic, to znalazłem w bibliotekach DCM - nie użyłem go, ale zdaje się to nietrudne - po prostu dodaje się dodatkowy element i można zmieniać jego właściwości.

    Moja prośba jest aktualna o tyle, że możliwości podziału DCMa są dość mało atrakcyjne - dzieli chyba max 5 razy. Jak więc elegancko podzielić częstotliwości rzędu MHz, aby uzyskać pojedyncze Hz? Na przerzutnikach D? To jest na pewno najlepszy sposób?

    0
  • #7 08 Sty 2013 16:40
    mikkel
    Poziom 13  

    To nie jest najlepszy sposób ale raczej jedyny. Nawet na spartanie 6 można zejść na minimum 10 czy 5MHz nie pamiętam dokładnie więc w Twoim przypadku bez licznika się nie obejdzie.

    0
  • #8 08 Sty 2013 17:01
    kulpina
    Poziom 14  

    Czyli pozostaje albo zewnętrzne źródło sygnału zegarowego (kwarc 32768Hz), albo dzielenie 10MHz. No trudno, Dzięki za porady! :)

    0
  • #9 08 Sty 2013 18:01
    BlueDraco
    Specjalista - Mikrokontrolery

    Naprawdę szkoda Ci marnych kilkunastu przerzutników na ten dzielnik?

    0
  • #10 08 Sty 2013 21:00
    kulpina
    Poziom 14  

    Nie szkoda, tylko nie jestem przekonany do rozwiązania wykorzystującego 20 przerzutników, z których każdy wprowadzi swoje opóźnienie itd.
    Ale skoro to jedyna możliwość, to okej.

    0
  • #11 08 Sty 2013 21:18
    BlueDraco
    Specjalista - Mikrokontrolery

    Nie wprowadzi każdy, tylko ostatni, o ile to będzie licznik synchroniczny, a innego chyba nawet się nie da zrobić.

    0
  • #12 08 Sty 2013 23:46
    tymon_x
    Poziom 30  

    BlueDraco napisał:
    Nie wprowadzi każdy, tylko ostatni, o ile to będzie licznik synchroniczny, a innego chyba nawet się nie da zrobić.

    Niet.

    Opóźnienie będzie równe najdłuższej ścieżce krytycznej. Jeśli jest to dzielnik 2^N, gdzie składa się z samych przerzutników, najdłuższe opóźnienie będzie wynikało zazwyczaj z odległości sąsiadujących bloków CLB, jeśli to licznik wymagający komparatora, liczy się ścieżka od wejścia komparatora do wejścia resetu liczników, im większy tym zazwyczaj większa. Piszę zazwyczaj bo to już zależy od wielu czynników, nie tylko optymalizacyjnych.

    Możesz użyć kasdady DCM jak masz kilka i nie szkoda. Puść zegar po DCM na wszystkie przerzutniki, po dzielniku zrób detektor zbocza i wprowadź taki sygnał na enable przerzutników. Jest to klasyczna metoda spowolnienia logiki.

    Nieeleganckie by było puszczenie wprost z takiego dzielnika na linie zegarową.

    0