Externer Speicher bei Mega162

Gast #99883
Hallo,

Ich will einen Mega162 mit externem Speicher testen. Das ganze will ich
nachher mit gcc realisieren. Da ich vom externen Speicher GAR KEINE
Ahnung habe ein paar Fragen (evtl kennt ja jemand ne gute Anleitung?):

- Welche Speicherbausteine kann ich verwenden? (Evtl. mit
Reicheltbestellnummer oder so, dann finde ich sie am besten. :) )
- Wie muss ich sie an den AVR hardwaremäßig an schließen? Sind andere
Bausteine als der Speicher selbst fällig?
- Wie spreche ich sie an (mit gcc)?

Grüße
  Tobias
Gast #99884
Dazu musst Du erstmal sagen, wie Du den Speicher anschliessen willst:
Per Speicherinterface oder über Ports. Beides hat Vor- und Nachteile.
Gast #99885
Per Speicherinterface.

Kann man dann eigentlich auch mehrere Bausteine gleichzeitig dort
anschließen. Also z.b. 16KB RAM, nen LCD und diese Easy TCP/IP? (Alles
übers SPeicherinterface)?
Gast #99886
Angeschlossen wird der Speicher aufgrund des gemultiplexten Busses über
ein Latch, z.B. 373/573. Du kannst auch mehrere Steine anschliessen,
dazu musst Du die Adressen ausdekodieren.
Bei komplexer Speicheraufteilung bietet sich dann auch ein CPLD an.
Auch ein LCD-RAM kannst Du anschliessen, Du musst dann nur auf das
Timing achten, das ist je nach Taktfrequenz dann irgendwann nicht mehr
möglich, da die LCD-Controller recht langsam sind.
Gast #99887
Was macht ein Latch und was ist ein CPLD?
Wie funktioniert das Adresse dekodieren?

Evtl. kennt ja jemand ein gutes Buch/Website wo sowas gut erklärt
wird.

Grüße und schönen Feiertag!
Gast #99888
Ein Latch speichert die Daten zwischen, in diesem Fall also den
Adressteil, da ja über einen Port sowohl Daten als auch Adressbits
ausgegeben werden, um Ports zu sparen.
Ein CPLD ist ein programmierbarer Logikbaustein, der sich mit
Logikgleichungen "füttern" lässt und somit mehrere Logik-ICs (z.B.
Und-/Oder-/Nicht-Gatter) in einem Baustein vereint.
Adressdekodierung funktionert einfach aufgrund der Booleschen Algebra,
indem anhand der Adressbits die entsprechenden Chip-Selects gesetzt
werden, so dass die einzelen Bausteine nur angesprochen werden, wenn
ihr Adressbereich genutzt wird.
Gast #99889
Also das mit derr Adressierung ist mir noch nicht ganz klar. Nehmen wir
an Speicher A und B haben jeweils 4096 Byte. Speicher A hat die
Adressen x0000-x0FFF und Speicher B von 0x1000-x1FFF. Jetzt wird mit
Hilfe irgendwelche Bauteile für gesorgt das bei Speicher Adresse von A
dessen CS aktiv, bei den Adressen von B dessen CS. Speicher da wird
meiner Meinung auch gut mit klarkommen, aber Speicher B bekommt doch
Adressen über den Bus die über seinem "Range" sind. Müssen die dann
vorher noch subtrahiert werden?

Grüße
Gast #99890
Nein, denn die unteren 12 Adressleitungen liegen an jedem Stein an, der
Baustein beachtet sie aber nur, wenn er auch das CS bekommt.
Und das wird aus A12 gewonnen, also /A12 für Stein A und A12 für Stein
B.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.