guerrero herrera h ctor 97216798 - 148.206.53.84148.206.53.84/tesiuami/uami14522.pdfcomo cualquier...

44
Página 1 UNIDAD IZTAPALAPA DIVISÍÓN DE CIENCIAS BÁSICAS E INGENIERÍA DESARROLO DE UN DMA DESARROLO DE UN DMA DESARROLO DE UN DMA DESARROLO DE UN DMA Tesis que presenta el alumno: Héctor Guerrero Herrera Área de concentración: Comunicaciones Para la obtención del grado: Ingeniero en Electrónica Asesor: M. en C. Luis Martín Rojas Cárdenas Lugar de realización: Edificio T-343

Upload: haquynh

Post on 15-Oct-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Página 1

UNIDAD IZTAPALAPA

DIVISÍÓN DE CIENCIAS BÁSICAS E INGENIERÍA

DESARROLO DE UN DMADESARROLO DE UN DMADESARROLO DE UN DMADESARROLO DE UN DMA

Tesis que presenta el alumno: Héctor Guerrero Herrera

Área de concentración: Comunicaciones

Para la obtención del grado: Ingeniero en Electrónica Asesor: M. en C. Luis Martín Rojas Cárdenas Lugar de realización:

Edificio T-343

Página 2

INDICE 1. Introducción ......................................................................................................(1)

2. Los sistemas de monitoreo…............................................................................(3) 2.1. Monitoreo analógico………….…………………………………………………(3)

2.2. Monitoreo digital………………………….……………………………………..(3)

2.2.1. Cámaras de red……………………………………….…………………(4)

2.2.2. Compresión de imagen…………………………………………………(5)

2.3. Aplicaciones del monitoreo…………………….………………………………(5)

2.4. Video digital v/s Video analógico………………..…………………………….(6)

2.5. Servidores de video………………………...…………………………………..(7)

2.6. Cámaras de red comerciales………………………………………………….(7)

3. Nuestra propuesta 3.1. Descripción de la propuesta…………………...………………………………(9)

3.2. Descripción del proyecto……………………..………………………………(10)

3.2.1. El CCD VV5411………………...………………………………………(12)

3.2.2. El FPGA…………………………………………………………………(12) 3.2.3. Lenguaje VHDL…………………………...………………………….(15)

4. Desarrollo del DMA Especializado

4.1. Funcionamiento del Sensor VV5411

4.1.1. Componentes del Sensor………….................................................(16)

Página 3

4.1.2. Opciones de conexión…………………………..……………............(17) 4.1.3. Formatos de interfaz de imagen……..............................................(18) 4.1.4. Control de datos………………………………..................................(19) 4.1.5. Formatos de video…………………………..…………………………(20) 4.1.6. Interfaz I2C………………………………………………………………(20)

4.2. Descripción del proyecto..........................................................................(22)

4.2.1. Desarrollo del sistema decodificador………….…………………….(24)

4.2.2. Desarrollo de la memoria FIFO………………………………………(29)

4.2.2.1. Bloque selector…………………………………………………(30)

4.2.2.2. Bloque memoria………………………..………………………(34)

5. Resultados......................................................................................................(39)

6. Conclusiones...................................................................................................(41) 7. Bibliografía......................................................................................................(41)

1. INTRODUCCION

Página 4

La tecnología analógica clásica es aquella cuyas señales, medios de transmisión, de

almacenamiento y de presentación son enteramente analógicas. En cambio, la tecnología digital IP esta fundada en el uso de señales digitales, medios de comunicación, de transmisión y de presentación completamente digitales. Es una tecnología de vangardia que ofrece numerosas ventajas sobre las tecnologías analógicas y que por lo mismo será utilizada cada vez más.

Es por este motivo que los sistemas de monitoreo, cada vez sean implementados con

sistemas digitales. El monitoreo se lleva acabo con varias cámaras de video las cuales son digitales y equipos grabadores de video

El monitoreo digital esta basado en el uso de señales digitales, medios de

comunicación, transmisión y presentación completamente digitales. Es una tecnología que ofrece numerosas ventajas sobre el analógico. En el se emplean cámaras digitales (También conocidas como cámaras de Red o IP), abriendo la posibilidad de tener un monitoreo remoto a diferencia del monitoreo analógico que solo es local; esto se debe a que se pueden conectar directamente a la red. Además la grabación del vídeo es digital, lo que permite hacer una búsqueda más rápida y exacta del vídeo, evitando también la degradación de la imagen con el tiempo, y se pueden hacer las copias que se deseen del vídeo.

Las cámaras de Red son la base fundamental de los sistemas de monitoreo, fueron

introducidas en el mercado a finales de los 80s. Esta es conectada directamente a la red como cualquier otro dispositivo de red, ya que cuenta con su propia dirección IP y funciones para manejar la comunicación de red.

Hoy en día los sistemas de monitoreo tienen una gran aplicación en la vida cotidiana, es

por este motivo, que se ha venido haciendo constantemente una investigación sobre este tema. Desafortunadamente hasta el momento sólo las empresas privadas son las que han realizado este tipo de investigación. Y son a ellas a quienes tenemos que acudir, para poder implementar un sistema de monitoreo, lo que implica restringir las aplicaciones que deseemos hacer.

Debido a estas circunstancias, se ha presentado el interés de incursionar en la

investigación y desarrollo de cámaras de red, ya que son la base fundamental de los sistemas de monitoreo. De esta forma, al adentrarnos en la investigación de cámaras de red, se pretende crear una infraestructura libre, la cual se piensa podrá ser utilizada por toda persona que éste interesada en el tema. Así como crear aplicaciones acorde a nuestras necesidades, además de reducir el coste de las cámaras, ya que en este momento su precio es muy elevado.

La cámara de red, que proponemos, podrá ser conectada a una red de datos, por medio

de una tarjeta de red, incluye capacidad de almacenaje de la imagen. Así como la herramienta para la compresión de la imagen. Debe contar con su propia página web, que es accedida de forma remota. Toda la investigación y desarrollo de este proyecto son con el fin de crear una nueva tecnología, que sirva para los proyectos a venir.

Página 5

Los componentes básicos con los que debe contar una cámara digital son: Un CCD dispositivo de carga acoplada, para obtener la imagen, un DMA, sistema de acceso directo a memoria, su función es la de aligerar la carga de trabajo del procesador, una memoria en la cual de guarde la imagen obtenida, una tarjeta de red, para poder conectar la cámara a un red de datos y un sistema mínimo, el cual se encuentra el microprocesador siendo este el que lleva todo el control del sistema.

Debido a que el CCD produce datos de imagen de reducido tamaño, pero a un ritmo

constante, nos vemos en la necesidad de contar con un sistema DMA que se encargue de descargar la imagen, ya que si no se contara con tal sistema, la carga de trabajo para el Microprocesador sería muy pesada, y la mayor parte del tiempo se la pasaría el Microprocesador descargando la imagen. Pero si se cuenta con un sistema DMA el Microprocesador queda libre para realizar otras operaciones.

Página 6

2. LOS SISTEMAS DE MONITOREO

Un sistema de monitoreo puede ser descrito, como un sistema en el cual se monitorean diferentes partes de un área especifica; pudiendo ser un laboratorio, un edificio, centro comercial, estacionamiento, etc. El monitoreo se lleva acabo con varias cámaras de vídeo, televisión donde se observe el vídeo, y equipos grabadores de vídeo. Hoy en día existen básicamente dos formas de construir tal sistema. Uno puede ser implementado con cámaras analógicas y el otro con cámaras digitales. 2.1 MONITOREO ANÁLOGICO

Conocido como CCTV (televisión en circuito cerrado), el monitoreo analógico fue el primer sistema utilizado. En el se conectan cámaras analógicas a bancos de monitores, que generalmente se encuentran en un centro de seguridad con personal encargado del monitoreo. Cada cámara debe estar conectada por medio de un cable coaxial a un monitor, además de tener un grabador de video. Desafortunadamente este sistema tiene varias desventajas, solo por mencionar algunas.

• Se tienen que cambiar constantemente las cintas de grabación. • Deterioración de la imagen con el tiempo. • Empelo de repetidores para cubrir áreas extensas. • Degradación de la imagen a grandes distancias (mala calidad). • Es muy difícil integrar a otros sistemas. • No se tiene accesibilidad remota.

2.2 MONITOREO DIGITAL

El monitoreo digital esta basado en el uso de señales digitales, medios de comunicación, transmisión y presentación completamente digitales. Es una tecnología que ofrece numerosas ventajas sobre el analógico. En el se emplean cámaras digitales (También conocidas como cámaras de Red o IP), abriendo la posibilidad de tener un monitoreo remoto a diferencia del monitoreo analógico que solo es local; esto se debe a que se pueden conectar directamente a la red. Además la grabación del vídeo es digital, lo que permite hacer una búsqueda más rápida y exacta del vídeo, evitando también la degradación de la imagen con el tiempo, y se pueden hacer las copias que se deseen del vídeo. En la figura1 se muestra un esquema del monitoreo digital.

Una cámara red sirve de igual forma que los CCTV, pero este tiene un mayor ahorro en

el costo. Como la conexión de las cámaras de red se hace directamente en la red de datos existente vía un puerto Ethernet, no se necesita alambrar las instalaciones con cable coaxial como se requiere para cámaras análogas, ni poner repetidores complementarios que permitan cubrir distancias mayores a 20 metros.

Página 7

Gracias a que se puede conectar a la red, los sistemas de monitoreo pueden ser

supervisados por cualquier ordenador personal en el mundo, así como las imágenes pueden ser vistas en cualquier parte del mundo. A diferencia de los analógicos que requieren monitores dedicados y personal de seguridad. 2.2.1 CAMARA DE RED

Las cámaras de Red son la base fundamental de los sistemas de monitoreo, fueron

introducidas en el mercado a finales de los 80s. Esta es conectada directamente a la red como cualquier otro dispositivo de red, ya que cuenta con su propia dirección IP y funciones para manejar la comunicación de red.

Las cámaras de red toman las fotos enfocando la luz de la lente a un dispositivo de

carga por acoplamiento (CCD), que convierte la luz en señales eléctricas. La información se proyecta sobre una rejilla de píxeles, en la que cada píxel tiene asignado un color y un valor de luminosidad. El conjunto de todos los píxeles forma la imagen completa.

El ordenador contiene las funciones calculadoras de la cámara de red y son diseñadas

específicamente para manejar la comunicación con la red, así como la compresión de la imagen.

Página 8

2.2.2 COMPRESIÓN DE IMAGEN

La imagen digital y el vídeo digital siempre son comprimidos para ahorrar espacio sobre discos duros y hacer la transmisión más rápida. Típicamente la relación de compresión es 10 a 100. Existen muchas normas de compresión para escoger, dependiendo de si es imagen digital o vídeo digital.

Estándares de compresión para imagen digital: JPEG y GIF son los dos estándares de compresión más usados en Internet. Ambos

usan métodos distintos, y por ello el formato ideal depende del tipo de imagen que vaya a publicar en Internet.

Para publicar fotos o imágenes con muchos colores, se debe utilizar JPEG. Este

formato es el más útil en esos casos debido a que comprime las imágenes eliminando información que no es visible para el ojo, pero soporta un gran número de colores (16 millones de colores).

GIF, en cambio, comprime las imágenes reduciendo el número de colores a máximo

256. Por ello, es útil para gráficos sencillos, logos, y otros elementos que tengan pocos colores. Si se usa GIF en una imagen rica en color, esta quedará de mala calidad.

Estándares de compresión para vídeo digital:

MPEG1 es un formato para video y audio. Es un formato comprimido lossy como el JPEG, sólo que está diseñado para video. Un archivo MPEG1 puede tener video y audio juntos, vídeo solamente o audio solamente. Normalmente cuando MPEG1 es usado, esto da una resolución de 352x240, como la resolución es limitada, cada vez más los productos nuevos usan MPEG2 hoy en día.

MPEG2 es otro formato que deriva de MPEG1 y tiene una resolución de 720x480. Desafortunadamente para descifrar MPEG2 se requiere mucha capacidad de cálculo, lo cual implica que no todos los ordenadores pueden hacer este trabajo.

2.3 APLICACIONES DEL MONITOREO

La tecnología de la cámara de red puede emplearse en miles de aplicaciones, y no

necesariamente en aspectos de seguridad. Los usos pueden variar en las oficinas, los establecimientos comerciales, o ampliarse a la monitorización de procesos de producción en la industria. A continuación se describen algunas de las aplicaciones más productivas de las cámaras de red:

Página 9

VIDEOCONFERENCIA

Es una aplicación de comunicación entre personas o grupos de personas distantes, que puede ir desde una simple conversación hasta una conferencia de trabajo.

SEGURIDAD Y VIGILANCIA

La seguridad y vigilancia es otra aplicación de este tipo de sistema, que talvez sea una de las más empleadas, considerado que existen infinidad de lugares que requieren ser vigilados. Básicamente lo que se puede vigilar es el acceso de personas a lugares restringido, tener un archivo de personas que se encontraron en el lugar, observar procesos industriales, etc. Algunos lugares donde se pudiera utilizar este sistema son:

� Bancos. � En la industria para observar procesos industriales. � Centros comerciales. � Estacionamientos. � Laboratorios.

2.4 VÍDEO DIGITAL V/S VÍDEO ANALÓGICO

El vídeo digital es simplemente más rápido, más escalable y más fácil de manejar que el analógico. Se puede integrar con los sistemas existentes de CCTV, tiene un almacenaje más rápido, y mejor calidad de imagen. A continuación se presenta una tabla comparativa de las características equivalentes de ambos sistemas.

Tabla 1: Comparación entre sistemas digitales y análogos

CARACTERÍSTICAS SISTEMA DIGITAL SISTEMA ANALÓGICO

Puntos claves

� Fácil de instalar � Económico para mantener � Cobertura a nivel planetario

� Requiere de significativa intervención manual.

� Caro de mantener con el tiempo.

� Cobertura: Sin repetidor varias decenas, con repetidor varias centenas de metros.

Grabación � Flexibilidad total para grabar a

tasa variables. � Generalmente graba a tasas

fijas en todas las cámaras.

Búsqueda

� Recuperación del video es casi instantáneo.

� Habilidad de buscar en múltiples sitios de almacenamiento a la vez consultando por fecha/hora o alarma.

� Recuperación de video es difícil y consume mucho tiempo.

Página

10

Operación

� Puede ser operada, configurada y mantenida centralmente, desde cualquier oficina remota.

� Los sistemas de red permiten a los usuarios autorizados acceder y compartir información entre sitios.

� Sistemas aislados deben ser operados, configurados y mantenidos manualmente desde cada sitio.

Almacenamiento � Almacenamiento automático e ininterrumpido.

� Grabaciones interrumpidas y el video se pierde cuando se cambian o se acaban las cintas.

� Las cintas requieren bastante espacio de almacenamiento.

Uso

� Imágenes de vídeo de alta calidad que no se degradan con el tiempo.

� La calidad del vídeo se reduce cada vez que se reproduce una cinta.

2.5 SERVIDORES DE VÍDEO

Como se ha visto anteriormente el monitoreo digital es más eficiente que el analógico,

es por este motivo que todos los que tiene pensado montar un sistema de monitoreo, optan por el monitoreo digital y los que ya lo tienen, y este es analógico, buscan la forma de pasar a digital de la manera más económica posible.

La forma más fácil y económica es utilizando un servidor de vídeo, que incluye una o

varias entradas de vídeo análogas, el digitalizador de imagen, el compresor de imagen y el servidor de Web. Los servidores de vídeo digitalizan fuentes análogas de vídeo y distribuyen imágenes digitales sobre una red, convirtiéndose de una cámara análoga en una cámara de red. Es ideal para la integración del análogo existente CCTV con el sistema digital. 2.6 CAMARAS DE RED COMERCIALES

Hoy en día existe una gran variedad de cámaras de red en el mercado, de diferentes

distribuidores, cada una con diferentes características, en la Tabla 2, se muestran algunas de las cámaras que se pueden encontrar en el mercado.

Página

11

Tabla 2. Comparación entre Cámaras de red disponibles en el mercado

AXIS SONY CARACTERISTICAS Axis 205 Axis 2420 SNC-VL10N SNC-RZ30N

Velocidad 30 FPS JPEG/M-JPEG

15 FPS JPEG/M-JPEG 30 FPS 30 FPS JPEG

Detección de movimiento No

Con sensor externo y análisis virtual de imagen

Con sensor externo

Con sensor externo

Control Pan/Tilt/Zoom No Requiere dispositivo externo

No No

Resolución de vídeo

160x120 320x240 640x480 pixeles

CIF 352x240 4CIF 704x480 pixeles

720 x 486, 720 x 243, 360 x 243, 180 x 121, 90 x 60 pixeles

736 x 480, 640 x 480, 320 x 240, 160 x 120 pixeles

Sensor de imagen CMOS ¼” CCD 1/3” CCD 1/3” CCD 1/3”

Salida de vídeo analógico No Si No Si

Ethernet 10/100 base T Si Si Sólo 10 base T Si

Soporte a módem No Si Si No

Serial RS-232 No Si Si Si

Sistemas operativos que soporta

98/NT/2000/XP Mac OS, Linux, Unix

98/Me/NT/2000/XP Mac OS, Linux

98/Me/NT/2000, Macintosh, Unix, Linux, OS

98, 98SE, Me, NT 4.0, 2000, XP

Protocolos de conexión soportados

TCP/IP, HTTP, FTP

TCP/IP, HTTP, FTP, SMTP, ARP, BOOTP, PPP, CHAP, PAP, DHCP and more

TCP/IP, HTTP, ARP, RARP, ICMP, DHCP, PPP, PPPoE, FTP, SMTP, SNMP

DHCP, TCP/IP, HTTP, ARP, FTP, SMTP, ICMP, SNMP

Página

12

3. NUESTRA PROPUESTA Hoy en día los sistemas de monitoreo tienen una gran aplicación en la vida cotidiana, es

por este motivo, que se ha venido haciendo constantemente una investigación sobre este tema. Desafortunadamente hasta el momento sólo las empresas privadas son las que han realizado este tipo de investigación. Y son a ellas a quienes tenemos que acudir, para poder implementar un sistema de monitoreo, lo que implica restringir las aplicaciones que deseemos hacer.

Debido a estas circunstancias, se ha presentado el interés de incursionar en la

investigación y desarrollo de cámaras de red, ya que son la base fundamental de los sistemas de monitoreo. De esta forma, al adentrarnos en la investigación de cámaras de red, se pretende crear una infraestructura libre, la que se piensa podrá ser utilizada por toda persona que éste interesada en el tema. Así como crear aplicaciones acorde a nuestras necesidades, además de reducir el coste de las cámaras, ya que en este momento su precio es muy elevado.

3.1 DESCRIPCIÓN DE LA PROPUESTA

La cámara de red, que proponemos, podrá ser conectada a una red de datos, por medio de una tarjeta de red, incluye capacidad de almacenaje de la imagen. Así como la herramienta para la compresión de la imagen. Debe contar con su propia página web, que es accedida de forma remota. Toda la investigación y desarrollo de este proyecto son con el fin de crear una nueva tecnología, que sirva para los proyectos a venir.

Los dispositivos que debe llevar la cámara son explicados a continuación. CCD (Dispositivo de Carga Acoplada): Se encarga de la obtención de la imagen, se

pasa de un sistema analógico a uno digital, y también es el que influye en la resolución de la imagen.

DMA (Acceso Directo a Memoria): La finalidad de este elemento es la de aligerar la carga de trabajo del Microprocesador, de esta manera el Microprocesador no perderá tiempo accediendo al CCD. Su tarea es realizar la programación del CCD, así como tomar la imagen proveniente del CCD, y enviarla a una memoria FIFO para ser almacenada.

Memoria FIFO (Primero en entrar primero en salir): En ella se guardara la imagen

capturada por el CCD. Al tener un 70% de su capacidad lleno deberá enviar una señal al Microprocesador indicando que puede hacer uso de la imagen que se encuentra almacenada en ella. Básicamente tiene que estar pendiente de dos señales una que proviene del DMA la que indica una escritura y la otra que proviene del Microprocesador indicando lectura.

Tarjeta Ethernet: Por medio de esta tarjeta se podrá conectar a una red de datos,

permitiendo que sea accedida vía Internet la cámara de red.

Página

13

Sistema mínimo: En este sistema se encuentra el Microprocesador, que se encarga de la operación de la cámara. Una memoria para guardar un sistema operativo; así como aplicaciones para la compresión de imagen, y el envío de la misma por Internet, el controlador de la tarjeta Ethernet. Este sistema deberá contar con Slots por el cual se conecte la tarjeta Ethernet, el DMA y la Memoria FIFO. 3.2 DESCRIPCIÓN DEL PROYECTO

Debido a que el CCD produce datos de imagen de reducido tamaño, pero a un ritmo constante, nos vemos en la necesidad de contar con un sistema DMA que se encargue de descargar la imagen, ya que si no se contara con tal sistema, la carga de trabajo para el Microprocesador sería muy pesada, y la mayor parte del tiempo se la pasaría el Microprocesador descargando la imagen. Pero si se cuenta con un sistema DMA el Microprocesador queda libre para realizar otras operaciones.

Otra cosa con la que debemos contar, es una memoria, en ella se guardara la imagen

que sea descargada por el DMA. Esta memoria será de tipo FIFO. La finalidad de contar con esta memoria es para no tener que descargar la imagen en la memoria que utiliza el Microprocesador, ya que eso implica compartir el bus de datos, provocando un retraso en las operaciones tanto en el Microprocesador como en el DMA ya que ambos tendrían que utilizar el mismo bus de datos. Con esta memoria el DMA no tiene que acceder a este bus, y solo, lo hará, cuando la memoria se encuentre llena.

Como se ha mencionado el proyector consiste en la creación de un sistema que tenga

DMA y memoria FIFO. Todo este sistema se tiene pensado desarrollar en un FPGA (Field Programmable Gate Array).

En el siguiente diagrama se muestra una descripción del proyecto.

Página

14

Figura 2. Diagrama a bloques del proyecto

Las señales SDA y SCL que aparecen en el diagrama a bloques son de salida, van

conectadas a él VV5411, ambas conforman una interfaz I2C, siendo esta la encargada de programar los registros internos del VV5411. El bus de datos DI[0…4] es de entrada y proviene del VV5411, por medio de este bus se descarga la imagen, así como todas las palabras de control que envía él VV5411. Las señales RST, CLK son de entrada una es el reset y la otra el reloj del sistema. INT y RE son señales para el Microprocesador, INT (Se activa en bajo) es de salida y su función es indicar al Microprocesador cuando la memoria FIFO, se encuentra lista para ser leída, mientras que RE (Se activa en bajo) es de entrada y es la petición del Microprocesador para iniciar la lectura de la memoria. Por último el bus de datos DO[0…31] es de salida y se encuentra conectado al bus de datas del sistema mínimo por media de este el Microprocesador accede a la memoria FIFO.

Básicamente el proyecto consiste en capturar la imagen proveniente del CCD5411, y

guardarla en una memoria FIFO, y por ultimo permitir la lectura del Microprocesador a la memoria. Los bloques PROGRAMADOR Y DECODIFICADOR (Figura2), se encargan de la obtención de la imagen, mientras que el bloque FIFO se encarga de guardar la imagen, así como permitir al Microprocesador tomar la imagen cuando este la necesite.

Página

15

3.2.1 EL CCD VV5411 El CCD que será empleado para este proyecto es el VV5411 de STMicroelectronics,

una de las cosas que nos motivo a usarlo fue que es un dispositivo fácil de conseguir y su costo es bajo, esto considerando que existen otras compañías que también cuentan con estos dispositivos, pero su uso es para las cámaras de red que ellos desarrollan, por este motivo la forma de conseguir algún CDD, sería comprando las cámaras de red, cosa que no es una buena opción. Otra cosa muy importante es la resolución aceptable con la que cuenta, ya que es de 356X292 para una velocidad de 30 fps (Cuadros por segundo).

Figura 3. CCD VV5411 de STMicroelectronics

3.2.2 EL FPGA

Un FPGA (field programmable gate array) es un dispositivo semiconductor que contiene componentes lógicos programables e interconexiones programables entre ellos. Los componentes lógicos programables pueden ser programados para duplicar la funcionalidad de puertas lógicas básicas tales como AND, OR, XOR, NOT o funciones combinacionales más complejas tales como decodificadores o simples funciones matemáticas. En muchos FPGA, estos componentes lógicos programables (o bloques lógicos, según el lenguaje comúnmente usado) también incluyen elementos de memoria, los cuales pueden ser simples flip-flops o bloques de memoria más complejos.

Página

16

Figura 4. FPGA Altera

Una jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA, ser interconectados según la necesidad del diseñador del sistema, algo parecido a un breadboard programable. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica necesaria.

Los FPGA son generalmente más lentos que sus contrapartes, los circuitos integrados de aplicaciones específicas (ASIC por sus siglas en inglés), no pueden soportar diseños muy complejos, y consumen más energía. Sin embargo, ellas tienen muchas ventajas tales como la reducción del tiempo para la salida al mercado de productos, la habilidad para ser reprogramadas después de haber salido al mercado a fin de corregir posibles errores, y reduce los costos de ingeniería tales como investigación, diseño y prueba de un nuevo producto.

Una diferencia importante es que muchas FPGAs modernas, soportan una total o parcial re-configuración del sistema, permitiendo que una parte del diseño sea re-programada mientras las otras partes siguen funcionando

Fabricantes de algunos FPGA y sus especialidades

A finales del 2005, el mercado de las FPGA se ha colocado en un estado donde hay dos productores de FPGA de propósito general que están a la cabeza del mismo, y un conjunto de otros competidores quienes se diferencian por ofrecer FPGAs de capacidades únicas.

• Xilinx: es uno de los dos grandes líderes de FPGA.

• Altera: es el otro gran líder de FPGA.

• Lattice Semiconductor: es un fabricante de FPGA que lanzo FPGAs con tecnología de 90nm. En adición, Lattice es un proveedor líder en tecnología no volátil, FPGAs basadas en tecnología Flash, con productos de 90nm y 130nm.

Página

17

• Actel . tiene FPGAs basadas en tecnología Flash reprogrammable. También ofrece FPGA que incluyen mezcladores de señales basados en Flash.

• QuickLogic. tiene productos basados en fusibles (programable una sola vez).

• Atmel . es uno de los fabricantes que sus productos son re-configurables (el Xilinx XC62xx fue uno de estos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado.

• Achronix . Semiconductor tienen en desarrollo FPGAs muy veloces. Ellos planean sacar a comienzos de 2007 FPGAs con velocidades cercanas a los 2GHz.

• MathStar, Inc. ofrecen FPGA que ellos llaman FPOA (Arreglo de objetos de matriz programable).

3.3.2 Programación del FPGA

La tarea del programador es definir la función lógica que realizará cada uno de los CLB , seleccionar el modo de trabajo de cada IOB e interconectarlos todos.

El diseñador cuenta con la ayuda de herramientas de programación. Cada fabricante suele tener las suyas, aunque existen algunos lenguajes de programación comunes. Estos lenguajes son los HDL o Hardware Description Language (lenguajes de descripción de hardware):

• VHDL • Verilog • ABEL

PORQUE UTILIZAR UN FPGA. Como se menciono anteriormente, un FPGA permite desarrollar dispositivos muy

complejos, además de ser un dispositivo muy flexible; ya que, se puede crear hardware que podrá ser modificado fácilmente, así como permitir su programación en el momento en que se estén realizando las pruebas. Esto es muy útil, ya que no se tiene que implementar hardware para un diseño especifico, el cual si no funciona, se debe cambiar, implicando una pérdida en tiempo y dinero. Con el FPGA solo se realiza un hardware que no cambiara, y los cambios serán dentro del FPGA, por medio de programación.

Como se ha trabajado con equipos de Altera, y considerando que no existe experiencia

en el área de los FPGAs, como para poder saber cual de todos los distribuidores de FPGAs, es el que ofrece más aplicaciones en sus equipos, nos inclinamos por trabajar con los equipos de Altera.

Página

18

3.2.3 LENGUAJE VHDL

A mediados de los años setenta se produce una fuerte evolución en los procesos de fabricación de los circuitos integrados, y junto a las tecnologías bipolares, surge la MOS (metal oxide semiconductor ), principalmente la NMOS, promoviendo el desarrollo de circuitos digitales hasta la primera mitad de los años ochenta.

En aquellas épocas, el esfuerzo de diseño, se concentraba en los niveles eléctricos para establecer características e interconexiones entre los componentes básicos a nivel de transistor. El proceso de diseño era altamente manual y tan solo se empleaban herramientas como el PSPICE (Software de simulación) para simular esquemas eléctricos con modelos previamente personalizados a las distintas tecnologías.

A medida que pasaban los años, los procesos tecnológicos se hacían más y más complejos. Los problemas de integración iban en aumento y los diseños eran cada vez más difíciles de depurar y de dar mantenimiento. Inicialmente los circuitos MSI (Medium Scale Integration) y LSI (Low Scale Integration) se diseñaron mediante la realización de prototipos basados en módulos más sencillos. Cada uno de estos módulos estaba formado por puertas ya probadas, este método poco a poco, iba quedándose obsoleto. En ese momento (finales de los años setenta) se constata el enorme desfase que existe entre tecnología y diseño.

La considerable complejidad de los chips que se pueden fabricar, implica unos riesgos y costes de diseño desmesurados e imposibles de asumir por las empresas. Es entonces, cuando diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware" cada uno con sus peculiaridades. Empresas tales como IBM con su IDL, TI - HDL de Texas Instruments, ZEUS de General Electric, etc., así como los primeros prototipos empleados en las universidades, empezaron a desarrollarse buscando una solución a los problemas que presentaba el diseño de los sistemas complejos.

Sin embargo, estos lenguajes nunca alcanzaron el nivel de difusión y consolidación necesarios por motivos distintos. Unos, los industriales, por ser propiedad de la empresa permanecieron encerrados en ellas y no estuvieron disponibles par su estandarización y mayor difusión, los otros, los universitarios, perecieron por no disponer de soporte ni mantenimiento adecuado.

Alrededor de 1981 el Departamento de Defensa de los Estados Unidos desarrolla un proyecto llamado VHSIC (Very High Sed Integrated Circuit) su objetivo era rentabilizar las inversiones en hardware haciendo más sencillo su mantenimiento. Se pretendía con ello resolver el problema de modificar el hardware diseñado en un proyecto para utilizarlo en otro, lo que no era posible hasta entonces porque no existía una herramienta adecuada que armonizase y normalizase dicha tarea, era el momento de los HDL's

En 1983, IBM, Intermetrics y Texas Instruments empezaron a trabajar en el desarrollo de un lenguaje de diseño que permitiera la estandarización, facilitando con ello, el mantenimiento de los diseños y la depuración de los algoritmos, para ello el IEEE propuso su estándar en 1984.

Página

19

Tras varias versiones llevadas a cabo con la colaboración de la industria y de las universidades, que constituyeron a posteriores etapas intermedias en el desarrollo del lenguaje, el IEEE publicó en diciembre de 1987 el estándar IEEE std 1076-1987 que constituyó el punto firme de partida de lo que después de cinco años sería ratificado como VHDL.

La independencia en la metodología de diseño, su capacidad descriptiva en múltiples dominios y niveles de abstracción, su versatilidad para la descripción de sistemas complejos, su posibilidad de reutilización y en definitiva la independencia de que goza con respecto de los fabricantes, han hecho que VHDL se convierta con el paso del tiempo en el lenguaje de descripción de hardware por excelencia

El lenguaje VHDL está creado específicamente para el diseño de hardware, es decir, podremos implementar con él multitud de circuitos lógicos, tanto combinacionales como secuenciales. Éste lenguaje también nos permite describir elementos más complejos, como CPU's (Unidad Central de Procesamiento), manejar ficheros, retrasos en el tiempo, etc. pero no siempre pueden ser implementados; tan sólo, se llegará a la simulación.

4. DESARROLLO DEL DMA ESPECIALIZADO

4.1 DESCRIPCION DEL SENSOR VV5411 4.1.1 COMPONENTES DEL SENSOR VV5411

El sensor ofrece una interfaz digital flexible, con los siguientes componentes principales:

• Un bus de datos tri-stateable de 5 cables (D [4:0]) para enviar tanto datos de vídeo como referencias de cronometraje.

• Un bus de datos alternativo de 4 cables y de 8 cables. Si la opción de 8 cables es seleccionada, los pines de FST/LST son reconfigurados para ser utilizados como datos de salida.

• Un reloj de validación de datos, QCK. • Una señal de principio de línea, LST, • Una señal de principio de marco, FST, • OEB tri-estado para todas las 5 líneas del bus de datos, D [4:0], el reloj de validación

QCK, LST, FST y la D [7]. • Una interfaz de 2 cables I2C (SDA, SCL) para el control y estructuración del dispositivo.

Página

20

Figura 5: Diagrama a bloques del sensor de imagen VV5411

4.1.2 OPCIONES DE CONEXIÓN

Hay 3 modos principales de interconectar al VV5411/VV6411 como es ilustrado debajo. Note que el sistema de procesamiento descrito podría comprender otros productos STMICROELECTRONICS como microcontroladores o dispositivos DSP dedicados.

• El sistema de procesamiento suministra el reloj del sensor, CLKI , y usa las secuencias de control para sincronizar con el marco y cronometrajes de nivel de línea. Así el sistema de procesamiento y el sensor corren y se detienen del mismo reloj. Durante la secuencia de encendido, la secuencia de salida del sensor es 101010... sobre cada una de sus líneas de bus de datos para bloquear al sistema de procesamiento. Esto permite al sistema de tratamiento determinar la mejor posición de la muestra del vídeo de datos.

• El sistema de procesamiento proporciona el reloj del sensor, CLKI, y usa un QCK que corre libre provisto por el sensor para validar el flujo de datos de video

Página

21

entrante. Las secuencias de control arraigadas son usadas para sincronizar los tiempos del nivel de marco y línea.

• El sistema de procesamiento proporciona el reloj de CLKI al sensor, y usa FST,

LST y QCK para sincronizar con el video de datos entrante.

4.1.3 FORMATOS DE INTERFAZ DE VIDEO

La interfaz de video es bidireccional, con un bus de datos tri-stateable de 5-hilos. La transmisión del nibble es sincronizado con el borde creciente del reloj del sistema. La transmisión del video de datos es de 8 o 10 bits por muestra y se puede hacer de las siguientes maneras.

10 bits de datos • Una serie par de nibbles de 5-bits, el nibble más significante primero, en 5 cables. • Un número de 8-bits. El número de líneas y el estado de líneas datos es rellenado con

00 en el dos últimos bits significativos para constituir un valor de 10-bits. 8-bits datos

• Una serie de 8 bits sobre una salida de 8 hilos. • Una serie par de nibbles de 4-bits, el nibble más significante primero, en 4 cables.

Página

22

Figura 6: Modos de salida posibles

Nota: Si el modo de salida seleccionado es de 8-cables, la función normal de los pines FST/LST es sacrificada, ya que estos pines son requeridos para datos. En el modo de salida de 8 hilos, los datos en FST y LST (bits D[5] y D[6]) son anticipados por el 1/2 ciclo de QCK de los bits D[0] hasta D[4] y D[7]. La siguiente figura muestra el detalle del modo cronometrando.

Figura 7: Detalle de tiempos para el modo de 8 cables

4.1.4 CONTROL DE DATOS

Para distinguir entre el control de datos y la muestra de datos de video, todos los datos de control son encapsulados en una secuencia de control interna. Esta secuencia de 6 byte-longitud incluye una combinación de secuencia de caracteres de escape/sincronización, 1 byte de control (el byte de comando) y 2 bytes de datos suplementarios.

Para minimizar la susceptibilidad de los datos de control incluidos a un bit aleatorio de

error, nosotros usamos técnicas de codificación redundante para corregir solo bits de error de las palabras de control. Sin embargo, más series corruptas de palabras de control o los caracteres corruptos de escape/sincronizacion pueden se tolerados sin la pérdida de sincronización de la corriente de datos. Nosotros inventamos un juego simple de reglas para

Página

23

asegurar que una pérdida de la sincronización sea detectada. Se perfilan las cuatro excepciones a las reglas la debajo:

• Datos que contiene una palabra de control con dos bits de error. • Datos que contiene dos códigos de fin de línea y no están separados por un

código de inicio de línea. • Datos que precede un código de fin de campo antes de código de inicio de

campo. • Datos que contiene línea que no tiene números de la línea secuenciales

(excluyendo la línea de fin de campo). Si el host descubre uno de estas violaciones entonces que debe abandonar el campo

video actual. 4.1.5 FORMATOS DE VIDEO

El VV5411 es un dispositivo de imagen que puede proporcionar múltiplex formatos de video monocromático digital, basado en tecnología CMOS de STMicroelectronics´s

El formato de video que genera al encendido es CIF 30fps por default. Después de

haberlo encendido el modo de video puede ser modificado así como la velocidad del marco. Estos cambios se hacen por medio de la interfaz I2C con la que cuenta el sensor. En la siguiente tabla se muestras los diferentes modos de video con los que se puede trabajar.

Tabla 3: Modos de video que soporta el sensor VV5411 MODO DE

VIDEO RESOLUCIÓN LONGITUD DE LINEA LONGITUD DE MARCO

NTSC 306X244 364 262/263 PAL 356X292 454 312/313 CIF 25 fps 356X292 500 320 CIF 30 fps 356X292 416 320

Es recomendable utilizar un reloj de 16 Mhz para generar una salida de video CIF 25/30

fps, sin embargo el sensor puede adaptarse a un rango de otras frecuencias de entrada y todavía generar las velocidades de marco requeridas. 4.1.6 INTERFAZ I2C

La escritura para configurar la información del sensor de video y leer el estado del sensor, así como la información de configuración del sensor son llevados a cabo vía 2 cables I2C.

La comunicación que usa el bus serial I2C se centra en varios registros internos del

sensor de video. Estos registros guardan el estado del sensor, setup y la información de sistema. La mayoría de los registros son de lectura/escritura permitiendo que el equipo reciba y cambie su contenido. Los otros (como el id de chip) son de solo lectura. Las características principales del I2C incluyen:

• Mensajes de lectura/escritura de longitud variable.

Página

24

• Índice de direcciones para la información de fuente y destino dentro del sensor. • Actualización automática del índice después de un mensaje de lectura o escritura. • Mensaje de aborto con reconocimiento negativo desde el master. • Mensaje de orientación de bytes.

El co-procesador o host debe llevar a cabo el papel de un master de comunicaciones

mientras que la cámara actúa como un esclavo receptor o un transmisor. La comunicación del host a la cámara es en 8 bits de datos con una frecuencia de reloj del host máxima de hasta 100 kHz. Debido a que el reloj serial es generado por el bus del master, y determina la velocidad de transferencia de datos. El protocolo de transferencia de datos en el bús de datos es ilustrado en la Figura 8.

Figura 8: Protocolo de transferencia de datos de I2C

La información es empaquetada en paquetes de 8 bits siempre seguidos por un bit de

reconocimiento (A). Los datos internos son producidos por una muestra sda en un borde en aumento del scl . Los datos externos deben ser estables durante el período alto de scl . Las excepciones son principio (s) o paro (P) las condiciones cuando sda cae o aumenta respectivamente, mientras que scl es alto.

Un mensaje contiene al menos dos bytes precedido por una condición de inicio y seguir

por una de paro o inicio repetido, (Sr) seguido por otro mensaje. El primer byte contiene la dirección del dispositivo que incluye el bit de lectura de datos

(R), o escritura de datos (W). El lsb (bit menos significativo) del byte de dirección indica la dirección del mensaje. Si el lsb es establecido en alto, el master lee los datos del esclavo y si el lsb es vuelto a poner en bajo, el master escribe los datos al esclavo. Después de que el bit R/W bit son probados, la dirección de datos no puede ser cambiada hasta que el próximo byte de dirección con un nuevo bit (R/W) sea recibido.

Figura 9: Dirección del VV5411

Página

25

El siguiente byte el byte de dirección contiene la dirección del primer byte de datos (también referenciado como el índice). El I2C puede direccional hasta 128 bytes de registros. Si el msb del segundo byte es fijado, la característica de incremento automático del índice de dirección es seleccionada.

Figura 10: Formato de datos de la I2C

Todas las comunicaciones de I2C con el sensor deben empezar con una condición de

inicio. Si la condición de inicio es seguida por un byte de dirección valida entonces/luego las comunicaciones adicionales pueden tener lugar. El sensor reconocerá la dirección valida recibida conduciendo al sda a un bajo. El estado del bit de lectura /escritura (lsb del byte de dirección) es almacenado y el siguiente byte de los datos, muestreado de sda, puede ser interpretado.

Durante una secuencia de escritura, el segundo byte recibido es un índice de dirección usado para apuntar a uno de los registros internos. El msbit (bit más significativo) del siguiente byte es el indicador del índice de auto-incremento. Si este indicador es fijado entonces/luego el I2C incrementa la dirección del índice automáticamente por una ubicación después de cada reconocimiento del esclavo. El master puede enviar bytes de datos constantemente al esclavo hasta que el esclavo deja de proveer uno reconocimiento o el master termina la comunicación de escritura con un condición de alto o envía un inicio repetido, (Sr). Si la característica de auto-incremento es usada, el master no tiene que enviar índices para acompañar los bytes de datos.

Cuando los datos son recibidos por el esclavo, es escrito bit por bit a un registro serial/paralelo. Después de que cada byte de datos ha sido recibido por el esclavo, un reconocimiento es generado, los datos son guardado en la dirección del registro interno por el índice en curso. 4.2 DESCRIPCION DEL PROYECTO

Antes de empezar a bajar imagen del VV5411, es necesario realizar una programación en sus registros internos, ya que estos registros se encargan de especificar la manera de cómo trabajara el VV5411. Como la programación del VV5411 debe realizarse por medio de una interfaz I2C, el PROGRAMADOR se diseño con una interfaz I2C para poder realizar la programación. Este bloque sólo trabaja al inicio (al encender el sistema) o al dar un reset.

Página

26

La interfaz cuenta con dos señales, SDA es la que lleva toda la información mientras

que SDL solo sirve para validar los datos de SDA. En la Figura 11, se muestra la forma como trabajan estas señales y en la Figura 12, se muestra la secuencia de programación que se debe realizar. Una vez terminada la programación se activa la señal EO (EO=’0’), indicando que se puede iniciar la captura de la imagen.

Figura 11. Forma de las señales SDA y SCL

Para poder generar las señales de la interfaz, se utilizara un generador de reloj el cual

proporcionara dos señales, una para SCL y la otra para SDA. El generador tendrá un reloj de entrada el cual será proporcionado por el sistema mínimo, a partir de este reloj se obtendrán las otras dos señales de reloj.

Figura 12. Secuencia para programar los registros

Como se puede observar en la figura, para comenzar a programar un registro primero se manda una condición de inicio, seguida de esta se manda una dirección de 8 bits, de la cual el bit menos significativo indica si se va ha leer 0 escribir en el registro, después sigue una señal de reconocimiento, esto para tomar la dirección que se acaba de mandar. En seguida se envía el número de registro que se va a programar, y una vez más una señal de reconocimiento. Por ultimo para el caso de una escritura se mandan los datos que se desean escribir en el registro.

Página

27

Este bloque se dividirá en tres partes, las cuales son las siguientes:

• Reloj: Su función es la de generar dos reloj a partir del reloj de entra, los cuales tomaran la función de SDA y SCL respectivamente.

• Memoria: En ella se guardara los registros así como los valores de cada uno. • Registro de corrimiento: Tomara los valores de la memoria y los enviará al CCD

apoyándose con las señales de reloj, generadas por el Reloj.

4.2.1. DESARROLLO DEL BLOQUE DECODIFICADOR

Todos los datos de control son encapsulados en una secuencia de control interna. Esta secuencia de control consta de 6 byte de longitud (Para el modo de 8 bits), la cual incluye una combinación de secuencia de caracteres de sincronización (Formada por 3 bytes), 1 byte de control y 2 bytes de datos suplementarios. En la siguiente figura se muestra la secuencia de control para el modo de 5 bits.

Figura 13. Secuencia de control de 5 bit para programar los registros

Para el modo de 5 bits los tres bytes de la secuencia de sincronización se convierte en 6 nibbles de 5 bits cada uno; Así mismo el byte de control esta conformado por 2 nibbles de 5 bits y los datos suplementarios pasan a ser 4 nibbles de 5 bits.

Como se puede ver en la figura anterior, se tienen tres secuencia que se tendrán que

detectar y decodificar. Para poder obtener de forma correcta la imagen proveniente del CCD.

Secuencia de sincronización

Cada secuencia de sincronización empieza con una combinación de caracteres compuesta por seis nibbles de 5 bits. Conformada por 4 nibbles 1FH y 2 nibbles 00H (Los cuales no son validas en datos normales). De esta forma se puede determinar la mejor posición de la palabra de control.

Página

28

Lo primero que deberá hacer el bloque decodificador, es la de detectar esta secuencia de sincronización. Para ello se utilizara un contador y en cada estado del contador se realizara una comparación entre el valor del dato proveniente desde el CCD y una constante interna en el bloque decodificador. El contador aumentara si la comprobación es correcta de lo contrario no aumenta. En el siguiente diagrama de flujo se muestra el funcionamiento de esta parte.

Figura 14. Diagrama a bloque de la secuencia de sincronización

Palabra de control

El formato de imagen proveniente del CCD esta compuesto por un cuadro, el cual se divide en dos campos, los cuales contiene toda la información. En la siguiente Figura 15. Se muestra el formato de la imagen proveniente del CCD. Como se puede observar la imagen esta formada por dos campos loa cuales son identificados como par e impar, así mismo cada campo esta compuesto por un inicio campo par o impar, líneas black, líneas dark, líneas visibles, fin de campo par o impar.

Página

29

Figura 15. Secuencia de imagen proveniente del sensor El bloque decodificador debe tomar la palabra de control, e identificar en que momento

el CCD esta enviando información validad, para posteriormente indicar a la memoria FIFO que se debe almacenar la información en ella, o indicarle al microprocesador que puede realizar lectura directa del CCD según sea el caso. La siguiente tabla muestra los códigos de control para el modo: 5 bits.

Tabla 4. Códigos de control para la programación a 5 bits

CÓDIGO DE LÍNEA PALABRA X Datos [4:0]

PALABRA Y Datos [4:0]

Fin de línea 1_0000 0_0000 Líneas blank 1_0011 1_0100 Lineas Black 1_0101 0_1100 Líneas visibles 1_0110 1_1000 Inicio del campo par 1_1000 1_1100 Fin del campo par 1_1011 0_1000 Inicio del campo impar 1_1101 1_0000 Fin del campo impar 1_1110 0_0100

Página

30

Para este caso también utilizaremos un diagrama de flujo para poder visualizar el comportamiento de la decodificación. El la siguiente figura se muestra el diagrama de flujo.

Figura 16. Diagrama de flujo para detectar la palabra de control

La señal aux nos permite saber cual es el código de línea enviado por el CCD, la señal band nos indica que el código de línea es valido y por lo tanta la información almacenada en la memoria es validad, del o contrario la información se debe borrar de la memoria. Datos suplementarios

Las dos últimas palabras de la secuencia de control incluyen datos suplementarios. De

los cuales se tiene dos opciones.

• Las dos últimas palabras contiene el número de la línea. • Las dos últimas palabras contienen un promedio de píxeles en la línea.

Página

31

Figura 17. Datos suplementarios de la palabra de control

Decodificador

Una vez que ya se tiene detectada la palabra de sincronización, así como la palabra de control, se procede a activar las señales de salida, dependiendo del a información obtenida. El siguiente diagrama muestra las decisiones que se debe tomar.

Figura 18. Diagrama de flujo, en el se toman decisiones según la información enviada por el sensor

Página

32

4.2.2. DESARROLLO DEL BLOQUE MEMORIA La función de la memoria es de almacenar la imagen proveniente del CCD, para

posteriormente ser leída por el microprocesador. La forma de hacerlo será: la primera información que sea escrita en la memoria, será la primera en ser leída, con esto se garantiza una secuencia de video correcta. El tamaño de la memoria será de dos páginas y cada una de ocho registros, donde cada registro tendrá 30 bits.

Figura 19: Página de 8 registros, cada registro esta constituido por 30 bits. La escritura se hace

de 5 bits, por lo tanto para llenar un registro se necesitan 6 escrituras en uno; mientras que la lectura se hace de 30 bits (por registro).

Para el desarrollo de la memoria utilizaremos cuatro bloques, el primero es un bloque

que se en carga de decidir si se escribe, se lee o se borra en la memoria; el segundo y tercero son iguales, son las dos paginas que constituyen la memoria. El cuarto bloque es un multiplexor, su función es la de seleccionar de que memoria se tomara la información. El siguiente diagrama a bloques muestra como esta constituida la memoria.

Figura 20. Diagrama a bloques de la Memoria FIFO.

Página

33

4.2.2.1 DESARROLLO DEL BLOQUE SELECTOR Este bloque decide en cual página se debe escribir, leer, o borrar la imagen. Las

señales con las que cuenta son las siguientes:

SEÑALES DE ENTRADA SEÑALES AUXULIARES SEÑALES DE SALIDA Ce: Escritura bandera Ce1: Escritura en memoria 1 Cl: Lectura Ce2: Escritura en memoria 2 Ll1: Memoria 1 llena Cl1: Lectura en memoria 1 Ll2: Memoria 2 llena Cl2: Lectura en memoria 2 V1: Memoria 1 vacía B1: Borrar memoria 1 V2: Memoria 2 vacía B2: Borrar memoria 2 Lectura: Se lee directamente

del CCD

Este bloque recibe una señal que indica, que la información que esta trasmitiendo el CCD el video valido, por otro lado recibe una señal, la cual indica una petición de lectura, desde el microprocesador. Las dos páginas le indican al SELECTOR, si se encuentran llenas o vacías y dependiendo de estas señales se decide en que página se puede leer, escribir o borrar.

Para saber en que momento se debe escribir, leer o borrar y en que página, utilizaremos los siguientes casos:

1. Cuando ce=”0” (Solicitud de escritura) y cl= ”1” (No hay lectura) • Si v1=”1” y v2=”1” Ambas páginas están vacías Se escribe en página1 • Si Ll1=”1” y v2=”1” página1 no esta llena, y la página2 esta vacía. Se escribe en página1 • Si Ll1=”0” y v2=”1” página1 llena y página2 vacía. Se escribe en página2 • Si Ll1=”0” y Ll2=”1” página1 llena y página 2 no esta llena. Se escribe en página 2 • Si Ll1=”0” y Ll2=”0” y bandera=”0” Página1 llena y página2 llena

(bandera=0 indica que página1 primera en llenarse). Se borra la página1 y se escribe en página1 • Si v1=”1” y v2=”1” Página1 y 2 no están vacías. Se escribe en página2 • Si Ll1=”1” y Ll2=”0” Página1 no esta llena y página2 llena. Se escribe en página 1 • Si Ll1=”0” y Ll2=”0” y bandera=”1” Página 1 llena y página 2 llena

(bandera=1 indica que página2 fue la primera en llenarse). Se borra la página 2 y se escribe en pág ina 2 2. Cuando ce=”0” ( Hay escritura) y c l=”0” (Hay lectura)

Página

34

• Si v1=”0” y v2=”0” Página1 y 2 vacías. Se lee directamente del ccd. • Si v1=”1” y v2=”0” Página1 no esta vacía y página 2 vacía. Se lee página1, se escribe página2. • Si Ll1=”0” y v2=”1” Página 1 llena y página 2 no esta vacía Se lee página1, se escribe página2. • Si v1=”0” y v2=”1” Página1 vacía y página 2 no esta vacía. Se lee de la página2, se escribe en página1. • Si v1=”1” y v2=”1” Página1 y 2 no están vacías. Se lee de la página1, se escribe en página2. 3. Cuando ce=”1” (No hay escritura) y c l=”0” (Lectura) • Si v1=”0” y v2=”0” Página1 y 2 vacías. Se lee directamente del ccd. • Si v1=”1” y v2=”0” Página1 no esta vacía y página 2 vacía. Se lee de la página 1. • Si Ll1=”0” y v2=”1” Página1 llena y página 2 no esta vacía Se lee de la página1 • Si v1=”0” y v2=”1” Página1 y 2 no están vacías Se lee de la página1 • Si v1=”0” y v2=”1” Página1 vacía y página2 no esta vacía. Se lee de la página 2.

En base a estos casos podemos obtener varias ecuaciones las cuales nos permitirán encontrar en que caso se tendrá una lectura, escritura y borrado de cada página.

Para encontrar la ecuación que nos describe el comportamiento de la variable bandera,

utilizaremos la siguiente tabla: V1 Ll1 V2 Ll2 B1 B2 P1 y 2 vacías 0 1 0 1 1 1 P1 no vacía ni llena y P2 vacía 1 1 0 1 1 1 P1 llena y P2 vacía 1 0 0 1 1 1 P1 llena y P2 no vacía ni llena 1 0 1 1 1 1 P1 llena y P2 llena 1 0 1 0 0 1 P1 vacía y P2 llena 0 1 1 0 1 1 P1 no vacía ni llena y P2 llena 1 0 1 0 1 1 P1 llena y P2 llena 1 0 1 0 1 0 P1 llena y P2 vacía 1 0 0 1 1 1 P1 llena y P2 no vacía ni llena 1 0 1 1 1 1 P1 llena y P2 llena 1 0 1 0 0 1 P1 vacía y P2 llena 0 1 1 0 1 1

Página

35

Considerando que antes de se llene primero la página1 se tiene la secuencia (v1=”1” y Ll1=”0” y v2=”1” y Ll2=”1”) y antes de que se llene la página2 se tiene la secuencia (v1=”0” y Ll1=”1” y v2=”1” y Ll2=”0”). Podemos deducir:

Si (v1=”1” y Ll1=”0” y v2=”1” y Ll2=”1”) Bandera=”0” De otra forma Si (v1=”0” y Ll1=”1” y v2=”1” y Ll2=” 0”) Bandera=”1” De otra forma Bandera=bandera.

Utilizando los casos anteriores encontramos las siguientes ecuaciones para las diferentes señales:

Lectura=0

Se cumple cuando cl=0 y v1=0 y v2=0

Por lo tanto la ecuación que describe el comportamiento es: Lectura= not[not(cl) and not(v1) and not(v2)]

B1= 0

Se cumple cuando ce=0 y cl=1 y ll1=0 y ll2=0 y bandera=0 Por lo tanto la ecuación que describe el comportamiento es: B1=not [not(ce) and not(ll1) and not(ll2) and not(b andera) and (cl)]

B2= 0 Se cumple cuando ce=0 y cl=1 y ll1=0 y ll2=0 y bandera=1 Por lo tanto la ecuación que describe el comportamiento es: B2=not [not(ce) and not(ll1) and not(ll2) and (band era) and (cl)]

ce1= 0

Se cumple cuando ce=0 y cl=1 y v1=1 y v2=1

ó ce=0 y cl=1 y ll1=1 y v2=1 ó ce=0 y cl=1 y ll1=0 y ll2=0 y bandera=0 ó ce=0 y cl=1 y ll1=1 y ll2=0 ó ce=0 y cl=0 y v1=0 y v2=1

Página

36

Por lo tanto la ecuación que describe el comportamiento es: Al factorizar a ce=0 y cl=1 Obtenemos: ce=0 y cl=1 [(v1=0 y v2=1) o (ll1=0 y v2=1) o (ll1=0 y ll2=0 y bandera=0) o (ll1=1 y

v2=0)] ó ce=0 y cl=0 y v1=0 y v2=0 como [(ll1=0 y v2=1) o (ll1=1 y v2=0)]=0, los quitamos de la ecuación

Y nos queda ce=0 y cl=1 [(v1=0 y v2=1) o (ll1=0 y ll2=0 y bandera=0)] ó ce=0 y cl=0 y v1=0 y v2=0

ce1= not[ [ (not(ce) and (cl)) and ( (not(v 1) and (v2) ) or (not(ll1) and not(ll2) and not(bandera) ))] or (not(ce) and not(cl) and not(v 1) and v2)] Ce2= 0 ce=0 y cl=1 y ll1=0 y v2=1 ó ce=0 y cl=1 y ll1=0 y ll2=1 ó ce=0 y cl=1 y ll1=0 y ll2=0 y bandera=1 ó ce=0 y cl=1 y v1=1 y v2=1 ó ce=0 y cl=0 y v1=1 y v2=0 ó ce=0 y cl=0 y ll1=0 y v2=1 ó ce=0 y cl=0 y v1=1 y v2=1 Si factorizamos (ce=0 y cl=1) y (ce=0 y cl=o) (ce=0 y cl=1) y [ (ll1=0 y v2=1) o (ll1=0 y ll2=1) o (ll1=0 y ll2=0 y bandera=1) 0 (v1=1 y v2=1)] (ce=0 y cl=0) y [(v1=1 y v2=0) o (ll1=0 y v2=1) o (v1=1 y v2=1)] Cl1= 0 Si ce=0 y cl=0 y v1=1 y v2=0 ó ce=0 y cl=0 y ll1=0 y v2=1 ó ce=0 y cl=0 y v1=1 y v2=1 ó ce=1 y cl=0 y v1=1 y v2=0 ó ce=1 y cl=0 y ll1=0 y v2=1 ó ce=1 y cl=0 y v1=0 y v2=1 si factorizamos (ce=0 y cl=0) y (ce=1 y cl=0) (ce=0 y cl=0) y [(v1=1 y v2=0) o (v1=1 y v2=1)] …..1 (ce=1 y cl=0) y [(v1=1 y v2=0) o (v1=0 y v2=1)] …...2 (ce=0 y cl=0) y [ (ll1=0 y v2=1)] ……………………..3 (ce=1 y cl=0) y [ (ll1=0 y v2=1)] ……………………..4 Si factorizamos 3 y 4 (cl=0 y ll1=0 y v2=1) y (ce=0 y ce=1) Como (ce=0 y ce=1)=1 Por lo tanto

Página

37

(cl=0 y ll1=0 y v2=1) Cl2= 0 Si ce=1 y cl=0 y v1=0 y v2=1 ó ce=0 y cl=0 y v1=0 y v2=1 Si factorizamos (cl=0 y v1=0 y v2=1) Tenemos a (ce=0 y ce=1)=1 Por lo tanto cl2= not[ not(cl) and not(v1) and v2 ] 4.2.2.2 DESARROLO DEL BLOQUE PÁGINA

En este bloque se escribe la información proveniente del CCD, y el microprocesador puede leer esa información. El bloque esta constituido por ocho registros en los cuales se almacenara la información, cada registro esta formado por 30 bits.

Para indicar que un registro se encuentra vacío, todos los bits se pondrán en tercer estado (Alta impedancia). Al inicio todos los registros se encuentran en tercer estado. La letra Z indica que un registro se encuentra en tercer estado, el número de Z corresponde al número de bits de la señal.

Cuando ce=0 la página escribirá la información proveniente del CCD en el registro correspondiente, cuando cl=0 la página proporcionara la información al microprocesador, el registro a leer siempre será el menor y al leerlo borrara la información en este, de esta manera en la siguiente lectura se tomara el registro siguiente. Cuando rst=0, todos los registro serán borrado. Por último cuando b=0 los últimos 8 nibbles (5 bits por nibble) serán borrados. De esta forma evitaremos escribir en la memoria el número de líneas de cada campo y el promedio de píxeles de cada línea. Los cuales no son necesarios.

PÁGINA LLENA Y VACIA

Para saber cuando se puede escribir en la página, así como cuando se puede realizar

una escritura en la misma, es importante saber cuando la página se encuentra llena y cuando

Página

38

esta vacía. Dependiendo de cada estado de la página se tendrán diferentes opciones con respecto a lo que se pueda hacer en ella. En la siguiente tabla se muestran las diferentes opciones que se pueden tener.

V Ll Ce Cl 0 1 Escritura No lectura 1 0 No escritura Lectura 1 1 Escritura Lectura 0 0 No es valido

Cuando todos los registros se encuentran vacíos la página se encuentra vacía. Y una

página se encuentra llena cuando el último registro tiene información. El siguiente diagrama muestra como saber cuando la página se encuentra llena o vacía.

ESCRITURA EN PÁGINA

Como la información del CCD se hace por medio de un bus de 5 bits. La escritura en los

registros será en 6 bloques, donde se empezara desde los bits menos significativos hasta los bits más significativos, como se muestra en la siguiente figura.

Página

39

Cada vez que se escriba en un registro se incrementara un contador, este servirá para

saber en que registro y en que posición del registro se debe escribir. Cuando la señal rst se activa, el contador se inicializara y los bits de los registro se pondrán en alta impedancia. Ya que son ocho registros y cada registro tiene seis bloques, el contador tomara valores de 0 hasta 47.

Mientras este activada la señal de escritura el valor del bus de datos será asignado al

registro y posición según sea el valor del contador. En la siguiente figura se muestra un bosquejo de la escritura.

LECTURA EN PÁGINA Ya que el bus de datos de salida es de 30 bits, las lecturas se harán registro a registro.

La lectura se hace del registro menor al registro mayor, de esta forma la primer información almacenada, será la primera en ser leída. Cada vez que un registro sea leído, sus bits serán puestos en alta impedancia, para evitar que la información sea leída más de una vez.

Ya que la lectura se hace registro a registro, y la escritura se hace en bloques de 5 bits,

esto puede llevar al caso en que se tenga un lectura, pero el registro en turno no este completo, para evitar este caso, la lectura solo se hará cuando el en los siguientes casos:

CONTADOR ESCRITURA CONTADOR LECTURA LECTURA

>=5 0 Valida >=11 1 Valida >=17 2 Valida >=23 3 Valida >=29 4 Valida >=35 5 Valida >=41 6 Valida >=47 7 Valida otro otro No valida

Ahora cuando el contador de lectura y de escritura apunten al mismo registro, ambos

contadores serán inicializados.

Página

40

SEÑAL B ACTIVA

En la página además de almacenar la información de la imagen, también se almacena la secuencia de control, esto para poder diferenciar en la memoria, cuando se tiene un inicio o fin de campo, un inicio o fin de línea, inicio o fin de marco; ya que primero se almacena la secuencia de control y después de verifica si es validad, se tiene el inconveniente de que se almacene información no valida.

Página

41

La señal b nos dice cuando la secuencia de control no es valida, por lo tanto cuando esta señal este activada, será necesario borrar 8 nibbles (bloques de 5 bits) y ponerlos en alta impedancia. Esto lleva también hacer un decremento de 8 unidades al contador de escritura.

Si al hacer el decremento el contador de escritura y el contador de lectura quedan

apuntando al mismo registro o el contador de lectura apunta a un registro menor, ambos contadores serán inicializados. Se inicializa ya que con un solo registro no se puede recuperar la imagen, por lo tanto no sirve de nada. Lo recomendable es comenzar con una nueva imagen. Este caso solo ocurre cuando la lectura y escritura se estén realizando en la misma página.

Por otro lado, el contador es menor de 0 después del decremento, los nibbles restantes

serán borrados de la otra página.

Página

42

Página

43

Página

44

7. BIBLIOGRAFIA <AXIS> http://www.axis.com/products/video/camera/compression.htm http://www.axis.com/products/video/camera/index.htm http://www.axis.com/products/video/video_server/videoserver.htm http://www.axis.com/solutions/video/monitoring/applications.htm <SONY> http://bssc.sel.sony.com/Professional/docs/brochures/snc-rz30n.pdf http://www.axis.com/products/video/camera/index.ht <TERRA> http://enter.terra.com.co/ente_secc/ente_tuto/noticias/ARTICULO-WEB-1001940-1134118.html <STMICROSISTEMS> http://www.vvl.co.uk/products/image_sensors/411/7418139a.pdf <CENTRO POLITECNICO SUPERIOR> http://www.cps.unizar.es/~fbeltran/vhdl.pdf <DIST-SOFT> http://www.dist-soft.com/svr/