Estructura SDRAM para Cortex-M7

Estoy buscando diseñar una placa personalizada basada en Microchip / ATMEL SAM S70 o STM32F7 / STM32H7. El SAMS S70 parece ser la opción más barata y ofrece aproximadamente lo mismo que los competidores ST.

Ahora estoy tratando de averiguar cuánta SDRAM puedo conectar a estas MCU.

  1. La hoja de datos del S70 no especifica qué tipo de SDRAM (DDR2, DDR3), etc. puede manejar. ¿Cómo sé qué chips de memoria son compatibles?

  2. Navegando a través de Digitec, noté que casi todos (?) Los chips de memoria 1G tienen 8 bancos, que es más de lo que puede manejar el SAM S70 (4 bancos como máximo). Y todos los chips que encontré que ofrecen 1G en 4 bancos son solo DDR1. ¿La cantidad de datos por banco está limitada de alguna manera?

  3. Tampoco estoy seguro de cuántos datos puede direccionar el controlador de memoria en el SAMS S70 por banco (direcciones de fila/columna) y en total. Si leo la hoja de datos correctamente, la dirección más grande es 13 bits de dirección de fila, 11 bits de dirección de columna + 1 bit de compensación de bytes + 2 bits de dirección de banco, es decir, 27 bits de dirección en total... eso sería 1/8 de 1G, es decir, 128M?

  4. ¿Dónde juega el tamaño de la página en esto?

Sé que estas son muchas preguntas, pero estoy bastante abrumado por la cantidad de configuraciones de memoria y la información limitada en las hojas de datos no ayuda.

Si tienen un diseño de referencia, mostrará qué memoria usar.

Respuestas (2)

El tipo de memoria que necesita es SDRAM . No es lo mismo que DDR SDRAM. No creo haber visto un dispositivo Cortex-M que admita memoria DDR todavía. Por lo general, optaría por la familia Cortex-A, si necesita ese tipo de capacidad.

Puede encontrar fácilmente chips SDRAM en digikey o en cualquier otro sitio de distribución.

En este punto, el resto de tu pregunta probablemente sea irrelevante, pero déjame darte algunos puntos extra.

Ambos chips admiten 256 MB de RAM. Si observa el enlace digikey anterior, la mayor cantidad en un solo chip es de 512 Mbits (64 MBytes). Aquí es donde entra en juego el ancho del bus de datos. Puede ver que los chips de 512 Mb vienen en tres configuraciones:

  • 16M x 32 bits
  • 32M x 16 bits
  • 64M x 8 bits

Una forma de aumentar la capacidad de la memoria sería usar dos dispositivos de 512 Mb en una configuración de 32 M x 16 bits y conectarlos como se muestra en esta nota de la aplicación Atmel , para un total de 128 MB de RAM:

ingrese la descripción de la imagen aquí

Estoy totalmente de acuerdo con usted acerca de admitir SDRAM, pasé mucho tiempo. No pude encontrar una solución excepto FPGA.
Gracias por la respuesta. Si no me equivoco, no hay forma de ampliar la capacidad de memoria del SAM S70 más allá de 256 MB debido al bus de datos de 16 bits limitado, ¿no?
En realidad, no entiendo cómo puedo adjuntar 256 MB. Para filas de 8K, columnas de 2K, 4 bancos y ruta de datos de 16 bits, ¿obtengo solo 128 MB?
@Xaser La nota de la aplicación que vinculé afirma que la MCU puede manejar cuatro bancos de una SDRAM de 32 bits de ancho. El S70 debería poder hacer lo mismo. O eso, o la especificación es un error de copiar y pegar.
@Armandas sí, pero el mcu tiene solo 16 líneas de datos físicos, es decir, ¿16 bits de ancho? y la inconsistencia parece estar en la propia hoja de datos (mi cálculo dice 128 MB, pero la hoja de datos dice 256 MB) cosas raras.
@Xaser Si bien esto puede no ayudarlo desde el punto de vista académico, una buena documentación y soporte de diseño es tan importante (si no más importante) que las especificaciones del chip. Si tiene problemas para descubrir cómo diseñar en la parte de Atmel, es posible que desee consultar a otros fabricantes. Alternativamente, puede intentar ponerse en contacto con el soporte de Atmel y ver si pueden aclarar el problema.

La hoja de datos dice en la primera página:

Controlador de memoria estática (SMC) de 16 bits compatible con SRAM, PSRAM, módulo LCD, NOR y NAND Flash con codificación sobre la marcha

̶ Controlador SDRAM de 16 bits (SDRAMC) con interfaz de hasta 256 MB y codificación sobre la marcha"

Solo para mencionar: SAM S70 solo admite un ancho de bus de 16 bits (externo). Prefiero MCU STM que también permiten 32 bits. Es importante para el rendimiento: si permite obtener código o usa 32 bits (int, float) o incluso palabras dobles (64 bits), obtiene solo la mitad del rendimiento potencial. Depende para qué y con qué frecuencia usa la memoria externa (¿datos temporales o datos principales y código allí?). Compruebe también si esta MCU proporciona cachés, por ejemplo, ¿es un Cortex-M4/M7 con cachés? Si es así, configure la MPU correctamente para hacer uso de ella. Prefiero MCU con caché, además de ITCM y DTCM, por ejemplo, STM32F7 para sistemas integrados de alto rendimiento. La memoria externa la uso a menudo solo como disco RAM o para búferes temporales, no como memoria principal.

Por cierto: también puede verificar si el uso de SDIO (tarjeta SD) también podría ser suficiente. Puedes tener GB de espacio allí. Incluso a menudo se admiten recuperaciones de código, es incluso más lento (por ejemplo, bus de 4 bits). Pero mucho más fácil de conectar y crear una PCB con ranura para tarjeta SD (o chip eMMC soldado).

O: ¿qué pasa con los chips de memoria SPI, por ejemplo, FRAM?

Por cierto: una memoria DDR real (que a menudo solo se encuentra en los procesadores de aplicaciones Cortex-A, como LP-DDR2 o DDR3) es muy difícil de diseñar como PCB: necesitan longitud de seguimiento coincidente en todas las líneas, coincidencia de impedancia, también una terminación en el fin. No es un diseño fácil como con Static-(S)RAM o Static-(S)DRAM.