logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czy do sterowania pamięcią DRAM wystarczy jedynie kontroler?

artek3xp 24 Sty 2005 02:44 2012 8
REKLAMA
  • #1 1164311
    artek3xp
    Poziom 10  
    Posty: 42
    Ocena: 1
    Witam.
    Mam pytanie dotyczace pamieci DRAM.Czy taka pamiec wraz z kontrolerem ktory adres liniowy dzieli na wiersze i kolumny i odpowiednio zatrzaskuje w tej pamieci moze byc bezposrednio polaczona z urzadzeniem(np.mikrokontrolerem) ktory takiej pamieci nie obsluguje.Chodzi mi o zgodnosc sprzetowa ,bo jak wiem programowo mozna to zrobic.Po prostu czy zwyczajne linie sterujace pamiecia SRAM(WE#,RD# ,Adress) wystarcza do obslugi DRAM'u z odpowiednim kontrolerem.
    Dzieki.
  • REKLAMA
  • #2 1164428
    SIEKIERA_666
    Poziom 22  
    Posty: 505
    Pomógł: 22
    Ocena: 79
    Należy pamiętać jeszcze o odświeżaniu ;)

    :bye:
  • REKLAMA
  • #3 1167220
    natalia.
    Poziom 14  
    Posty: 65
    Pomógł: 2
    artek3xp napisał:
    Witam.
    Mam pytanie dotyczace pamieci DRAM.Czy taka pamiec wraz z kontrolerem ktory adres liniowy dzieli na wiersze i kolumny i odpowiednio zatrzaskuje w tej pamieci moze byc bezposrednio polaczona z urzadzeniem(np.mikrokontrolerem) ktory takiej pamieci nie obsluguje.Chodzi mi o zgodnosc sprzetowa ,bo jak wiem programowo mozna to zrobic.Po prostu czy zwyczajne linie sterujace pamiecia SRAM(WE#,RD# ,Adress) wystarcza do obslugi DRAM'u z odpowiednim kontrolerem.
    Dzieki.

    Tak, taki kontroler najprościej jest zrobić na bazie przykładowo układu 74157 i kilku bramek. Największy problem będziesz miał (bo mniemam, że realizujesz obsługę DRAM po raz pierwszy) z zamianą typowych sterowań mikrokontrolerów dla pamięci statycznych (#WR, #RD) na sterowania wymagane przez pamięci dynamiczne #RAS i #CAS. Problem odświeżania można rozwiązać w ten sposób, że w przerwaniach od czasu będziesz odświeżać cały wiersz pamięci dynamicznej (taka koncepcja jest właśnie zastosowana w PC-tach).
  • REKLAMA
  • #4 1167560
    artek3xp
    Poziom 10  
    Posty: 42
    Ocena: 1
    Hey
    Widze ze musze sprecyzowac pytanie.
    Wiec jesli mam taki kontroler to czy powinien on w jakis sposob komunikowac sie z urzadzeniem sterujacym(np.uP).Nie chodzi mi o podstawowe linie #RAS #CAS #WR ale informacje w jakim stanie sie znajduje-czy jest w stanie odswiezania zeby uP nie wystawil adresu i nie probowal pobrac danych.Poza tym czy powinna byc specjalna linia oznaczajaca poczatek cyklu (odczyt).Dlatego pytam sie o zgodnosc sprzetowa ,bo programowo latwo jest napisac funkcje realizujace odczyt, zapis i odswierzanie.
    dzieki
  • #5 1654315
    victoriii
    Poziom 19  
    Posty: 322
    Pomógł: 11
    Ocena: 43
    Witam,
    Proponuje spojrzec na www.myplace.nu, jest tam przykladowy kontroler DRAM na AVR, bodajze 2313. Jesli chodzi o kontroler, to mysle ze mozna zrobic sterownik na jakims AVR i odczytywac pamiec DRAM przez SPI (o ile ma byc to pamiec danych a nie programu), ewentualnie zobaczyc na www.opencores.org, byc moze sa tam jakies rdzenie IP do zaimplementowania w PLD.
  • REKLAMA
  • #6 1654390
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Poszukaj na stronie autora YAMPP`a on robił projekt jakiegoś atmelka i chyba pamięci SIMM. Osobiście bym się trzymał z daleka jeśli chodzi o dobudowywanie pamięci dynamicznej do mikrokontrolerów które nie są do tego przeznaczone.
  • #7 1654633
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Kontroler robi sie po to by odciazyc procesor z przejmowania sie detalami komunikacji z taka pamiecia. Konkretne rozwiazanie kontrolera zalezy od typu procesora uzywajacego tej pamieci oraz od architektury szyny danych i sygnalow sterujacych oraz od predkosci transferu danych. Inaczej bedzie wygladal kontroler pamieci DRAM a inaczej DDR.
    Kontroler sam powinien zajmowac sie odswiezaniem pamieci i synchronizacja dostepu. handshake z procesorem zwykle zapewnia sie sygnalami statusu typuWait/Ready.
    latwo taki kontroler zrobic w CPLD lub FPGA. Do pamieci DDR szczegolnie dobrze nadaja sie uklady CoolRunner-II. W watku LCD od Laptopa przedstawilem projekt prostego interface do panelu LCD zawierajacy rowniez sterownik pamieci DRAM. Mozesz sobie go przeanalizowac, to zyskasz pojecie jak to wyglada dla prostych pamieci. Bardziej skomplikowane sterowniki znajdziesz na stronach opencores, xilinx, Altera.
    A tak w ogole to o jakims konkretnym typie sterownika pamieci DRAM myslisz czy dopiero kombinujesz jak do tego podejsc ?

    Poza tym wszystkim to temat wyglada na mocno nieswiezy. Ciekaw jestem czy autor jest jeszcze zainteresowany :)
  • #8 1654811
    artek3xp
    Poziom 10  
    Posty: 42
    Ocena: 1
    Pytanie do Yego666 -dane z pamieci do matrycy musza byc przesylane bez przerwy wiec co sie dzieje gdy pamiec potrzebuje odswierzenia.Z tego co rozumiem podczas odswierzania pamiec DRAM trzeba odciac i "przeleciec" przez wszystkie wiersze.Matryca wtedy wyswietla jakies przypadkowe dane-czy jest to widoczne.Byc moze jest to na tyle krotki proces ze nie wplywa na obraz ,nie wiem,wiec jak mozesz to podaj wartosci czasowe.

    dzieki
  • #9 1654881
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    W przypadku projektu z matryca LCD nie ma potrzeby osobnego odswiezania RAMu gdyz jest on cyklicznie odczytywany przez proces przemiatania matrycy. Kazdy odczyt stanowi cykl odswiezenia.
    DRAM nalezy odswiezac wtedy gdy nie mozesz zagwarantowac ze w czasie 2ms zostana odczytane wszystkie rzedy. Stad nie ma tu osobnego cyklu do refresha pamieci. Dolozenie go jednak nie jest wielkim problemem gdyz pamiec ma czas cyklu okolo 120ns, podczas gdy przecietny mikrokontroler ma czas cyklu dostepu do pamieci zewnetrznej rzedu 500ns. Mamy sporo czasu na wplecenie cykli odswiezania tak by procek nawet nie zauwazyl tego.

Podsumowanie tematu

✨ Do sterowania pamięcią DRAM nie wystarczy jedynie kontroler adresujący linie wierszy i kolumn oraz zatrzaskujący dane; konieczne jest także zapewnienie odświeżania pamięci, które jest kluczowe dla jej poprawnej pracy. Kontroler powinien samodzielnie zarządzać sygnałami #RAS, #CAS oraz odświeżaniem, a także synchronizować dostęp do pamięci, często realizując handshake z procesorem za pomocą sygnałów statusu typu Wait/Ready. W praktyce kontroler może być zrealizowany na bazie prostych układów logicznych (np. 74157 i bramek) lub bardziej zaawansowanych rozwiązań w CPLD/FPGA, co pozwala odciążyć mikrokontroler, który nie jest natywnie przystosowany do obsługi DRAM. W przypadku zastosowań takich jak matryce LCD, odświeżanie DRAM może być realizowane cyklicznie podczas normalnego odczytu danych, eliminując potrzebę osobnego cyklu odświeżania. Czas cyklu pamięci DRAM (~120 ns) jest na tyle krótki, że można go wpleść w dostęp mikrokontrolera (zwykle ~500 ns) bez zauważalnego wpływu na działanie systemu. Warto rozważyć gotowe projekty kontrolerów DRAM na platformach AVR lub rdzenie IP dostępne na stronach takich jak opencores.org. Kontroler powinien także informować urządzenie nadrzędne o stanie pamięci, np. czy trwa odświeżanie, aby uniknąć konfliktów adresowych i zapewnić poprawną współpracę sprzętową.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA