SDRAM LDQM & UDQM

Gast #4348381
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
Persönliche Seite
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.
Gast
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.
Gast
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
Gast
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.
Gast
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?
Gast
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.
Gast
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
Gast
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!
Gast
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.
@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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.