Compartiendo memoria DDR3 entre dos fuentes

2

Tengo un FPGA y un potente procesador ARM ambos admiten DDR3. Soy un diseñador experimentado para diseños más pequeños y más integrados con CPU menos potentes, pero este es mi primer rodeo con un potente ARM y FPGA. Estoy tratando de averiguar si podría compartir el DDR3 entre el procesador y el FPGA para poder usar la memoria como una forma de comunicación entre los dos. Necesito cambiar grandes cantidades de datos entre los dos. Además, esto simplificaría (?) Mi diseño y ahorraría costos. No sé cuál es la viabilidad de esto.

    
pregunta Ktc

2 respuestas

2

Debes mirar los dispositivos SoC y Zync de Altera y Xilinx. Estos chips ofrecen procesadores ARM9 combinados con tejido FPGA. Esto le permite configurar una sola interfaz DDR3, pero la FPGA y la CPU pueden acceder a través de los controladores DDR3 multipuerto internos.

SoC de Cyclone V: el menor costo del sistema y la potencia

Zynq-7000 Todo el SoC programable

    
respondido por el DJE
1

Hay varias formas de responder esto. No puedo responder cómo hacerlo de una manera, es decir, tener dos dispositivos en paralelo que accedan al ram. Esa es una cuestión de varias cosas en sí mismas. Existe la E.E. de esto, DDR3 usa pares diferenciales y opera a altas velocidades, de modo que la capacitancia, la interferencia y la impedancia deben abordarse agregando otra rama a cualquier par diferencial. Muy bien podría ser que duplicar la longitud de las trazas al tener 2 dispositivos puede aumentar la capacitancia más allá del límite establecido por la especificación DDR3, un requisito para su alta velocidad.

Luego está la cuestión de si los controladores de memoria fija pueden trabajar con él. Es posible que no tenga mucho espacio para la personalización y, como dijo un mentor, es posible que tenga que correr a tasas excesivamente bajas para permitirlo. Básicamente, la velocidad del reloj para el bus DDR3 tendría que ser el doble de la velocidad de acceso de los dos dispositivos para que puedan intercalar su acceso sin interferir entre sí. Además, la velocidad a la que realmente tarda en realizarse una transacción es menor, por lo que operan en un "búfer" para mantener ese rendimiento. La latencia también puede introducir condiciones de carrera que el software debería tener en cuenta.

La otra solución que se me ocurre es tener un dispositivo pci con FPGA, luego la CPU tendrá algo de RAM como DMA para el FPGA. El FPGA simplemente necesita acceder al ram a través del bus PCI que es común.

    
respondido por el marshal craft

Lea otras preguntas en las etiquetas