<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1815-5928</journal-id>
<journal-title><![CDATA[Ingeniería Electrónica, Automática y Comunicaciones]]></journal-title>
<abbrev-journal-title><![CDATA[EAC]]></abbrev-journal-title>
<issn>1815-5928</issn>
<publisher>
<publisher-name><![CDATA[Universidad Tecnológica de La Habana José Antonio Echeverría, Cujae]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1815-59282017000200001</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Diseño de un sistema de adquisición de imágenes basado en cámaras web USB y hardware reconfigurable]]></article-title>
<article-title xml:lang="en"><![CDATA[Hardware design of a video acquisition system based on USB webcam]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Delgado León]]></surname>
<given-names><![CDATA[David]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,ETECSA  ]]></institution>
<addr-line><![CDATA[La Habana ]]></addr-line>
<country>Cuba</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>08</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>08</month>
<year>2017</year>
</pub-date>
<volume>38</volume>
<numero>2</numero>
<fpage>1</fpage>
<lpage>11</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S1815-59282017000200001&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S1815-59282017000200001&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S1815-59282017000200001&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[El diseño de sistemas electrónicos que incluyen procesamiento digital de imágenes, basados en cámaras web USB como elemento de adquisición, se ha visto frenado por la complejidad relacionada con el estándar USB y la diversidad de controladores presentes entre los diferentes fabricantes de cámaras. La tendencia a la estandarización de los controladores, específicamente a través de la clase de video de USB (UVC por sus siglas en inglés) y la posibilidad de diseñar sistemas digitales utilizando hardware reconfigurable, brinda la posibilidad de desarrollar toda una gama de aplicaciones a partir de cámaras web USB. Este artículo presenta el diseño de un sistema de adquisición de imágenes basado en cámaras web USB y hardware reconfigurable. Dicho sistema se encuentra diseñado sobre un FPGA de Xilinx; con un soft-procesador microblaze embebido y las imágenes son capturadas con una cámara web USB con soporte UVC. El diseño basado en software es programado en lenguaje C y se ejecuta sobre el sistema operativo petalinux. Además utiliza el controlador UVC y la interfaz de programación de aplicaciones video4linux2 presentes en petalinux. Se brinda una visión general de la arquitectura del sistema, los resultados de las simulaciones funcionales y detalles relacionados con la implementación.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The design of electronics systems that include digital processing of images, based in USB webcams as element of acquisition, has seen slowed by the complexity associated with USB standards and the diversity of drivers in different camera manufactures. The tendency to standardization of drivers, specifically through the USB Video Class (UVC) and the possibility of design digital systems using reconfigurable hardware, offers the possibility of developing a whole range of applications based on USB webcams. This article presents the design of an image acquisition system based on USB webcam and reconfigurable hardware. This system is designed on Xilinx FPGAs, with an embedded soft-processor like microblaze and the images are captured using a USB webcam with UVC driver support. The software solution has been developed on C language and runs over an operating system like petalinux. Also uses features of petalinux like UVC driver and video4linux2 application program interface. An overview of the system architecture, the results of functional simulations and details related to implementation are provided.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[petalinux]]></kwd>
<kwd lng="es"><![CDATA[UVC]]></kwd>
<kwd lng="es"><![CDATA[video4linux2]]></kwd>
<kwd lng="es"><![CDATA[microblaze]]></kwd>
<kwd lng="en"><![CDATA[petalinux]]></kwd>
<kwd lng="en"><![CDATA[UVC]]></kwd>
<kwd lng="en"><![CDATA[video4linux2]]></kwd>
<kwd lng="en"><![CDATA[microblaze]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana" size="2"> <b>ART&Iacute;CULO ORIGINAL</b></font></p>     <p align="justify">&nbsp;</p>     <p align="justify">&nbsp; </p> 	    <p align="justify"><font size="4"><strong><font face="verdana">Dise&ntilde;o de un sistema de adquisici&oacute;n de im&aacute;genes basado en c&aacute;maras web USB y hardware reconfigurable</font></strong></font></p> 	    <p align="justify">&nbsp;</p> 	    <p align="justify"><font face="verdana" size="3"><b>Hardware design of a video acquisition system based on USB webcam</b></font></p>  	    <p align="justify">&nbsp;</p> 	    <p align="justify">&nbsp;</p> 	    <p align="justify"><font face="verdana" size="2"><b>David Delgado Le&oacute;n</b></font></p>  	    <p align="justify"><font face="verdana" size="2">ETECSA, La Habana, Cuba.</font></p>     ]]></body>
<body><![CDATA[<p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p> <hr align="JUSTIFY" size="1" noshade>     <p align="justify"><font face="verdana" size="2"><b>RESUMEN</b></font></p>  	    <p align="justify"><font face="verdana" size="2">El dise&ntilde;o de sistemas electr&oacute;nicos que incluyen procesamiento digital de im&aacute;genes, basados en c&aacute;maras web USB como elemento de adquisici&oacute;n, se ha visto frenado por la complejidad relacionada con el est&aacute;ndar USB y la diversidad de controladores presentes entre los diferentes fabricantes de c&aacute;maras. La tendencia a la estandarizaci&oacute;n de los controladores, espec&iacute;ficamente a trav&eacute;s de la clase de video de USB (UVC por sus siglas en ingl&eacute;s) y la posibilidad de dise&ntilde;ar sistemas digitales utilizando hardware reconfigurable, brinda la posibilidad de desarrollar toda una gama de aplicaciones a partir de c&aacute;maras web USB.</font></p>  	    <p align="justify"><font face="verdana" size="2">Este art&iacute;culo presenta el dise&ntilde;o de un sistema de adquisici&oacute;n de im&aacute;genes basado en c&aacute;maras web USB y hardware reconfigurable. Dicho sistema se encuentra dise&ntilde;ado sobre un FPGA de Xilinx; con un soft&#45;procesador microblaze embebido y las im&aacute;genes son capturadas con una c&aacute;mara web USB con soporte UVC. El dise&ntilde;o basado en software es programado en lenguaje C y se ejecuta sobre el sistema operativo petalinux.&nbsp; Adem&aacute;s utiliza el controlador UVC y la interfaz de programaci&oacute;n de aplicaciones video4linux2 presentes en petalinux. Se brinda una visi&oacute;n general de la arquitectura del sistema, los resultados de las simulaciones funcionales y detalles relacionados con la implementaci&oacute;n.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>Palabras claves:</b> petalinux, UVC, video4linux2, microblaze</font></p>  	<hr align="JUSTIFY" size="1" noshade>     <p align="justify"><font face="verdana" size="2"><b>ABSTRACT</b></font></p>  	    <p align="justify"><font face="verdana" size="2">The design of electronics systems that include digital processing of images, based in USB webcams as element of acquisition, has seen slowed by the complexity associated with USB standards and the diversity of drivers in different camera manufactures. The tendency to standardization of drivers, specifically through the USB Video Class (UVC) and the possibility of design digital systems using reconfigurable hardware, offers the possibility of developing a whole range of applications based on USB webcams.</font></p>  	    <p align="justify"><font face="verdana" size="2">This article presents the design of an image acquisition system based on USB webcam and reconfigurable hardware. This system is designed on Xilinx FPGAs, with an embedded soft&#45;processor like microblaze and the images are captured using a USB webcam with UVC driver support. The software solution has been developed on C language and runs over an operating system like petalinux. Also uses features of petalinux like UVC driver and video4linux2 application program interface. An overview of the system architecture, the results of functional simulations and details related to implementation are provided.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>Key words: </b>petalinux, UVC, video4linux2, microblaze</font></p>  	<hr align="JUSTIFY" size="1" noshade>     ]]></body>
<body><![CDATA[<p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="verdana" size="3"><b>1.&#45;</b> <b>INTRODUCCI&Oacute;N</b></font></p>     <p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="2">Los sistemas de visi&oacute;n son ampliamente utilizados en la actualidad en el control de la calidad de procesos industriales, en sistemas de vigilancia, posicionamiento e identificaci&oacute;n de objetos m&oacute;viles, en la rob&oacute;tica, entre otros. Uno de los tipos de c&aacute;maras que pueden usarse para obtener informaci&oacute;n visual son las c&aacute;maras web USB &#91;1&#93;, popularmente conocidas como webcam. &nbsp;Sin &nbsp;embargo, &nbsp;su &nbsp;uso &nbsp;dentro &nbsp;del &nbsp;&nbsp;mundo &nbsp;del &nbsp;dise&ntilde;o &nbsp;electr&oacute;nico, &nbsp;se &nbsp;ha &nbsp;visto &nbsp;&nbsp;frenado &nbsp;por &nbsp;&nbsp;la &nbsp;diversidad &nbsp;de controladores existentes entre fabricantes y por solo encontrarse estos desarrollados para los principales sistemas operativos que dominan el mercado como Windows, Linux o MacOS. La carencia de controladores y la complejidad del protocolo USB, unido a las restricciones temporales de las se&ntilde;ales de video transmitidas en tiempo real, ha favorecido el uso de c&aacute;maras web en dise&ntilde;os sobre sistemas operativos en computadoras personales y limitado su utilizaci&oacute;n en dise&ntilde;os sobre sistemas digitales.</font></p>  	    <p align="justify"><font face="verdana" size="2">A partir del a&ntilde;o 2003, surge una especificaci&oacute;n que estandariza y especifica todos los elementos necesarios para transportar flujos de video sobre el protocolo USB. Esta especificaci&oacute;n conocida como clase de video para USB (UVC por sus siglas en ingl&eacute;s), agrupa a todos los dispositivos que manejan flujos de video sobre USB en un solo controlador gen&eacute;rico &#91;2&#93;. Una d&eacute;cada despu&eacute;s los principales fabricantes de c&aacute;maras USB del mundo han adoptado este controlador como modelo de conexi&oacute;n facilitando el desarrollo de aplicaciones y sistemas digitales basados en esta clase de dispositivos &#91;3&#93;. A su vez, la interfaz de programaci&oacute;n de aplicaciones video4linux &#91;4&#93;, presente en el n&uacute;cleo del sistema operativo Linux, fue modificada&#91;5&#93;, siendo sustituida por video4linux2, la cual proporciona un soporte completo para realizar la adquisici&oacute;n de im&aacute;genes a partir de c&aacute;maras web.</font></p>  	    <p align="justify"><font face="verdana" size="2">En la literatura se reportan dise&ntilde;os de sistemas de adquisici&oacute;n de im&aacute;genes basados en hardware reconfigurable y relacionados con el protocolo USB &#91;6&#45;10&#93;. Cui y Jiang presentan un sistema de adquisici&oacute;n basado en un sensor, con tecnolog&iacute;a de fabricaci&oacute;n CMOS como elemento de adquisici&oacute;n. El sensor es acoplado al circuito de hardware reconfigurable a trav&eacute;s del protocolo I2C &#91;11&#93;, dejando la interfaz USB para conectar el sistema a un <i>host</i> USB &#91;1&#93; y realizar la transmisi&oacute;n de los cuadros capturados &#91;6&#93;. Eshack y Kumar presentan un sistema de adquisici&oacute;n de m&uacute;ltiples dispositivos USB utilizando el <i>host</i> USB del fabricante Cypress, CY7C67300 &#91;7&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">La nota de aplicaci&oacute;n de Xilinx 925 define un sistema de adquisici&oacute;n utilizando el m&oacute;dulo IP OPB EPC &#91;12&#93; y el <i>host</i> USB CY7C67300. Las notas de actualizaci&oacute;n del paquete de adquisici&oacute;n de im&aacute;genes de Matlab, a partir de su versi&oacute;n R2013b, incluyen el soporte para c&aacute;maras web USB basadas en el controlador UVC &#91;13&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">El objetivo de este trabajo es dise&ntilde;ar un sistema que realice la adquisici&oacute;n de im&aacute;genes provenientes de c&aacute;maras web con soporte UVC. Lograr un sistema de adquisici&oacute;n compacto, que funcione en tiempo real y que permita el procesamiento de los cuadros capturados; es la base para desarrollar sistemas de visi&oacute;n artificial que realicen tareas m&aacute;s complejas como sistemas de vigilancia, de reconocimiento de patrones u objetos perdidos y sistemas de visi&oacute;n estereosc&oacute;pica.</font></p>  	    <p align="justify"><font face="verdana" size="2">Se utiliz&oacute; &nbsp;el sistema operativo petalinux para sistemas embebidos. Las versiones actuales del n&uacute;cleo de petalinux incluyen el controlador UVC, que permite al dise&ntilde;ador no tener que emplear tiempo de dise&ntilde;o en la comunicaci&oacute;n USB. Adem&aacute;s incluye la interfaz de programaci&oacute;n de aplicaciones para procesar video, video4linux2, la cual brinda la posibilidad de obtener una se&ntilde;al sin compresi&oacute;n que puede ser transmitida, procesada y visualizada en el sistema digital dise&ntilde;ado.</font></p>  	    ]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">El dise&ntilde;o se implement&oacute; en un FPGA virtex&#45;4 disponible en la placa de desarrollo ML403 del fabricante Xilinx, adem&aacute;s de utilizar el circuito integrado USB3300 &#91;14&#93; del fabricante Microchip para proporcionar la capa f&iacute;sica del protocolo USB. Se emplearon el programa ISE y la herramienta para desarrollar sistemas embebidos EDK<i>.</i> Con el m&eacute;todo de dise&ntilde;o utilizado, corroborado por los an&aacute;lisis y herramientas empleadas, se garantiz&oacute; la funcionalidad del sistema de adquisici&oacute;n.</font></p>  	    <p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="3"><b>2.&#45; MATERIALES Y M&Eacute;TODOS</b></font></p>  	    <p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="2">Se utiliz&oacute; la tarjeta de desarrollo ML403 &#91;15&#93;, que contiene el FPGA virtex&#45;4 del fabricante Xilinx. Esta familia ofrece un alto rendimiento y soporte completo a las aplicaciones que deben ejecutarse sobre plataformas embebidas conocidas como "sistemas en un solo chip" (SoC por sus siglas en ingl&eacute;s).&nbsp; El dispositivo es producido usando la tecnolog&iacute;a de 90 nm en obleas de silicio de 300 mm. Tambi&eacute;n se dispuso de una tarjeta que realiza la funcionalidad de capa f&iacute;sica del protocolo USB, basada en el circuito integrado de Microchip USB3300 &#91;16&#93;. El circuito integrado USB3300 brinda soporte completo a SoC que incluyen en su dise&ntilde;o la interfaz de alta velocidad ULPI &#91;17&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">ULPI es un est&aacute;ndar dise&ntilde;ado para soportar sistemas de alta velocidad como USB 2.0, adem&aacute;s de garantizar un n&uacute;mero de se&ntilde;ales m&iacute;nimo. La <a href="#fig1">Figura 1</a> &#91;17&#93; muestra un diagrama con los principales bloques de la interfaz y su conexi&oacute;n con las se&ntilde;ales de la placa de desarrollo ML403. La interfaz ULPI est&aacute; compuesta por una se&ntilde;al de reloj: ULPI_Clock, cuatro se&ntilde;ales de control: PHY_Reset, PHY_Nxt, ULPI_Dir y ULPI_Stp, adem&aacute;s de una se&ntilde;al de datos de 8 bits: ULPI_Data &#91;17&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">El bloque UTMI + PHY Core implementa la funcionalidad de nivel f&iacute;sico de USB mientras que ULPI PHY reduce el n&uacute;mero de se&ntilde;ales que maneja la interfaz UTMI a la interfaz ULPI almacenando la relaci&oacute;n entre ambas interfaces en el bloque <i>Register Map</i>. Cuando el oscilador es detectado por el nivel f&iacute;sico, el bloque PLL genera el reloj interno y la interfaz de reloj de 60 MHz. Por &uacute;ltimo el bloque <i>Power on Reset</i>, una vez que la alimentaci&oacute;n es detectada se encarga de resetear todos los bloques para dejar la interfaz en un estado inicial operativo &#91;17&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">La conexi&oacute;n f&iacute;sica de la tarjeta de desarrollo al circuito integrado USB3300 se realiz&oacute; a trav&eacute;s de las se&ntilde;ales de entrada y salida de prop&oacute;sito general del dispositivo de hardware reconfigurable. L&oacute;gicamente el circuito integrado USB3300 y el m&oacute;dulo IP XPS USB_host &#91;18&#93; se conectaron a trav&eacute;s de la interfaz ULPI.</font></p>  	    <p align="center"><a name="fig1"/><img src="/img/revistas/eac/v38n2/f0101217.jpg"> 	    
<p align="justify"><font face="verdana" size="2">Un soft&#45;procesador microblaze fue utilizado en el dise&ntilde;o para cargar el sistema operativo petalinux que permita, a trav&eacute;s del controlador UVC, conectar la c&aacute;mara web USB al sistema. A la configuraci&oacute;n b&aacute;sica de petalinux se le agreg&oacute; el m&oacute;dulo IP XPS USB_host, que le brinda funcionalidad <i>host</i> USB al sistema. La conexi&oacute;n del m&oacute;dulo USB con microblaze es mostrada en la <a href="#fig2">Figura 2</a> &#91;18&#93;.</font></p>  	    ]]></body>
<body><![CDATA[<p align="center"><a name="fig2"/><img src="/img/revistas/eac/v38n2/f0201217.jpg"> 	    
<p align="justify"><font face="verdana" size="2">La arquitectura mencionada se dise&ntilde;&oacute; utilizando el software EDK 12.4 (64&#45;bits) de Xilinx. Para la verificaci&oacute;n funcional se implement&oacute; un banco de prueba y se utiliz&oacute; el emulador de procesadores QEMU&#91;19&#93; presente en el paquete de petalinux 12.12.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>2.1&#45;</b> <b>L</b><b>A CLASE DE VIDEO DE USB</b></font></p>  	    <p align="justify"><font face="verdana" size="2">La clase de video de USB, UVC, define la funcionalidad de transportar video sobre el est&aacute;ndar USB. Al igual que todos los dispositivos de almacenamiento como memorias USB o discos duros externos pueden ser manejados por un controlador, UVC solo necesita un controlador para manejar todos sus dispositivos &#91;2&#93;. La especificaci&oacute;n cubre c&aacute;maras web, video c&aacute;maras, convertidores de video anal&oacute;gico, sintonizadores de televisi&oacute;n, es decir, dispositivos que manejan flujos de video, tanto en entrada como en salida. Debido a la gran variedad de dispositivos y pocos dise&ntilde;adores disponibles para desarrollar el controlador, se han enfocado en los dispositivos de entrada y m&aacute;s espec&iacute;ficamente, en las c&aacute;maras web.</font></p>  	    <p align="justify"><font face="verdana" size="2">Este controlador estandariza la capacidad del protocolo USB de manejar flujos de video y contiene toda la informaci&oacute;n necesaria para &nbsp;realizar &nbsp;un &nbsp;dise&ntilde;o &nbsp;que &nbsp;incorpore dicha &nbsp;funcionalidad. Define todos los descriptores espec&iacute;ficos que deben estar presente en cada funci&oacute;n de video sobre USB y como debe moverse el video a trav&eacute;s del controlador. Permite negociar par&aacute;metros esenciales de una se&ntilde;al de video como brillo, resoluci&oacute;n de los cuadros, relaci&oacute;n de aspecto, cuadros por segundo, ancho de banda; antes de realizar cualquier transferencia o entre transferencias &#91;2&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">Los n&uacute;cleos de Linux a partir de su version 2.6.x tienen incorporados este tipo de controlador. De forma que si una c&aacute;mara web&nbsp; con soporte UVC es conectada, autom&aacute;ticamente es detectada, y es posible capturar su se&ntilde;al de video a partir de una aplicaci&oacute;n desarrollada por el usuario.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>2.2.&#45;</b> <b>I</b><b>NTERFAZ DE PROCESAMIENTO DE VIDEO V4L2</b></font></p>  	    <p align="justify"><font face="verdana" size="2">V4L2 significa "video para Linux 2" y constituye la segunda versi&oacute;n de la interfaz de programaci&oacute;n de aplicaciones V4L. Opuesto a la mayor&iacute;a de las implementaciones de controladores<i>,</i> V4L2 forma parte del c&oacute;digo del n&uacute;cleo de Linux y permite manipular una gran cantidad de dispositivos de video, tanto de entrada como de salida &#91;4&#93;. La interfaz es mayormente implementada como un conjunto de llamadas a la funci&oacute;n IOCTL para un dispositivo espec&iacute;fico. Una vez comprendido el mecanismo es posible manejar las c&aacute;maras con cierto grado de facilidad y concentrarse en el procesamiento de los cuadros. Una implementaci&oacute;n com&uacute;n seguir&iacute;a el conjunto de pasos relacionados en la <a href="#fig3">Figura 3</a>.</font></p>  	    <p align="center"><a name="fig3"/><img src="/img/revistas/eac/v38n2/f0301217.jpg"> 	    
<p align="justify"><font face="verdana" size="2">El algoritmo comienza abriendo el dispositivo, a trav&eacute;s de las funciones b&aacute;sicas de entrada y salida del lenguaje C como open("/dev/video0", O_RDWR). Dicho procedimiento resulta sencillo porque ya el m&oacute;dulo UVCVIDEO, perteneciente a UVC, detect&oacute; la c&aacute;mara como un dispositivo perteneciente a UVC, configur&oacute; los descriptores necesarios y en la ruta virtual /dev/video0 carg&oacute; el dispositivo listo para realizar la adquisici&oacute;n de la se&ntilde;al de video &#91;4&#93;.</font></p>  	    ]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">El siguiente bloque consiste en encuestar y analizar las funcionalidades del dispositivo conectado para posteriormente realizar la configuraci&oacute;n. Como se ha mencionado V4L2 soporta una amplia variedad de dispositivos y no todos brindan las mismas capacidades, es por ello que se encuestan las caracter&iacute;sticas del dispositivo conectado a trav&eacute;s de la funci&oacute;n ioctl(fd, VIDIOC_QUERYCAP, &amp;capabilities) y el resultado se almacena en una estructura del tipo v4l2_capability &#91;4&#93;. La configuraci&oacute;n del formato de captura es obligatoria. Se debe indicar tama&ntilde;o de la imagen, formato de color: MPJEG, YUV, RGB, entre otras caracter&iacute;sticas. El formato elegido debe ser soportado por el dispositivo conectado y la configuraci&oacute;n se realiza a trav&eacute;s de la estructura v4l2_format &#91;4&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">V4L2 maneja principalmente formatos sin compresi&oacute;n. Los p&iacute;xeles son transmitidos de izquierda a derecha y de arriba hacia abajo. El primer byte de dato en el <i>buffer</i> es siempre el p&iacute;xel m&aacute;s a la izquierda y m&aacute;s arriba, y as&iacute; sucesivamente. Una vez trasmitidos todos los p&iacute;xeles de una fila pueden o no existir bytes de relleno con el objetivo de lograr alineaci&oacute;n &#91;4&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">En el sistema dise&ntilde;ado la webcam utilizada tiene soporte para formato YUYV 4:2:0 &#91;4&#93; y formato MJPEG &#91;4&#93;. Se escogi&oacute; el formato sin compresi&oacute;n YUYV 4:2:0 para adquirir la se&ntilde;al. En este formato 4 bytes representan 2 p&iacute;xeles, dos muestras de luminancia, una muestra de croma Cr y una muestra de croma Cb. Cada muestra de luminancia pertenece a un p&iacute;xel mientras que las muestras de croma pertenecen a dos p&iacute;xeles adyacentes. Este formato en el ambiente de Windows se conoce como YUV2. Se muestra un ejemplo del orden de los p&iacute;xeles en una imagen de 4x4 p&iacute;xeles donde cada celda representa un byte de informaci&oacute;n.</font></p>  	    <p align="center"><font face="verdana" size="2">offset+00 &nbsp;&nbsp;Y&rsquo;<sub>00&nbsp; &nbsp;</sub>Cb<sub>00 &nbsp;&nbsp;</sub>Y&rsquo;<sub>01</sub>&nbsp; &nbsp;Cr<sub>00</sub> &nbsp;&nbsp;Y&rsquo;<sub>02</sub>&nbsp; &nbsp;Cb<sub>01</sub>&nbsp; &nbsp;Y&rsquo;<sub>03</sub>&nbsp; &nbsp;Cr<sub>01</sub></font>    <br> 	<font face="verdana" size="2">offset+08 &nbsp;&nbsp;Y&rsquo;<sub>10&nbsp; &nbsp;</sub>Cb<sub>10 &nbsp;&nbsp;</sub>Y&rsquo;<sub>11</sub>&nbsp; &nbsp;Cr<sub>10</sub> &nbsp;&nbsp;Y&rsquo;<sub>12</sub>&nbsp; &nbsp;Cb<sub>11</sub>&nbsp; &nbsp;Y&rsquo;<sub>13</sub>&nbsp; &nbsp;Cr<sub>11</sub></font>  	    <br> 	<font face="verdana" size="2">offset+16&nbsp; &nbsp;Y&rsquo;<sub>20&nbsp; &nbsp;</sub>Cb<sub>20 &nbsp;&nbsp;</sub>Y&rsquo;<sub>21</sub>&nbsp; &nbsp;Cr<sub>20</sub> &nbsp;&nbsp;Y&rsquo;<sub>22</sub>&nbsp; &nbsp;Cb<sub>21</sub>&nbsp; &nbsp;Y&rsquo;<sub>23</sub>&nbsp; &nbsp;Cr<sub>21</sub></font>  	    <br> 	<font face="verdana" size="2">offset+24&nbsp; &nbsp;Y&rsquo;<sub>30 &nbsp;&nbsp;</sub>Cb<sub>30 &nbsp;&nbsp;</sub>Y&rsquo;<sub>31</sub>&nbsp; &nbsp;Cr<sub>30</sub> &nbsp;&nbsp;Y&rsquo;<sub>32</sub>&nbsp; &nbsp;Cb<sub>31</sub>&nbsp; &nbsp;Y&rsquo;<sub>33</sub>&nbsp; &nbsp;Cr<sub>31</sub></font> 	    <p align="justify"><font face="verdana" size="2">El tercer bloque se encarga de definir la localizaci&oacute;n de la memoria donde van a estar configurados los <i>buffers</i> para realizar la captura de la se&ntilde;al de video, la cantidad de buffers, direcci&oacute;n de inicio, entre otros par&aacute;metros. Esto permite que el sistema almacene correctamente en memoria los cuadros de la se&ntilde;al de video provenientes de la c&aacute;mara web. T&eacute;cnicamente este proceso es conocido como <i>queue</i> y una vez llenado con los valores de luminancia y croma, el proceso de habilitar el <i>buffer</i> para que la aplicaci&oacute;n lea los datos se le conoce como <i>dequeue</i>. La configuraci&oacute;n se realiza a trav&eacute;s de la estructura v4l2_requestbuffers &#91;4&#93;.</font></p>  	    <p align="justify"><font face="verdana" size="2">Una vez configurados todos los par&aacute;metros se debe realizar el mapeo de los buffers en la memoria del sistema operativo a trav&eacute;s de la funci&oacute;n ioctl(fd, VIDIOC_QUERYBUF, &amp;bufferinfo) y la estructura &nbsp;<i>v4l2_buffer</i>. Si se cuenta con m&aacute;s de un <i>buffer</i> se debe iterar en un ciclo para realizar el proceso de <i>queue</i> y <i>dequeue</i> secuencialmente en cada <i>buffer</i> &#91;4&#93;. En este punto del algoritmo, se pueden comenzar a capturar los cuadros de video, solo resta activar el flujo de video, poner en cola el <i>buffer</i> donde se requiera almacenar el cuadro actual y una vez llenado el <i>buffer</i> leer los datos para realizar el procesamiento para el cual el sistema fue dise&ntilde;ado. Estas tareas corresponden a los bloques comenzar_la_captura, leer_v4l2_buffer y procesamiento_de_la imagen. Una recomendaci&oacute;n final.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>2.3.&#45; S</b><b>OFTWARE DEL SISTEMA</b></font></p>  	    ]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">El software del sistema est&aacute; dividido en tres partes fundamentales: petalinux con el controlador UVC, la interfaz de programaci&oacute;n de aplicaciones V4L2 y el algoritmo de conversi&oacute;n del formato YUV a RGB que forma parte de la aplicaci&oacute;n desarrollada. Para que el sistema tenga soporte de c&aacute;maras web USB a trav&eacute;s del controlador UVC, se modific&oacute; la configuraci&oacute;n deln&uacute;cleo de petalinux que se carg&oacute; en el dispositivo de hardware reconfigurable. Esto se realiza con el comando make menuconfig en la computadora donde se encuentra instalado petalinux &#91;20&#45;22&#93;. Con ello se habilitaron las siguientes opciones:</font></p>  	    <p><font size="2" face="Courier New, Courier, monospace">Under &quot;Device Drivers&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &quot;USB Support&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &quot;Support for Host-side USB&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &quot;EHCI HCD (USB 2.0) support&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &quot;Use Xilinx usb host EHCI controller  core&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Optionally)Enable &quot;USB verbose debug  messages&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Optionally)Enable &quot;USB announce new  devices&quot;    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable &quot;Root Hub Transaction Translators&quot;</font></p> 	    <p><font size="2" face="Courier New, Courier, monospace">Under &quot;Device  Drivers&quot;    ]]></body>
<body><![CDATA[<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable Multimedia support    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable Cameras/video grabbers  support    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable Video Capture adapters    <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable V4L USB devices     <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enable USB Video  Class (UVC)</font></p> 	    <p align="justify"><font face="verdana" size="2">El primer bloque habilita la funcionalidad de <i>host</i> USB 2.0 en el n&uacute;cleo de petalinux mientras que el segundo habilita la opci&oacute;n de capturar video desde dispositivos que se puedan conectar a trav&eacute;s de UVC. Con esta configuraci&oacute;n en el n&uacute;cleo de petalinux una vez conectada la c&aacute;mara web USB, se puede utilizar un algoritmo como el mostrado en la <a href="/img/revistas/eac/v38n2/f0401217.jpg">Figura 4</a> para capturar las im&aacute;genes. La l&oacute;gica del algoritmo es la misma descrita en la <a href="#fig3">Figura 3</a>.</font></p>  	    
<p align="justify"><font face="verdana" size="2">Para comprobar la funcionalidad del sistema, se realiz&oacute; por software y como parte de la aplicaci&oacute;n desarrollada en lenguaje C, la conversi&oacute;n del formato capturado al formato RGB. La conversi&oacute;n se implement&oacute; a trav&eacute;s de las <a href="#ec1">ecuaciones (1)</a>, <a href="#ec2">(2)</a> y <a href="#ec3">(3)</a>; correspondientes al est&aacute;ndar ITU&#45;R Rec. BT.601 &#91;23&#93;:</font></p>  	    <p align="justify"><a name="ec1"/><img src="/img/revistas/eac/v38n2/e0101217.gif">  	    
<p align="justify"><a name="ec2"/><img src="/img/revistas/eac/v38n2/e0201217.gif">  	    
<p align="justify"><a name="ec3"/><img src="/img/revistas/eac/v38n2/e0301217.gif">  	    
]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">Donde r, g y b representan n&uacute;meros enteros de 8 bits sin signo y corresponden a los valores del color rojo, verde y azul logrando cuando se combinan, 16777216 colores que pueden tomar los p&iacute;xeles de la imagen.</font></p>  	    <p align="justify"><font face="verdana" size="2"><b>2.4.&#45; R</b><b>EQUISITOS TEMPORALES DEL SISTEMA</b></font></p>  	    <p align="justify"><font face="verdana" size="2">En las pruebas se &nbsp;realiz&oacute; &nbsp;la &nbsp;adquisici&oacute;n &nbsp;de &nbsp;im&aacute;genes de 480 &nbsp;p&iacute;xeles &nbsp;de &nbsp;ancho por 320 p&iacute;xeles &nbsp;de &nbsp;alto. Para adquirir 25 cuadros por segundo, el sistema debe cumplir con los requerimientos temporales calculados utilizando las <a href="#ec4">ecuaciones (4)</a>, <a href="#ec5">(5)</a> y <a href="#ec6">(6)</a>. Teniendo en cuenta que el formato adquirido es YUV2, donde por cada dos p&iacute;xeles se env&iacute;an cuatro bytes de informaci&oacute;n.</font></p>  	    <p align="justify"><a name="ec4"/><img src="/img/revistas/eac/v38n2/e0401217.gif">  	    
<p align="justify"><a name="ec5"/><img src="/img/revistas/eac/v38n2/e0501217.gif">  	    
<p align="justify"><a name="ec6"/><img src="/img/revistas/eac/v38n2/e0601217.gif"> 	 	    
<p align="justify"><font face="verdana" size="2">El ancho de banda calculado mediante la <a href="#ec7">ecuaci&oacute;n (7)</a> es de menos de 12MBps, dentro del rango <i>full speed</i> de la especificaci&oacute;n USB 2.0 que soporta el m&oacute;dulo IP XPS USB_Host &#91;1&#93;.</font></p>  	    <p align="justify"><a name="ec7"/><img src="/img/revistas/eac/v38n2/e0701217.gif">  	    
<p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="3"><b>3.&#45; RESULTADOS Y DISCUSION</b></font></p> 	    ]]></body>
<body><![CDATA[<p align="justify">&nbsp;</p> 	    <p align="justify"><font face="verdana" size="2">En la implementaci&oacute;n del sistema de adquisici&oacute;n sobre microblaze con el sistema operativo petalinux, los <i>flip&#45;flops</i>, LUTS y bloques de RAM son referidos al costo en &aacute;rea del procesador. El consumo de recursos que se report&oacute; es el que se obtiene por la utilizaci&oacute;n de microblaze con la adici&oacute;n del m&oacute;dulo IP XPS USB_host. El dise&ntilde;o que se concibi&oacute; explota la flexibilidad de la implementaci&oacute;n en software y es posible variar las prestaciones del sistema de adquisici&oacute;n como son los tama&ntilde;os de los cuadros, el formato, la velocidad; sin necesidad de incurrir en un gasto extra de recursos de hardware; lo cual representa una opci&oacute;n eficiente.</font></p>  	    <p align="justify"><font face="verdana" size="2">La aplicaci&oacute;n emite una serie de mensajes que describen su funcionamiento y brindan las caracter&iacute;sticas de la c&aacute;mara web conectada, as&iacute; como de la configuraci&oacute;n utilizada por el sistema para realizar la adquisici&oacute;n. Se puede apreciar como la c&aacute;mara conectada es manejada por el m&oacute;dulo UVCVIDEO, perteneciente al controlador UVC. La misma soporta los modos de captura y video, con los formatos de im&aacute;genes MJPEG y YUV2. El formato de captura escogido es el YUV2, con tama&ntilde;o de im&aacute;genes de 480 por 320 p&iacute;xeles realiz&aacute;ndose la adquisici&oacute;n de un 1 cuadro por segundo. A continuaci&oacute;n se brinda la <a href="#tab1">Tabla 1</a> con un resumen de los mensajes m&aacute;s importantes.</font></p>  	    <p align="center"><a name="tab1"/><img src="/img/revistas/eac/v38n2/t0101217.gif">  	    
<p align="justify"><font face="verdana" size="2">Con el objetivo de validar el tiempo de adquisici&oacute;n real de un cuadro se ejecut&oacute; el algoritmo 100 veces, adquiriendo en cada ejecuci&oacute;n 4 im&aacute;genes consecutivas. La medici&oacute;n se realiz&oacute; utilizando funciones de Linux que aportan precisi&oacute;n de microsegundos &#91;5&#93;. Te&oacute;ricamente para lograr un sistema que logre funcionar en tiempo real, el tiempo de adquisici&oacute;n de un cuadro debe ser menor que el calculado en la <a href="#ec4">ecuaci&oacute;n (4)</a>. Los resultados se muestran en la <a href="#fig5">Figura 5</a> y demuestran que los tiempos de adquisici&oacute;n se encuentran en el orden de los microsegundos. Sin embargo, evidencia los problemas de la utilizaci&oacute;n de un sistema operativo que no es de tiempo real como petalinux. Los tiempos de adquisici&oacute;n son diferentes en cada caso y var&iacute;an en un rango entre 18 &micro;s y 62 &micro;s.</font></p>  	    <p align="center"><a name="fig5"/><img src="/img/revistas/eac/v38n2/f0501217.jpg">  	    
<p align="justify"><font face="verdana" size="2">Dentro de la aplicaci&oacute;n uno de los buffer mapeados en la memoria del sistema operativo fue almacenado en ficheros dos veces, conteniendo dos capturas de diferentes escenas. Ambos ficheros contienen un cuadro capturado por la webcam en formato YUV2.</font></p>  	    <p align="justify"><font face="verdana" size="2">Utilizando Matlab &#91;24&#93; se separaron las muestras de luminancia, croma azul y croma roja. En la <a href="/img/revistas/eac/v38n2/f0601217.jpg">Figura 6</a> y <a href="/img/revistas/eac/v38n2/f0701217.jpg">7</a> se muestran tres im&aacute;genes en cada caso, correspondientes a la informaci&oacute;n de las diferentes componentes para ambas im&aacute;genes. La mayor parte de la informaci&oacute;n visual estuvo concentrada en las muestras de luminancia. Esto obedece a caracter&iacute;sticas del sistema visual humano y su mayor sensibilidad a los cambios de brillo &#91;4&#93;.</font></p>  	    
<p align="justify"><font face="verdana" size="2">La <a href="#fig8">Figura 8a</a> y <a href="#fig9">9a</a> muestran las im&aacute;genes de la prueba anterior adquiridas mediante el sistema de adquisici&oacute;n despu&eacute;s de ser convertidas al formato RGB. Mientras que la <a href="#fig8">Figura 8b</a> y <a href="#fig9">9b</a> muestra las im&aacute;genes de las mismas escenas capturadas en formato RGB, utilizando una utilidad de Matlab.</font></p>  	    <p align="center"><a name="fig8"/><img src="/img/revistas/eac/v38n2/f0801217.jpg"> 	    
]]></body>
<body><![CDATA[<p align="center"><a name="fig9"/><img src="/img/revistas/eac/v38n2/f0901217.jpg">  	    
<p align="justify"><font face="verdana" size="2">Las im&aacute;genes fueron correlacionadas utilizando la funci&oacute;n de MATLAB, r =&nbsp;corr2(A, B) &#91;24&#93;, dando como resultado r1 = 0.9959 para la escena 1 y r2 = 1.0000 para la escena 2, demostrando que el m&eacute;todo de adquisici&oacute;n que se implement&oacute; en el algoritmo es correcto. La <a href="#fig10">Figura 10</a> muestra los histogramas de la Escena 1 utilizando los dos m&eacute;todos de captura, 10a pertenece el histograma de la imagen adquirida por el sistema dise&ntilde;ado mientras que 10b pertenece a la imagen adquirida utilizando MATLAB. Este &uacute;ltimo m&eacute;todo es v&aacute;lido para lograr una mejor comparaci&oacute;n visual de ambas im&aacute;genes.</font></p>  	    <p align="center"><a name="fig10"/><img src="/img/revistas/eac/v38n2/f1001217.jpg" width="498" height="264"> 	    
<p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="3"><b>4.&#45; CONCLUSIONES</b></font></p> 	    <p align="justify">&nbsp;</p> 	    <p align="justify"><font face="verdana" size="2">En este art&iacute;culo se present&oacute; el dise&ntilde;o de un sistema de adquisici&oacute;n de im&aacute;genes provenientes de c&aacute;maras web a trav&eacute;s de un algoritmo escrito en lenguaje C que se ejecuta sobre el sistema operativo petalinux. Este sistema operativo est&aacute; cargado sobre un dispositivo de hardware reconfigurable Virtex&#45;5, del fabricante Xilinx.</font></p>  	    <p align="justify"><font face="verdana" size="2">El dise&ntilde;o explota la flexibilidad de la implementaci&oacute;n en software. Permitiendo a trav&eacute;s de la interfaz de programaci&oacute;n de aplicaciones V4L2, variar prestaciones del sistema de adquisici&oacute;n como son los tama&ntilde;os de los cuadros, el formato, la velocidad de adquisici&oacute;n; sin necesidad de incurrir en un gasto extra de recursos de hardware. Se lograron tiempos de adquisici&oacute;n en orden de los microsegundos, entre 18 &micro;s y 62 &micro;s, satisfaci&eacute;ndose los requerimientos temporales calculados mediante la <a href="#ec4">ecuaci&oacute;n (4)</a>.</font></p>  	    <p align="justify"><font face="verdana" size="2">Los resultados brindan la posibilidad de utilizar dicha implementaci&oacute;n en otras aplicaciones y sistemas embebidos relacionados con el procesamiento digital de im&aacute;genes. A partir de los resultados obtenidos, el trabajo futuro estar&aacute; dirigido a la aceleraci&oacute;n del algoritmo del sistema de adquisici&oacute;n y al desarrollo de un m&oacute;dulo que permita visualizar tanto la se&ntilde;al adquirida como el resultado del procesamiento que se realice como parte del algoritmo.</font></p>  	    <p align="justify">&nbsp;</p>  	    ]]></body>
<body><![CDATA[<p align="justify"><strong><font face="verdana" size="3">REFERENCIAS</font></strong></p> 	    <p align="justify">&nbsp;</p> 	     <!-- ref --><p align="justify"><font face="verdana" size="2">1.&nbsp;&nbsp;&nbsp;&nbsp; Compaq    Computer Corporation; Hewlett&#45;Packard Company; Intel Corporation; Lucent    Technologies Inc; Microsoft Corporation; NEC Corporation; Koninklijke Philips    Electronics N.V. Universal Serial Bus Specification Revision 2.0. April 2000.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">2.&nbsp;&nbsp;&nbsp;&nbsp; Compaq    Computer Corporation; Hewlett&#45;Packard Company; Intel Corporation; Lucent    Technologies Inc; Microsoft Corporation; NEC Corporation; Koninklijke Philips    Electronics N.V. Universal Serial Bus Device Class Definition for Video Devices    Revision 1.1. June 2005.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">3.&nbsp;&nbsp;&nbsp;&nbsp; Linux UVC driver and tool. Disponible en Internet: &lt;En <a href="http://www.ideasonboard.org/uvc/" target="_blank">http://www.ideasonboard.org/uvc/</a>&gt;    .</font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">4.&nbsp;&nbsp;&nbsp;&nbsp; Schimek,    M; Dirks, B; Verkuil, H. Video for Linux Two API Specification: Draft 0.12;    2006.    </font></p>  	     ]]></body>
<body><![CDATA[<!-- ref --><p align="justify"><font face="verdana" size="2">5.&nbsp;&nbsp;&nbsp;&nbsp; Kerrisk,    M. The Linux Programming Interface. Starch Press Inc. ISBN: 1&#45;59327&#45;220&#45;0;    2010. p. 21&#45;24.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">6.&nbsp;&nbsp;&nbsp;&nbsp; Yundong    C; Jie, J; Guangjun, Z. High speed CMOS image acquisition and transmission system    based on USB. In: Proceedings of SPIE, the International Society for Optical    Engineering. Society of Photo&#45;Optical Instrumentation Engineers; 2008.    &nbsp;</font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">7.&nbsp; Eshack, A; Kumar, J.    Design of a Data Acquisition System for USB Devices over Gigabit Ethernet. In:    International Conference on Emerging Technology Trends on Advanced Engineering    Research. Proceedings published by International Journal of Computer Applications;    2012.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">8.&nbsp;&nbsp; Guo, JJ; Xu, XJ;    Kang, JT. A Design of Image Acquisition System Based on FPGA and USB2.0. Applied    Mechanics and Materials. Vol. 552; 2014. pp. 155&#45;160.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">9.&nbsp;&nbsp; Cui, W; Chen,    L; Li, XG: A USB Interface High&#45;Speed Data Acquisition System. Applied Mechanics    and Materials. Vols. 130&#45;134; 2012 . pp. 2170&#45;2173.    </font></p>  	     ]]></body>
<body><![CDATA[<!-- ref --><p align="justify"><font face="verdana" size="2">10. Li, Z; Jiang, W. The Design    of USB Video Device Based on UVC. Disponible en Internet: &lt;En <a href="http://www.paper.edu.cn" target="_blank">http://www.paper.edu.cn</a>&gt;;    2010.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">11.&nbsp; Xilinx Corporation.    XPS IIC Bus Interface Datasheet. Xilinx Corporation; 2010.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">12.&nbsp;&nbsp;&nbsp; Xilinx    Corporation. XPS External Peripheral Controller Datasheet. Xilinx Corporation;    2010.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">13.&nbsp;&nbsp;&nbsp; Matlab    Corporation. Image Acquisition Toolbox Release Notes. Matlab Corporation; 2013&#45;2015.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">14.&nbsp;&nbsp;&nbsp; Microchip    Corporation. Hi&#45;Speed USB Host or Device PHY with ULPI Low Pin Interface    Datasheet. Microchip Corporation; 2005.    </font></p>  	     ]]></body>
<body><![CDATA[<!-- ref --><p align="justify"><font face="verdana" size="2">15.&nbsp;&nbsp; Xilinx Corporation.    ML40x Getting Started Tutorial For ML401/ML402/ML403/ML405. UG083 (v5.0). Xilinx    Corporation; 2006.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">16.&nbsp;&nbsp; High&#45;Speed USB Host Device PHY with ULPI Low Pin Interface. USB3300. Revision 1.02; 2007</font><!-- ref --><p align="justify"><font face="verdana" size="2">17.&nbsp;&nbsp;&nbsp; UTMI++ Low Pin Interface (ULPI) Specification. Revision 1.1. Disponible en Internet: &lt;En <a href="http://www.intel.com" target="_blank">http://www.intel.com</a>&gt;; 2001.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">18.&nbsp;&nbsp; XPS USB Host Controller (v1.01a). Product Specification. Disponible en Internet: &lt;En <a href="http://wwwxilinx.com" target="_blank">http://wwwxilinx.com</a>&gt;; 2009.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">19.&nbsp;&nbsp; Xilinx Corporation.    PetaLinux SDK User Guide. QEMU System Simulation Guide. UG982 (v2013.10), Xilinx    Corporation; 2013.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">20.&nbsp;&nbsp; Petalinux Tools User Guide. Disponible en Internet: &lt;<i>En <a href="http://wwwxilinx.com" target="_blank">http://wwwxilinx.com</a></i>&gt;; 2014.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">21.&nbsp;&nbsp;&nbsp; USB Host System Setup. Disponible en Internet: &lt;En <a href="http://www.wiki.xilinx.com/USB+Host+System+Setup" target="_blank">http://www.wiki.xilinx.com/USB+Host+System+Setup</a>&gt;; October 2014.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">22.&nbsp; USB Host Controller Driver. Disponible en Internet: &lt;En <a href="http://www.wiki.xilinx.com/USB+Host+Controller+Driver" target="_blank">http://www.wiki.xilinx.com/USB+Host+Controller+Driver</a>&gt;; October 2014.    </font></p>  	    <!-- ref --><p align="justify"><font face="verdana" size="2">23.&nbsp; Recommendation ITU&#45;R BT.601&#45;7. Studio encoding parameters of digital television for standard 4:3 and wide screen 16:9 aspect ratios. Disponible en Internet: &lt;En <a href="https://www.itu.int" target="_blank">https://www.itu.int</a> &gt;; 2011.    </font></p>  	     <!-- ref --><p align="justify"><font face="verdana" size="2">24.&nbsp;&nbsp; Matlab Corporation.    Image Acquisition Toolbox User's Guide. Matlab Corporation; 2015.    </font></p>  	    <p align="justify">&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="justify">&nbsp;</p>     <p align="justify"><font face="verdana" size="2">Recibido: 14 de septiembre del 2016&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    <br> Aprobado: 19 de enero del 2017</font></p>     <p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p>  	    <p align="justify"><font face="verdana" size="2"><i>David Delgado Le&oacute;n</i>, graduado en Ingenier&iacute;a en Telecomunicaciones y Electr&oacute;nica, especialista de la Division de Servicios Internacionales, ETECSA, La Habana, Cuba. Correo electr&oacute;nico: <a href="mailto:david.delgado@etecsa.cu">david.delgado@etecsa.cu</a>.</font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="">
<collab>Compaq Computer Corporation</collab>
<collab>Hewlett-Packard Company</collab>
<collab>Intel Corporation</collab>
<collab>Lucent Technologies Inc</collab>
<collab>Microsoft Corporation</collab>
<collab>NEC Corporation</collab>
<collab>Koninklijke Philips Electronics N.V</collab>
<source><![CDATA[Universal Serial Bus Specification Revision 2.0]]></source>
<year>Apri</year>
<month>l </month>
<day>20</day>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="">
<collab>Compaq Computer Corporation</collab>
<collab>Hewlett-Packard Company</collab>
<collab>Intel Corporation</collab>
<collab>Lucent Technologies Inc</collab>
<collab>Microsoft Corporation</collab>
<collab>NEC Corporation</collab>
<collab>Koninklijke Philips Electronics N.V</collab>
<source><![CDATA[Universal Serial Bus Device Class Definition for Video Devices Revision 1.1]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<source><![CDATA[Linux UVC driver and tool]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schimek]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Dirks]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Verkuil]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
</person-group>
<source><![CDATA[Video for Linux Two API Specification: Draft 0.12]]></source>
<year>2006</year>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kerrisk]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[The Linux Programming Interface]]></source>
<year>2010</year>
<page-range>21-24</page-range><publisher-name><![CDATA[Starch Press Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Yundong]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Jie]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Guangjun]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[High speed CMOS image acquisition and transmission system based on USB]]></article-title>
<source><![CDATA[Proceedings of SPIE, the International Society for Optical Engineering]]></source>
<year>2008</year>
<publisher-name><![CDATA[Society of Photo-Optical Instrumentation Engineers]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Eshack]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Kumar]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Design of a Data Acquisition System for USB Devices over Gigabit Ethernet]]></article-title>
<source><![CDATA[International Conference on Emerging Technology Trends on Advanced Engineering Research]]></source>
<year>2012</year>
<publisher-name><![CDATA[International Journal of Computer Applications]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Guo]]></surname>
<given-names><![CDATA[JJ]]></given-names>
</name>
<name>
<surname><![CDATA[Xu]]></surname>
<given-names><![CDATA[XJ]]></given-names>
</name>
<name>
<surname><![CDATA[Kang]]></surname>
<given-names><![CDATA[JT]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Design of Image Acquisition System Based on FPGA and USB2.0]]></article-title>
<source><![CDATA[Applied Mechanics and Materials]]></source>
<year>2014</year>
<volume>552</volume>
<page-range>155-160</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cui]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[XG]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A USB Interface High-Speed Data Acquisition System]]></article-title>
<source><![CDATA[Applied Mechanics and Materials]]></source>
<year>2012</year>
<volume>130-134</volume>
<page-range>2170-2173</page-range></nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[Z]]></given-names>
</name>
<name>
<surname><![CDATA[Jiang]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
</person-group>
<source><![CDATA[The Design of USB Video Device Based on UVC]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="book">
<collab>Xilinx Corporation</collab>
<source><![CDATA[XPS IIC Bus Interface Datasheet]]></source>
<year>2010</year>
<publisher-name><![CDATA[Xilinx Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="book">
<collab>Xilinx Corporation</collab>
<source><![CDATA[XPS External Peripheral Controller Datasheet]]></source>
<year>2010</year>
<publisher-name><![CDATA[Xilinx Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="book">
<collab>Matlab Corporation</collab>
<source><![CDATA[Image Acquisition Toolbox Release Notes]]></source>
<year>2013</year>
<month>-2</month>
<day>01</day>
<publisher-name><![CDATA[Matlab Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<collab>Microchip Corporation</collab>
<source><![CDATA[Hi-Speed USB Host or Device PHY with ULPI Low Pin Interface Datasheet]]></source>
<year>2005</year>
<publisher-name><![CDATA[Microchip Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="book">
<collab>Xilinx Corporation</collab>
<source><![CDATA[ML40x Getting Started Tutorial For ML401/ML402/ML403/ML405: UG083 (v5.0)]]></source>
<year>2006</year>
<publisher-name><![CDATA[Xilinx Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="">
<source><![CDATA[High-Speed USB Host Device PHY with ULPI Low Pin Interface: USB3300. Revision 1.02]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="">
<source><![CDATA[UTMI++ Low Pin Interface (ULPI) Specification: Revision 1.1]]></source>
<year>2001</year>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="">
<source><![CDATA[XPS USB Host Controller (v1.01a)]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="book">
<collab>Xilinx Corporation</collab>
<source><![CDATA[PetaLinux SDK User Guide: QEMU System Simulation Guide. UG982 (v2013.10)]]></source>
<year>2013</year>
<publisher-name><![CDATA[Xilinx Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<source><![CDATA[Petalinux Tools User Guide]]></source>
<year>2014</year>
</nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="">
<source><![CDATA[USB Host System Setup]]></source>
<year>Octo</year>
<month>be</month>
<day>r </day>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="">
<source><![CDATA[USB Host Controller Driver]]></source>
<year>Octo</year>
<month>be</month>
<day>r </day>
</nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="">
<source><![CDATA[Recommendation ITU-R BT.601-7: Studio encoding parameters of digital television for standard 4:3 and wide screen 16:9 aspect ratios]]></source>
<year>2011</year>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="book">
<collab>Matlab Corporation</collab>
<source><![CDATA[Image Acquisition Toolbox User's Guide]]></source>
<year>2015</year>
<publisher-name><![CDATA[Matlab Corporation]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
