Ist es möglich, Multi-Gigabyte-DRAM-Module mit einem Mikrocontroller zu verwenden?


20

Ich habe zwei verbleibende 2 GB RAM-Module, die ich bei einem Upgrade von meinem MacBook Pro entfernt habe. Ich habe mich nur gefragt, ob diese zum Beispiel mit einem Arduino verwendet werden können. Ich wäre ein zu großer Anfänger, um dies jetzt tatsächlich zu versuchen, aber ich bin neugierig, ob es überhaupt möglich ist oder ob das einfach zu viel Speicher ist, als dass ein Mikrocontroller dies ansprechen könnte.


1
Sie könnten wahrscheinlich etwas dafür tun, aber die Schnittstellenschaltung wäre wahrscheinlich der komplexeste Teil des resultierenden Systems, und das Ergebnis hätte wenig praktischen Nutzen.
JustJeff

Danke für die tollen Antworten! Sehr interessant. Ich lerne allmählich, wie die Teile zusammenpassen. Vielen Dank.
johndeo

Auf den Plattformen ARM9 und ARM11 werden DDR2-Controller gehostet, aber dann geht es nicht um Mikrocontroller, sondern um Mikroprozessoren. FPGA kann ebenfalls eine Schnittstelle damit herstellen. Die ganze Aufgabe ist ziemlich komplex. Ein Arduino ist nur 8-Bit, kann also den massiven Adressierungsjob in der Hand nicht ausführen.
Hans

Was Hans gesagt hat: Jedes Mikro, das so leistungsfähig ist, dass es diese Art von RAM nutzen kann, verfügt über einen eingebauten DDR-Controller. Ich habe mir die Funktionsweise der DDR-Steuerung nicht genau angesehen, aber die Tatsache, dass Sie dafür dedizierte Hardware benötigen, sagt es Ihnen Etwas ... ältere Module, Zeug von alten Laserdruckern usw. könnten nützlicher sein.
John U

Antworten:


24

Ich werde nein sagen: Die grundlegendste Inkompatibilität ist, dass es zu viele Pins auf diesen Modulen gibt, um sie physisch an ein Arduino anzuschließen. Das Gleiche gilt für ähnliche kleine Mikrocontroller. Ein ARM Cortex M3 rückt näher, aber nur wenige von ihnen verfügen tatsächlich über den externen Bus, der für eine solche Schnittstelle zum RAM erforderlich ist (glaube ich).

Aber ich werde weiter spielen. Angenommen, Sie könnten den Chip auf irgendeine Weise mit dem Arduino verbinden. Ein weiteres grundlegendes elektrisches Kompatibilitätsproblem sind die erforderlichen Spannungen. Ich denke, diese RAM-Module verwenden etwas Seltsames wie 2,2 V - nicht vorhanden auf einem Vanille-Arduino-Board oder wirklich einem anderen grundlegenden Hobby-Mikrocontroller.

Angenommen, das wäre erledigt, dann würde der Chip so ziemlich wie jeder andere externe Speicher des Arduino funktionieren. Dies ist wirklich die ganze Zeit getan - Menschen fügen externe EEPROMs hinzu, um wichtige Konstanten oder SD / MMC-Karten für die Speicherung von Webserver-Protokollen und dergleichen zu speichern. In diesem Zusammenhang bieten die RAM-Module dem Arduino natürlich keinen wirklichen Vorteil. Sein Hauptmerkmal ist die Geschwindigkeit, und der Arduino (und ja, andere Hobby-Mikrocontroller) unterbrechen in der Regel nicht die Taktfrequenz von 25 MHz. Sie sind zu langsam, um auf Geschwindigkeit zu achten. Und die Speichergröße ist kein großes Problem, da die Anbindung an eine SD / MMC-Karte deutlich einfacher ist und ebenso viel Platz zum Spielen bietet.

Selbst wenn es möglich wäre, wäre es nicht wirklich ratsam.


Ich muss gestehen, ich habe darüber nachgedacht, ein altes DIP-DRAM an mein Arduino anzuschließen, nur für Larfs. (aber das wäre machbar, sogar auf einem Steckbrett, mit Junk aus der 4164-Ära). Ansonsten stimme ich voll und ganz zu.
JustJeff

1
Das ist eine qualitative Antwort, bei der schrittweise Annahmen verwendet werden und die Endbedingung erreicht wird. Gute Arbeit!
LeanerRocky

2
Übersehen Sie nicht die Aktualisierungsprobleme. Ein weiterer Grund, warum "befehlsbasiertes" Flash wahrscheinlich besser passt, wenn eine Maus eines Controllers versucht, einen Mack-Truck eines Speichers anzutreiben.
Chris Stratton

Ich habe oben einen Kommentar mit der Frage eingefügt, aber ich denke, ich sollte ihn wirklich hier einfügen. Vielen Dank für die Antwort. Der Austausch von Stapeln ist eine hervorragende Ressource, da sich die Mitarbeiter Zeit nehmen, um qualitativ hochwertige Antworten zu liefern.
johndeo

8

Ich würde nein sagen, nicht ohne ein gutes (Pin Count) -FPGA dazwischen zu stecken, das FPGA spricht mit dem Speicher und der Mikrocontroller spricht mit dem FPGA unter Verwendung eines Paging-Schemas.


Mein Gedanke auch. Und das FPGA soll ein transparenter Refresh-Controller sein. Aber wirklich ... wäre es nicht einfacher und billiger, ein Arduino in Software auf einem kleinen ARM-System zu emulieren ?
Chris Stratton

1
Wie lustig oder lehrreich es auch sein mag, DDR ist nicht einfach und kein Anfängerkram. Suchen Sie sich einen anderen Laptop oder ein Motherboard, um diesen Speicher zu nutzen, und lernen Sie DDR kennen, indem Sie beispielsweise ein FPGA-Evaluierungsboard verwenden, das ein wenig an der Seite liegt, oder vielleicht ein Beagleboard oder ähnliches. Das erste Problem ist die Pin-Anzahl, das zweite das Signal, das Timing usw. Es ist schwierig, es zum Laufen zu bringen, wenn Sie Ihre eigene Platine herstellen. Es ist nicht wie eine LCD-Schnittstelle oder so etwas, das man an einen Mikrocontroller anschließen kann.
old_timer

7

Sie könnten denkbarerweise ein System von Latches verwenden, um es so etwas wie einem Arduino zu ermöglichen, 32 Adressbits zu generieren, und Sie könnten wahrscheinlich ein Schema zum Generieren der Auffrischungszyklen entwickeln, aber es hätte fast keinen Sinn, dies zu tun, außer aus technischen Gründen Übung.

Die Schnittstellenschaltung wäre wahrscheinlich der komplexeste Teil des resultierenden Systems, und das Ergebnis hätte nur einen geringen praktischen Wert. Das Arduino wäre nicht in der Lage, Code aus dem RAM auszuführen, der Speicher wäre flüchtig und würde wahrscheinlich auch mehr Strom verbrauchen als das Arduino. Wenn Sie Daten speichern möchten, ist ein SPI-EEPROM wahrscheinlich eine viel bessere Lösung.


1
Kann ein AVR unter allen Umständen Code aus dem RAM ausführen?
Nick T

@ Nick T - Ich habe nicht indirekt darauf hingewiesen, dass es solche Szenarien gibt, in denen dies möglich ist. Ich habe direkt gesagt, dass für den Fall, dass jemand daran denkt, eine Verbindung zu dieser Art von RAM herzustellen, es falsch wäre, zu glauben, dass er es auf diese Weise nutzen könnte.
JustJeff

1
Serial Flash oder SRAM sind normalerweise viel schneller als EEPROM. Wenn Sie viele nichtflüchtige Daten benötigen (der Anwendungsfall für Remote-Code), ist Flash wahrscheinlich die bessere Wahl. Verwenden Sie für große Puffer SRAM. Es ist viel schneller als EEPROM. Wenn Sie einige Konfigurationsbits haben, die unabhängig voneinander umgeschaltet werden müssen, ist dies wirklich die einzige Nische, die für EEPROMs übrig bleibt.
Kevin Vermeer

@reemrevnivek - guter Punkt, ich +1 deinen Kommentar. Wenn Sie ein paar Dutzend Konfigurationseinstellungen beibehalten, verwenden Sie das EEPROM. Wenn Sie Videoframes beibehalten möchten, verwenden Sie SRAM.
JustJeff

7

Wenn Sie sich jemals DRAM-Chip-Datenblätter ansehen, gibt es für DDR2 eine minimale Taktrate von etwa 50 MHz +. Nein, Sie können sie nicht mit einem Mikrocontroller verbinden (es sei denn, er verfügt über eine integrierte Hardware-Unterstützung).


Ganz zu schweigen davon, dass Sie den Speicher auch öfter auffrischen müssen! Der Arduino würde seine ganze Zeit damit verbringen, die Speichersteuerleitungen zu steuern!
Toybuilder

6

Die kurze Antwort lautet nein.

Der Arduino kann die DDR- oder DDR2-Speicherschnittstelle nicht ansteuern. Sie könnten einen DDR / DDR2-Controller mit einer SPI-Schnittstelle mit einem FPGA herstellen, aber das ist ein bedeutendes Unterfangen.


6

Sie benötigen einen Niederspannungstreiber (SSTL) und eine Möglichkeit, etwa 100 Kanäle zu steuern (jedes Differential, also etwa 200 Pins. Denken Sie an BGA.)

Der meiste DRAM muss mit mindestens 1 kHz und wahrscheinlich mehr aufgefrischt werden, um eine niedrige Bitfehlerrate zu haben. Dies wird dann eine wichtige Hintergrundaufgabe bilden und den größten Teil der Verarbeitungsleistung des Arduino verbrauchen, wenn es überhaupt möglich ist, den Speicher mit einer solchen Geschwindigkeit aufzufrischen.

Was Sie jedoch sehen können, ist, dass einige Mikrocontroller, z. B. PIC24F / H / dsPIC33F, eine parallele Master-Bus-Schnittstelle unterstützen, über die auf einige Typen von parallelen SRAM zugegriffen werden kann. Es gibt sogar Unterstützung für C, da dieser externe Speicher mehreren Codevariablen und sogar Blöcken zugeordnet werden kann, die sowohl interne als auch externe Speicher kombinieren. Für den externen Speicher müssen Sie PMB-Code schreiben. Damit können Sie jedoch nur bis zu 1 MB ansprechen.


AFAIK DDR verwendet SSTL nicht LVDS
mazurnification

@mazurnification, Yeah, du hast Recht (mein Fehler). Trotzdem ein Albtraum, den man von einem Arduino aus kontrollieren kann.
Thomas O

Dann korrigiere deine Antwort!
Kevin Vermeer

@reemrevnivek, okay. Korrigiert Ich habe jedoch nur darauf hingewiesen, dass es unpraktisch ist. Egal welches Signalisierungsformat verwendet wird.
Thomas O

2

Nein, nicht ohne irgendeine Paging-Schnittstelle zwischen dem Speicher und der MCU. Einige der AVR-MCUs verfügen tatsächlich über eine integrierte externe Speicherschnittstelle, z. B. Atmega2560 (siehe Abschnitt 8 des Datenblattes ATmega640 / 1280/1281/2560/2561). Der Adressraum wird jedoch in Kilobyte und nicht in Gigabyte angegeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.