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

[Spartan-6] Taktowanie pamięci Block RAM z DCM

vmario 29 Mar 2012 10:04 1416 0
  • #1
    vmario
    Poziom 14  
    Mam problem z taktowaniem pamięci Block RAM (BRAM 18k) z zegara DCM. Teoretycznie działanie tej pamięci powinno się przedstawiać następująco:

    1. Wystawiam adres na wejście adresowe BRAM.
    2. Podaję zbocze narastające (nazwijmy je T0) na wejście zegara.
    3. Pamięć wystawia dane.
    4. Odczytuję dane z wyjścia danych BRAM na zboczu opadającym lub następnym zboczu narastającym (nazwijmy je T1).

    I tak działa pamięć, gdy taktuję ją bezpośrednio z pinu, na który podaję z zewnętrznego układu scalonego zegar 20MHz. Tak samo zachowuje się, gdy taktuję ją z dzielnika, który dzieli przez 2 sygnał z DCM-a. Jednak, gdy taktuję ją z wyjścia DCM-a, dane mogę odczytać dopiero na zboczu T2, na T1 są wciąż dane z poprzedniego adresu.

    W czym może być problem? Potrzebny jest jakiś rebuffering sygnału zegarowego z DCM-a? Obciążenie tej linii zegarowej jest spore, bo jest tam kilkaset wejść, ale w takim razie, dlaczego problemy występuje tylko przy taktowaniu DCM-em?

    Dodam, że PLL DCM-a jest tak skonfigurowana, że na wyjściu otrzymuję tę samą częstotliwość, co na wejściu (DCM służy mi do odwracania fazy zegara, może w przyszłości jeszcze do czegoś), więc nie powinno chodzić o częstotliwość taktowania. PLL w Spartanie-6 może pracować od 19MHz, więc 20MHz powinno być OK.