Hallo, für eine Anwendung zur Datenaufzeichnung möchte ich gerne schnelle DRAM-Riegel aus dem PC-Bereich verwenden. Hierzu möchte ich per CPLD oder evtl. speziellem DRAM Controller ein SRAM-ähnliches Interface zur Applikation haben, also keine RAS, CAS, Refresh, Init, ... Die Applikation besteht z. B. aus einem AD-Wandler, dessen Werte zyklisch (über einen 2. CPLD oder ähnliches) in den DRAM geschrieben werden. Wichtig ist, daß der gesamte DRAM zyklisch sequentiell beschrieben wird, die Möglichkeit des wahlfreien Zugriffs ist für diese Anwendung also nicht interessant! Frage: 1) Welcher DRAM (DDR, Edo, ...) ist dafür besonders gut geeignet hinsichtlich - max. erzielbarer kontinuierlicher! Datenrate - möglichst einfacher Ansteuerung 2) Kann jemand Beispielapplikationen referenzieren?
Hi, ich kenne mich zwar nicht damit aus, aber schau dir dochmal den mp3-player auf pjrc.com an. da wird auch ein altes dram aus dem pc bereich verwendet um mp3 daten zwischenzuspeichern. benutzt einen 8051 alc hauptcontroller und einen cpld fuer den speicher Viel Glueck Tobias
Wie schnell soll das denn überhaupt werden? Und wie viele Samples willst Du aufnehmen? Hier gibts eine Beschreibung von jemandem, der schon PC100 SDRAM in eigene Schaltungen integriert hat: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=duri9v8q3pkherlvojq68du8cbkhqf83c5%404ax.com
Im Moment bin ich noch dabei zu schauen, was überhaupt mit vertretbarem Aufwand machbar ist. Aber grundsätzlich so schnell wie möglich! Und die Anzahl Samples sollte ohnehin egal sein und nur durch die Speichergröße begrenzt. Danke für die Tips soweit, Christian
DRAM + kontinuierlich + schnell ist ein Widerspruch. Den Refresh kann man kontinuierlich machen, aber das Ergebnis ist nicht schnell. Macht man einen Burst Refresh, ist das nicht kontinuierlich. Um welche Anwendung geht es denn ? Ich habe schon mehrfach DRAMs mit uC verwendet, u.a. 2MB DRAM als Speicher an einem 8051. Das ganze Timing geschieht Hardwaremäßig, der 8051 verwendet die normalen MOVX Befehle. Nur um den Refresh zu aktivieren, muss ein Bit gesetzt werden... Für schnelle Datenaufzeichnung eignen sich auch VRAMs. Dies sind normale DRAMs, die zusätzlich einen SRAM Puffer mit eingebautem Adresszähler haben. Ein Takt und der nächste Datenwert wird ausgegeben bzw. gespeichert. Wenn der Serielle Puffer voll ist, wird er parallel ins DRAM übertragen. Mit einem 8051 schaffe ich damit 40MB/s...
Hallo So ein Projekt ist mit einem SDR-SDRAM durchaus möglich. Du solltest aber ein FPGA mit PLL und integriertem Speicher verwenden. Die Datenaufzeichnung läutf dann z.B mit 100MHz und das RAM mit einer ca. 20% höheren Frequenz. Durch das integrierte RAM ist es möglich die Daten von dem beiden Tackfrequenzen zu synchronisieren und zu puffern. Über diesen Puffer werden die Daten bei einem Refresh oder beim Aktiviern einer neuen Zeile zwischengespeichert. Ein Puffer 128 Samples reichen völlig aus.
Hallo..., @Benedikt: Mich wuerde mal interessieren, wie Du 2 MB mit einem 8051 er adressierst. Vielleicht ein paar Tips. Danke. Alex
Hallo Christian! wenn Du nach DRAM Controller googelst, findest Du viele nützliche links, z.B. fertige Chips von National (DP84xx) bzw. Designvorschläge wie diesen hier: http://www.eetasia.com/ARTICLES/2002OCT/A/2002OCT11_MEM_MPR_AN01.PDF Andere links stehen ja schon oben. Das alles stellt aber hohe Anforderungen an Schaltungsdesign und PCB-design. Muß es unbedingt DRAM sein? Wenn das kein professionelles Projekt wird, sind alte cache-RAMs von PC-motherboards die viel bessere Wahl, auch wenn sie etwas kleiner (Speicherkapazität, nicht mechanische Maße) als übliche dRams sind. Absolut einfach zu handhaben und schnell: 15 ns, 20 ns oder 25 ns vom Anlegen der Adresse bis zum sicheren Bereitstellen der Daten. Alternativ schau Dir mal das Schaltbild vom Logikanalysator in der elektor 2/2003 an. Die benutzen FIFOs und steuern die mit einem AT90S8515. Damit erreichen sie bis zu 40 Mhz Samplerate auf 36 (digitalen) Kanälen. Ansonsten bleiben die altbewährten Chips der 8086/Z80-Generation, also 8237-DMA, Z80-DMA o.ä. (Ich glaube kaum, daß Du Chipsatzteile von 386/486/586/686 ...-Motherboards benutzen willst) Ich wäre an weiteren Infos über Dein Projekt interessiert. (-> Speicheroszi :-))
Mein letzter Beitrag war teilweise etwas mißverständlich: Ich weiß, daß (PC-)cache-RAMs schnelle SRAM sind. :-)
@Alex1 Ich verwende nur 32kB des Adresbereichs für den Speicher. Die restlichen 32kB sind für IO reserviert. Der uc sieht immer nur 32kB von den 2MB des DRAM (es sind sogar 128MB möglich...) Zusammen mit einem 74HC574 werden insgesamt 23 Adressleitungen erzeugt. Damit lassen sich 8MB ansteueren. Aus Platzgründen verwende ich nur 2x 1MB SIMM Module aus 386er und 486er... Die Ansteuerung ist an sich einfach: ALE = RAS\ WR\ oder RD\ sind CAS\ Geht ALE auf Low, soll der 74HC573 die Adresinformationen latchen. Jetzt speichert eben der DRAM die Adresse. Kommt dann noch ein WR\ oder RD\ Signal wird auch noch CAS\ aktiviert und das DRAM speichert den zweiten Teil der Adresse. Die Adresse wird per 74HC157 umgeschaltet. Hat zwar noch ein paar Probleme, aber mit einigen Modulen läuft die Schaltung einwandfrei. Ich brauche soviel Speicher, um die FAT Tabelle und das Root einer Festplatte zwischenzuspeichern.
@Benedikt, das speicher-banking ist klar, aber wie machst Du den nötigen refresh? Oder haben die Module sowas wie autorefresh?
Ist doch logo: Der Refresh wird über den Speicherzugriff aufs XRAM erzeugt. Also einfach die NOPs ausführen. Sollten 1024 sein. Verbrät zwar Rechenzeit, aber dafür ist die Ansteuerung simpel.
Nein, ist viel einfacher: An jeder CAS\ Leitung sitzt ein AND Gatter. Die Eingänge sind mit CAS\ und der andere mit Refresh\ bezeichnet. Ein Befehl, die Leitung ist Low, und daruafhin wird ein CBR Refresh durchgeführt... Bis zum nächsten Datentransfer. Vor dem muss Refresh\ wieder auf High gesetzt werden.
@Benedikt&Maestro Danke für die Antwort, das muß ich mal ausprobieren. (Bisher bin ich vor dRAM immer zurückgeschreckt)
Ich habe mir so ziemlich alles zum Thema DRAMs besorgt, was im Internet oder sonstwo zu bekommen war. Nur etwa 50% aller Schaltungen verwenden wirklich spezielle DRAM Controller, die restlichen machen das über diskrete Logik (oder ein PAL). Googled mal nach "AMD29000 DRAM" oder nach "Bank Interleaved Memory System". Da finden sich eine nette Dokumente mit Schaltplänen. Obwohl der AM29000 ein 32bit RISC CPU ist, wird die DRAM Ansteuerung (einschließlich Refresh) über TTL und PALs gemacht...
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.