Interconectando con RAM desde una PC, por ejemplo SDRAM / DDR, a un microcontrolador

6

Estoy investigando la interconexión de un PC con factor de forma estándar SDRAM o DDR a un microcontrolador, pero no puedo encontrar ningún detalle definitivo sobre cómo funcionan en términos de cómo funciona el bus. Supongo que es similar a cómo funciona cualquier interfaz SPI o I²C estándar: envíe algunas instrucciones al dispositivo y luego lea algunos resultados hasta que se cumpla un estado de pin particular. Excepto en este caso, los buses de datos y direcciones son paralelos en lugar de seriales.

Tengo tres preguntas relacionadas con el tema:

  • ¿Qué interfaz tiene la memoria de PC estándar, por ejemplo, SDRAM o DDR, ejecutar en? Recuerdo haber leído algo sobre JEDEC como responsable de la especificación, pero no puedo encontrar ningún detalle específico. Me gustaría usar DDR (o DDR2) ya que ahora es más barato, pero me conformaré con SDRAM.
  • ¿Se puede comprar la memoria estándar de la PC a velocidades de reloj más "cómodas"? Las velocidades de bus estándar para estas cosas tienden a ser de alrededor de 133MHz, pero espero ejecutarlas a menos de 1MHz. Según tengo entendido, el SDRAM espera los bordes del reloj antes de responder a los comandos, por lo que una frecuencia de reloj baja puede hacer que sea manejable por un microcontrolador.
  • ¿Cuál es el nombre de la interfaz física? Intenté buscar en Farnell sockets para dispositivos de memoria de este tipo, pero solo encontré algunas cosas realmente muy pequeñas de montaje en superficie. Probablemente podría construir mi propia versión de orificio pasante si pasara el tiempo suficiente, pero preferiría solo comprar una preconstruida.
pregunta Polynomial

3 respuestas

4

A menos que su microcontrolador tenga un soporte de bus directo para conectarse a una memoria RAM de tipo DDR / DDR2 / DDR3 o su microcontrolador esté interconectado a través de un FPGA que ha sido programado para proporcionar la interfaz de RAM, entonces es probable que no haya ejercicio útil. Hay varias razones importantes por las que este es el caso ...

1) Los chips de memoria DDR pueden funcionar a voltajes más bajos que su microcontrolador.

2) La interfaz a la memoria DDR es multiplexada y requiere una sincronización precisa mientras que las líneas multiplexadas cambian de estado en sincronización con dicho reloj.

3) Los DIMM modernos están diseñados para funcionar en relojes de muy alta frecuencia de 800MHz, 1066MHz, 1333MHz o 1600MHz. La integridad de la señal es extremadamente importante cuando se diseñan las conexiones de circuito al módulo DIMM. No es un ejercicio trivial y, como resultado, los chips de memoria pueden ser extremadamente sensibles al ruido.

4) Las memorias DDR requieren una actualización constante para mantener los datos de las celdas de memoria válidos. Sin actualizar, el contenido de la memoria se desvanece con el tiempo de milisegundos a segundos.

5) La estructura de comando para operar RAM DDR modernas es compleja. La parte más complicada es obtener la secuencia de inicialización correcta, que consta de unos 13 a 20 pasos individuales.

6) Los DIMM modernos están diseñados para enviar datos a computadoras modernas tipo PC muy rápido. El DIMM típico tiene un ancho de ruta de datos de 64 bits. Los módulos DIMM de rango múltiple también requieren múltiples relojes y señales de selección de chips para acceder a todos los chips de memoria en la tarjeta de memoria. Es poco probable que el pequeño microcontrolador típico pueda hacer un uso efectivo de este amplio formato de datos sin una cantidad excesiva de circuitos externos.

Ten esto en cuenta también. Las compañías que fabrican procesadores estilo PC que utilizan módulos DIMM tienen controladores integrados para conectarse a los sockets de memoria. Existe una especialidad de ingeniería para programadores que trabajan en el campo de BIOS llamado MRC (código de referencia de memoria). Este es el módulo de código de programa que inicializa el controlador DDR y todos los módulos DIMM adjuntos. Esta especialidad emplea a los mejores y algunos de los programadores de BIOS más avanzados que no hacen nada más que la codificación MRC como un trabajo de tiempo completo.

    
respondido por el Michael Karas
6

Algunos SDRAM de velocidad de datos única (SDR) se pueden ejecutar a velocidades más lentas: verifique la especificación del período de reloj (máx.). Sin embargo, tiene que emitir comandos de actualización de forma regular, y si marca a 1MHz es posible que no tenga tiempo para nada más.

DDR SDRAM generalmente tiene una frecuencia de reloj mínima (sí, mínima) en las decenas altas de MHz ... y la interfaz física sería muy difícil de implementar en un micro, ya que devuelve una señal similar a un reloj / luz estroboscópica junto con los datos y usted debe encontrar la mitad de ese período de reloj para saber cuándo muestrear los datos.

Micron es una excelente fuente de hojas de datos que documentan muy bien las interfaces.

En cuanto a los conectores físicos, se denominan SIMM y DIMM (módulo de memoria en línea simple y doble)

    
respondido por el Martin Thompson
1

Para poder utilizar SDRAM, debe tener un chip que contenga un controlador SDRAM, punto. Consiga un microcontrolador que tenga uno o conecte un FPGA que tenga uno a su microcontrolador.

De cualquier manera, no es un proyecto para un principiante.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas