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:04 suchender 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
Die Aussage dürfte sich auf den 4-Port Modus beziehen, den bisher noch kein (?) ATxmega unterstützt.
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
Hol dir einen STM32 mit 512kB Flash und 64kB RAM. Das musst du dir die vergurkten ATXMega nicht antun.
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:
1 | // was schreiben
|
2 | hugemem_write32(writeptr ,time); |
3 | writeptr +=4; |
4 | hugemem_write16(writeptr ,x); |
5 | writeptr +=2; |
6 | // und was lesen
|
7 | hugemem_read32(readptr ,time); |
8 | readptr +=4; |
9 | hugemem_read16(readptr ,x); |
10 | readptr +=2; |
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.
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.