¿Es posible usar módulos DRAM de varios gigabytes con un microcontrolador?

20

Tengo dos módulos de RAM de 2GB sobrantes que quité de mi MacBook Pro al realizar una actualización. Me preguntaba si se podrían usar con, por ejemplo, un Arduino. Sería demasiado principiante para intentar hacer esto ahora, de todos modos, pero siento curiosidad por si es posible, o si eso es demasiado memoria para un microcontrolador.

    
pregunta johndeo

7 respuestas

24

Voy a decir que no: la incompatibilidad más básica es que hay demasiados pines en esos módulos que incluso pueden conectarse físicamente con un Arduino. Lo mismo ocurre con microcontroladores pequeños similares. Un ARM Cortex M3 se está acercando, pero pocos de ellos tienen realmente el bus externo necesario para interconectar la RAM de esa manera (creo).

Pero voy a jugar a lo largo de un ir más lejos. Suponiendo que pueda conectar el chip al Arduino de alguna manera, otro problema básico de compatibilidad eléctrica es el voltaje requerido. Creo que estos módulos de RAM usan algo extraño como 2.2V, no presente en un tablero Arduino de vainilla o, en realidad, en cualquier otro microcontrolador aficionado básico.

Suponiendo que se encargó de que el chip funcionara más o menos como cualquier otra memoria externa para el Arduino. Esto realmente se hace todo el tiempo: la gente agrega EEPROM externa para almacenar constantes importantes o tarjetas SD / MMC para el almacenamiento de registros de servidores web y similares. Por supuesto, dentro de este contexto, los módulos de RAM no presentan un beneficio real para Arduino. Su característica principal es la velocidad y el Arduino (y sí, otros microcontroladores aficionados) por lo general no rompen 25MHz en velocidad de reloj. Son demasiado lentos para preocuparse por la velocidad. Y el tamaño del almacenamiento no es un gran problema, ya que la interfaz con una tarjeta SD / MMC es mucho más fácil y ofrece más espacio para jugar.

Así que incluso si fuera posible, realmente no sería aconsejable.

    
respondido por el AngryEE
8

Yo diría que no, no sin pegar un fpga de buen tamaño (número de pines), el fpga habla con la memoria y el microcontrolador habla con la fpga usando un esquema de paginación.

    
respondido por el old_timer
7

Si alguna vez miras las hojas de datos de chips DRAM, hay una velocidad de reloj mínima de aproximadamente 50MHz para DDR2. Así que no, no podrá interactuar con ellos con un microcontrolador (a menos que tenga soporte de hardware incorporado).

    
respondido por el allanw
7

Posiblemente podría usar un sistema de pestañas para permitir que algo como un arduino genere 32 bits de dirección, y probablemente podría diseñar algún esquema para generar los ciclos de actualización, pero casi no tendría sentido hacerlo, excepto como un ejercicio técnico.

El circuito de interfaz probablemente sería la parte más compleja del sistema resultante, y tendría poco valor práctico en el resultado; el arduino no podría ejecutar código fuera de la RAM, el almacenamiento sería volátil y probablemente consumiría más energía que el arduino también. Si desea almacenar datos, una EEPROM SPI es probablemente una solución mucho mejor.

    
respondido por el JustJeff
6

La respuesta corta es no.

El Arduino no puede conducir la interfaz de memoria DDR o DDR2. Podría hacer un controlador DDR / DDR2 con una interfaz SPI con un FPGA, pero es una tarea importante.

    
respondido por el akohlsmith
6

Necesitaría un controlador de bajo voltaje (SSTL) y alguna forma de controlar aproximadamente 100 canales (cada diferencial, por lo tanto, aproximadamente 200 pines. Piense BGA).

La mayoría de las DRAM se deben actualizar al menos a 1 kHz y probablemente más para tener una tasa de error de bits baja. Esto formará una importante tarea en segundo plano y usará la mayor parte del poder de procesamiento previo del Arduino, si es posible actualizar la memoria a tal velocidad.

Lo que se puede ver es con algunos microcontroladores, por ejemplo, PIC24F / H / dsPIC33F, admiten una interfaz de bus maestro paralelo, que permite el acceso a algunos tipos de SRAM paralelas. Incluso hay compatibilidad con C, ya que esta memoria externa se puede asignar a varias variables de código e incluso a bloques que combinan memorias internas y externas. La memoria externa requiere que escribas un código PMB. Sin embargo, solo podría abordar hasta aproximadamente 1 MB con esto.

    
respondido por el Thomas O
2

No, no sin una interfaz de paginación de algún tipo entre la memoria y la MCU. Algunas de las MCU AVR tienen, de hecho, una interfaz de memoria externa incorporada: Atmega2560, por ejemplo (consulte la sección 8 de la hoja de datos ATmega640 / 1280/1281/2560/2561). Pero el espacio de direcciones se mide en Kilobytes, no en Gigabytes.

    
respondido por el JRobert

Lea otras preguntas en las etiquetas