Hallo zusammen, ich hab grad so einen kleinen Knoten im Kopf. Ich hab ein SDRAM (AS4C16M16SA) und einen Mikrocontroller STM32F746 im 144 Pin Gehäuse. Das Ding ist, aufgrund anderer Beschaltung kann ich nur 8 Datenbits fahren. Heißt ich hab zwar alle 13 Adressleitungen angeschlossen aber eben nur 8 Bit an Daten. Das SDRAM hat jedoch noch die 16-Bit Byte Enable Leitungen LDQM und UDQM, welche ich nun am Mikrocontroller nicht mehr nutzen kann. Wie sieht der Workaround aus damit das alles trotzdem klappt? Ich habe dieses RAM da und würde es eben auch gerne verwenden. Grüße Dennis
Hmm. Auf (unterschiedlichen) festen Pegel legen und nur eine Hälfte des Speichers verwenden? Oder gegebenenfalls aus einer zusätzlichen Adressleitung erzeugen, einmal invertiert, einmal nicht invertiert, und untere und obere Hälften des Datenbusses miteinander verbinden. So, wie ich das Datenblatt (und das Timingdiagramm auf S. 47) interpretiere, scheint HIGH-Pegel auf den xDQM-Leitungen den zugehörigen Ausgangstreiber im Tristate zu lassen, aber ... ich kenn mich mit SDRAMs nicht aus, daher sind das natürlich nur Vermutungen.
Rufus Τ. F. schrieb: > Hmm. Auf (unterschiedlichen) festen Pegel legen und nur eine Hälfte des > Speichers verwenden? Ja genau auf sowas will ich hinaus. Aber gerne würde ich das einmal hören dass da so funktioniert. So richtig schlau draus werd ich da aus der Datenblatt nämlich nicht. Im stmcubemx heißen eben diese beiden Pins 16 Bit Byte enable. Wenn ich den haken setz und die Pins frei sind so hab ich genau die beiden Leitungen.
Dennis X. schrieb: > Wie sieht der Workaround aus damit das alles trotzdem klappt? A13 invertiert und nichtinvertiert an die DQMs anschliessen und D0 mit D8 usw. verbinden müsste klappen - die DQM-Signale werden zum gleichen Zeitpunkt gelatcht wie die oberen Adressen, also auf die Verzögerung achten. Georg
Falls es hilft: Ich habe ein FPGA-Board mit DDR-SODIMM-Sockel, bei dem nur 32 Data-Bits zum FPGA geführt werden, die restlichen Signale für die "oberen 32-Bits" (Daten- als auch Masken-Bits) sind NC. Es funktioniert problemlos, allerdings hätte ich die ungenutzten Maskenbits etc. mit Pullups versehen. Auf dein SDRAM-Problem übertragen heisst also, LDQM zu nutzen und UDQM auf High ziehen. Für die unteren 8 Bits sind die oberen 8 Bits ja irrelevant.
Sigi schrieb: > LDQM zu nutzen und UDQM auf High ziehen. Für die unteren 8 Bits sind die > oberen 8 Bits ja irrelevant. Also wie schon vorgeschlagen dann (invertiert) mit der 13. Adress Leitung zu verbinden?
Falls dir die halbe Kapazität reicht: Einfach UDQM=HIGH und D8..D15 NC. Mir ist nicht ganz klar, was mit der 13. Adresssignal und dem Invertieren gemeint ist. Soll damit zwischen unteren und oberen 8-Bits geschaltet werden?
Sigi schrieb: > Soll damit zwischen > unteren und oberen 8-Bits geschaltet > werden? Genau das. Dann kann die gesamte Kapazität des SDRAMs verwendet werden; es müssen allerdings beide Hälften des Datenbusses zusammengelegt werden.
Also dann im Prinzip LDQM mit a12 verbinden. UDQM mit !a12 verbinden und dann eben D8 mit D0, D9 mit D1... Ist da so korrekt?weniger Speicher hab ich dadurch natürlich auch. Ist auch nicht unbedingt notwendig alles zu benutze.
Dennis X. schrieb: > LDQM mit a12 verbinden. UDQM mit !a12 verbinden und dann eben D8 mit D0, > D9 mit D1... Ist da so korrekt? So ist's gedacht. > weniger Speicher hab ich dadurch natürlich auch. Äh, wieso das?
Dennis X. schrieb: > Also dann im Prinzip LDQM mit a12 verbinden. UDQM mit !a12 verbinden und > dann eben D8 mit D0, D9 mit D1... NEIN! Nicht A12, das liegt ja schon am Memory an, sondern mit der ersten nicht verwendeten Adresse, also A13. Halbe Datenbreite, dafür doppelter Adressbereich, ist das so schwierig? Georg
Georg schrieb: > Halbe Datenbreite, dafür doppelter > Adressbereich, ist das so schwierig? Ohne Terminierungen nicht, aber was passiert bei Terminierungen? Der Ansatz klappt problemlos bei SRAMs, bei DDRs sicher nicht. Hast du das man bei SDR-SDRAMs gemacht?
@ Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite >Hmm. Auf (unterschiedlichen) festen Pegel legen und nur eine Hälfte des >Speichers verwenden? Die einfache Lösung. >Oder gegebenenfalls aus einer zusätzlichen Adressleitung erzeugen, >einmal invertiert, einmal nicht invertiert, und untere und obere Hälften >des Datenbusses miteinander verbinden. Vergiss es! Das klappt so nicht! >So, wie ich das Datenblatt (und das Timingdiagramm auf S. 47) >interpretiere, scheint HIGH-Pegel auf den xDQM-Leitungen den zugehörigen >Ausgangstreiber im Tristate zu lassen, Ja. Ebenso wird damit auch ein Schreibzugriff ignoriert. Beitrag "Re: Viel RAM am kleinen Controller" Das könnte auch beim STM32 klappen, damit hat man 2 Seiten Speicher.
@Georg (Gast) >A13 invertiert und nichtinvertiert an die DQMs anschliessen und D0 mit >D8 usw. verbinden müsste klappen - die DQM-Signale werden zum gleichen >Zeitpunkt gelatcht wie die oberen Adressen, also auf die Verzögerung >achten. Nein, das klappt nur bei einfachem SRAM! SDRAM hat einen gemuxten Adressbus, da klappt das NICHT!
Georg schrieb: > NEIN! Nicht A12, das liegt ja schon am Memory an, sondern mit der ersten > nicht verwendeten Adresse, also A13 Der stm33f7 hat maximal 13 adress Leitungen. Da ich alle 13 am sdram haben wollte hab ich das auch aktuell so gemeint. Wenn ich jetzt einfach sag ich verzichte auf etwas Speicher dann kann ich die DQMs fest verschaltet und alle 13 adress Leitungen an das RAM fahren. Warum muss ich dann aber die Datenleitungen beschalten?
@ Dennis X. (debegr92) >Der stm33f7 hat maximal 13 adress Leitungen. Da ich alle 13 am sdram >haben wollte hab ich das auch aktuell so gemeint. Ist OK. >Wenn ich jetzt einfach sag ich verzichte auf etwas Speicher Die Hälfte. > dann kann >ich die DQMs fest verschaltet und alle 13 adress Leitungen an das RAM >fahren. Richtig. > Warum muss ich dann aber die Datenleitungen beschalten? Musst du nicht. Durch das inaktive DQM bleiben die im Tristate und gut.
Falk B. schrieb: >> dann kann >>ich die DQMs fest verschaltet und alle 13 adress Leitungen an das RAM >>fahren. > > Richtig. Und wie ich die verschalte ist im Prinzip auch Wurst, wichtig nur nicht beide den gleichen Pegel?
@Dennis X. (debegr92) >>ich die DQMs fest verschaltet und alle 13 adress Leitungen an das RAM >>fahren. > >Und wie ich die verschalte ist im Prinzip auch Wurst, wichtig nur nicht >beide den gleichen Pegel? NEIN! Man muss sich schon richtig verschalten! die DQMs sind LOW ACTIVE, d.h. das entsprechende Signal der genutzten Bushälfte muss fest mit LOW verbunden werden und das der ungenutzten Bushälfte mit HIGH.
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.