2 votos

STM32H7 con 512 MB de SDRAM

Estoy considerando diseñar un procesador de audio basado en el STM32H7. Quiero experimentar con DSP basado en MCU en lugar de utilizar un DSP dedicado. Elegí esta MCU ARM de gama alta para tener un amplio margen de maniobra para los cálculos DSP de audio.

También quiero programar un retardo. Asumiendo que estoy usando muestras de 24 bits a 48kHz, un buffer de tres segundos para un retardo de tres segundos en un canal mono ya va a ocupar 432kB de memoria. Sólo por diversión he buscado la configuración máxima de memoria externa, que es SDRAM con dirección de fila de 13 bits, dirección de columna de 11 bits y 4 bancos internos, lo que da 256 MB de memoria (longitud de palabra de 32 bits). Dos de estos pueden ser direccionados, dando un total de 512MB.

He buscado en Internet circuitos integrados de memoria que coincidieran con las especificaciones, pero no he encontrado ninguno con las longitudes de dirección de fila/columna correctas y, además, todos los que coincidían con la configuración de memoria eran módulos DDR y el STM32H743 no admite DDR.

Mis preguntas son:

  • ¿Puedo utilizar un chip DDR en un controlador no DDR?
  • ¿Es una locura intentar añadir 512MB de SDRAM externa a un STM32H7? ¿O por qué es tan difícil encontrar módulos de memoria que cumplan estos criterios?
  • ¿Quizás encajaría mejor Quad-SPI Flash? Me temo que es demasiado lento para una aplicación de retardo de audio.

6voto

¿Puedo utilizar un chip DDR en un controlador no DDR?

No.

¿Es una locura intentar añadir 512MB de SDRAM externa a un STM32H7?

Es apenas posible, pero probablemente no merezca la pena. Las mayores SDRAM disponibles son de 512 MBit (no MByte). Pueden configurarse como 64M x 8. Cuatro de ellas en paralelo pueden funcionar como una memoria de 64M x 32 = 256 MB; dos bancos de esto te dan 512 MB.

¿Quizás encajaría mejor Quad-SPI Flash?

No. Flash no es adecuada para aplicaciones que requieren que se escriba continuamente en la memoria.

2voto

D. Brown Puntos 367

Si interpreto tu pregunta más ampliamente como "¿Cómo conecto una memoria externa grande al STM32H7?", una solución es examinar el diseño de la placa de evaluación STM32H743 de ST Microelectronics con 32M bytes de DRAM, para la que ST Microelectronics proporciona información de diseño completa: esquemas, diseño de PCB, lista de materiales y software:

https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-eval-boards/stm32h743i-eval.html

Si quieres probar tus ideas de diseño utilizando una placa de evaluación de este tipo, puedes considerar el STM32F746 Discovery Kit de ST Microelectronics, porque aunque el procesador sólo tiene la mitad de velocidad de reloj que el STM32H7, el Discovery Kit es barato y está ampliamente disponible. Esta placa tiene 8M bytes de DRAM (de nuevo, ST Microelectronics proporciona documentación de diseño completa):

https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/32f746gdiscovery.html

Si interpreto su pregunta de forma aún más amplia, como la búsqueda de una solución integrada con un procesador rápido y una gran DRAM, estoy de acuerdo con el comentario de Jan Dorniak, y sugiero buscar un pequeño ordenador integrado de placa única (SBC). Estos módulos son fáciles de integrar en un producto. Esa ha sido mi solución para problemas similares. El consumo de energía es superior al del STM32H7, pero el SBC NXP i.MX6 que utilizo en un diseño proporciona una cantidad asombrosa de potencia de procesamiento para un consumo de 2-3 vatios (a modo de comparación, STCube32MX estima un consumo de 300mW para el núcleo del procesador STM32H7 a 400MHz, no dispongo de cifras para toda la placa).

Una complicación cuando se utilizan procesadores de alto rendimiento para este tipo de procesamiento es la sincronización de entrada-salida. Si tu solución para el STM32H7 es utilizar DMA para E/S SPI, y mantener sincronizados los canales de entrada y salida, ten en cuenta que (al menos en el STM32F7, con el que tengo algo de experiencia), hay que lidiar con la caché de datos del procesador Cortex-M7, ya que el controlador DMA se salta la caché del procesador. La solución más elegante es utilizar la MPU del procesador para hacer una pequeña sección de la memoria no-cacheable, y utilizarla para los buffers de E/S DMA.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X