M514256A an ATMega

pcprofi

Neues Mitglied
12. Apr. 2008
90
0
0
Sprachen
Hallo Leute,

ich möchte gern den oben genannten RAM an meinen ATMega anschließen - und zwar mit möglichst wenig Pins.

Hintergrund ist mein Oszilloskop-Projekt, ich möchte gern den internen SRAM des Mega für die Messreihe benutzen - und für die Darstellung falls unbedingt notwendig.

Son Oszilloskop braucht aber ja eine Menge anderer Einstellungen, und da diese ja nicht zeitkritisch sind, würde ich sie gerne Auslagern.

Leider habe ich keine Ahnung wie ich das verwirklcihen könnte. Im Internet finde ich auch nichts, wie ich das machen könnte, auch keinen Ansatz.

Vorhanden sind die 8Bit-74HC Schieberegister, und 16x der RAM-Baustein. einer würde ja bereits reichen.

Hat jemand Lust das mit mir sone Speichersteuerung zu entwickeln oder mir eine Idee dazu zu geben?

Gruß Rainer
 
Hallo Rainer,

ist das ein 32k x 8bit SRAM, ich habe da kein Datenblatt gefunden?

Wenn du möglichst wenige Pins für das externe SRAM belegen möchtest und die Übertragungszeit nicht kritisch ist, könntest du die Adresse 15bit (oder 16bit) durch zwei 8bit-Shiftregister schieben und dann parallel ausgeben. Beim Datenbyte wird es ein bisschen schwieriger, da bidirektional. Die Steursignale CS\, RD\ und WR\ darf man auch nicht vergessen. Wieviele Pins hast du denn für den Speicher zur Verfügung? Und wieviel Speicher benötigst du denn?

Ein ähnliches Thema hatten wir schonmal in diesem Thread.

Grüße,
Dirk
 
Hallo Dirk,

hier ist das Datenblatt: DATASHEET
Das Datenblatt ist das einzige was mir logisch passen erscheint - und wenn nicht, dann rauchts eben - war nicht der optimale Arbeitspunkt.

Ich weiß nicht, wie viel Speicher ich genau brauchen werde. Den anderen Thread habe ich gelesen, er hat mir aber nicht weitergeholfen. Ich habe vermutlich damit nicht viel Anfangen können, weil mir auch das Datenblatt nicht sehr weiterhilft.

Ich kenne RAMs nur als "Array" - dieser hier scheint aber als Tabelle aufgebaut zu sein, also mit 2 Indizes. Und das verwirrt mich.

Gruß Rainer
 
Hallo Rainer,

ich habe mir das Datenblatt einmal angesehen. Man überträgt hier insgesamt 18bit für die Adresse, diese ist unterteilt in 9bit Row-Address und 9bit Column-Address, gelatcht werden die beiden Adressteile durch die Signale CAS\ und RAS\. Die Daten werden mit 4bit übertragen, den Ausgangsteiber aktiviert man mit OE\=low, Daten werden übernommen mit WE\ nach low.

Es ist schon ein bisschen komplizierter, als mit einem herkömmlichen SRAM. Versuche doch erst einmal festzustellen, wieviel Speicher du wirklich benötigst, vielleicht reicht ein AVR mit mehr SRAM. Wenn du nicht zu oft schreiben musst, kannst du vielleicht auch eine andere Speicherart nutzen, DataFlash, FRam, EEPROM z. B.

Gruß
Dirk
 
Hallo Dirk,

mein Speicherproblem ließe sich ohne Weiteres mit einem anderen µC lösen - aber ich habe gerade keinen da, und die RAMs rumfliegen und möchte auch lernen, wie man sowas am besten angeht.

Und von daher kam einfach die Idee, man könnte das ja mal versuchen - wenn man das ja einmal raushat, dann gehts ja ratzfatz.

Für mich steht der lerneffekt an erster Stelle, und an nächster das Geld sparen - bin halt ein armer Azubi:D

Gruß Rainer
 
Hallo Rainer (pcprofi)!

mein Speicherproblem ließe sich ohne Weiteres mit einem anderen µC lösen - aber ich habe gerade keinen da, und die RAMs rumfliegen und möchte auch lernen, wie man sowas am besten angeht.

Ist zwar schon etwas spät :rolleyes: aber evtl hilft es noch dem einen oder anderen.
Das was Du da hast sind dynamische RAMs und keine statischen. Die würde ich
persönlich an nem ATMEL nicht einsetzen. Außer du hast zu viel Rechenzeit übrig :D

Die müssen alle paar Millisekunden/Microsekunden einen Refresh-Zyklus haben, damit
sie ihren Speicherinhalt nicht verlieren. In dynamischen RAMs werden Kondensatoren
zur Speicherung verwendet - bei statischen sind es Flip-Flops (oder wie man es auch
immer nennen will). Diese Kondensatoren werden über Refreshzyklen immer wieder
nachgeladen (sind nur ein paar PicoFarad-Bruchteile groß) weil sie durch Leckströme
usw immer etwas verlieren und damit natürlich auch die gespeicherten Bits.

Sieh dir mal Datenblätter oder Schaltungen von alten Computern (Z80, 6502) oder
den damals verwendeten Speichern (4116, 4164) an. Das müßte dir die Augen
öffnen und einiges erklären.

Gruß
Dino
 
Okay, dann lassen wir das... Das würde dann ja shcon bald wieder auf nen eigenen µC auslaufen, der nix anderes tut als den Speicher zu managen...

Eigentlich schade, weil ich habe nämlich 16 Stück von den Dinger rumliegen...

Gruß Rainer
 
Hallo Rainer!

Ich hab mir heute auch mal das Datenblatt angesehen.
Es ist also ein 256kx4Bit dynamisches RAM wie vermutet.
Es hat 9 Spalten und Reihenadressen. 9+9=18BitAdressen (256k)
Mit den 4 Datenbit multipliziert ist das also ein 1MBit DRAM.

Auf Seite 1 steht bei den Feature unter anderem:
Refresh: 512 cycles/8ms, 512 cycles/64ms (L-Version)
CAS before RAS refresh, hidden refresh, RAS-only-refresh capability

Für diese DRAMs waren damals Verzögerungsglieder auf den PC-Boards drauf
die Signale mit einigen Nanosekunden Abstand erzeugt haben. Damit wurde dann
mit Hilfe eines Adressmultiplexers erst die obere Hälfte der Adressen in RAS und
dann die untere Hälfte in CAS eingetaktet. Danach lag die Adresse in einem internen
Buffer (Sie Seite 3) an und man konnte auf die Daten zugreifen.

Für den Refresh hat man in den CPUs meißt einen internen Refresh-Counter
gehabt (zB beim Z80) der hat dann seine Refresh-Adresse auf den Adressbus
gelegt (In deinem Fall müsste das ein 9-Bit Zähler sein) und mit dem RFSH-Pin
diese Refresh-Adresse in RAS eingetaktet (RAS-only-refresh). Dieser Refresh
passierte zwischen den normalen Speicheroperationen (Also, wenn die CPU
gerade keine Daten abgelegt oder geladen hat).

Wenn du diese Speicher verwenden willst, müßtest Du also in deinem uC nen
9-Bit Zähler implementieren, der alle 8ms seinen Wert auf den Adressbus legt
und mit nem Impuls nach RAS eintaktet. Und das zwischen deinen "normalen"
Speicheroperationen, die du sowieso noch hast.

Auf Seite 12 siehst Du unten im Signal-Diagram den Refresh-Zyklus.
Ab Seite 9 ist das mit den Adressen zu sehen --ROW--COLUMN---------
Ab Seite 11 ist zu sehen, warum das Teil Fast-Page-DRAM heißt.

Für MicroController würde ich sowas wie ...
- 62256-70M (32kx8 70ns) SMD 1,10eur
- 62256-80 (32kx8 80ns) DIP 1,30eur
- 6264-70 (8kx8 70ns) DIP 1,25eur
- ....
oder ähnliche STATISCHE RAM-Speicher verwenden (Preise gerade bei
Reichelt rausgesucht) und 1,30eur für 32kByte sind eigentlich akzeptabel ;)
Die lagen früher mal bei 30-40DM pro Baustein :D
Die kann man dann auch ziemlich direkt an nen ATmega ranpacken wenn er
die Pins dafür hat (z.B. der Mega128). Dann muß man sich auch keinen
abbrechen und hat für die Ansprache des externen RAM direkt Befehle (auch
in Assembler) zur Verfügung :cool:

Deine Steinchen sind für den Zweck leider nur "nice to have" aber nicht wirklich
verwendbar. :(

Denn man viel Spaß beim Basteln

Gruß
Dino
 
Noch einmal ein Nachtrag.
Ich habe beim stöbern zufällig etwas über DRAMs an Microcontrollern gefunden.

http://www.myplace.nu/avr/dram/index.htm

Wenn ich den flüchtig überflogenen Text richtig verstanden habe, wird alleine
für das Refresh ca 10 Prozent der Rechenzeit verbraten. Wenn man also
Applikationen hat, die wenig Rechenzeit benötigen aber viel Speicher, dann
geht das. Aber in Anbetracht der relativ geringen SRAM-Preise weiß ich
nicht, ob sich der Aufwand lohnt. Das muß dann jeder selber entscheiden.

Gruß
Dino
 
Man kann es natürlich als Spielerei oder Herausforderung sehen, SDRAM mit einem Mega AVR zu verwenden (mit Tiny wäre auch interessant ;)), ich würde dann aber schon einen Schritt weiter gehen und einen Xmega nutzen. Die Xmega-Familie hat ein External-Bus-Interface (EBI), welches für SDRAM und SRAM geeinet ist und das Timing vollständig durch Hardware realisiert. Wenn man SRAM und SDRAM in der Bastelkiste hat und sich nicht entscheiden kann, was man jetzt nehmen soll ... kein Problem, es ist sogar möglich beide RAM-Typen parallel in einem Design nutzen :cool:

Grüße,
Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)