Descargar

Anuncio
5. EL SISTEMA DE VISIÓN XILINX SPARTAN-6 IVK
En el siguiente capítulo se presenta una descripción detallada del sistema de visión
Xilinx® Spartan®-6 FPGA Industrial Video Processing Kit, desarrollado y distribuido por el
fabricante Avnet Electronics. En primer lugar, se dará una visión general de las características
principales de la familia Spartan-6 de Xilinx, indicando sus ventajas en los sistemas de alto
rendimiento como pueden ser los de visión artificial. Seguidamente se presentará la placa de
desarrollo Xilinx® Spartan®-6 LX150T Development Kit, que junto al sensor OmniVision
OV9715 y a las tarjetas auxiliares FMC-IMAGEOV / FMC-DVI componen el sistema de visión
completo.
Por último, se hará una lista de las herramientas software que vienen incluidas, así como el
repositorio de IP-Cores incluidos y los diseños de referencia que sirven como base para cualquier
diseño de un sistema de visión.
5.1 Introducción
El sistema Spartan-6 FPGA Industrial Vídeo Processing Kit es una herramienta de diseño
integral para la creación de prototipos, y el desarrollo de aplicaciones avanzadas de
procesamiento de imágenes en el mundo de la industria. El Kit completo, tanto la parte hardware,
como el software, y los diseños de referencia están especialmente concebidos para permitir a los
ingenieros en hardware realizar sistemas más confiables, disminuyendo al mismo tiempo el
tiempo de diseño y los recursos necesarios para su puesta a punto.
El sistema de desarrollo está compuesto de los siguientes elementos:
x Spartan-6 LX150T PCI Express Development Kit [65] [66] [67]. Es la placa de
desarrollo en la que se basa todo el sistema de visión. Dispone de una FPGA modelo
Xilinx Spartan-6 XC6SLX150T, así como memoria DDR3 SDRAM, memoria Flash,
conectores USB, Jtag, ranura PCI-Express y otros elementos que se verán más
adelante.
x Sensor OmniVision OV9715 [68]. Es el sensor de imagen, fabricado por OmniVision
para los sistemas de visión de alto rendimiento. Es capaz de capturar imágenes con
resolución de 720p (líneas horizontales), y la lente de la cámara proporciona un ángulo
de visión de casi 180º.
x Tarjetas auxiliares FMC-IMAGEOV / FMC-DVI [69] [70] [71] [72]. Tarjetas controladas
por la FPGA a través de la placa de desarrollo, y que proporcionan las interfaces de
entrada y salida para vídeo DVI proveniente de una cámara digital, o desde el sensor
de imagen OV9715.
Además, el Kit incluye una licencia completa (aunque bloqueada para su uso únicamente
con el dispositivo LX150T) de Xilinx ISE® Design Suite: System Edition DVD, así como algunos
diseños completos de referencia que pueden descargarse desde la Web de Avnet Electronics,
previo registro.
En los siguientes apartados de este capítulo se describirán uno a uno los elementos que
componen el sistema de visión.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
82
5.2 Recursos lógicos en la FPGA Spartan-6
Figura 5.1. Xilinx® Spartan®-6 FPGA Industrial Video
Processing Kit, usado en este Proyecto Fin de Carrera [163].
5.2 Recursos lógicos en la FPGA SPARTAN-6
La familia Spartan-6 de Xilinx cuenta con unas características ideales para sistemas de alto
rendimiento, proporcionando gran flexibilidad y eficiencia en sistemas de visión. Construida con
tecnología de 45nm y preparada para trabajar con voltajes bajos, estas FPGA proporcionan un
ahorro considerable de consumo con respecto a las familias anteriores, proporcionando además
un balance adecuado entre calidad y precio.
Esta familia de FPGAs incluye una nueva y más eficiente lógica en sus tablas LUT (que
disponen de seis entradas y de un registro dual) además de 18Kb de memoria BlockRAM, Slices
DSP48A1 de nueva generación, controladores de memoria SDRAM, controlador de niveles de
consumo, tecnología SelectIO™, bloques transceptores optimizados de alta velocidad,
transceptores compatibles con PCI Express, entre otros. En [63] se pueden ver en detalle todas
las características de esta familia.
Tabla 5.1. Bloques lógicos de la FPGA Xilinx® Spartan®-6 XC6SLX150T [63].
A continuación se describen brevemente los elementos que componen la familia de
dispositivos Spartan-6.
CLBs, Slices, y LUTs. Cada uno de los bloques lógicos configurables (CLB) está
compuesto de dos slices, dispuestos uno al lado del otro en dos columnas. Existen tres tipos de
slices en la arquitectura de la familia Spartan-6: SLICEM, SLICEL, y SLICEX. Cada uno de ellos
contiene cuatro LUTs, ocho biestables y lógica variada. Las LUTs son de propósito general, tanto
para lógica combinacional como para secuencial. Las herramientas de síntesis están preparadas
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
83
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
para sacar el mejor rendimiento de estas celdas, proporcionando una alta eficiencia en la
implementación. Los tres tipos de slices mencionados anteriormente se distribuyen de la
siguiente manera:
x SLICEM. Corresponden al 25% del total en la FPGA, y sus LUTs pueden ser
configuradas como tablas con seis entradas y una salida, o como tablas de cinco
entradas y dos salidas independientes entre sí. Estos slices también pueden ser
configurados como memoria RAM distribuida con 64 bits por cada LUT, como registro
de desplazamiento de 32 bits (SRL32), o dos registros de desplazamiento de 16 bits
(SRL16s) con todos elementos accesibles mediante direccionamiento. La salida de
cada LUT es registrada por un biestable dentro de la CLB. Para operaciones
aritméticas, contiene un registro de acarreo de alta velocidad, que propaga la señal de
acarreo a través de las columnas de slices.
x SLICEL. Corresponden a otro 25% del total en la FPGA, y agrupa todas las
características anteriores, a excepción de las funciones de memoria y registro de
desplazamiento.
x SLICEX. Abarcan el 50% restante del total de la FPGA, y tienen la misma estructura
que los SLICEL, a excepción de los registros de acarreo para operaciones aritméticas.
Administración de Reloj. Cada FPGA Spartan-6 tiene hasta seis CMTs (Clock
Management Tile), cada uno compuesto de dos DCMs (Digital Clock Manager) y un PLL (PhaseLocked Loops), que pueden ser utilizados individualmente o en cascada. El DCM proporciona
cuatro fases diferentes para el reloj de entrada (CLKIN), a 0º, 90º, 180º y 270º (CLK0, CLK90,
CLK180 y CLK270 respectivamente). Además, es capaz de proporcionar relojes al doble de
frecuencia del reloj de entrada, así como un divisor de cualquier fracción entera entre 2 y 16,
alineada con la señal CLK0. El PLL sirve como sintetizador y soporta un mayor rango de
frecuencias. También es capaz de funcionar en conjunto con los DCM. El corazón del PLL es un
oscilador controlado por tensión (VCO) con un rango que va desde los 400Mhz hasta los
1080Mhz. Tres divisores de frecuencia independientes adaptan el PLL a la aplicación que se
desee.
Bloques BlockRAM. Cada FPGA Spartan-6 contiene entre 12 y 268 BlockRAM de doble
puerto, cada uno con capacidad de almacenar 18Kb. Cada uno de estos bloques contiene dos
puertos completamente independientes, que solamente comparten la información almacenada.
Los accesos a memoria están controlados por la señal de reloj, por lo cual son completamente
síncronos. Los datos de salida se almacenan en un registro, que mantiene su valor hasta la
siguiente operación. Existe también un registro opcional que proporciona mayores frecuencias de
trabajo, a costa de incrementar las operaciones de lectura y escritura en un ciclo de reloj. Cada
puerto puede configurarse como 16Kx1, 8Kx2, 4Kx4, 2Kx9 (u 8), 1Kx18 (o 16), o 512x36 (o 32).
Algunos de estos modos incluyen salidas con bits de paridad. Cada Block RAM puede
configurarse como dos bloques independientes de 9Kb, con un solo puerto de acceso y escritura.
Bloques controladores de memoria. Cada FPGA de la familia Spartan-6 tiene bloques
dedicados de control de memoria (MCB "Memory Control Block"), para los tipos DDR, DDR2,
DDR3, LPDDR (DDR del inglés "Double Data Rate", LP del inglés "Low Power") capaces de
soportar transferencias de hasta 800 Mb/s. Estos MCB se conectan a pines predefinidos de la
FPGA, y si no se utilizan, dichos pines pueden seguir utilizándose como entradas y salidas de
propósito general.
Slices DSP48A1. Las aplicaciones de procesamiento de señal requieren el uso de
multiplicadores y acumuladores, los cuales están implementados en los DSP48A1. Estos slices
dedicados tienen la ventaja de ser de bajo consumo, y totalmente configurables, combinando la
alta velocidad con un tamaño reducido. Cada uno de estos bloques se compone de un
multiplicador de 18x18 bits, y un acumulador de 48 bits, cada uno de ellos preparado para
trabajar a frecuencias de hasta 390Mhz. El acumulador puede usarse también como contador
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
84
5.2 Recursos lógicos en la FPGA Spartan-6
incremental o decremental síncrono, y el multiplicador puede usarse para operaciones de barrelshift.
Entradas y salidas. El número de pines de entrada y salida varía desde 102 hasta 576.
Cada uno de estos pines es configurable, y soporta una larga lista de estándares, con voltajes de
hasta 3.3V. Todos los pines de entrada y salida están organizados en bancos (generalmente de 4
a 6 bancos). Cada banco posee recursos en común, como la fuente de alimentación de salida.
Transceptores Gigabit de bajo consumo. La transmisión de datos de alta velocidad entre
circuitos integrados se ha vuelto muy popular y de vital importancia hoy en día. Por ello, la familia
Spartan-6 dispone de 2 a 8 transceptores de alta velocidad, capaces de transmitir y recibir a
velocidades de hasta 3.2Gbps. Transmisor y receptor son circuitos independientes con distintos
PLL. El transmisor es básicamente un conversor paralelo-serie con ratio de conversión de 8, 10,
16 o 20. El receptor es un conversor serie-paralelo de las mismas características.
Bloques integrados para conexión PCI-Express. La familia Spartan-6 dispone de un
bloque integrado capaz de hacer frente a las especificaciones PCI-Express, soportando
velocidades de hasta 2.5Gbps por pista y por dirección (transmisión y recepción). La herramienta
LogiCORE™ hace uso de esta capacidad y proporciona un asistente para la configuración de
estos bloques en caso de que se decidan utilizar.
Para más detalles acerca de la familia Spartan-6 de Xilinx, consúltese [63]. Las siguientes
referencias proveen extensa documentación sobre conceptos de diseño en Spartan-6,
herramientas, técnicas, consideraciones de implementación, y otros aspectos de interés en esta
familia de FPGAs [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93].
5.3 Xilinx® Spartan®-6 LX150T Development Kit
El Kit de desarrollo LX150T proporciona un entorno completo para el diseño e
implementación de prototipos de alto rendimiento. El Kit ofrece una plataforma estable para
desarrollar y probar diseños orientados a la familia de FPGA Spartan-6, cuyos recursos son
suficientes para desarrollos de sistemas complejos.
El Kit incluye diseños de referencia, que permiten al ingeniero partir de una base a la hora
de realizar sus diseños, pudiendo acceder de forma fácil a los periféricos de la placa de desarrollo
[65].
Figura 5.2. Xilinx® Spartan®-6 LX150T Development Kit [65].
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
85
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
5.3.1 Características del Kit de desarrollo LX150T
Las características principales de esta placa de desarrollo se listan a continuación.
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Incluye una FPGA Xilinx Spartan-6 XC6SLX150T-3FGG676C.
Dos Conectores de expansión de propósito general de tipo FMC LPC.
Conector de tarjetas SD.
Conector Avnet LCD Interface (ALI), para pantalla LCD.
Conector para transceptores GTP RocketIO™ GTP.
Conector tipo SFP cage.
Dos tranceptores suministrados a los conectores FMC, para su uso en los módulos de
expansión.
Conector de ranura para interfaz PCI Express (4 pistas a 2.5 Gbps).
Conector SATA servidor.
Componente de memoria 128 MB DDR3 SDRAM.
Componente de memoria 32 MB FLASH.
Puerto serie de comunicaciones RS-232.
Puerto USB 2.0.
Puerto UART USB-RS232.
Puerto Ethernet 10/100/1000.
Regulador de alimentación a 5.0, 3.3, 2.5, 1.8, 1.5 y 1.2 V que se deriva del slot PCI
Express o desde una fuente externa de 12 V.
Reguladores de terminación SSTL2.
Memoria de configuración Platform Flash XCF32 y XCF08.
Soporte para programación y configuración a través de JTAG.
En los siguientes apartados se hará una breve descripción de los elementos principales,
indicando aquellos que son indispensables en cualquier sistema de visión.
5.3.2 Diseño funcional
Los elementos de la placa de desarrollo LX150T están conectados a los pines de la FPGA
de forma predefinida. Aunque es posible realizar cualquier diseño partiendo de cero, el fabricante
proporciona un diseño de referencia base con un sistema SCP incrustado (Soft-core Processor),
donde se han añadido los bloques básicos de control de los elementos de la placa, así como el
procesador Microblaze.
En la Figura 5.3 se puede observar el diagrama de bloques de alto nivel que compone el
sistema de referencia de la placa de desarrollo. Los bloques amarillos representan elementos
hardware situados en la placa de desarrollo, mientras que los bloques azules son los bloques
periféricos implementados en la FPGA que controlan estos elementos externos. Cada periférico
se comunica con el procesador Microblaze a través del bus PLB (Processor Local Bus), y sus
registros ocupan un espacio en el mapa de memoria del procesador, para la tarea de lectura y
escritura de los mismos por parte de Microblaze.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
86
5.3 Xilinx Spartan-6 LX150T Development Kit
Figura 5.3. Diagrama de bloques de alto nivel del diseño base del Xilinx® Spartan®-6 LX150T Development Kit [65].
Algunos de los periféricos del diseño de referencia han sido creados y configurados desde
el asistente para sistemas embebidos (BSB, "Base System Builder"), mientras que otros son
plantillas GPIO (General Purpose I/O) que posteriormente han sido modificadas para que
desempeñen diferentes tareas, como el manejo de los botones, switches y leds de la placa de
desarrollo.
Los periféricos de control para el lector de tarjetas SD, el conector SATA o la expansión
PCI-Express entre otros, no se incluyen en el diseño de referencia básico, y deberán ser
añadidos en caso de necesitarse a través de la herramienta EDK.
Este diseño de referencia permite al ingeniero comenzar el proyecto de desarrollo del
sistema desde una base, sin necesidad de añadir y configurar todos los elementos básicos de
control de la placa.
5.3.3 PCI Express x4 Add-In Card
La placa de desarrollo LX150T proporciona una interfaz eléctrica compatible con el estándar
PCI-Express. Esta interfaz consta de cuatro pistas, cada una de las cuales incluye un par
diferencial de transmisión y recepción. Cada pista soporta velocidades de hasta 2.5Gbps,
compatible con la primera generación de PCI-Express. Para proporcionar la señal de reloj de
referencia, la placa utiliza un circuito integrado que puede programarse, cuya función es la de
atenuador de jitter (ICS874003-05).
En la Figura 5.4 se muestra la forma en la que la interfaz PCI-Express se conecta con la
FPGA Spartan-6 [65]. El circuito integrado ICS874003-05 proporciona un reloj de referencia que
puede configurarse a 100 MHz, 125 MHz, o 250 MHz.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
87
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
Figura 5.4. Diagrama de conexión de la interfaz PCI-Express con la FPGA [65].
5.3.4 Conector SFP
La interfaz SFP (Small Form-factor Pluggable) es un conector tipo "jaula" que se conecta a
uno de los transceptores Gigabit (GTP) de la FPGA. Éste permite añadir al sistema conexiones
ópticas de alta velocidad, a través de módulos transceptores ópticos al conector SFP.
La tarjeta tiene un reloj de referencia específico, totalmente configurable, y la placa está
preparada para soportar velocidades de transmisión y recepción de hasta 3.75 Gbps a través de
este conector, operando en fibras monomodo o multimodo.
Figura 5.5. Conector SFP [65].
5.3.5 Conector SATA
Otro de los transceptores GTP de la FPGA Spartan-6 está conectado a la interfaz SATA,
permitiendo añadir al sistema dispositivos de almacenamiento, como por ejemplo un disco duro
externo. El conector proporciona sólo la interfaz necesaria para los datos, y el dispositivo que se
conecte tendrá que ser alimentado de forma externa.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
88
5.3 Xilinx Spartan-6 LX150T Development Kit
5.3.6 Memoria SDRAM DDR3 128MB
Este dispositivo proporciona 128MB de memoria RAM de alta velocidad en un solo circuito
integrado, operando a 1.5V. Las señales de la memoria DDR3 están conectadas al banco 4 de la
FPGA, tal y como se muestra en la Figura 5.6.
Figura 5.6. Interfaz SDRAM DDR3 [65].
5.3.7 Memoria Paralela Flash 32MB
Este elemento es un circuito integrado de expansión (S29GL-P) que proporciona memoria
no volátil de 32MB. Esta memoria es de acceso asíncrono, aunque soporta un modo de lectura
síncrono para aplicaciones de alto rendimiento. El dispositivo S29GL-P tiene un tiempo de acceso
de 110ns, y está conectado a los bancos 1 y 2 de la FPGA. La Figura 5.7 muestra el diagrama de
bloques de alto nivel de esta memoria.
Figura 5.7. Diagrama de conexión de la memoria Flash 32MB [65].
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
89
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
5.3.8 Xilinx Platform XCF Configuration Flash
La placa de desarrollo tiene otros dos dispositivos de memoria de 32Mb y 8Mb de
capacidad, que se utilizan para la configuración de la FPGA, y que se conectan a ésta de tal
forma que la configuración se descarga de forma automática al accionar el switch de encendido.
5.3.9 Señales de reloj
La placa de desarrollo LX150T posee numerosas fuentes de reloj, para abarcar una gran
cantidad de diseños y aportar la flexibilidad necesaria para diferentes tipos de aplicaciones.
También existen pines dispuestos para que el diseñador use fuentes externas de reloj para
aplicaciones específicas. Los diferentes relojes están dispuestos para derivar las señales hacia
los diferentes dispositivos de memoria y de comunicaciones, así como la lógica existente en la
placa. La Figura 5.8 muestra un diagrama de conexión de las fuentes de reloj con la FPGA.
Figura 5.8. Señales de reloj conectadas a las entradas globales de reloj de la FPGA [65].
Un gran número de estas señales de reloj son generadas gracias a un dispositivo
sintetizador de frecuencias (TI CDCM61002 LVDS) que se encuentra en la placa de desarrollo.
Las señales generadas por este circuito integrado tienen las siguientes características:
x
x
x
x
Rango de frecuencias de salida: 43.75 MHz hasta 683.264 MHz.
RMS jitter: 0.509 ps. a una frecuencia de 625 MHz.
Tiempo de subida y bajada máximo: 255 ps.
Duty cycle: Varía dependiendo de la frecuencia de salida.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
90
5.3 Xilinx Spartan-6 LX150T Development Kit
5.3.10 10/100/1000 Ethernet PHY
Con el fin de proporcionar interfaces estándar para la comunicación, la placa de desarrollo
dispone de un dispositivo transceptor Ethernet de capa física a 10/100/1000 Mb/s, conectado a la
FPGA gracias a la interfaz estandarizada GMII. Este dispositivo posee un conector RJ45 para la
conexión de un cable de red.
El dispositivo que realiza las funciones de capa física Ethernet es un circuito integrado
National DP83865DVH Gig PHYTER® V, que trabaja a 1.8V. También existe diversa lógica
alrededor, tales como resistencias y leds que informan cuando los datos están transmitiéndose y
recibiéndose. La Figura 5.9 muestra de qué forma están conectados estos dispositivos a la
FPGA. Existen además algunos jumpers que se utilizan para configurar parámetros de la
conexión, tales como activar o desactivar la autonegociación, seleccionar entre una comunicación
Full-Duplex o Half-Duplex, o la velocidad del enlace, entre otros.
Figura 5.9. Interfaz Ethernet 10/100/1000 Mb/s [65].
5.3.11 USB 2.0 PHY
Al igual que en el caso anterior, la placa de desarrollo cuenta con un dispositivo que
implementa la capa física y la interfaz necesaria para una conexión de tipo USB 2.0. El circuito
integrado en cuestión es el NXP ISP1504A1, que proporciona una conexión de alta velocidad que
soporta tres modos, uno a 480Mbps, otro a 12Mbps y el último a 1.5Mbps. La Figura 5.10
muestra la conexión con la FPGA.
Figura 5.10. Interfaz USB 2.0 PHY [65].
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
91
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
5.3.12 Conector RS232
El transceptor RS232 es un circuito integrado MAX3221, que opera a 3.3V, e internamente
genera los voltajes necesarios para cumplir con el estándar de transmisión serie. Los dos canales
de datos (TXD y RXD) terminan en un conector tipo DB9. La Figura 5.11 ilustra la forma de
conectarse con la FPGA.
Figura 5.11. Interfaz RS232 [65].
5.3.13 USB RS232 UART Bridge
Al igual que en el caso anterior, la placa de desarrollo implementa otro transceptor RS232,
aunque en este caso es a través de un conector USB. El puente entre USB y RS232 lo
proporciona un circuito integrado Cypress CP2102. Este conector USB se utiliza para acceder a
la placa de desarrollo a través de un PC que no disponga de conexión serie estándar, utilizando
cualquier puerto USB, previa instalación de los drivers que vienen incluidos en el Kit.
5.3.14 Switches y LEDs
La placa de desarrollo cuenta también con cuatro botones tipo "push", ocho switches de
posición, y ocho leds discretos (sólo pueden estar encendidos o apagados). Estos dispositivos
pueden ser usados como elementos de propósito general, como botones de reset, conmutadores
de estado, y otras funciones similares.
5.3.15 Puerto de programación JTAG
Existen varias formas de configurar la FPGA de la placa de desarrollo. Entre ellas se
encuentran la programación JTAG, y la carga del fichero de configuración desde una memoria
PROM. Existen cinco dispositivos conectados en la cadena de bloques del conector JTAG, Las
memorias de configuración PROM XCF32P y XCF08, la FPGA Spartan-6 y los dos conectores
FMC. Dos jumpers situados en la cadena incluyen o excluyen los conectores FMC de la misma
(Figura 5.12).
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
92
5.3 Xilinx Spartan-6 LX150T Development Kit
Figura 5.12. Conector JTAG [65].
5.3.16 Buses I2C y otros dispositivos
La placa de desarrollo implementa dos buses I2C (Inter Integrated Circuit), cuyo objetivo es
establecer una conexión de baja velocidad y pocas líneas entre ciertos dispositivos de la placa.
Estos dispositivos pueden conectarse o desconectarse de los buses a través de una serie de
jumpers dispuestos como en la Figura 5.13.
El primer bus I2C interactúa con los dos conectores FMC, mientras que el segundo accede
a los dispositivos Real Time Clock, un sensor de temperatura y la interfaz para el LCD ALI (Avnet
LCD Interface).
Figura 5.13. Buses I2C [65].
5.3.16.1 Real-Time Clock
Es un dispositivo RTC (Real Time Clock) Maxim DS3232, compuesto por un oscilador de
cristal con compensación de temperatura (TXCO), junto a una memoria SRAM de 236 bytes
alimentada por una pequeña batería, donde se guardan los registros de configuración del
dispositivo.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
93
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
5.3.16.2 Sensor de temperatura
La placa de desarrollo cuenta con un dispositivo Maxim MAX7500 conectado al bus I2C,
que ejerce la función de sensor digital de temperatura, con un conversor analógico digital que
convierte los datos de temperatura con gran precisión.
5.3.16.3 ALI Interface (Avnet LCD Interface)
Existe en la placa una zona con 15 pines especialmente diseñada para conectar una
pantalla LCD. ALI es una interfaz desarrollada por el fabricante Avnet Electronics para conectar la
placa de desarrollo a una pantalla LCD del tipo "Avnet Display Kit".
Figura 5.14. Interfaz ALI [65].
En [73] se encuentra una guía de las especificaciones físicas de esta interfaz, así como una
lista de las pantallas LCD que soporta este tipo de conexiones.
5.3.17 Ubicación de componentes en la placa LX150T
En la siguiente figura se muestra la ubicación de los diferentes componentes vistos con
anterioridad, así como una lista de los jumpers de configuración, que se listarán a continuación.
Figura 5.15. Jumpers, componentes y conectores [65].
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
94
5.3 Xilinx Spartan-6 LX150T Development Kit
x JP2. Usado para seleccionar el modo de configuración de la FPGA.
x JP3. "Flash Write Protect Enable". Usado para proteger la memoria flash contra
escritura.
x JP8. Usado para configurar el voltaje de salida del banco 0 de la FPGA, que termina en
uno de los conectores FMC. Para señales diferenciales, se configura en 2.5V y para
señales simples se configura en 3.3V.
x JP1. Selecciona el número de pistas del conector PCI-Express que serán detectadas
(máximo 4x). Ideal para aplicaciones que necesiten un número menor de pistas.
x J4. Permite pull-ups en los pines de I/O de la Spartan-6 cuando se configura. Por
defecto está desactivado.
x J2. Cuando se conecta un módulo en el conector SFP, este jumper activa para que
pueda ser detectado y usado.
x JP4 y JP7. Estos dos jumpers actúan en conjunto, y permiten añadir o quitar los
conectores JX1 y JX2 a la cadena JTAG, para ser configurados.
x JP5 y JP6. Estos dos jumpers actúan en conjunto, y permiten añadir los conectores
JX1 y JX2 a un bus I2C global, o separarlos en un bus I2C independiente.
x SW1. Este Switch permite a la FPGA que se reconfigure nuevamente, según el método
indicado por JP2.
x SW12. Permite elegir el modo de alimentación de la placa, a través de un
transformador, o directamente a través de los pines PCI-Express.
x SW11. Switch de alimentación principal.
x SW7 y SW8. Reset principal del dispositivo atenuador de jitter ICS874003-05, y
configurador de la frecuencia de salida del dispositivo, respectivamente.
x SW9 y SW10. Controlan la frecuencia de salida del sintetizador LVDS CDM6100.
x SW2-SW5. Botones Push configurables a través de GPIO.
x SW6. Dip-switch de ocho posiciones que pueden ser leídos a través de GPIO. Por
defecto están a nivel bajo.
5.4 Tarjetas FMC-IMAGEOV y FMC-DVI
Estas dos tarjetas de expansión han sido diseñadas como plug-in adicionales, que se
conectan a los conectores FMC de la placa de desarrollo, aportando nuevas características a la
misma.
El módulo "Dual Image Sensor FMC", o FMC-IMAGEOV es una placa que proporciona dos
interfaces de vídeo compatibles con los sensores de imagen Omnivision OV7915. Entre sus
características se destacan [71]:
x
x
x
x
Dos interfaces para sensores de imagen Omnivision que pueden funcionar a la vez.
Conector HDMI, que proporciona una interfaz de salida DVI.
Sintetizador de reloj de vídeo.
Registros de configuración de periféricos (sintetizador de reloj, sensor de imagen, entre
otros).
x Pines de entrada/salida de propósito general.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
95
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
Figura 5.16. Módulo Dual Image Sensor FMC visto desde abajo y arriba [71].
El módulo DVI I/O FMC es otra tarjeta compatible con la interfaz FMC, que aporta las
siguientes características [69]:
x
x
x
x
x
Conector HDMI como interfaz de entrada de vídeo DVI.
Conector HDMI como interfaz de salida de vídeo DVI.
Interfaz de salida "DisplayPort".
Sintetizador de reloj de vídeo independiente.
Registros de configuración de periféricos (sintetizador de reloj, entradas y salidas DVI,
entre otros).
x Pines de entrada/salida de propósito general.
Figura 5.17. Módulo DVI I/O FMC [69]
5.5 Sensor de imagen OMNIVISION OV9715 720p
El sensor de imagen Omnivision OV9715 está diseñado específicamente para aplicaciones
avanzadas de imagen en automoción. Su gran campo de visión y su alta resolución lo hace un
elemento ideal para trabajar en sistemas de visión de 360 grados, en sensores de ayuda al
aparcamiento o sistemas de aviso en carretera, entre otros.
Este sensor de imagen es capaz de trabajar con condiciones de luz mínimas, y sus 3300
mV/lux-seg permite imágenes reales en prácticamente cualquier condición de iluminación [68].
Además, el sensor es altamente configurable, pudiéndose trabajar en diferentes resoluciones y
fotogramas por segundo, y teniendo total control sobre el formato de salida y la transferencia de
datos. Este sensor es capaz de trabajar a una resolución de 1280x720 píxeles a 30 fotogramas
por segundo, pudiendo llegar a 60 fotogramas por segundo para una resolución VGA.
Por último, destacar que el sensor de imagen Omnivision OV8715 cumple con las estrictas
especificaciones del AEC (Automotive Electronics Council).
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
96
5.6 Sistema completo
Figura 5.18. Omnivision OV9715 [68].
5.6 Sistema completo
La placa de desarrollo Spartan-6 LX150T PCI Express Development Kit, junto todos los
demás elementos descritos anteriormente, se muestran ensamblados y montados sobre una
base de metacrilato, tal y como se aprecia en la Figura 5.19.
El sensor de imagen Omnivision se monta sobre un poste flexible, que permite a la cámara
mantenerse en cualquier posición. Junto a ella, se encuentran las dos placas de expansión,
situadas en los conectores FMC de la placa de desarrollo. El Kit también incluye un programador
JTAG, drivers para la conexión RS232-USB con el PC, y un cable de alimentación, formando en
su conjunto el sistema de visión Xilinx® Spartan®-6 FPGA Industrial Video Processing Kit.
Figura 5.19. El sistema de visión completo montado.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
97
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
5.7 Repositorio de IP-Cores incluidos
El sistema de desarrollo Xilinx® Spartan®-6 FPGA Industrial Video Processing Kit trae
un repositorio de PCOREs incluidos (También llamados IP-Cores o simplemente periféricos),
para los diseños de referencia y para su implementación en cualquier aplicación. Estos PCOREs
se listan a continuación [75].
PCORE
Nombre
Versión
Descripción
PCOREs Específicos del sistema Xilinx® Spartan®-6 FPGA IVK
1.01a
Controlador de la interfaz Avnet LCD
Interface, para pantallas LCD compatibles.
fmc_imageov_camera_in
IMAGEOV
Camara IN
1.02a
Bloque que recibe la fuente de vídeo de un
sensor de imagen conectado en la tarjeta
FMC IMAGEOV y lo convierte en un bus de
vídeo XSVI.
fmc_imageov_dvi_out
IMAGEOV DVI
OUT
1.02.c
Bloque que transforma una señal de vídeo
desde el bus XSVI y la saca por la salida de
vídeo DVI de la tarjeta FMC IMAGEOV.
ali_controller
Controlador
Interfaz ALI
fmc_dvidp_dvi_in
FMC DVI IN
1.02a
Recibe la fuente de vídeo de una cámara
digital por el conector DVI de la tarjeta FMC
DVI y genera un flujo de vídeo por el bus
XSVI.
fmc_dvidp_dvi_out
FMC DVI OUT
1.02.c
Bloque que transforma una señal de vídeo
desde el bus XSVI y la saca por la salida de
vídeo DVI de la tarjeta FMC DVI.
ivk_video_det
Video Detect
2.01.a
Provee una serie de mecanismos para
detectar la resolución de vídeo entrante.
ivk_video_gen
Video Generate
2.01.a
Genera señales de sincronismo para varias
resoluciones de vídeo.
PCOREs creados con System Generator
sg_spc_s6_plbw
Stuck Pixel
Correction
3.01a
Implementa un algoritmo de corrección de
píxeles atascados.
sg_bc_s6_plbw
Brightness /
Contrast
3.01a
Modifica el brillo y el contraste de una fuente
de vídeo que llega por un bus XSVI.
sg_cfa_s6_plbw
Color filter array
interpolation
3.01b
Implementa un algoritmo de tipo CFA en una
fuente de vídeo que llega por un bus XSVI.
sg_cc_s6_plbw
Color Correction
3.01b
Modifica las componentes de color de una
fuente de vídeo que llega por un bus XSVI.
sg_stats_s6_plbw
Statistics
3.01b
Provee numerosas estadísticas relacionadas
con la imagen.
sg_gamma_s6_plbw
Gamma
Correction
3.01c
Implementa un algoritmo de corrección
gamma sobre una fuente de vídeo que llega
por un bus XSVI.
PCOREs adquiridos desde el repositorio Xilinx Video IP
vdma
Video DMA
1.00a
Controlador de acceso directo a memoria
(DMA) para un frame buffer situado en una
RAM externa.
Tabla 5.2. PCOREs incluidos en el repositorio del sistema Xilinx® Spartan®-6 FPGA IVK [75]
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
98
5.8 Diagrama de bloques general
5.8 Diagrama de bloques general
El sistema de desarrollo Xilinx® Spartan®-6 FPGA Industrial Video Processing Kit trae
varios diseños de referencia que hacen uso de las características más destacadas del Kit.
Todos los diseños de referencia comparten una estructura general, donde se establecen
algunos periféricos principales controlados por Microblaze. Esta estructura general consta de
elementos como:
x
x
x
x
x
x
Procesador Microblaze.
Buses de memoria y datos.
Controlador de memoria.
Controlador de conexión UART.
Controladores de LEDs, Switches y pulsadores.
Controladores de bus I2C.
El objetivo de este bloque común es crear un entorno base para el desarrollo de los
sistemas de visión, proporcionando un método de conexión de los bloques PCORE a los buses
de Microblaze. De esta forma se podrá usar el procesador para rutinas tales como:
x Tareas de diagnóstico.
x Recepción de mensajes de información de los bloques hardware.
x Adquisición de información sobre la transferencia de datos desde las tarjetas de
expansión.
x Configuración de parámetros y registros de los bloques.
x Carga de coeficientes en los filtros.
x Reset por software.
x Recopilación de estadísticas del sistema.
x Envío de mensajes a un PC a través del puerto UART.
x Recepción de órdenes enviadas desde un PC y ejecución de las mismas.
Figura 5.20. Partes comunes y específicas de los diseños de referencia (figura derivada de [75]).
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
99
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
La parte superior de la Figura 5.20 muestra un diagrama de bloques general de cualquier
sistema de visión. Nótese que la estructura común descrita anteriormente no tiene como objetivo
realizar ningún procesado de la señal de vídeo, ya que su funcionamiento es por software, y por
lo tanto carece de sentido utilizarlo para esta tarea.
El procesamiento real del sistema de visión se encuentra en la estructura específica,
también ilustrada en la Figura 5.20. Esta estructura específica será la encargada de recibir los
datos de vídeo en tiempo real y realizar el tratamiento necesario para la aplicación en cuestión, a
través de los periféricos, algunos de los cuales están descritos en la Tabla 5.2.
En los diseños de referencia que se verán en el siguiente apartado, se ha obviado la
estructura común sin pérdida de generalidad, para hacer más legibles las figuras y entender más
fácilmente las características de cada uno de ellos. Sin embargo, no hay que olvidar que lo que
se muestra es sólo una parte del sistema, y la estructura común sigue presente en todos los
diseños.
5.9 Diseños de referencia
En este apartado se verán los diseños de referencia de visión incluidos en el sistema de
desarrollo Xilinx® Spartan®-6 FPGA Industrial Video Processing Kit. Existen otros diseños de
referencia que hacen uso de otras capacidades de la Placa de desarrollo, implementando
sistemas Ethernet, capas TCP/IP, conversores DA/AC, o que hacen uso de la interfaz PCIExpress; sin embargo, el estudio de estos diseños de referencia queda fuera del alcance de este
Proyecto Fin de Carrera, que se centra en los sistemas de visión. Los diseños de referencia
completos pueden descargarse de [76] y [77], previo registro. A continuación se listan los diseños
de referencia incluidos como ejemplos base para un sistema de visión [75].
x Procesamiento de vídeo con entrada DVI.
x Procesamiento de vídeo con entrada DVI y frame buffer.
x Procesamiento de vídeo con entrada sensor de imagen y frame buffer.
En los sucesivos apartados se hará una breve descripción de la funcionalidad de cada uno
de estos sistemas de referencia. Téngase en cuenta que, tal y como se mencionó anteriormente,
los diagramas de bloques que se mostrarán a continuación sólo corresponden con la estructura
específica de cada sistema. La estructura común no aparecerá en las figuras, pero no debe
olvidarse que está presente en cada uno de los diseños.
Una característica común a todos los diseños de referencia es que, gracias a las tarjetas de
expansión FMC y su capacidad para generar múltiples señales de sincronismo y reloj, el sistema
admite varios tipos de resolución de vídeo, tal y como se muestra en la siguiente tabla.
Resolución
Frecuencia de referencia
(reloj de píxel)
Dimensiones del fotograma
VGA
25.125 MHz
640 x 480
SVGA
27.000 MHz
800 x 600
XGA
40.000 MHz
1024 x 768
720p
74.250 MHz
1280 x 720
Tabla 5.3. Resoluciones de vídeo admitidas por los diseños de referencia.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
100
5.9 Diseños de referencia
Otra característica común a todos los diseños de referencia es la capacidad de configurar
aspectos de la cadena de procesado a través de un PC. Para ello, Microblaze usa el puerto
UART de comunicaciones de la placa, para conectarse a un PC que use la aplicación
Hyperterminal, tal y como se aprecia en la Figura 5.21.
Figura 5.21. Mensajes de información del sistema enviados a Hyperterminal.
5.9.1 Procesamiento de vídeo con entrada DVI
Este diseño de referencia tiene como objetivo mostrar las siguientes características.
x
x
x
x
Captura de vídeo desde una fuente DVI.
Realizar tareas de procesamiento de vídeo en tiempo real.
Mostrar el vídeo procesado por pantalla.
Usar Microblaze para las siguientes tareas:
ƒ Iniciar los periféricos del sistema.
ƒ Comunicación con un PC a través de Hyperterminal.
ƒ Configurar varios aspectos de la cadena de procesado.
La Figura 5.22 muestra el diagrama de bloques de este diseño, que incluye dos PCOREs
de transformación de gamma [78] y un filtro FIR 5x5 con coeficientes configurables.
Figura 5.22. Diagrama de bloques del diseño de referencia base con entrada DVI [75].
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
101
Capítulo 5. El sistema de visión Xilinx Spartan-6 IVK
Este sistema se conecta con un PC a través de Microblaze, usando para ello el puerto
UART de la placa de desarrollo. Usando Hyperterminal en el PC, se pueden configurar los
coeficientes del filtro FIR, así como otros parámetros de interés.
5.9.2 Procesamiento de vídeo con entrada DVI y frame buffer
Este diseño ilustra las siguientes capacidades del sistema:
x
x
x
x
Captura de vídeo desde una fuente DVI.
Realizar un buffer del vídeo en la memoria DDR3 externa.
Mostrar por pantalla el vídeo desde el buffer.
Usar Microblaze para las siguientes tareas:
ƒ Iniciar los periféricos del sistema.
ƒ Comunicación con un PC a través de Hyperterminal.
ƒ Configurar varios aspectos de la cadena de procesado.
La Figura 5.23 muestra el diagrama de bloques de este diseño, en el que se han añadido
dos PCOREs DMA [79] que controlan el frame buffer, junto al MPMC (Multy-Port Memory
Controller) [80]. El PCORE "Video DMA" posee una licencia gratuita que permite su prueba en
hardware, y tiene como restricción el cese de su funcionamiento tras un periodo de tiempo
determinado. La licencia completa de este IP se puede adquirir desde [64].
Figura 5.22. Diagrama de bloques del diseño de referencia con entrada DVI y frame buffer [75].
5.9.3 Procesamiento de vídeo con sensor de imagen
Este diseño ilustra las siguientes capacidades del sistema:
x Captura de un stream de vídeo desde el sensor de imagen.
x Realización de una cadena de procesamiento consistente en:
ƒ SPC. Stuck Pixel Correction.
ƒ BC. Brillo y contraste
ƒ CFA. Interpolación Color Filter Array.
ƒ CC. Corrección de color.
ƒ STATS. Estadísticas de la imagen.
ƒ GAMMA. Corrección gamma.
x Realizar un buffer del vídeo en la memoria DDR3 externa.
x Mostrar el vídeo resultante en una pantalla, a diferente frame rate.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
102
5.9 Diseños de referencia
x Usar Microblaze para las siguientes tareas:
ƒ Iniciar los periféricos del sistema.
ƒ Comunicación con un PC a través de Hyperterminal.
ƒ Configurar varios aspectos de la cadena de procesado.
La Figura 5.24 muestra el diagrama de bloques de este diseño, en el cual se ha
conectado el sensor de imagen Omnivision OV9715 [68] a la tarjeta de expansión FMCIMAGEOV [71].
Figura 5.23. Diagrama de bloques del diseño de referencia con sensor de imagen y frame buffer [75].
El bloque "Camera Imput" provee los codecs necesarios para decodificar el formato
BT656 del sensor y generar las señales de sincronismo de vídeo para adaptarlo a las
especificaciones del bus XSVI. El bloque "Video Detect" no altera en ninguna forma el vídeo, sino
que provee un mecanismo que detecta la resolución de la ventana activa de vídeo (píxeles de
información sin contar los espacios de blanking, para posteriormente hacer uso del PCORE Video
DMA que guardará el fotograma en una memoria externa.
Este diseño de referencia acepta resoluciones de entrada de hasta 1280x720 a 30 f.p.s.,
mientras que reproduce con una resolución de 1280x720 a 60 f.p.s. Estos parámetros pueden ser
configurados a través de Microblaze, y modificados para admitir otras resoluciones, siempre y
cuando el sensor las soporte.
PROYECTO FIN DE CARRERA. NICOLÁS AGUIRRE DOBERNACK
103
Descargar