È possibile utilizzare moduli DRAM multi gigabyte con un microcontrollore?


20

Ho due moduli RAM da 2 GB rimanenti che ho rimosso dal mio MacBook Pro durante un aggiornamento. Mi chiedevo solo se fossero utilizzabili, ad esempio, con un Arduino. Sarei troppo principiante per provare effettivamente a farlo ora, comunque, ma sono curioso di sapere se è possibile, o se è solo troppa memoria per un microcontrollore.


1
probabilmente potresti truccare qualcosa per farlo, ma i circuiti di interfaccia sarebbero probabilmente la parte più complessa del sistema risultante e ci sarebbe poco valore pratico nel risultato.
JustJeff,

Grazie per le ottime risposte! Molto interessante. Sto gradualmente imparando come si incastrano i pezzi. Grazie.
johndeo,

Le piattaforme ARM9 e ARM11 ospitano controller DDR2, ma non si parla di microcontrollori ma di microproccesori. Anche FPGA può interfacciarsi con esso. L'intero compito è piuttosto complesso. Un arduino ha solo 8 bit, quindi non può fare il lavoro di indirizzamento di massa in mano.
Hans,

Cosa ha detto Hans: qualsiasi micro sufficientemente potente da utilizzare quel tipo di RAM avrà un controller DDR integrato. Non ho esaminato attentamente il funzionamento interno del controllo DDR, ma il fatto che hai bisogno di hardware dedicato per farlo ti dice qualcosa ... moduli più vecchi, elementi di vecchie stampanti laser ecc. potrebbero essere più utilizzabili.
John U

Risposte:


24

Sto per dire di no: l'incompatibilità di base è che ci sono troppi pin su quei moduli che riescono persino a interfacciarlo fisicamente con un Arduino. Idem per microcontrollori simili. Un ARM Cortex M3 si sta avvicinando, ma pochi hanno effettivamente il bus esterno necessario per interfacciare la RAM in questo modo (credo).

Ma giocherò per andare oltre. Supponendo che sia possibile interfacciare il chip con Arduino in qualche modo un altro problema di compatibilità elettrica di base sono le tensioni richieste. Penso che questi moduli RAM utilizzino qualcosa di strano come 2,2 V - non presente su una scheda Arduino vaniglia o davvero, qualsiasi altro microcontrollore di base per hobbisti.

Supponendo che fosse curato allora il chip avrebbe funzionato praticamente come qualsiasi altra memoria esterna su Arduino. Questo è sempre fatto davvero - le persone aggiungono EEPROM esterna per archiviare costanti importanti o schede SD / MMC per l'archiviazione dei registri del server web e simili. Naturalmente, in questo contesto, i moduli RAM non presentano alcun reale vantaggio per Arduino. La sua caratteristica principale è la velocità e l'Arduino (e sì, altri microcontroller hobbisti) in genere non rompe i 25 MHz nella velocità di clock. Sono troppo lenti per preoccuparsi della velocità. E la dimensione della memoria non è un grosso problema poiché l'interfaccia con una scheda SD / MMC è nettamente più semplice e offre tanto spazio per giocare.

Quindi, anche se fosse possibile, non sarebbe davvero consigliabile.


devo confessare che ho pensato di interfacciare qualche vecchia DIP DRAM con il mio arduino, solo per le larfs. (ma, sarebbe fattibile, anche su una breadboard, con spazzatura dell'era 4164). altro, sono totalmente d'accordo.
JustJeff,

1
Questa è una risposta di qualità, usando ipotesi passo per passo e arrivando alla condizione finale. Bel lavoro!
Leaner Rocky

2
Non trascurare i problemi di aggiornamento. Un altro motivo per cui il flash "command based" è probabilmente una corrispondenza migliore quando un mouse di un controller sta cercando di guidare un mack truck di una memoria.
Chris Stratton,

Ho inserito un commento sopra, con la domanda, ma credo che dovrei davvero inserirlo qui. Grazie mille per la risposta Lo scambio di stack è una super risorsa ed è tutto dovuto al fatto che le persone impiegano tempo per fornire risposte di qualità.
johndeo,

8

Direi di no, non senza attaccare un fpga di buone dimensioni (conteggio dei pin) in mezzo, l'FPGA parla con la memoria e il microcontrollore parla con l'FPGA usando uno schema di paging.


Anche il mio pensiero. E avere l'FPGA un controller di aggiornamento trasparente. Ma davvero ... non sarebbe più semplice ed economico emulare un arduino in software su un piccolo sistema ARM?
Chris Stratton,

1
Per quanto divertente o educativo potrebbe essere DDR non è semplice e non roba per principianti. Trova un altro laptop o scheda madre per inserire questa memoria e scopri il DDR usando diciamo una scheda fpga eval che ha un po 'di lato o forse una beagleboard o qualcosa del genere. Il primo problema è il conteggio dei pin, il secondo è i segnali, i tempi, ecc. È difficile farlo funzionare quando si crea la propria scheda elettronica. Non è come un'interfaccia lcd o qualcosa del genere che è possibile eseguire il breadboard su un microcontrollore.
old_timer

7

Si potrebbe concepibilmente utilizzare un sistema di agganci per consentire a qualcosa come un arduino di generare 32 bit di indirizzo, e probabilmente si potrebbe escogitare qualche schema per generare i cicli di aggiornamento, ma non avrebbe quasi senso farlo, tranne che come tecnico esercizio.

La circuiteria di interfaccia sarebbe probabilmente la parte più complessa del sistema risultante e nel risultato ci sarebbe poco valore pratico; l'arduino non sarebbe in grado di eseguire il codice dalla RAM, l'archiviazione sarebbe volatile e probabilmente consumerebbe più energia rispetto all'arduino. Se si desidera archiviare dati, una EEPROM SPI è probabilmente una soluzione molto migliore.


1
Un AVR può eseguire il codice dalla RAM in qualsiasi circostanza?
Nick T,

@ Nick T - Non stavo suggerendo indirettamente che esistessero scenari in cui potesse farlo; Stavo dicendo direttamente che nel caso in cui qualcuno stesse pensando di interfacciarsi con questo tipo di RAM, sarebbe sbagliato pensare di poterlo usare così.
JustJeff,

1
Serial Flash o SRAM sono in genere molto più veloci di EEPROM. Se hai bisogno di molti dati non volatili (il caso d'uso del codice remoto), Flash è probabilmente la scelta migliore. Per buffer di grandi dimensioni, utilizzare SRAM; è molto più veloce di EEPROM. Se hai alcuni bit di configurazione che devono essere attivati ​​in modo indipendente, questa è davvero l'unica nicchia rimasta per le EEPROM.
Kevin Vermeer,

@reemrevnivek - buon punto, +1 al tuo commento. Se mantieni alcune decine di impostazioni di configurazione, EEPROM. Se vuoi mantenere i frame del video, SRAM.
JustJeff,

7

Se guardi mai i fogli dati del chip DRAM c'è una velocità di clock minima di circa 50 MHz + per DDR2. Quindi no, non sarai in grado di interfacciarli con un microcontrollore (a meno che non abbia un supporto hardware integrato).


Per non parlare del fatto che è necessario aggiornare la memoria piuttosto frequentemente! L'Arduino sarebbe impegnato a passare tutto il suo tempo a guidare le linee di controllo della memoria!
Toybuilder

6

La risposta breve è no.

Arduino non è in grado di pilotare l'interfaccia di memoria DDR o DDR2. Potresti creare un controller DDR / DDR2 con un'interfaccia SPI con un FPGA, ma è un'impresa significativa.


6

Avresti bisogno di un driver a bassa tensione (SSTL) e un modo per controllare circa 100 canali (ogni differenziale, quindi circa 200 pin. Pensa BGA.)

La maggior parte della DRAM deve essere aggiornata ad almeno 1 kHz e probabilmente più per avere un basso tasso di errore bit. Ciò costituirà quindi un'importante attività in background e utilizzerà la maggior parte del potere di valutazione di Arduino, se è persino possibile aggiornare la memoria a tale velocità.

Quello che puoi vedere è però con alcuni microcontrollori, ad esempio PIC24F / H / dsPIC33F, che supportano un'interfaccia bus master parallela, che consente l'accesso ad alcuni tipi di SRAM parallele. C'è anche il supporto con C, poiché questa memoria esterna può essere mappata su diverse variabili di codice e persino su blocchi che combinano memorie sia interne che esterne. La memoria esterna richiede di scrivere del codice PMB. Con questo, però, potresti indirizzare solo fino a circa 1 MB.


AFAIK DDR utilizza SSTL non LVDS
mazzurnificazione

@mazurnification, Sì, hai ragione (mio errore.) Comunque, un incubo da controllare da un Arduino.
Thomas O

Quindi correggi la tua risposta!
Kevin Vermeer,

@reemrevnivek, ok. Corretto. Tuttavia, stavo semplicemente sottolineando che non era pratico. Indipendentemente dal formato di segnalazione utilizzato.
Thomas O

2

No, non senza un'interfaccia di paginazione di qualche tipo tra la memoria e l'MCU. Alcune MCU AVR dispongono infatti di un'interfaccia di memoria esterna integrata, ad esempio Atmega2560 (vedere la sezione 8 della scheda tecnica ATmega640 / 1280/1281/2560/2561). Ma lo spazio degli indirizzi viene misurato in Kilobyte, non in Gigabyte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.