Hallo,
ich möchte an einen ATXmega128A1 im TQFP100-Gehäuse einen SRAM
anschliessen und über das EBI ansteuern.
Momentan stehe ich aber total auf der Leitung und scheitere am Layout.
Betreffender SRAM ist der AS6C1008 von Alliance Memory.
Nun steht im XMEGA A Manual auf Seite 270 das man einen SRAM mit bis zu
22 Adressleitungen ohne multiplexing anbinden kann (wenn ich da richtig
liege).
Das gleiche steht in der Appnote AVR1012. Allerdings reichen da im
3-Port-Mode die Ports H, J und K nicht aus. IMHO hätte ich da 8
Datenleitungen und 4 Steuerleitungen wodurch dann nur noch 8
Adressleitungen übrig bleiben würden. Für den SRAM brauche ich aber 17
Leitungen (A0-A16).
Im Gegensatz dazu befindet sich in der Appnote AVR1312 ist auf Seite 4
ein Beispiel bei dem 2 Latches im 3-Port-Mode genutzt werden. Das
widerspricht aber IMHO den Angaben im Manual und der anderen Appnote.
Ich bin jetzt irgendwie verwirrt und komm nciht weiter. Die Suche bei
Tante Google hat mir auch nicht unbedingt weitergeholfen, weil ich am
Ende immer wieder bei den schon aufgeführten Appnotes gelandet bin.
Hat vielleicht irgendeiner schoneinmal einen ähnlichen SRAM angebunden?
Falls ja wie?? Bin für jeden Hinweis dankbar. Ist mein erstes mal das
ich versuche einen SRAM anzubinden...
Ich hoffe es kann mich jemand von der Leitung schubbsen :-)
MfG R
suchender schrieb:> Datum: 09.08.2011 12:04suchender schrieb:> Datum: 09.08.2011 12:28>> push
Ungeduldig?!
Sieht man auch nicht alle tage, dass nach 24Min. gepusht wird.
Ungeduldig?
Ja ein bisschen schon, Entschuldigung! :-|
Ich würde halt gerne weiter machen um die Platine fertig zu machen und
dann testen zu können...
MfG R
suchender schrieb:> Nun steht im XMEGA A Manual auf Seite 270 das man einen SRAM mit bis zu> 22 Adressleitungen ohne multiplexing anbinden kann (wenn ich da richtig> liege).> Das gleiche steht in der Appnote AVR1012. Allerdings reichen da im> 3-Port-Mode die Ports H, J und K nicht aus. IMHO hätte ich da 8> Datenleitungen und 4 Steuerleitungen wodurch dann nur noch 8> Adressleitungen übrig bleiben würden. Für den SRAM brauche ich aber 17> Leitungen (A0-A16).>> Im Gegensatz dazu befindet sich in der Appnote AVR1312 ist auf Seite 4> ein Beispiel bei dem 2 Latches im 3-Port-Mode genutzt werden. Das> widerspricht aber IMHO den Angaben im Manual und der anderen Appnote.>> Ich bin jetzt irgendwie verwirrt und komm nciht weiter. Die Suche bei> Tante Google hat mir auch nicht unbedingt weitergeholfen, weil ich am> Ende immer wieder bei den schon aufgeführten Appnotes gelandet bin.
Alle (AppNotes + Manual) haben recht...
Einziges Problem (hatte ich in einem anderen Thread zuerst auch
übersehen): Es gibt z.Z. keinen Xmega mit Vier-Port-EBI, sondern nur mit
max drei Ports.
D.h. entweder externe/s Latch/es oder, falls das in der Anwendung
möglich ist, die oberen Adressleitungen mit normalen Ports ansprechen.
Vielen Dank für die Hinweise!
Das mit dem 4. Port fällt mir jetzt auch auf. Da waren wohl vorher
wieder mal die Tomaten auf den Augen...
Ich denke ich werd mich mal an die Variante 24.6.4 im A-Manual
herranwagen. (Seite 271) Ist ja in der AVR1312 auf Seite 3 bzw. 4 auch
so beschrieben.
Danke nochmal!
MfG R
nimm nicht 24.6.4 sondern 24.6.2 oder 24.6.3. Du solltest zusehen das
nur die Adressen über das Latch gelatcht werden. Bei 24.6.4 bzw. alle
LPC Modis werden ein Teil der Adressen über die Datenleitungen gelatcht.
Wenn du die AppNotes mit dem erzielbaren Timing anschaust dann wirst du
erkennen das im Besondern bei sequentiellem Adresszugriff die beiden
ersten Varianten wesentlich performanter sind. In diesem beiden Modis
kann die CPU defakto mit 1 CPU Taktzyklus das SRAM lesen und schreiben
wenn sich nur die untersten 8 Adressbits jeweils ändern. Wird eine
Adresse ausgewählt die in den HighBits sich ändert dann muß 1 SRAM Takt
zusätzlich eingeschoben werden um das Latch mit der neuen oberen Adresse
zu laden. Wenn man also zb. 1024 Bytes sequentiell lesen möchte dann muß
nach jeweils 256 Bytes das Latch neu geladen werden. Somit benötigt man
1024/256*2+1024 CPU Takte zum Lesen dieses Blockes.
Das geht mit deinem gewählten Modus nicht da dort die Datenleitungen die
zu latchenden Addressleitungen steuern. Das erkennst du daran das der
Port AD() für Address-Data benamt wurden.
Davon abgesehen musst du die Waitstates korrekt im EBI einstellen da der
SRAM von dir mit 55ns bischen langsam ist. Der XMega kann den mit 64MHz
ansteuern, theoretisch wenn es ein 15ns Typ wäre. Dann hättest du den
Fall das der XMega mit 32MHz CPU Takt läuft und alle Zugriffe auf das
externe SRAM würden die meiste Zeit nur 1 CPU Takt benötigen, also
doppelt so schnell wie bei den alten Megas.
Gruß Hagen
hmmmm.... Also in dem xmega-a-manual welches ich hier hab, ist laut
Figure 24-5 auf Seite 272 nix außer Daten auf den Datenleitungen? Es
werden lediglich die Adressen mir Hilfe von ALE1 und ALE2 gelatcht. Die
geteilte Variante (AD am Port) ist nur bei der LPC-Konfiguration mit
drinn die als nächstes kommt.
Falls ich mich irre bitte nochmal korrigieren!
Und nach nem neuen SRAM werd ich dann auch nochmal schauen. Den Vorteil
mit der doppelten clock vom EBI sollte ich schon ausreizen, da hast du
recht :-)
Danke MfG R
Guten Morgen.
Da ich noch nicht mit ARM-Controllern gearbeitet habe, kein Geld für
eine teure Entwicklungsumgebung (Crossworks, Keil, IAR...) habe, keine
Lust habe mir den ganzen Aufwand mit Eclipse zuzumuten und bei mir
sowohl AVR Studio 5 (kostenlos) als auch AVR Dragon zum debuggen
vorhanden sind, werde ich wohl bei Atmel bleiben.
MfG R
suchender schrieb:> hmmmm.... Also in dem xmega-a-manual welches ich hier hab, ist laut> Figure 24-5 auf Seite 272 nix außer Daten auf den Datenleitungen?
Dann habe ich wohl ein veraltetes Datenblatt hier vor mir liegen. Ich
meinte das du nicht die LPC Modis benuzten solltest.
Desweiteren denke ich das bei deinem 128KB SRAM der Mode mit einem Latch
ausreichend sein sollte. Du kannst dann zwar nur 64Kb am Stück
adressieren und die höchstwertige Adresse würde ich manuell an einen Pin
legen. Du hast dann 2x 64Kb Bänke die du manuell umschalten kannst.
Es müsste in diesem Modus möglich sein über die zusätzlichen Chip
Selects des EBI den 128Kb mit einem Latch zu benutzen. Ein Chip Select
wird dann als Adressleitung A16 benutzt. Nur in diesem SRAM Modis ist es
auch möglich zusätzliche Memory Mapped Devices anzuschließen. Im SDRAM
Modus geht das zb. nicht.
>Falls ich mich irre bitte nochmal korrigieren
Du irrst dich nicht.
Gruß Hagen
Hallo suchender,
dein Setup ist dem, welches ich derzeit anstrebe, sehr ähnlich. Darf ich
fragen, ob, und wenn ja, wie du es lietztlich gelöst hast? Man liest
hier und da, dass von den SRAM-Modi nicht alle wirklich funktionieren.
Welchen SRAM-Modus hast du verwendet? Und welchen Compiler verwendest
du? GCC unterstützt ja nur 16bit Pointer. Wäre super, wenn du dein Setup
mal ein bisschen erläutern könntest.
VG
Robert
Nimm als Beispiel doch den Schaltplan vom Xplained A1 Board. Dort ist
ein 8MByte SDRAM an EBI angedockt.
http://www.atmel.com/dyn/products/tools_docs.asp?category_id=163&family_id=607&subfamily_id=1965&tool_id=17168
Das das Board nicht so teuer ist, isses vllt. sogar ne Alternative zum
Selberbauen
Robert B. schrieb:> Und welchen Compiler verwendest> du? GCC unterstützt ja nur 16bit Pointer.
ASF hat dazu die neue HugeMem Library mitgeliefert , die den Zugriff auf
32 bit addressraum erlaubt. Ist Teil von Studio 5
Hallo Matthias,
danke für deine Antwort. Der Schaltplan vom Xplained A1 Board ist mir
wohl bekannt und dient mir gewissermaßen schon ein bisschen als Referenz
für viele Dinge. Jedoch hat das RAM dort recht wenig mit dem zu tun, was
ich möchte. Die Unterschiede im Einzelnen:
1. Ich verwende SRAM, das Xplained verwendet SDRAM. Das sind im EBI
schon unterschiedliche Modi.
2. Ich benötige 17Bit-Adressraum, das Xplained kommt mit 12Bit aus.
3. Aus 2. folgt, dass ich ein zusätzliches Adressbit (A16) benötige,
welches ich gerne von nichtbenutzten CS-Leitungen nehmen würde, um ein
zweites Adresslatch einzusparen. Das geht theoretisch laut Datenblatt
und AppNote AVR1312. Aber mehr, als dass es geht, steht leider nirgends.
Die Möglichkeit, den RAM zu pagen und manuell umzuschalten besteht und
ich werde es wohl auch vorsehen. Das beseitigt dann auch gleich das
Problem mit den 16Bit Pointern in GCC. Dennoch würde mich interessieren,
ob "suchender" den 3-Port-SRAM-Modus planmäßig in Gang bekommen hat und
wenn ja, wie? LPC-Mode oder nicht?
VG
Robert
Robert B. schrieb:> Das beseitigt dann auch gleich das> Problem mit den 16Bit Pointern in GCC.
Das Problem gibt es in der Form nicht, wenn du Studio 5 mit ASF
verwendest. Dort gibt es die 'Hugemem' Bibliothek mit 32 bit
Addresszeigern. Sieht z.B. so aus:
Die ATXmega-A1 und ATXmega-A4 unterstützen bezüglich EBI für die ext.
SRAM-Anbindung im 'EBI Control Register' nicht gleichermaßen alle 'SRAM
Modes'. Man muss hier zwischen -A1 und -A4 exakt unterscheiden!
Es gibt 3 Manuals für den ATXmega
1. Das globale Manual enthält die Summe alle Funktionen für die XMEGA
A-Familie, was aber nicht heißt, dass der XMEGA-A1 und -A4 überall
funktionsgleich sind.
2. Der XMEGA-A1 hat ein eigenes Manual. Es enthält exakt die Teilmenge
der Funktionen, die nur im XMEGA-A1 gelten, nicht aber unbedingt für
XMEGA-A4.
3. Der XMEGA-A4 hat ein eigenes Manual. Es enthält exakt die Teilmenge
der Funktionen, die nur im XMEGA-A4 gelten, nicht aber unbedingt für
XMEGA-A1.
Man kombiniere die Inhalte von:
1. XMEGA-A-Manual 8077H-AVR-12/09 Seite 279 24.11.1 Table 24-6 ->
"Note: 1. ALE2 and NOALE only available with 4-port EBI interface"
2. XMEGA-A1-Manual 8067M–AVR–09/10 Seite 13 7.4.4
"Supports SRAM up to
– 512K Bytes using 2-port EBI
– 16M Bytes using 3-port EBI
• Supports SDRAM up to
– 128M bit using 3-port EBI"
Der 4-Port-EBI kommt im XMEGA-A1-Manual nicht vor.
Konkret:
Nur der SRMODE 00 (ALE1) und SRMODE 10 (ALE12) funktionieren für
XMEGA-A1, denn der XMEGA-A1 hat keinen 4-Port-EBI, sondern nur
2-Port-EBI oder 3-Port-EBI. Schnelle Hardware: LATCH 74LVC573 ; SRAM
512kB 8Bit 10ns
Vielleicht erklärt das, warum manche mit dem ext. SRAM am EBI
Hardwareprobleme haben. Die ext. SRAM-Adressierung im Compiler wäre auch
meine Baustelle.