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
Dazu musst Du erstmal sagen, wie Du den Speicher anschliessen willst: Per Speicherinterface oder über Ports. Beides hat Vor- und Nachteile.
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)?
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.
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!
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.