¿Qué tipo de memoria permite la mayoría de las operaciones de lectura / escritura paralelas por ciclo de reloj en un FPGA?

1

Si imagina una detección de movimiento básica donde tiene dos cuadros almacenados en la memoria: un cuadro anterior de 640x480 y el cuadro actual de 640x480, qué tipo de memoria (SRAM, DRAM, SDRAM, DDR SDRAM, etc.) permitiría > la mayoría de las operaciones de lectura / escritura paralelas por ciclo de reloj ? Por ejemplo, la solución perfecta permitiría la lectura simultánea de dos cuadros, (307,200 x 2 píxeles) en un ciclo de reloj. ¿Cuál es la mejor memoria para esto, la SRAM incorporada en el FPGA o un chip externo como DDR SDRAM? (En la imagen más grande, estaría buscando la placa de desarrollo FPGA que tiene el menor costo y tamaño con la mayor capacidad de lectura / escritura paralela).

    
pregunta user2514676

1 respuesta

3

El bloque de puerto dual RAM y LUT RAM son prácticamente imposibles de superar, ya que se encuentran en el troquel FPGA y no es necesario utilizar ningún pin de E / S para acceder a él. Si no tiene suficiente capacidad en el bloque de memoria RAM, puede lanzar memoria externa al problema. QDR SRAM es de doble puerto y por lo tanto tiene el doble del ancho de banda de SDRAM, esto puede ser útil para algunas aplicaciones, aunque es muy costoso. DDR3 SDRAM es probablemente la opción más barata, pero incluso esto es relativamente lento en comparación con lo que puede hacer con LUT RAM y bloque RAM.

Creo que estás tratando tu diseño de forma incorrecta. Además, si necesita realizar un procesamiento real en tantas entradas, la lógica por sí sola consumiría una cantidad de área absolutamente gigantesca y es posible que no se ajuste a los FPGA más grandes disponibles en la actualidad. En lo que destacan los FPGA son las operaciones de procesamiento segmentado de muy alta velocidad. Lo que debe hacer es calcular cuántos píxeles por segundo necesita procesar (640x480xfps) y luego averiguar cómo implementar su algoritmo de procesamiento de imágenes para obtener ese nivel de rendimiento. En general, la idea es leer una pequeña cantidad de píxeles por ciclo de reloj y luego procesarlos de manera ordenada.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas