arquitectura para extracción de primitivas visuales de bajo nivel en un mismo chip en tiempo real
TRANSCRIPT
Arquitectura para extracción de primitivas visuales de bajo nivelen un mismo chip en tiempo real
Francisco Barranco Matteo Tomasi Mauricio VanegasCITIC, Univ. Granada CITIC, Univ. Granada CITIC, Univ. Granada
[email protected] [email protected] [email protected]
Javier Díaz Eduardo RosETSI Informática, U. Granada ETSI Informática, U. Granada
[email protected] [email protected]
Resumen
En este trabajo presentamos una arquitecturapara la extracción en tiempo real deprimitivas visuales de bajo nivel: energía,orientación, disparidad y flujo óptico. Laimplementación se ha llevado a cabo utilizandocauces de grano fino superescalares, sobre undispositivo hardware reconfigurable FPGA,cuyas características lo hacen un muybuen candidato gracias a su alto nivel deparalelismo. El sistema obtiene tasas detransferencia de entre 350 y 270 fps parala disparidad y el flujo óptico monoescalay hasta 32 fps para la extracción de todaslas primitivas con la arquitectura multiescala.Además analizamos las prestaciones en tasa detransferencia, precisión y recursos hardware.
1. Motivación
El procesamiento de la imagen y la visiónartificial constituyen uno de los campos másimportantes de la Inteligencia Artificial. Unprocesamiento computacionalmente eficiente ypreciso del bajo nivel se revela indispensablepara la computación en capas superiores.Desarrollamos una arquitectura para laextracción de estas primitivas de bajo nivel:descriptores de contraste local (energía yorientación), disparidad de un par de imágenesy estimación de flujo óptico de una secuencia.
La computación de estas primitivas es unatarea resuelta actualmente. Sin embargo, suextracción para altas prestaciones sigue siendouna tarea muy compleja. Para ello necesitamosarquitecturas que permitan aprovechar elparalelismo de los algoritmos a diferentesniveles. De ahí que en muchos trabajos seutilicen para ello procesadores gráficos o GPUs[12], versiones optimizadas que aprovechanlas prestaciones paralelas que nos ofrecenlos computadores actuales [2], arquitecturasdedicadas [10] y, como en nuestro caso,arquitecturas hardware reconfigurables [7].
Nuestra mayor aportación es elencapsulamiento en un mismo chip usandouna arquitectura versátil y compleja de loscircuitos para extraer todas estas primitivas almismo tiempo y en tiempo real. Nuestro grupotiene una gran experiencia en el desarrollo deestas arquitecturas, como vemos en [7][5][15],sobre los que nos basamos para el desarrollodel presente trabajo.
Este trabajo se estructura como sigue: laSección 2 detalla los algoritmos utilizados; laSección 3 expone la arquitectura jerárquicamientras que la Sección 4 se centra en laexposición de la arquitectura hardware; laSección 5 aporta los detalles sobre prestacionesy recursos y finalmente se exponen lasconclusiones extraídas.
actas_JCRA_Rev.pdf 209 16/07/2010 18:57:35
2. Descripción de los algoritmos
Esta sección describe brevemente losalgoritmos utilizados para la extracciónde las distintas primitivas. Los descriptores decontraste local han sido extraídos utilizandoel gradiente espacial de la imagen. Lasestimaciones de flujo y disparidad sellevan a cabo utilizando los algoritmosde Lucas&Kanade [9]. Para ambos casosañadimos además las extensiones multiescalapara aumentar el rango de las estimacionescalculadas.
2.1. Energía y orientación
Para el cálculo de estas dos característicaslocales de la imagen necesitamos las derivadasparciales espaciales Ix y Iy. Ambas sontambién computadas para la estimación deflujo óptico, usando el filtrado de Simoncellipropuesto en [7]. Partiendo de ellas obtenemoslas primitivas como se ve en (1) y (2)
E =√I2x + I2
y (1)
O = arctan(IyIx
) (2)
2.2. Flujo Óptico
La estimación de flujo óptico se calculaasumiendo que la intensidad del valor de cadauno de los píxeles se mantiene constante a lolargo del tiempo.
Los algoritmos de flujo óptico se dividenen dos grandes grupos: locales y globales.Los métodos locales asumen flujo constantepara cada píxel dentro del mismo vecindariocentrado en él (basados en los trabajosde Lucas & Kanade [9]). Por otro lado,los globales asumen que el flujo para unpíxel dado depende del resto de píxelesdel fotograma (basados en los trabajos deHorn & Schunk [8]). En nuestro caso, hemoselegido el conocido algoritmo de Lucas &Kanade (L&K). Es uno de los más utilizadosactualmente gracias al buen compromiso queofrece entre la precisión obtenida y la bajacomplejidad computacional. El flujo ópticose calcula basándose en la constancia de la
intensidad, premisa conocida como OpticalFlow Constraint y que puede ser expresadacomo se ve en (3)
I(x, y, t) = I(x+ u, y + v, t+ 1) (3)
De esta forma, definimos el flujo óptico comola velocidad (u, v). Aplicando la expansión deTaylor llegamos a (4)
Ixu+ Iyv + It = 0 (4)
donde los subíndices representan las derivadasparciales. Para la resolución de este sistemaaplicamos mínimos cuadrados, obteniendo (5)
(u, v) = (ATW 2A)−1ATW 2b (5)
En (5), A y b son las matrices de coeficientesy términos independientes respectivamente yW representa la matriz de pesos para elvecindario (Ω). Con W pesamos más losvalores centrales que los de alrededor. Desde(5) resolvemos obteniendo el sistema lineal 2x2definido por (6) y (7)
(ATW 2A) =
∑i∈Ω
W 2i I
2xi
∑i∈Ω
W 2i IxiIyi∑
i∈Ω
W 2i IxiIyi
∑i∈Ω
W 2i I
2yi
(6)
(ATW 2b) =
∑i∈Ω
W 2i IxiIti∑
i∈Ω
W 2i IyiIti
(7)
En cuanto a las métricas para medir lacalidad de nuestras estimaciones utilizamosel AAE (Error angular medio) y el SAE(Desviación típica del error angular) definidasen [4]. Además medimos la densidad puestoque nuestras estimaciones son dispersas.Con la extensión multiescala conseguimosestimaciones en un rango hasta 30 veces mayorque las estimaciones monoescala.
Para este trabajo nos hemos basado en laimplementación propuesta por Barron en [3],aunque utilizamos como medida de confianzael valor del determinante de (6), lo que noreduce significativamente la precisión [6][7].
200 X Jornadas de Computación Reconfigurable y Aplicaciones, (JCRA2010)
actas_JCRA_Rev.pdf 210 16/07/2010 18:57:35
2.3. Disparidad
La disparidad, en un sistema estéreo como elque proponemos, se define para un píxel comola diferencia en la coordenada x entre imagenderecha e izquierda. Se puede expresar comoen (8)
IR(x) = IL(x+ δ(x)) (8)
donde IR e IL son la imagen derechae izquierda respectivamente y δ(x) es ladisparidad.
En cuanto a las técnicas para resolverel problema de la disparidad, diferenciamosde nuevo entre modelos locales y globales.Los locales se centran en el vecindarioalrededor del píxel para calcular su disparidadmientras que los globales se refieren a laimagen completa. En nuestro caso, utilizamosel algoritmo local de Lucas&Kanade [9].Esta técnica estima pequeñas disparidadeslocales asumiendo que la intensidad de unpíxel se mantiene constante entre ambasimágenes. Para obtener las estimacionespara disparidades mayores utilizamos lamultiescala.
La resolución en este caso es similar a lade la Subsección anterior. Así, si tenemos encuenta (9)
I(x+ δ) ≈ I(x) + δI ′(x) (9)
y resolvemos (8) minimizando el error conrespecto a la disparidad, obtenemos (10)
δ =
∑i∈Ω
W 2i Lxi(Ri − Li)∑
i∈Ω
W 2i L
2xi
(10)
donde hemos simplificado la notación y losW son los pesos como en el flujo óptico yLxi representa la derivada parcial en x de laimagen izquierda.
3. Arquitectura multiescala
Como hemos dicho, la extensión multiescalade los algoritmos nos permite el cálculode las primitivas visuales para valores conmayores rangos (hasta 30 veces mayores
que los monoescala). Se puede estructurarmodularmente en:
• Cálculo de la pirámide Gaussiana: Paralos fotogramas de entrada (3 para flujoóptico y 2 para disparidad). Su cómputodepende del número de escalas que vamosa implementar que depende a su vez dela resolución de la imagen y del rangode los desplazamientos. Además, llevamosa cabo un filtrado inicial para reducir elaliasing producido por el muestreo. Estedesarrollo se basa en [1].
• Cálculo de la primitiva: A continuaciónse computan las primitivas visuales debajo nivel. Para Energía y Orientaciónno necesitamos la estimación multiescala,sólo se computan en la última escala.
• Escalado: Expansión de la escala actual ala resolución de la escala siguiente.
• Compensación: Desplazamientode las imágenes actuales con laestimación computada para reducir losdesplazamientos con precisión subpíxel.Para la disparidad la compensación tieneuna componente (x) mientras que para elflujo óptico es bidimensional.
• Combinación: Suma del valor de laprimitiva calculado para la etapa actualy la estimación computada hasta la etapaanterior.
En la Fig. (1) se muestra el procesamientodel algoritmo multiescala. Se computa lapirámide para las imágenes de entrada, estasalida se pasa directamente al módulo querealiza la extracción de la primitiva en el casode ser la primera vez. El siguiente paso es elescalado a la resolución de la siguiente escala yla compensación (warping) de las imágenes deesa nueva escala con la estimación escalada.Una vez realizado este paso, lo siguientees volver a computar la estimación para lanueva entrada compensada y volver a escalary compensar iterativamente en función delnúmero de escalas. La arquitectura multiescalase basa principalmente en el trabajo de [15].
Sistemas de visión artificial 201
actas_JCRA_Rev.pdf 211 16/07/2010 18:57:35
Figura 1: Esquema del algoritmo multiescala parala extracción
4. Implementación hardware
La plataforma utilizada es una XircaV4[14], que contiene una FPGA Xilinx Virtex4XC4vfx100. Además de una interfaz PCIexpress para conectar con el computador y 4bancos SRAM ZBT de 8 MB. Puede trabajartanto como plataforma stand-alone como paracoprocesamiento.
Implementamos usando dos niveles deabstracción diferentes: mediante el lenguajeVHDL se implementó el controlador dememoria (MCU) y las interfaces con memoriay con el PCI; para el cómputo de la primitivay la multiescala utilizamos el lenguaje de altonivel Handel-C, puesto que es más apropiadopara la descripción algorítmica y no degradalas prestaciones o aumenta el uso de recursoshardware significativamente [11].
4.1. Flujo óptico
Las contribuciones principales respecto atrabajos anteriores son: la migración a la nuevaplataforma, las conexiones con el controladorde memoria (MCU) [16] y la adaptación a laarquitectura multiescala.
Las etapas para la implementación del flujoóptico son:
• S0: Filtrado de los fotogramas de entradacon kernels Gaussianos K = [1 21]/4 para reducir el aliasing. Nuestraventana temporal es de 3 fotogramas, unmayor número de los mismos complica la
Figura 2: Etapas de procesamiento para el flujoóptico
operación de warping y conlleva un mayoruso de recursos de memoria.
• S1: Cálculo de las derivadas temporales.
• S2: Calcula las derivadas espaciales apartir de las anteriores: Ixi, Iyi, Iti.
• S3: En esta etapa calculamos loscoeficientes del sistema lineal quemostramos en (6) y (7). Los pesos Wi sonkernels separables W = [1 4 6 4 1]/16,que son los que se utilizan en [4] [6] [7] .
• S4: Resolución del sistema queplanteamos en la etapa anterior. Utilizael determinante de (6) como medida deconfianza. Se estudiaron dos alternativaspara la resolución de esta etapa: usararitmética de punto fijo y de puntoflotante.
En la Fig. (2) podemos ver las etapas antesdescritas y el número de etapas de caucepara cada una de ellas junto con el númerode cauces superescalares; teniendo en cuentanuestra arquitectura de cauces de grano finoparalelos superescalares, podemos calcular untotal de: 36 (S0)+ 18 (S1)+ 36 (S2)+ 72 (S3)+37 (S4) = 199 unidades de procesamientoparalelo. En la Fig. (4) podemos ver losresultados de salida para la extracción de flujoóptico para Yosemite.
202 X Jornadas de Computación Reconfigurable y Aplicaciones, (JCRA2010)
actas_JCRA_Rev.pdf 212 16/07/2010 18:57:35
Figura 3: Etapas de procesamiento para ladisparidad
Figura 4: Resultados para flujo óptico y disparidadpara las secuencias de Yosemite (izquierda) yTsukuba (derecha)
4.2. Disparidad
La implementación de la disparidad tambiénse basa en el algoritmo de L&K[9] extendidotambién a la arquitectura multiescala.
Las etapas del core para la implementaciónde la disparidad son similares a las de flujoóptico (tal y como vimos en la Sección 2).Para este sistema utilizamos 127 unidades deprocesamiento paralelo, tal y como se muestraen la Fig. (3). Además, el número de unidadessuperescalares disminuye en algunos casos, asícomo la profundidad de los cauces. Podemosver un ejemplo de disparidad en la Fig. (4),sobre la imagen de Tsukuba.
4.3. Energía y orientación
Para el cálculo de estas dos primitivasnecesitamos las derivadas del fotograma deentrada, pero únicamente son calculadas enla última escala (la de grano más fino). Las
Figura 5: Etapas de procesamiento para laextracción de energía y orientación
etapas para el cálculo de las mismas aparecenlistadas a continuación y están representadasen la Fig. (5):
• S0: Esta etapa lleva a cabo el filtradoGaussiano K = [1 2 1]/4 para reducir elaliasing.
• S1: Esta etapa calcula las derivadastemporales.
• S2: Calcula las derivadas espacio-temporales a partir de las anteriores.
• S3: En esta etapa se calculan orientacióny energía como el módulo y la dirección apartir del gradiente.
En total, llegamos a emplear 86 unidadesde procesamiento paralelo. Como hemoscomentado, los cauces paralelos superescalaresse representan por el número de caminosen cada una de las etapas. Los valoresentre paréntesis en cada una representan laprofundidad del cauce de las mismas.
Estas primitivas se utilizan para todo tipode aplicaciones, entre otras, la orientación seusa para reconocimiento de patrones. Puestoque el esquema está basado en el gradiente,los módulos que se utilizan para el cálculo deestas primitivas se pueden reutilizar tambiénen las demás primitivas extraídas. En la Fig.(6) podemos ver los resultados de extracciónde estos descriptores de contraste local.
Sistemas de visión artificial 203
actas_JCRA_Rev.pdf 213 16/07/2010 18:57:35
Figura 6: Resultados para una imagen realde tráfico (arriba) de extracción de energía yorientación (abajo izquierda y derecha)
Figura 7: Arquitectura hardware del sistemacompleto
4.4. Sistema completo
En este apartado vamos a comentar detallessobre la arquitectura completa de nuestrosistema. En primer lugar, los tres grupos deprimitivas extraídas (flujo óptico, disparidady energía y orientación) se corresponderíancon tres cores independientes pero comohemos dicho, tenemos dos cores: uno con ladisparidad y en el otro integramos juntosenergía y orientación con el flujo óptico paraahorrar recursos (también se podrían haberintegrado con disparidad). La aportaciónprincipal de este trabajo respecto a losanteriores ya mencionados es precisamente laintegración de las diferentes primitivas (en los
anteriores se hacía sobre flujo óptico y sólose disponía de un core monoescala) con lamultiescala, junto con la migración a la nuevaplataforma para la conexión con el PC y lasnuevas interfaces con memoria.
La multiescala se implementa para flujoy disparidad por tanto, si todo se ejecutaen paralelo, duplicamos algunos módulosde procesamiento. Además, la memoriacompartida para lectura y escritura hace quetengamos que establecer un mapa de memoriacuidadosamente para evitar los problemas decoherencia.
El sistema completo se detalla en la Fig. (7),por un lado el core de disparidad y por otroel de flujo óptico y descriptores de contrastelocal. El procesamiento de la expansión yel warping se duplican pero el módulo quese encarga del cómputo de la pirámide escompartido (para disparidad se hace tantode la imagen derecha como de la izquierda,mientras que el flujo óptico se aplica sólo ala izquierda). La arquitectura presentada essimilar a la que se presentó en [15] pero noaplicada únicamente al flujó óptico.
La etapa de construcción de la pirámideGaussiana ha sido ya comentada previamente.Lo primero que llevamos a cabo es un filtradoGaussiano 5x5 para reducir el aliasing. Elsiguiente paso es el submuestreo encadenadoen función del número de escalas para crearlas entradas de cada una de las iteraciones delalgoritmo. Las imágenes de entrada son leídasa través de la interfaz PCI express, tal y comose muestra en [5][13][15] y una vez procesadas,son almacenadas en los bancos ZBT.
La etapa de warping o compensaciónconsiste en una interpolación bilineal (linealen el caso de la disparidad) de las imágenesde entrada con los valores computados para lacaracterística extraída en la iteración anterior(no se realiza en la primera iteración).
La etapa de suma combina los valores de lacaracterística extraída en la iteración anterior(la suma total) y los computados en la nueva.La propagación de valores no válidos se realizacon una operación "AND" lógica.
La última etapa es la del filtrado de medianaentre escalas de tamaño 3x3.
204 X Jornadas de Computación Reconfigurable y Aplicaciones, (JCRA2010)
actas_JCRA_Rev.pdf 214 16/07/2010 18:57:35
5. Prestaciones
En cuanto al flujo óptico, el core presentadoen este trabajo consigue alcanzar hasta270 fps (fotogramas por segundo) utilizandoresolución VGA (640x480) en la entrada.Este valor se obtiene usando aritmética enpunto fijo, en el caso de usar punto flotantealcanza hasta 247 fps. Por otro lado, en laTabla (1) podemos ver que la implementaciónmonoescala alcanza el 9% de los recursos yla multiescala hasta el 61%. Por último, encuanto a la precisión, para la secuencia deYosemite, muy utilizada en visión artificial,el AAE (error angular medio) llega hasta los9.08o con un 81% de densidad, como vemosen la Tabla (2). En cuanto a los resultados,en la Fig. (4) podemos ver la salida para esasecuencia.
Para la disparidad, el core alcanza unmáximo de hasta 352 fps para imágenes conresolución VGA. En la Tabla (1) podemos vercómo la implementación monoescala alcanzael 5% de los recursos y la multiescalahasta el 44%. Para la secuencia de Tsukuba,también muy utilizada en visión artificial, elMAE(error absoluto medio) llega hasta 0.83con un 94.03% de densidad, tal y como vemosen la Tabla (2). En cuanto a los resultadoscualitativos, podemos ver la primitiva extraídaen la Fig. (4).
Por último, el sistema completo que extraetodas las primitivas visuales aparece en laTabla (1) que analiza los recursos. Comovemos, llega a consumir hasta el 76% de losrecursos totales del sistema. Este valor no seobtiene como la suma de los anteriores puestoque se comparten recursos al encapsularlosen el mismo circuito como por ejemplo laconstrucción de la pirámide, las interfaces conla plataforma y con memoria, además de laoptimización de las herramientas de Xilinx[17]. Esta arquitectura nos permitiría procesarhasta 32 fps para resolución VGA.
6. Conclusiones
En este trabajo hemos diseñado eimplementado un sistema empotrado para
Flujo Óptico: Yosemite Disparidad: TsukubaEsc. AAE SAE Dens. MAE SAE Dens.1 10.92 15.36 98.30 5.20 3.6 94.642 9.08 12.40 80.94 2.25 3.02 92.913 9.20 11.72 84.05 0.83 1.26 94.034 9.42 12.12 85.83 0.93 1.37 93.89
Tabla 2: Error para flujo y disparidad enfunción del número de escalas para lassecuencias de Yosemite y Tsukuba
la extracción de primitivas visuales de bajonivel en tiempo real. En todos los algoritmoshemos intentado mantener un compromisoentre precisión, eficiencia y consumo de losrecursos.
El principal objetivo es el de la computaciónen tiempo real. Este hecho representauna oportunidad muy interesante para lacomputación en medio y alto nivel de visión.El sistema llega a conseguir hasta 32 fpspara resoluciones VGA para la arquitecturamultiescala y 350 fps y 270 fps respectivamentepara la extracción monoescala del flujo ópticoy la disparidad. En nuestro caso, el sistemacompleto utiliza hasta un 76% de los recursosdisponibles en la plataforma. Además, todoesto lo conseguimos manteniendo un buencompromiso con la precisión de las primitivasextraídas.
La arquitectura basada en caucessuperescalares de grano fino consigue unsistema de altas prestaciones con un consumode potencia bajo [7]. Más que el diseño de unsistema específico, en el trabajo describimosuna forma versátil de implementar quepueda ser fácilmente adaptada a diferentescompromisos entre prestaciones y recursoshardware. Además, podemos controlar lacompartición de recursos lo que hace alsistema fácil de reutilizar en diferentescampos.
Todo esto hace al sistema apropiado paraimplementar sistemas aún más complejos paraaplicaciones muy diversas, como por ejemplo,arquitecturas para sistemas de visión activos,vídeo-vigilancia o navegación autónoma.
Sistemas de visión artificial 205
actas_JCRA_Rev.pdf 215 16/07/2010 18:57:36
4 input LUTs Slice FlipFlops Slices DSP BlockRAM Freq(out of 84352) (out of 84352) (out of 42716) (160) (378) (MHz)
OF system 31793 (37%) 24694 (29%) 26036 (61%) 62 (38%) 112 (29%) 44OF core 4589 (5%) 6622 (5%) 4128 (9%) 30 (18%) 48 (12%) 83Disp system 21287 (25%) 16989 (20%) 18773 (44%) 6 (3%) 92 (24%) 49Disp core 2358 (2%) 3120 (3%) 2129 (5%) 3 (1%) 28 (7%) 108Board Interface 4774(5%) 5195 (6%) 5388 (6%) 0 36 (9%) 112Complete system 41613 (49%) 32706 (38%) 32442 (76%) 49 (30%) 162 (43%) 44
Tabla 1: Utilización de recursos hardware
7. Agradecimientos
Este trabajo ha sido financiado por el proyectonacional DINAM-VISION (DPI2007-61683),los de la Junta de Andalucía P06-TIC02007y TIC-3873 y el Programa Alβan, Programade Becas de Alto Nivel de la Unión Europeapara América Latina, beca [E06D101749CO].
Referencias
[1] Adelson, E.H., Burt, P.J., The Laplacianpyramid as a compact image code, IEEET.Commun., vol. 31, pp. 532-540, 1983.
[2] Anguita, M., Diaz, J., et al. Optimizationstrategies for high-performance computingof optical-flow in general-purposeprocessors, IEEE TCSVT, 2009.
[3] Beauchemin, S., Barron, J.L., Thecomputation of optical flow, ACM CompSurv, vol. 27, pp. 433-466, 1995.
[4] Barron, J.L., Fleet, D.J., Beauchemin, S.,Performance of optical flow techniques,IJCV, vol. 12, pp. 43-77, 1994.
[5] Barranco, F., Tomasi, M., et al. Entornosoftware para visualización y configuraciónde procesamiento de imágenes en tiemporeal con plataformas reconfigurables,JCRA, pp. 327-336, 2009.
[6] Brandt, J.W., Improved accuracy ingradient based optical flow estimation,IJCV, vol. 25, pp. 5-22, 1997.
[7] Diaz, J., Ros, E., Agis, R., Bernier, J.L.,Superpipelined high-performance optical-flow computation architecture, CVIU, vol.112, pp. 262-273, 2008.
[8] Horn, B., Schunk, B., Determining opticalflow, AI, vol. 17, pp. 185-203, 1985.
[9] Lucas, B.D., Kanade, T., An iterativeimage registration technique with anapplication to stereo vision, Int. Conf. onAI, Vancouver, pp. 674-679, 1981.
[10] Murachi, Y., Fukuyama, Y., Yamamoto,R., et al. A VGA 30-fps Realtime Optical-Flow Processor Core for Moving PictureRecognition, IEICE, pp.457-464, 2008.
[11] Ortigosa, E.M., Cañas, A., et al.Hardware description of multilayerperceptrons with different abstractionlevels, Microp. and Microsys., vol. 30, pp.435-444, 2006.
[12] Pauwels, K., Van Hulle, M. M., Optimalinstantaneous rigid motion estimationinsensitive to local minima, CVIU, pp. 77-86, 2006.
[13] Open-rt Vision web page:http://code.google.com/p/open-rtvision/
[14] Seven Solutions web page:http://www.sevensols.com
[15] Tomasi, M., Barranco, F., et al.Arquitectura multiescala de cálculo deflujo óptico basado en la fase, JCRA, pp.295-304, 2009.
[16] Vanegas, M., Tomasi, M., Diaz, J.,Ros, E., Multiport abstraction layer forFPGA intensive memory exploitationapplications, Submitted to JSA, 2010.
[17] Xilinx web page: http://www.xilinx.com
206 X Jornadas de Computación Reconfigurable y Aplicaciones, (JCRA2010)
actas_JCRA_Rev.pdf 216 16/07/2010 18:57:36