Uso de múltiples controladores DDR3 en FPGA

Estamos diseñando una tubería de procesamiento de imágenes en un FPGA que necesitará el uso de interfaces de memoria en varias etapas de la tubería. Debido al tamaño de la memoria requerida, decidimos optar por un diseño DDR3.

Sería realmente útil si las etapas de la tubería pueden acceder a su propia memoria de manera independiente para que pueda minimizar el arbitraje. Por lo tanto, esperaba implementar múltiples módulos DDR3 "estrechos" (por ejemplo, de 16 bits de ancho) cada uno con su propio controlador en el FPGA para que las interfaces de memoria de las etapas puedan estar completamente separadas.

Mi otra opción es usar múltiples módulos DDR3 en un solo rango con un controlador.

¿Alguien tiene alguna experiencia en el uso de múltiples controladores en un FPGA? ¿O el controlador único sería la apuesta más segura?

Usaremos un Kintex de rango medio para la implementación.

Pregúntele a su FAE de Xilinx.
No tengo experiencia con esa implementación en particular, pero mi suposición sería que, siempre que tenga celdas disponibles, interconexión disponible y pines disponibles, puede tener múltiples controladores paralelos, y eso sería preferible por las razones sugiere (menos arbitraje, rendimiento bien definido en cada etapa).
Quiero hacer una pregunta relacionada. El FPGA de la serie Kintex tiene un conjunto de pines dedicados para un solo controlador de memoria ddr-3. Entonces, ¿significa que puedo conectar solo un conjunto (selección de un chip) de memoria ddr-3 al Kintex?

Respuestas (2)

¿Alguien tiene alguna experiencia en el uso de múltiples controladores en un FPGA?

Sí, ayudé en el diseño de un canal de video HD que usaba dos controladores de memoria DDR, pero no sé si eran específicamente DDR3. Una memoria de 32 bits de ancho contenía el búfer de trama principal y la otra memoria de 16 bits de ancho contenía información de superposición. Funcionó bastante bien.

¿O el controlador único sería la apuesta más segura?

Esa es realmente una pregunta separada por completo. Dependiendo de los requisitos de ancho de banda de los diferentes "usuarios" de esta memoria, el costo general del sistema recurrente puede ser menor si puede canalizar todo a través de un solo controlador de memoria y un solo conjunto de chips de memoria. Pero el tiempo de diseño y los riesgos (costos NRE) serán mayores. También he tomado este enfoque en un proyecto diferente (SD).

Las memorias RAM DDR necesitan muchos pines, tener varios controladores de memoria significa que todas las memorias RAM funcionan de forma independiente, ¿verdad? Dado que los FPGA tienen pines dedicados para usar con la interfaz de memoria externa, me pregunto cómo podemos colocar más de 1 controlador de memoria allí.
@Quantum0xE7: No, en general, los pines no están dedicados. Todos los pines se pueden conectar a una memoria externa. Algunas FPGA pueden tener un controlador de memoria "duro" incorporado, en cuyo caso ese controlador puede tener pines específicos, pero los controladores de memoria "suaves" (implementados en la estructura) pueden usar cualquiera de los pines.
en realidad, si miramos el pinout de FPGA dentro de Quartus, hay pines marcados con DQ/DQS. Esto para mí implica que solo se deben usar ciertos pines. Casi existe esa complicación de que el voltaje del banco tiene que coincidir con el dispositivo de memoria.
@ Quantum0xE7: ¿De qué FPGA está hablando? Intel/Altera fabrica muchos tipos diferentes.
Estoy hablando de Intel FPGA

Siempre que tenga suficientes celdas lógicas y pines IO, puede tener tantas interfaces de memoria como desee.

En el lado negativo, la memoria estrecha implica soldar chips en lugar de usar DIMM (u otros módulos), lo que significa una prima de costo significativa, a menos que esté comprando grandes volúmenes de chips.