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.

[Rozwiązano] Brak adresowania wierszy w pamięci SDRAM.

07 Sie 2019 08:06 345 4
  • Poziom 43  
    Witam.
    Stworzyłem własny kontroler SDRAM na FPGA.
    Celowo własny bo gotowe nie spełniają moich wymagań.
    Np. gotowy Lattica:
    http://www.latticesemi.com/en/Products/Design...ferenceDesign04/SDR-SDRAM-Controller-Advanced
    Ma taki opis:
    Cytat:
    For sequential access applications and those with page memory management, the proper address assignments
    and the use of the SDRAM pipeline feature deliver the highest performance SDRAM controller. However, this type
    of controller design is highly associated with the bus master cycle specification and will not fit the general applications.
    Therefore, this SDRAM controller design does not implement these custom features to achieve the highest
    performance through these techniques.

    Bez tego każdy zapis i odczyt to jakieś 10 cykli z więc wydajność pamięci to będzie tylko 10% maksymalnej.
    Ja potrzebuję więcej. Do tego potrzebuję zapisywać i odczytywać jedynie całe wiersze co sprawia że taki własny kontroler też będzie dość prosty.
    Niestety mam jakiś problem z adresowaniem wierszy.
    Jest to dziwne bo zaadresowanie wierszy jest w ogóle wymagane do użycia pamięci. Zaadresowanie nie tylko adresuje ale i otwiera (aktywuje) wiersz do odczytu lub zapisu.
    Bez zaadresowania pamięć nie działała by na jakimś domyślnym czy losowym adresie. W ogóle by nie działała.
    A jakoś działa, więc z tego by wychodziło że adresowanie jednak działa. No ale jednak nie tak jak powinno.
    To adresowanie nazywa się "Active". Czyli aktywowanie (aktywowanie wierszy).
    Kod kontrolera mam taki:
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod
  • Poziom 1  
  • Poziom 43  
    Nie, bo nie mam modelu pamięci.
    Widzę że kod mi się źle wkleił. Poprawiłem.
  • Pomocny post
    Poziom 1  
  • Poziom 43  
    Znalazłem błędy.
    Problem był w komendach Precharge.
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod

    Kod: vhdl
    Zaloguj się, aby zobaczyć kod

    Były tam kombinacje sterujące:
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod

    które są błędne, bo to kombinacje skopiowane z komendy NOP.
    Powinny być:
    Kod: vhdl
    Zaloguj się, aby zobaczyć kod