Tengo dos módulos de RAM de 2 GB sobrantes que quité de mi MacBook Pro cuando realicé una actualización. Me preguntaba si se podían usar con, por ejemplo, un Arduino. Sería demasiado principiante para tratar de hacer esto ahora de todos modos, pero tengo curiosidad si es posible, o si eso es demasiada memoria para que un microcontrolador la aborde.
Voy a decir que no: la incompatibilidad más básica es que hay demasiados pines en esos módulos, incluso para poder conectarlos físicamente a un Arduino. Lo mismo ocurre con microcontroladores pequeños similares. Un ARM Cortex M3 se está acercando, pero pocos de ellos tienen el bus externo necesario para conectar la RAM de esa manera (creo).
Pero seguiré el juego e iré más allá. Suponiendo que pueda conectar el chip al Arduino de alguna manera, otro problema básico de compatibilidad eléctrica son los voltajes requeridos. Creo que estos módulos de RAM usan algo extraño como 2.2V, que no está presente en una placa Arduino vainilla o, en realidad, en cualquier otro microcontrolador básico para aficionados.
Suponiendo que se solucionó, el chip funcionaría como cualquier otra memoria externa del 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 del servidor web y demás. Por supuesto, dentro de este contexto, los módulos RAM no presentan ningún beneficio real para Arduino. Su característica principal es la velocidad y el Arduino (y sí, otros microcontroladores aficionados) normalmente no superan los 25 MHz en la velocidad del 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 claramente más fácil y proporciona mucho espacio para jugar.
Entonces, incluso si fuera posible, realmente no sería aconsejable.
Diría que no, no sin colocar un fpga de buen tamaño (recuento de pines) en el medio, el fpga habla con la memoria y el microcontrolador habla con el fpga usando un esquema de paginación.
Posiblemente podría usar un sistema de pestillos para permitir que algo como un arduino genere 32 bits de dirección, y probablemente podría idear algún esquema para generar los ciclos de actualización, pero casi no tendría sentido hacerlo, excepto como un técnico ejercicio.
El circuito de interfaz probablemente sería la parte más compleja del sistema resultante, y el resultado tendría poco valor práctico; el arduino no podría ejecutar código fuera de la RAM, el almacenamiento sería volátil y probablemente también consumiría más energía que el arduino. Si desea almacenar datos, una EEPROM SPI es probablemente una solución mucho mejor.
Si alguna vez mira las hojas de datos del chip DRAM, hay una velocidad de reloj mínima de algo así como 50MHz+ para DDR2. Entonces no, no podrá interactuar con ellos con un microcontrolador (a menos que tenga soporte de hardware incorporado).
La respuesta corta es no.
El Arduino no puede controlar la interfaz de memoria DDR o DDR2. Podría hacer un controlador DDR/DDR2 con una interfaz SPI con un FPGA, pero eso es una tarea importante.
Necesitaría un controlador de bajo voltaje (SSTL) y alguna forma de controlar alrededor de 100 canales (cada diferencial, por lo tanto, alrededor de 200 pines. Piense en BGA).
La mayoría de las DRAM deben actualizarse al menos a 1 kHz y probablemente más para tener una tasa de error de bit baja. Esto formará una tarea principal en segundo plano y consumirá la mayor parte del poder de procesamiento del Arduino, si es posible actualizar la memoria a esa velocidad.
Sin embargo, lo que puede ver es que con algunos microcontroladores, por ejemplo, PIC24F/H/dsPIC33F, admiten una interfaz de bus maestro paralelo, que permite acceder a algunos tipos de SRAM paralelos. Incluso hay soporte con C, ya que esta memoria externa se puede asignar a varias variables de código e incluso bloques que combinan memorias internas y externas. La memoria externa requiere que escriba algún código PMB. Sin embargo, solo podrá abordar hasta aproximadamente 1 MB con esto.
No, no sin una interfaz de paginación de algún tipo entre la memoria y la MCU. De hecho, algunas de las MCU AVR tienen una interfaz de memoria externa incorporada, por ejemplo, Atmega2560 (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.
solojeff
juandeo
Hans
Juan U.