mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage SD-RAM


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe mal eine Frage zu SD-Ram.

Ich habe einen SD-Ram gefunden, der u.a. folgende Daten hat: 133MHz, 
3.3V, 8Mx16

So wie ich das vorher gedacht habe, ist ein SD-Ram pingelig, wie das mit 
den Zeiten aussieht. Bei 133MHz hätte die Taktfrequenz doch eine 
Periodendauer von 7,5 ns. Das würde es ja recht uninteressant für µCs 
machen, die 8-32MHz internen Takt haben. Nun hab ich mir das Datenblatt 
mal angeguckt und gesehen, dass tcc (Clock circle time) von 5 bis 1000 
(nehme mal an ns) geht. Das hieße doch aber, dass eine Taktfrequenz von 
1MHz bis 200MHz möglich wäre, oder? Man könnte ihn also auch mit einem 
32MHz getakteten µC ansteuern?

Ich habe mir schon ein paar Erklärungen zu SD-Ram durchgelesen, aber 
habe immernoch nicht ganz verstanden, warum diese Taktfrequenz so 
wichtig ist. Der Takt läuft doch über jeden internen Baustein, der einen 
Takt braucht, also frag ich mich, wie der Ram "merkt" dass der Takt zu 
langsam ist.
Zu schnell ist mir ja klar, wenn die Transistoren nicht schnell genug 
durchschalten können.

Wäre um eine recht simple Erklärung evtl. mit Analogie (gibt hier glaube 
welche, die das sehr gerne machen) sehr dankbar.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
evtl. funktionieren welche mit internem refresh. ansonsten ist SD-ram 
auch wegen der breiten daten- und adressbusse schon uninteressant.

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dynamische RAM's müssen in gewissen Zeitabständen "refresht" werden, da 
der Zustand jedes Bits in einem Kondensator gespeichert ist. Ein Refresh 
ist ein internes Auslesen und Schreiben damit die Ladung im Kondensator 
erhalten bleibt. Ohne oder bei zu langsame Zuriff/Refreshzugriff ist die 
Zeitspanne zu groß und die in den Kondensatoren gespeicherte Ladung geht 
verloren (Leckströme) -> Daten weg!

Sascha

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achsooo.. Aber heißt dass dann, das dieser Baustein zum erhalten der 
Daten auch mit einem Megaherz auskommt? Sonst kann ich mir die 5-1000ns 
Clock circle time nicht erklären.

Autor: Ben ___ (burning_silicon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probiers halt...

Autor: Markus F. (5volt) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ben _ (burning_silicon) schrieb:
> ansonsten ist SD-ram auch wegen der breiten daten- und adressbusse schon
> uninteressant
Das hängt ganz vom Verwendungszweck ab.
SDRAMs sind eben schnell, haben (für µC-Verhältnisse) viel 
Speicherkapazität und sind billig bis kostenlos zu bekommen.
Wegen der breiten Adress- und Datenbusse verbraucht man natürlich viele 
Portpins, kann dafür aber bei mäßigen Übertragungs-Takten ordentliche 
Datenmengen "schaufeln".

Und ich denke mal, dass der Hersteller halt garantiert, dass der SDRAM 
bis herab zu 1MHz funktioniert. Darunter funktioniert er vermutlich auch 
noch problemlos (sofern man die Refresh-Zeiten einhält), aber das hat 
der Hersteller halt nicht mehr getestet.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich werd das Ding einfach mal bestellen (kostet ja keine 3€) und 
testen.
Wenn ich also eine gewisse Zeit nichts mit dem Ram machen will, reicht 
der Takt aus, um die Daten zu behalten.

Ich hatte bloß gedacht, dass diese 133MHz zwingend notwendig sind. Naja, 
jedenfalls vielen Dank für die Erklärung. Habe es nun endlich (vom 
Prinzip her) gerafft.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich also eine gewisse Zeit nichts mit dem Ram machen will, reicht
> der Takt aus, um die Daten zu behalten.
Sowiit ich weis nicht bei jedem dynamischen RAM, sondnern nur bei 
self-refreshing Typen. Das sollte im Datenblatt stehen. Das Problem mit 
zu geringen Taktraten kann sein, dass du den RAM nicht schnell genug 
refreshen kannst.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist mal das Datenblatt:
https://www.it-wns.de/data/datenblatt_0000163_1.pdf

Darin steht, dass es einen "Auto & self refresh" hat, "64ms refresh 
period (4K cycle)"

Auf Seite 11 sind verschiedene Zeiten angegeben. Das was mir allerdings 
noch ein bisschen sorgen macht, ist, dass die "Output data hold time" 
mit 2ns angegeben ist. Heißt das, dass beim Lesen vom Ram die High-Pegel 
am Datenausgang nur 2ns High sind und dann wieder auf Low gehen? Das 
wäre ja ziemlich schlecht.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich schrieb:
> Heißt das, dass beim Lesen vom Ram die High-Pegel
> am Datenausgang nur 2ns High sind und dann wieder auf Low gehen?

Im Datenblatt sollte ein Timingdiagramm zu finden sein, in dem Du die 
angegebene Zeit wiederfinden solltest. Wie man so ein Diagramm liest, 
musst Du spätestens jetzt lernen, wenn Du Dich ernsthaft mit der 
SDRAM-Ansteuerung beschäftigen willst.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd das so verstehen, dass weniger als 2ns nicht drinne sind.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SD-RAM ist ziemlich anspruchsvoll anzusteuern. Benedikt, der leider 
anscheinend hier nicht mehr aktiv ist, hat es mal geschafft, einen SDRAM 
an einen AVR zu hängen und damit eine Art "Grafikkarte" zu realisieren. 
Der Thread dazu ist lang und hier im Forum zu finden. Allerdings hat er 
selber, als wirklicher Kenner der Materie, diese Lösung im Laufe der 
Weiterentwicklung verworfen, da sie halt doch sehr kritisch ist.
SD-RAM anzusteuern ist alles andere als simpel. Es empfiehlt sich, die 
Datenblätter sorgfältig zu lesen, tief durchzuatmen und dann zu 
überlegen, ob man sich nicht doch lieber herkömmlichen DRAM antut. Der 
ist schon aufwendig genug zu bedienen.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. Firefly schrieb:
> Im Datenblatt sollte ein Timingdiagramm zu finden sein, in dem Du die
> angegebene Zeit wiederfinden solltest.

Hab ich auch gedacht, war aber leider nicht dabei. Schön wäre es a la 
I²C Diagramm in Datenblättern für ICs mit dieser Ansteuerung.

Jan schrieb:
> Ich würd das so verstehen, dass weniger als 2ns nicht drinne sind.

Das stimmt, ist ja auch bei Minimum angegeben-.- Ich sollte mich mal 
ruhig hinsetzen und das nicht wärend der Arbeit überfliegen.

Sebastian schrieb:
> Es empfiehlt sich, die
> Datenblätter sorgfältig zu lesen, tief durchzuatmen und dann zu
> überlegen, ob man sich nicht doch lieber herkömmlichen DRAM antut.

Das mache ich. Allerdings bestell ich es erstmal mit, mache mir ein 
kleines Breakoutboard und teste mal. Schlimmer als "geht nicht" kanns ja 
nicht werden.

Autor: Sascha Weber (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was soll bei der ganzen Sache überhaupt rauskommen, nicht das dann dein 
µC nur noch mit dem ansprechen des RAMs beschäftigt ist. Überlege dir 
vorher mal grob wieviele Befehle du im µC brauchst um einen Zugriff zu 
realisieren und ob dann die geforderte Taktrate noch übrigbleibt.
Nur mal so:
2 Byte Row-Adresse ausgeben; RAS; 2 Byte Col-Adresse ausgeben; CAS; 1 o. 
2 Byte Daten einlesen; nebenher Takt ausgeben


Sascha

Autor: bohne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tuts nicht auch eine sd karte? dürfte etwa die gleiche 
zugriffsgeschwindigkeit bieten wie der ram chip. was das ganze schon ein 
bisschen wiedersinnig erscheinen lässt. mit einem fpga könnte man einen 
dram ansteueren, die haben auch genug pins. oder ein cpld für 1-2 euro 
als zwischenglied zwischen ram und avr einsetzten

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte vor, eine Art einfachen Logic-Analyzer zu machen, bzw 8 bit 
Digital + 1 8bit parallelen ADC. Dann kann ich per Counter die Adresse 
hochzählen, die Eingänge können gleich parallel (über Levelshift) 
angeschlossen werden und das theoretisch bis zu 100MHz. Ein µC wäre dann 
nötig, um zu Triggern und später die Daten zu lesen. Deshalb ist auch 
eine SD-Karte ungünstig, weil man dann erst die Daten erfassen müsste 
und seriell an die Karte zu schicken. Das ganze dient auch eher zum 
lernen, damit umzugehen.

Als Beispiel einen 100MHz Quartz, mit (per µC) einstellbaren Teiler 
dahinter um dann beim erkannten Bitmuster den Quarz durchzuschalten um 
dann anzufangen zu Zählen.

Das soetwas am besten mit nem FPGA geht, kann ich mir denken, nur hab 
ich erstmal vor, dden SD-Ram einigermaßen zu verstehen. Und weil er halt 
so billig ist, dachte ich mir, probieren schadet nicht.

Dazu nebenbei noch eine Frage.
Wo liegt (an Beispielanwendungen) denn der Unterschied, wann man einen 
dsPIC/PIC32 nehmen sollte, oder einen FPGA, bzw wann einen ARM?

Ich kann das nicht ganz auflösen. FPGA mit 100MHz als LA ist ja 
logischer als mit einem dsPIC, wohingegen ein PIC32 bei 80MHz 
1,56MIPS/MHz hat.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im verlinkten Datenblatt sind doch die Timingdiagramme drin, kommen nach 
den Befehlstabellen. Alles da, eigentlich. Sind schließlich nicht 
umsonst 66 Seiten.
Grob gesagt, ein FPGA ist vor allem aufgrund seiner Parallelität so 
schnell. Im Gegensatz zum Mikrocontroller wird kein sequentielles 
Programm abgearbeitet, sondern aus der Hardwarebeschreibung eine 
Struktur aus logischen Verknüpfungen erstellt. Diese sind - abhängig vom 
externen Takt bei einem synchronen Design - praktisch gleichzeitig 
wirksam. Dafür ist der Aufwand für den Entwurf einer Logik im FPGA doch 
etwas höher, als ein Mikrocontrollerprogramm zu schreiben.
Für Anwendungen wie einen Logikanalysator ist ein FPGA prädestiniert, da 
gibt es auch Projekte. Der Algorithmus ist überschaubar, und 
Geschwindigkeit ist alles.
Bei den Mikros liegt der Unterschied zwischen großem PIC und ARM (7, 
vermute ich) zunächst einmal darin, daß der ARM durch seine echte 32-Bit 
Architektur rechenstärker ist. Ein Logikanalysator hat davon aber keinen 
großen Vorteil. Große ARM-Mikrocontroller haben jedoch ein 
SDRAM-Speicherinterface eingebaut. Allerdings nur wirklich große, 
hauptsächlich die linuxtauglichen (z.B. LPC24xx und größer)

Trotz allem: Ein Logikanalysator mit SDRAM ist ehrgeizig. Natürlich gibt 
es so etwas wie eine "Burst Write" Funktion (siehe Datenblatt). Aber bis 
man so etwas richtig benutzen kann, ist eine Menge Einarbeitung fällig.
Mal anders gefragt: Wie groß muß denn die Speichertiefe sein? Ja, SRAM 
ist teuer. Aber eine Speicherbank aus schnellen Cache-SRAMS bedient sich 
ungleich leichter (12 ns Zugriffszeit sind durchaus möglich), und 
eventuell läßt sich soviel an Logik sparen, daß statt einem teuren FPGA 
ein billiger CPLD genügt.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:
> Im verlinkten Datenblatt sind doch die Timingdiagramme drin, kommen nach
> den Befehlstabellen. Alles da, eigentlich. Sind schließlich nicht
> umsonst 66 Seiten.

Welches Datenblatt meinst du?? Das was ich hier

ich schrieb:
> Hier ist mal das Datenblatt:
> https://www.it-wns.de/data/datenblatt_0000163_1.pdf
>
> Darin steht, dass es einen "Auto & self refresh" hat, "64ms refresh
> period (4K cycle)"

gepostet habe, hat bei mir 14 Seiten. Und auf der letzten Seite steht 
unten auch "14 of 14". Also wenns abgeschnitten wäre, müsste da ja "of 
66" stehen. Welches hast du denn?


Sebastian schrieb:
> Wie groß muß denn die Speichertiefe sein?

Naja am besten so tief wie möglich. Ich hab ansich einen gekaufen 
LogicAnalyzer aber ich würde gern mal gucken, ob man dass auch "einfach" 
hinbekommt. Also per simpler PC-Software über USB an einen PIC. Dann 
über 3 Quarze (80MHz für 80&40&20&10 MHz, 60MHz für 60&30 MHz und einen 
mit 50MHz) die Samplerate einstellen (also von 10-80MHz alles bis auf 
70MHz, könnte man aber über 4. Quarz erzeugen).
Ein oder vlt 2 Counter (Row und Column) zählen in dem Takt die Adresse 
hoch und die Logikeingänge gehen über Levelshift direkt an den Ram. Also 
braucht der µC quasi nur ein paar Statusbits setzen und sich nicht um 
Daten oder Adressen kümmern. Dann wird der Speicher vollgehauen und wenn 
er voll ist (oder über ein Abruch-Taster oder bei einem Speziellen 
Bitmuster), wird alles gestoppt. Anschließend liest der PIC das Ram aus 
(der PIC erzeugt dann quasi den Takt für die Counter, hier wär die 
Frage, ob es mit ~2MHz geht) und schickt die per USB an den PC.

Soweit jedenfalls erstmal mein Plan. Es ist ansich ein simpler Aufbau 
und ansich recht günstig. PIC 4€, Levelshifter 4€, RAM 3€, Counter vlt. 
5€, Quarze und Teiler ca. 3€. Zusammen dann kleiner 20€. Sowas wie I²C 
Decodierung ist erstmal nciht geplant und wenn, dann wäre es nur 
programmieraufwand an der PC-Software.

Zur Tiefe.

Bei 8Mx16 bit, wären es rechnerisch so:
@80MHz -> 0,1048576 Sekunden
@60MHz -> 0,1398101 Sekunden
@50MHZ -> 0,1677722 Sekunden
@40MHz -> 0,2097152 Sekunden
@30MHZ -> 0,2796203 Sekunden
@20MHz -> 0,4194304 Sekunden
@10MHZ -> 0,8388608 Sekunden

Aufnahmedauer. Je größer der Ram, desto länger kann man aufnehmen. Ich 
muss nurnoch gucken, welche Counter schnell genug sind, aber da lässt 
sich bestimmt was finden. Danach hab ich aber erstmal noch nich geguckt. 
Und diese Quarz-Teiler-Kombi ist auch noch nicht soo das wahre.
Da könnte ich mir auch sowas wie ein DS1085L 
(http://www.maxim-ic.com/datasheet/index.mvp/id/3495) vorstellen. Der 
geht allerdings nur bis ca. 50MHz. Ich würde notfalls auch erstmal einen 
mit 50MHz samplerate machen, dann könnte ich den Baustein nehmen und für 
allgemeine Sachen sollte es ja auch erstmal reichen.

Ich weiß, grade wenn ich schon einen LA habe, ist es recht unnütz und 
man kanns besser machen, aber mir gehts mehr darum, dass es günstig und 
simpel ist. Und für 20€ bekomme ich grad mal den FPGA, der in meinem LA 
drinne ist.

Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schnelle Zähler gibt es zwar auch als Logikbausteine, aber ein CPLD ist 
da die einfachste Lösung - kann auch den Takt teilen bzw. umschalten.

Sorry für den Fehler mit 66 Seiten. Da meinte ich das Nanya-Datenblatt, 
siehe Anhang. Ist im Prinzip ein vergleichbares Bauteil, bloß von 
anderem Hersteller und umfangreicher dokumentiert.
Trotzdem vergeht mir beim Lesen solcher Dokumente regelmäßig aufs Neue 
die Lust auf SDRAM.

Autor: Hans-Georg Lehnard (h-g-l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Counter alleine nützen dir nichts ...

Dieses Rams hat keine einfachen Adressen, Daten und RD und WR Signale, 
sondern bekommt Befehle  (Kombination aus HW-Signalen und einem 
OP-Code).

Schau dir die Diagramme und die Tabellen im Datenblatt an.

Während du deine Daten ins Ram schreibst werden Refresh Zyklen fällig
also brauchst du Fifo um diese Zeit zu puffern.

Nimm lieber ein SRAM, ist einfacher.

Auch wird dein Pic bei 100Mhz keine Triggersignale generieren können.

CPLD oder Fpga sind also Pflicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.