7 votos

¿Por qué no SRAM para la FPGA en el procesamiento de la imagen?

Estoy empezando con VHDL de codificación y he hecho algunas básicos de procesamiento de imágenes en mi placa de desarrollo.

Me he dado cuenta de que la mayoría de los FPGA placas de desarrollo a menudo el uso de la memoria DRAM (SDRAM, DDRAM) como memoria RAM. Por ejemplo, estoy utilizando un FPGA dev junta de TERASIC y los usos de la memoria DRAM. Aunque la memoria DRAM parece ser más barato que el SRAM (RAM Estática), desde mi punto de vista no está optimizado para el procesamiento de la imagen, me explico: DRAM de acceder a los datos por bloque, SRAM pueda acceder a los datos (dirigida) byte por byte o palabra por palabra, o 36 bits en un momento, lo que sea). Esta característica es la más igualada de procesamiento de imágenes, por ejemplo, un simple filtro de media donde un píxel es la media de su vecino, dicen

Pix(x,y) = (Pix(x-1,y-1) + Pix(x,y-1) + Pix(x+1,y-1) + Pix(x-1,y) + Pix(x,y) 
           + Pix(x+1,y) + Pix(x-1,y+1) + Pix(x,y+1) + Pix(x+1,y+1))/9

es difícil de hacer con DRAM, usted necesita tener un buffer interno de al menos dos líneas para memorizar las líneas y-1 y y (cabo el procesamiento de la y+1 de la línea). También parece tomar una gran cantidad de tiempo para Quartus para hacer este tratamiento simple (yo estoy usando 2ports FIFO).

Si la junta había utilizado SRAM como IS61LPS25632A de ISSI por ejemplo, el procesamiento sería sencillo desde la dirección de un píxel puede ser, por ejemplo,

ByteAdress <= x + (LINEWIDTH*y);

A partir de un hardware de punto de vista, con 9 de lectura/escritura de la memoria de ciclos de reloj, el proceso se realiza por una foto y con algunos trucos en el procesamiento en paralelo, esto puede ser mejorado, supongo. Entonces, a mi entender, verdad? Si no, ¿dónde está el error?


EDITAR:

El uso interno de la FPGA de la RAM no es una opción para mí, ya que no hay suficiente memoria dentro de la FPGA dispositivo que utilice (Cyclone III) y no sé si se paga más caro el kit de desarrollo sólo para tener algo más de RAM dentro de la FPGA es prudente.

Mi pregunta está más relacionado con la eficiencia del código. Digamos por ejemplo que uno tiene 8 mb de SRAM. Desde mi punto de vista, el código producido con este tipo de RAM será más eficiente (la velocidad y el almacenamiento en búfer) en el caso de 2D de procesamiento (como el procesamiento de la imagen), porque la verdadera acceso aleatorio es ideal para acceder a los datos con (gran) diferencia entre entonces, como en esta declaración:

ByteAdress <= x + (LINEWIDTH*y);

La reorganización de la información es mucho tiempo. Yo uso una cámara que envía los datos de los píxeles de forma secuencial, línea por línea. Sólo puedo almacenar estos datos en el puerto de dos FIFO RAM componente construido con la DRAM. Yo no puedo hacer incluso una simple transposición antes de almacenar los datos con este. Sorprendentemente no he encontrado ningún código en la web que se ocupa de esta 2D problema.

6voto

Brian Drummond Puntos 27798

No hay razón fundamental por la que no. SRAM sincrónica es verdaderamente de acceso aleatorio, bastante barato, y fácil interfaz.

Su inconveniente en que se ocupa bastante estrecho nicho entre el chip de BlockRam (no mucho más pequeños, gratis hasta que te obliga a seleccionar una ficha mayor, masivamente paralelo y más flexible) y externos DRAM (gran capacidad de almacenamiento a un precio SSRAM puede no coincidir).

Así que hasta 0,5 o 1 MB, externo SSRAM es innecesario, y por encima de 8MB o 16MB (los números pueden variar de acuerdo a su presupuesto y de los precios actuales!), SSRAM se vuelve tan caros que la DRAM toma el relevo a pesar de sus límites. Entonces si usted necesita acceso aleatorio - usted tiene masivo de la reorganización de la computación para leer fragmentos (explosiones o páginas) de DRAM en BlockRam donde puede procesar de manera rápida antes de escribir de nuevo ráfagas etc....

Pero si usted tiene un papel para SSRAM dentro de esa ventana, ir a por ello. He añadido un simple hecho en casa SSRAM consejos para aumentar comercial FPGA plataformas donde sea necesario.

3voto

GSerg Puntos 33571

SDRAM es realmente una muy buena opción para el procesamiento de la imagen, debido a que la capacidad y el ancho de banda (especialmente con el DDR) se mejoró en relación a la SRAM. Junto con la utilización de la FPGA en el chip de memoria SRAM como línea de búferes, permite que casi cualquier conjunto imagen de la computación (incluyendo el 2D FIR le da como un ejemplo) para ser canalizado hasta el punto donde puede procesar un píxel por reloj. Si estás trabajando con vídeo HD en tiempo real, para poder hacer esto es esencial.

No subestime la importancia de la capacidad. Los modernos sensores de imagen están en el rango de varios megapíxeles para video y 10s de megapíxeles para imágenes fijas. En muchas aplicaciones, múltiples frame buffers que de 4 a 6 bytes por píxel, se requiere que, para cosas como por píxel de corrección de datos y una mesa de ping-pong de procesamiento de imágenes. La memoria total requerido rápidamente excede lo que se puede implementar de una forma económica con SRAM.

Incluso si sólo estás interesado en las imágenes fijas, el desarrollo de kits están diseñados para soportar un rango más amplio de desarrollo de la aplicación. BTW, tengo un Terasic de la junta que tiene tanto DDR SDRAM y ZBT SSRAM.

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