Forum: Mikrocontroller und Digitale Elektronik uralte RAM(?)-Riegel; was/wie ist das?


von Christian W. (clupus)


Lesenswert?

Hallo allerseits,

ich habe beim aussortieren ein paar alte RAM-Riegel (?) gefunden. Ich
weiß nicht genau, ob das wirklich RAMs sind, waren zumindest in einer
Kiste, wo das draufstand.
Leider hab ich solche Dinger noch nicht gesehen. Es sind kleine
Platinen, die so alle ca. 3 Chips aufgelötet haben (z.B. M5M41000AJ
oder TC511000AJ). Die Platinchen haben beidseitige Anschlüsse, ähnlich
denen einer SD-RAM-Platine. Rastermaß: ca. 2,54mm. Anzahl Anschlüsse:
2x30; scheinen von vorne nach inten durchkontaktiert zu sein.
Ich wollte nun eigentlich nur wissen, was das ist (wenn ich noch
irgendwo eine Digi-Cam auftreibe schicke ich noch ein Bild) und ob man
es noch verwenden kann (nicht als PC-RAM sondern eher an irgendwelche
µC-Schaltungen o.ä)

MfG
Christian

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist ein altes 8-Bit SIMM mit 30 Kontakten. Wenn drei Chips
aufgelötet sind, sind zwei davon 4 Bit breit organisiert und der dritte
ein Bit breit organisiert, der stellt dann ein neuntes, in der Regel als
Parity genutztes Bit zur Verfügung.
Auch verbreitet war eine Bestückung mit 8 bzw. 9 identischen, ein Bit
breit organisierten Bausteinen.

Die Speicherbausteine selbst sind klassisches DRAM, kein EDO, höchstens
Fast-Page-Mode.

In dieser Bauform gab es Module mit Kapazitäten zwischen 256 kBit *
8(9) und 4 MBit * 8(9).

Die von Dir genannten Speicherbausteine sind 1 MBit * 1 organisiert.

Verwendet wurden diese Speichermodule in alten PCs so im Zeitrahmen
286er (immer paarweise) und frühe 486er (immer in 4er-Packs).

Es gab diese Speichermodule auch mit angelöteten Beinchen (eine Reihe à
30 Pins), die hießen dann SIPP.

Ein solches Speichermodul eignet sich durchaus, um es mit
Software-Refresh und Software-Multiplex an einen AVR anzuschließen, vor
allem, da diese Module mit 5V Versorgungsspannung betrieben werden.

Mehr dazu hier
http://www.mikrocontroller.net/forum/read-4-121457.html#121457

von Christian W. (clupus)


Lesenswert?

Danke schonmal
Christian

von Christian W. (clupus)


Lesenswert?

OK, ich hab mir mal den Thraed durchgelesen, allerdings ist das - soweit
ich es beurteilen kann - ein Thread zum Thema "Wie binde ich ein
DRAM-*Chip* ein?", oder?

Ich wollte eigentlich die Dinger nicht ausenander löten; befürchte, da
mache ich viel kaputt. Gibt es eine Möglichkeit, die Bausteine (so wie
sie sind) direkt einzustecken (passender Verbinder vorausgesetzt)?
Ich hab nämlich leider keinen Schalt-/Anschlussplan.

MfG
Christian

von Benedikt (Gast)


Lesenswert?

Doch, in der DRAM_Controller.zip ist auch eine Version für DRAMs ohne
OE\ und die läuft mit den SIMM Modulen.

Diese gab es auch als 16MB Version (nur mal der Vollständigkeit halber)
aber diese waren damals unbezahlbar. Ich hatte damals für 4MB rund 120DM
bezahlt...

von Christian W. (clupus)


Lesenswert?

@Benedikt:
Sorry, wenn ich in deinem Archiv nicht so ganz das Finde, was ich
suche:
Aber ich finde nur in der readme annähernd Infos, wie ich ein
DRAM-Modul anschließen muss. Aber soweit ich das sehe, ist der
Anschlussplan der, der dem kleinen 1-Chip-Speicher (s. Bild)
beschreibt.

Ich suche aber den Anschlussplan eines SIMMs. Bitte enschuldige mich,
falls ich falsch liegen sollte (+ Korrektur, bitte!), aber ich finde
diesbezüglich keine Infos in dem Archiv. Oder sind die irgendwo in den
Quellcodes verstecht?

MfG
Christian

von Benedikt (Gast)


Lesenswert?

Die Anschlussbelegung eines SIMMs findet man über google.
In der dramio.h kann man die Anschlussbelegung dann eingeben, welcher
Pin wo am AVR angeschlossen ist.

von Christian Wolf (Gast)


Lesenswert?

Also ich hab jetzt unter
http://www.elektroniklager.de/pc-sup/d_dta-pc-tech-bus.htm#30PINSIMM
was gefnden. Allerdings werde ich nicht so schlau darüber, wie ich
auf den Speicher zugreifen kann (könnte ihn nämlich in meinem aktuellen
Projekt gut gebrauchen ;-).

Ich suche also so was wie ein Protokoll. Ehrlich gesagt, blicke ich bei
dem ASM nicht merwirklichdurch, da mir die Zusammenhäge etwas fehlen.
Kann mirzwar so grob denken, was da geht, aber warum man das macht
bleibt im Dunkeln.

Und die Antwort auf ein paar Fragen wären vermutlich hilfreich (Sorry,
fürs viele Lesen):
1. Wiso finde ich viele der PINs aus der DRAMIO.h nicht auf der Liste?
Haben die da andere Namen?
2. So ein Standard-SIMM ist doch one OE-Leitung, oder nicht?
3. Habe ich das richtig verstanden, das 8/9/10 Adressleitungen (je nach
Größe), 8 Datenleitungen und noch bis zu 5 Steuerleitungen (RAS, CASL,
CASH, WE und OE) nötig sind? Warum sind dann in den Definitionen nur
die Adressleitungen A8, A9 und A10 eingebaut?
Was sind das alles für (Steuer-)Leitungen?
WE dürfte "Write Enable" sein (1=lesen, 0=schreiben, da vermutlich
invertiert)
OE (auch wenn nicht vorhanden irdendwas mit Output Enable. Vermutlich
um mehrere Chips zusammen auf einem Datenbus zu betreiben, oder?
RAS ist (laut wikipedia) die Reihenadresse(?). CAS sei die
Spaltenadresse. Wie ist so ein Modul jetzt (in Spalten und reihen)
organisiert? Wo wird negative Logik verwendet (Eingänge invertiert)?
4. Warum werden 4 Byte breite Adressen verwendet, wo doch 3 Byts
reichen würden? Liegt das blos an der C-Definition, dass long 4 Bytes
enthält?
5. [offtopic] Nur aus Interesse, weil ich's hier sehe: Woher weißt
man, wo der gcc die Parameter übergibt? Ich meine es gibt 32 Register,
da ist die Trefferwahrscheinlichkeit recht klein ;-).

Ich hoffe, das sich das scnell löst (wenn ich mal die nötigen Infos
habe, werd ich auch nciht mer nerven, ich versprech's! ;-) )

MfG und Danke schonmal
Christian

von Benedikt (Gast)


Lesenswert?

1. Welche denn z.B. ?
2. Ja
3. A0-7 wird auf immer angesteuert, da kleinere DRAMs selten sind.
A8-10 werden nur bei Bedarf bitweise angesteuert und sind daher frei
belegbar.
RAS, CAS, WE und OE sind negativ. Irgendwo weiter unten in dem
Orginalthread habe ich ein paar Grundlagen zu DRAMs aus einem alten
Darenblatt gepostet, da ist das gut erklärt.
4. In C gibt es keine standard 3Byte großen Variablen.
5. Das steht in der Dokumentation vom avr gcc.

von Christian W. (clupus)


Lesenswert?

Hallo,
1. ich meine so die CASL und CASH. Ich vermute, dass das die CAS und 
CASP sind, aber welches ist welches?
3. Ahh, ok. Sorry, übersehen O:-)
Wie ist denn eigentlich so ein Modul jetzt (in Spalten und Reihen) 
organisiert?
5. In welcher Doku meinst du? Im Tutorial hier im Forum wird auf ASM 
kaum eingegangen. Und ehrlich gesagt, in den man-pages ist nur der 
Aufruf von gcc angegeben. Es muss irgendwas geben, das ist klar, nur hab 
ich bisher noch inx brauchbares gefunden (unter 
http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gcc finde ich auch nicht viel 
zum Programmieren, nur zum Aufruf von gcc & Co.). Vllt. kannst du mich 
hier aufklären ;-).

MfG und Danke schon mal
Christian

von Benedikt (Gast)


Lesenswert?

1. CASP braucht man nicht, das kann man nur zur Fehlerkontrolle 
verwenden. CASL und CASH gibt es nur bei 16bit DRAMs, die SIMMs haben 
nur 8bit, daher wird nur CASL verwendet.
5. Im avr libc Manual ist das beschrieben.

Die Organistion der DRAMs ist immer Wurzel(Größe). Ein 64kByte DRAM hat 
also 256 Zeilen und 256 Spalten. Das nächstgrößere ist 512x512=256kByte 
usw.

von Christian W. (clupus)


Lesenswert?

> 5. Im avr libc Manual ist das beschrieben.
Naja, so wirlich steht da auch nix, wie ich einer Funktion (ASM) einen 
Parameter aus C übergebe, aber ich glaube, ich hab es trotzdem 
verstanden. Stimmt folgendes:
Wird eine Funktion übergeben, werden die Parameter in einzelne Bytes 
zerstückelt und dann in der Reigenfolge nach in die Register r25 abwärts 
abgelegt. Bei mehrbytigen Variablen wird im little-endian Format 
gespeichert. Das MSB ist im höchsten Register zu finden. Stimmt das oder 
ist das Zufall, dass immer r25:r24:r23... für die Parameter verwendet 
wird?

> Die Organistion der DRAMs ist immer Wurzel(Größe). Ein 64kByte DRAM hat
> also 256 Zeilen und 256 Spalten. Das nächstgrößere ist 512x512=256kByte
> usw.
Danke, genau das brauchte ich noch.

MfG
Christian

von Benedikt K. (benedikt)


Lesenswert?

Das steht das ziemlich genau da drin:

Function call conventions:
Arguments - allocated left to right, r25 to r8. All arguments are 
aligned to start in
even-numbered registers (odd-sized arguments, including char, have one 
free
register above them). This allows making better use of the movw 
instruction on
the enhanced core.
If too many, those that don’t fit are passed on the stack.
Return values: 8-bit in r24 (not r25!), 16-bit in r25:r24, up to 32 bits 
in r22-r25, up to
64 bits in r18-r25. 8-bit return values are zero/sign-extended to 16 
bits by the caller
(unsigned char is more efficient than signed char - just clr r25). 
Arguments
to functions with variable argument lists (printf etc.) are all passed 
on stack, and
char is extended to int.

von Christian W. (clupus)


Lesenswert?

OK, danke das hab ich nicht gefunden. Ich hab mich zu sehr auf die 
ASM-Page konzentriert.
Nur kurz eine kleine Frage: Wenn jetzt mehr Parameter übergeben werden 
als möglich (z.B. 10 char's), werden die ja auf dem Stack abgelegt. In 
welcher Reiehnfolge? So, dass wenn ich peu-a-peu pope ich die Werte in 
der richtigen Reihenfolge (also die theoretische Weiterführung r7, r6, 
...) bekomme oder muss ich alles rumdrehen?

MfG
Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.