Jak pamięć RAM SIMM 30pin podłączyć do AVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Jak pamięć RAM SIMM 30pin podłączyć do AVR

Post autor: mariusz256 » 12 lis 2013, 13:04

Witam, Z uwagi na to ze pamięci RAM SIMM 30pin są stosunkowo tanie bo można je kupić za kilka złotych na popularnym serwisie aukcyjnym, to dają możliwość rozbudowy naszego projektu o bardzo dużą ilość dodatkowej pamięci ram.
Trudno o jakiekolwiek informacje na temat tych pamięci, to co znalazłem to jest to pamięć 8-bitowa, napięcie zasilania 5V, idealna do naszego AVR.
Google nie pomaga, nic nie mogłem znaleźć, może nie da się podłączyć tej pamięci z AVR??

Proszę o pomoc i wszystkie sugestie.

Serdecznie pozdrawiam.

Awatar użytkownika
kayron
Użytkownik
Posty: 2073
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 12 lis 2013, 17:57

W prosty sposób się nie da, bo jest to pamięć DRAM, Trzeba więc albo zbudować kontroler takiej pamięci, albo napisać specjalny program sterujący (odświeżający ją). Jedynie chyba XMEGI mają sprzętowy interfejs, do takiej pamięci, ale też typu SDRAM. a nie SIMM/EDO, które są pamięciami asynchronicznymi.
PS. W pierwszych komputerach PC, do odświeżania DRAMu korzystano z jednego kanału DMA.
Podsumowując.
Da się to zrobić,, ale w grę wchodzi tylko metoda programowa, odświeżania pamięci DRAM typu SIMM, wiąże się to jednak, z poświęceniem do tego celu jednego Timera, i pewnego czasu CPU (ok 2%). Dodatkowo trzeba i tak zbudować układ sprzętowy, który podzieli adres, na kolumny i wiersze, a to oznacza, że trzeba wytwarzać dodatkowe sygnały.
Układu całkowice sprzętowego dostępu do pamięci (MMU) nie opłaca się bardzo budować.

Z Googla też trzeba umieć korzystać.
Obrazek
Ostatnio zmieniony 12 lis 2013, 18:19 przez kayron, łącznie zmieniany 3 razy.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 12 lis 2013, 18:03

Właśnie przeglądam neta bo bardzo mnie to interesuje, do odświeżania jeszcze nie dotarłem. Te pamięci nie są czasami w technologi binarnej??, TTL i CMOS wydaje mi się ze nie będą współpracować. Tak Duża pamięć jest mi potrzebna do analizatora kilka kanałowego który chciałem zbudować. Jak często musiałbym odświeżać te dane w tej pamięci aby się nie ulotniły??


Pozdrawiam

Awatar użytkownika
kayron
Użytkownik
Posty: 2073
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 12 lis 2013, 18:24

Czas odświeżania jest podany w specyfikacji danej pamięci.
Jakiego AVRa używasz ?
Ile potrzebujesz tego RAMu podłączyć ?
Jak XMEGI to lepiej kupić SDRAM do niej. W przypadku mniejszych AVRow i tak się nie obejdziesz bez MMU (Memory Management Unit), bo nie zaadresujesz więcej niż 64KB RAM. Aczkolwiek tutaj można się pokusić o próbę znalezienia sprzętowego układu tego typu, dla jakiegoś starego procesora jak Z80, czy MC68000 i spróbować go zaadaptować do AVRa.
Nawet kiedyś miałem takie MMU w domu 74LS612 dla I286 (PC AT) bodaj było, ale do C64 tez niektórzy wkładali jak chcieli mieć 1MB RAMu.
PS. MMU mozna też zrealizowac programowo, jak masz dosyć pinów w procesorze. Ogólnie 4 dodatkowe piny dla 1MB, 5 dla 2MB, 6 dla 4MB.

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 12 lis 2013, 21:22

Chciałem użyć do tego projektu Mega128, ramu chciałem około 16MB i dostęp do tej pamięci chciałem zrobić programowo.

Widzę ze łatwe to nie będzie, szukam alternatywy.


Pozdrawiam

Awatar użytkownika
kayron
Użytkownik
Posty: 2073
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 12 lis 2013, 22:12

Na Mega128 żaden problem, Tylko trzeba poświecić jeden port, do stronicowania 16MB po 64KB. Resztę zrobisz programowo. A pamięć. 16MB SRAM kupisz za rozsądne pieniące, w dwóch scalakach po 8MB, nie warto się brudzić starymi SIMMami.
Jak byś chciał dokopcić RAMu do jakiej AMIGI, czy nawet Commodorca, no to można by się jeszcze tym hajtac, ale do AVRa nie warto.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 12 lis 2013, 23:09


Awatar użytkownika
dondu
Użytkownik
Posty: 211
Rejestracja: 24 maja 2005, 9:47
Lokalizacja: Śląskie
Kontakt:

Post autor: dondu » 13 lis 2013, 0:26

mariusz256 pisze:Tak Duża pamięć jest mi potrzebna do analizatora kilka kanałowego który chciałem zbudować.
Jakie parametry zapisu i odczytu danych oczekujesz?

Awatar użytkownika
mariusz256
Użytkownik
Posty: 144
Rejestracja: 28 wrz 2005, 17:16
Lokalizacja: Stobierna k/Rzeszowa
Kontakt:

Post autor: mariusz256 » 13 lis 2013, 19:54

Fajnie by było gdy by było około 100K odczytów z 20 kanałów cyfrowych, mam już nowy pomysł aby AVR i 20 pinów z taśmy badanego układu podłączyć prosto pod linie danych pamięci ram. Tylko pamięć musiała by być 32 bitowa, o 24 bitowych nie słyszałem, 12 bitów będzie nie używane, szkoda marnować. Rola procesora to zwiększanie adresu pamięci i później odczyt i zapis do pliku.

Awatar użytkownika
dondu
Użytkownik
Posty: 211
Rejestracja: 24 maja 2005, 9:47
Lokalizacja: Śląskie
Kontakt:

Post autor: dondu » 13 lis 2013, 20:12

Tak można robić w przypadku pamięci bez odświeżania, ale należy zastosować jakieś szybkie bufory z przerzutnikami Schmitta z możliwością wymuszenia na wyjściach stanu wysokiej impedancji. Dzięki temu:
- zabezpieczysz wejścia pamięci i mikrokontrolera,
- przerzutniki Schmitta prawidłowo rozpoznają sygnały cyfrowe,
- będziesz mógł odłączyć wejścia pomiarowe w momencie odczytywania pamięci.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 13 lis 2013, 21:28

mariusz256 pisze:Rola procesora to zwiększanie adresu pamięci i później odczyt i zapis do pliku.
Lepiej do zwiększania adresu pamięci zastosować zwykłe liczniki (ewentualnie w logice programowalnej), bo robienie tego "procesorem" nie pozwoli osiągnąć zbyt wysokich częstotliwości próbkowania. Chyba że nie zależy Ci na dużej częstotliwości próbkowania.

ODPOWIEDZ