Cómo conectarse a una HyperRAM con un microcontrolador

Un par de fabricantes han tenido esta interfaz HyperBus de bajo número de pines desde hace algunos años. Parece que finalmente podría haber una manera de obtener unos pocos megabytes de RAM en un proyecto de microcontrolador.

¿Alguien ha tenido éxito con la interfaz de uno de estos chips SRAM con cualquier microcontrolador común?

Para su referencia, aquí hay una hoja de datos de una SRAM de 8 megabytes que usa este bus: http://www.issi.com/WW/pdf/66-67WVH8M8ALL-BLL.pdf ingrese la descripción de la imagen aquí

Esto es solo una suposición, pero sin una interfaz de hardware dedicada desde el controlador hasta la SRAM, el rendimiento probablemente sería demasiado bajo para ser útil y la administración de la memoria sería engorrosa.
Dudo que pueda funcionar. La hoja de datos señala que CS# no se puede bajar por más de Tcsa tiempo para evitar el bloqueo de actualizaciones internas. Si tiene un pin GPIO micro girando para manejar la RAM, no hay forma de que pueda hacerlo lo suficientemente rápido para evitar violar esta especificación.

Respuestas (1)

Parece que este HyperBus solo se puede encontrar en unos pocos microcontroladores Spansion/Cypress (la gama Traveo, con Cortex R5F). Entonces, a menos que planee usar MCU de esta familia específica, tendrá que hacer un bit-bang en la interfaz HyperBus usando GPIO.

Bit-banging sería un gran golpe de rendimiento para la CPU. Parece que tiene que alternar las líneas CK/CK# 17 veces para un solo ciclo de lectura (y, por supuesto, también tiene las líneas D0-D7 y otras líneas de control para configurar adecuadamente a lo largo de este ciclo). Ahora, supongamos que tiene una CPU de 20 MHz y necesita, en promedio, cuatro ciclos de CPU por alternancia de CK/CK# ( muy optimista, ya que también tiene que administrar las otras líneas de bus dentro de este presupuesto), significa que necesita al menos 50ns*17*4 = 3,4 µS para lograr un ciclo de lectura.

Axe DoxyLover mencionó que hay un tiempo bajo máximo de selección de chip (ciertamente para permitir que el chip administre los tiempos de actualización internamente) que se especifica en 4.0 µS. Nuestra estimación optimista está demasiado cerca de esto para ser realista. Entonces, además de ser un golpe de rendimiento, lo más probable es que no funcione.

Lo que tiene mucho más sentido, si necesita tanta RAM, es elegir una MCU que tenga una interfaz SDRAM dedicada. Ahora hay muchos Cortex-M que lo tienen (LPC18xx/43xx, STM32F427/429/469, STM32F7, ...). El bus requiere enrutar más señales, pero le dará mucha más flexibilidad en la elección de los componentes, será más económico y funcionará mucho más rápido.

Nota interesante sobre el tiempo máximo de CS. Hmm... Digamos que tengo un controlador de bus que puede registrar ráfagas de datos de 8 bits usando señales RD# y WR#. ¿Ve alguna posibilidad de utilizar una lógica externa simple para crear las señales CK/CK# a partir de RD# y WR#?
El problema no es solo la generación de CK/CK#. También está la señal RWDS (que es bidireccional, por cierto). Y las señales DQn también son bidireccionales y transmiten tanto la dirección como los datos. Realmente, no creo que se pueda hacer solo con unas pocas puertas. yo no lo intentaría ¿Qué tiene de malo SDRAM?
¡Muchas gracias por tus ideas! Hmm... No estoy seguro de poder usar SDRAM; Verá, en realidad estoy tratando de ampliar las capacidades de un sistema que ya está implementado haciendo una tarjeta adicional de RAM. Estaba pensando que si alguien ha podido adaptar una MCU genérica para usar HyperRAM, tal vez podría descubrir cómo hacerlo... pero parece difícil. Quizá me vendría bien un CPLD, pero tiene un costo crítico, así que no lo sé, realmente. ¡Gracias de nuevo!
De hecho, un CPLD sin duda le permitiría hacer lo que desea... Pero ... Si su proyecto tiene un costo crítico y debe usar un CPLD de todos modos, con un poco más de trabajo, ciertamente puede hacer el mismo CPLD (o tal vez el que tiene un poco más de E/S) interconecta una SDRAM estándar (que es una cuarta parte del precio de HyperRAM)... Bueno, claro, a veces puedo ser un poco terco. Pero, sinceramente, creo que vale la pena considerar la opción, aunque ciertamente no soy consciente de todas las limitaciones que son relevantes en esta elección de diseño.
Gracias de nuevo por otra buena idea, debo pensarlo. Una última pregunta, si no te importa. He tenido un poco de miedo a las SDRAM, tengo la sensación de que tienen una gran cantidad de pines y son notoriamente difíciles de conectar. ¿Podría darme algunos datos muy básicos y guiarme hacia alguna información para estudiar? ¿Cuántos pines se necesitan para conectarse a una SDRAM estándar? ¿Necesito generar una lógica refrescante? Y para obtener más información, ¿tiene algún puntero a las hojas de datos de uno o más dispositivos que representan esta clase de dispositivos? ¡Perdón por molestarte una última vez!
Ningún problema. Sí, tienen un mayor número de pines (normalmente 8 líneas de control, 14 líneas de dirección y 16 líneas de datos para un chip de 8 Mbytes). Pero dado que, en el diseño de CPLD, puede elegir dónde colocar los pines de E/S, aún puede hacer un diseño que sea fácil de enrutar (tal vez incluso en una placa de dos capas). Y sí, tendrá que administrar los tiempos de actualización usted mismo. Existe un mecanismo de actualización automática en la SDRAM para facilitar las cosas, pero sigue siendo su responsabilidad activarlo...
Hay algunos diseños HDL de controlador SDRAM disponibles en opencores.org. Tal vez puedas obtener algunas ideas allí. Y aquí hay una hoja de datos de ISSI , que es una SDRAM típica de velocidad de datos única de 8 Mbytes. Por supuesto, no es la tarea más trivial, pero es factible.
@PkP Última idea para simplificar las cosas: intente delegar la mayor parte de la carga en el lado del software. Por ejemplo, si los tiempos lo permiten en la MCU, emita un comando especial cada 64 ms al CPLD, que activará los 4096 ciclos de actualización de una sola vez, en lugar de manejar esta activación desde el propio CPLD. De esta manera, evitará contenciones y esto simplificará mucho el HDL. Incluso podría delegar el manejo de los comandos ACTIVAR y PRECARGAR al software. Buena suerte.