Ich habe zwei übrig gebliebene 2-GB-RAM-Module, die ich bei einem Upgrade aus meinem MacBook Pro entfernt habe. Ich habe mich nur gefragt, ob diese beispielsweise mit einem Arduino verwendbar sind. Ich wäre sowieso zu viel Anfänger, um dies jetzt tatsächlich zu versuchen, aber ich bin gespannt, ob es überhaupt möglich ist oder ob das einfach viel zu viel Speicher ist, den ein Mikrocontroller adressieren kann.
Ich werde nein sagen: Die grundlegendste Inkompatibilität besteht darin, dass es viel zu viele Pins an diesen Modulen gibt, um sie sogar physisch mit einem Arduino zu verbinden. Dito für ähnliche kleine Mikrocontroller. Ein ARM Cortex M3 kommt näher, aber nur wenige von ihnen haben tatsächlich den externen Bus, der notwendig ist, um RAM auf diese Weise zu verbinden (glaube ich).
Aber ich werde mitspielen und weiter gehen. Angenommen, Sie könnten den Chip irgendwie mit dem Arduino verbinden, ist ein weiteres grundlegendes elektrisches Kompatibilitätsproblem die erforderlichen Spannungen. Ich denke, diese RAM-Module verwenden etwas Seltsames wie 2,2 V - nicht vorhanden auf einem Vanilla-Arduino-Board oder wirklich jedem anderen einfachen Hobby-Mikrocontroller.
Angenommen, das wäre erledigt, dann würde der Chip so ziemlich wie jeder andere externe Speicher für den Arduino funktionieren. Dies wird wirklich ständig gemacht - die Leute fügen externes EEPROM hinzu, um wichtige Konstanten oder SD/MMC-Karten zum Speichern von Webserver-Protokollen und dergleichen zu speichern. In diesem Zusammenhang bieten die RAM-Module natürlich keinen wirklichen Nutzen für den Arduino. Sein Hauptmerkmal ist die Geschwindigkeit, und der Arduino (und ja, andere Hobby-Mikrocontroller) unterbrechen normalerweise nicht die Taktfrequenz von 25 MHz. Sie sind zu langsam, um sich um Geschwindigkeit zu kümmern. 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.
Also selbst wenn es möglich wäre, wäre es nicht wirklich ratsam.
Ich würde nein sagen, nicht ohne ein FPGA von guter Größe (Pin-Anzahl) dazwischen zu stecken, das FPGA spricht mit dem Speicher und der Mikrocontroller spricht mit dem FPGA unter Verwendung eines Paging-Schemas.
Sie könnten möglicherweise ein System von Latches verwenden, damit so etwas wie ein Arduino 32 Adressbits generieren kann, und Sie könnten wahrscheinlich ein Schema zum Generieren der Aktualisierungszyklen entwickeln, aber dies hätte fast keinen Sinn, außer aus technischen Gründen Übung.
Die Schnittstellenschaltung wäre wahrscheinlich der komplexeste Teil des resultierenden Systems, und das Ergebnis hätte wenig 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.
Wenn Sie sich jemals die Datenblätter von DRAM-Chips ansehen, gibt es eine Mindesttaktrate von etwa 50 MHz+ für DDR2. Also nein, Sie können sie nicht mit einem Mikrocontroller verbinden (es sei denn, er verfügt über eine integrierte Hardwareunterstützung).
Die kurze Antwort ist 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 erhebliches Unterfangen.
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.)
Die meisten DRAMs müssen mit mindestens 1 kHz und wahrscheinlich mehr aufgefrischt werden, um eine niedrige Bitfehlerrate zu haben. Dies wird dann eine große Hintergrundaufgabe bilden und den größten Teil der Verarbeitungsleistung des Arduino verbrauchen, wenn es überhaupt möglich ist, den Speicher mit einer solchen Rate aufzufrischen.
Was Sie jedoch sehen können, ist, dass einige Mikrocontroller, z. B. PIC24F/H/dsPIC33F, eine parallele Master-Bus-Schnittstelle unterstützen, die den Zugriff auf einige Arten von parallelem SRAM ermöglicht. Es gibt sogar Unterstützung mit C, da dieser externe Speicher mehreren In-Code-Variablen und sogar Blöcken zugeordnet werden kann, die sowohl interne als auch externe Speicher kombinieren. Der externe Speicher erfordert, dass Sie einen PMB-Code schreiben. Sie können damit jedoch nur bis zu etwa 1 MB adressieren.
Nein, nicht ohne eine Art Paging-Schnittstelle zwischen dem Speicher und der MCU. Einige der AVR-MCUs haben tatsächlich eine eingebaute externe Speicherschnittstelle - Atmega2560 zum Beispiel (siehe Abschnitt 8 des ATmega640/1280/1281/2560/2561-Datenblatts). Aber der Adressraum wird in Kilobyte gemessen, nicht in Gigabyte.
Nur Jeff
johndeo
Hans
John u