Hallo, Für ein Projekt überlege ich statt bisher SRAM SDRAM einzusetzen. Zwei Chips die in der engeren Auswahl sind wären: MT48LC4M16A2P-7E:G:G oder IS42S16400D-7TL (beide gibts bei Farnell) Im Projekt wird es erforderlich sein 8MByte Daten mit 200MByte/s weg zu schreiben. Für beide Chips kein Problem. Allerdings sollen die Daten auch uU mit Bruchteilen der Geschwindigkeit geschrieben werden. Also 100MByte/s, 50, 25,... Mit anderen Worten: Manchmal soll nur jeden 2. / 4. / 8. ,... Takt ein Wort gespeichert werden. Aber immer noch alles am Stück. Problem ist dann, dass so ein Schreibzugriff länger als der Refreshzyklus (64 ms) dauert, aber die Pause zwischen 2 Schreibzugriffen nicht für einen vollen Refresh reicht. Einfach wäre es natürlich, wenn ich immer abwechselnd 16 Bit schreiben und Refreshen kann. Also nur einen Refreshzyklus. In beiden Datenblättern ist mir nicht klar geworden ob man das so machen kann. Es stand nicht drin, dass es geht, aber es war auch nicht explizit gefordert, dass alle 4096 Refreshzyklen am Stück kommen müssen. Weiß das vielleicht jemand? Oder muss ich die Daten dann irgendwie Zwischenpuffern? Oder gibt es vielleicht noch eine viel einfachere Möglichkeit die ich übersehen habe? Kann man vielleicht auf einer Bank schreiben und während dessen eine andere refreshen? Viele Grüße, Christian
Da bin ich noch mal. Wenn man auf eine Frage keine Antwort bekommt ist die Antwort in der Regel eigentlich: Guck doch mal genau ins Datenblatt. Allen Anfängern die wie ich vom SRAM kommen und SDRAM nutzen wollen kann ich sagen: Ein Blick ins Datenblatt verrät absolut gar nichts. Zumindest nicht, wenn man die Terminologie nicht kennt und die wird nunmal nur knapp bis gar nicht in den Datenblättern erklärt. Also an alle Anfänger die an der gleichen Startposition stehen wie ich: Wikipedia Artikel über DRAM lesen (nicht den über Sdram. Der ist mist). Also einige Fragen kann ich jetzt erst mal selbst beantworten. Erstmal so ein Schreibzugriff der den ganzen Speicher voll schreibt ist möglich, aber das ist nicht ganz selbstverständlich. Zuerst muss man eine Row zum schreiben im Burst Mode öffnen. Als Burst Length wählt man am besten Full Page. Bevor der Zugriff am Ende angekommen ist muss man den Befehl senden auf einer anderen Bank eine Reihe zu öffnen. Dieser Befehl braucht nämlich ein paar Takte. Wenn man das richtig getimed hat geht der neue Schreibzugriff direkt nahtlos weiter. Dann ist es möglich einen refresh stückchenweise zu machen. Steht im Datenblatt als distributed refresh. Allerdings dauert auch nur eine Row zu refreshen ein paar Taktzyklen. Daher geht nicht der taktweise Wechsel von Schreiben und refresh. Meine letzte Frage konnte ich aber nicht Beantworten: kann ich auf einer Bank schreiben, während ich auf einer anderen einen Refresh mache? Das spricht dagegen: - im functional block diagram des RAMs gibt es nur einen Refresh counter. Damit die Bänke unabhängig refreshen können müsste es pro Bank einen geben. Allerdings ist das ja auch nur eine Skizze. - für den Refresh Befehl sind die Bank adress inputs "don't care" Das spricht dafür: - Vor dem refresh Befehl führt man ein Precharge aus. A10 hat die funktion "All Banks/Single Bank". (siehe: http://download.micron.com/pdf/datasheets/dram/sdram/256MSDRAM.pdf Seite 59) - Meiner Meinung nach wäre es absolut idiotisch einen Chip so zu designen das es nicht geht. Durch die 3 zusätzlichen Zähler wird er vielleicht etwas teurer, aber das Geld ist er dann auch wirklich Wert. Ich meine: Erst dadurch ist er für Echtzeitanwendungen überhaupt interessant. Wenn es einen anderen Grund gibt, das einfacher zu gestalten klärt mich bitte auf. Jetzt hat sich bei mir eine neue Frage ergeben: Was ist der Unterschied zwischen Row und Page? Ist es physikalisch im Ram das gleiche? Ich hoffe jetzt gibt es jemanden der motiviert ist meine 2 verbleibenden Fragen zu beantworten. Viele Grüße, Christian
Ich habe vor, mich in nächster Zeit mit DRAM zu beschäftigen. Deswegen kann ich noch nicht beurteilen, ob der Artikel dir was nützt. http://download.micron.com/pdf/technotes/DT30.pdf
Hi! Schon mal auf jeden Fall vielen Dank für die Antwort! Nur leider glaube ich, dass das Dokument doch sehr asynchoner DRAM spezifisch ist und ich will mit synchronem DRAM arbeiten. Da gibt es ja nur die 2 Refresharten selfrefresh und autorefresh. Ob es bei SDRAM auch eine Art Hidden refresh gibt weiß ich nicht. Ich habe die Architektur so verstanden, dass beim "öffnen" einer Reihe automatisch eine Art refresh geschieht. Wenn ich jetzt noch eine Reihe öffnen kann ohne einen Schreib- oder Lesezugriff machen zu müssen könnte das Problem gelöst sein. Dann wäre das PDF genau das was ich gesucht habe. Dann müsste ich mich nur drum kümmern, dass ich auf einer Bank einen Burst initiiere und auf den anderen während dessen diesen spezial refresh ausführe. Gut, das wäre komplizierter als ein Autorefresh, aber das sollte ja nicht so das Problem sein. Ist halt nur die Frage ob das so alles richtig ist wie ich es verstanden habe. Also das es einen intrinsischen refresh gibt, wenn eine Zeile geöffnet wird. Und ob ich "öffnen" kann ohne zu lesen. Das sollte sicher im Datenblatt zu finden sein, aber für den ersten Punkt würde ich doch lieber mal jemanden sprechen der etwas Erfahrung in dem Gebiet hat. Viele Grüße, Christian
Also wie ich es verstanden habe wird es funktionieren, wenn ich auf einer Bank ein Burst Read oder Write ausführe und während dessen die anderen Banks mit einer Active-Precharge Sequenz refreshe. Es irritiert mich nur, dass davon nix im Datasheet steht. Naja, ich werde es wohl ausprobieren müssen.
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.