Universidad Autónoma de Nuevo León
Facultad de Ingeniería Mecánica Eléctrica
• Actividad #4
Nombres y Matriculas. –
Juan Carlos Mendoza Martínez 1749813
Materia. - reconocimiento de patrones
Día. – jueves
Hora. – V1-V3
Catedrático. - ALFREDO ROMERO BALBOA
Objetivos El objetivo principal del proyecto es el desarrollo de una plataforma
hardware de adquisición de vídeo para su procesamiento en sistemas basados
en dispositivos FPGA. En particular, la entrada de vídeo al sistema es un
módulo con salida digital basado en el sensor OV7670 de OmniVision. La
plataforma debe ser capaz de adquirir y almacenar vídeo procedente de este
módulo, y posibilitar la configuración del mismo. El sistema será controlado por
una FPGA, que gestionará la configuración de la cámara, el manejo de los
datos recibidos y la visualización de las imágenes. La FPGA escogida para
abordar el proyecto es la ZedBoard SoC Zynq XC7X020-1CLG484, fabricada
por la empresa americana Xilinx. El diseño de la plataforma se abordará
dividiéndolo en módulos con una función concreta, aprovechando la
programación estructural que ofrece VHDL, y, una vez que cada uno de ellos
quede diseñado y programado, se interconectarán para que trabajen
simultáneamente. Las fases del proyecto son las siguientes: 1. Familiarización
con la arquitectura de los dispositivos SoC Zynq y las características de la
placa de desarrollo ZedBoard. 2. Diseño de módulo hardware para la
adquisición de imágenes del sensor OV7670. 3. Diseño de módulo hardware
para la visualización de las imágenes en un monitor 4. Diseño de un
controlador de bus SCCB para la gestión de la configuración del sensor. 5.
Desarrollo de un prototipo de la plataforma de procesamiento de video
diseñada. Una vez completada la plataforma, se testeará su funcionamiento en
la FPGA, y se realizarán distintas pruebas para conocer las posibilidades que
ofrece el sensor de imagen al trabajar con distintas configuraciones. Durante
todo el proyecto se utilizarán varias herramientas que ofrece Xilinx para el
desarrollo de aplicaciones en sus dispositivos, como el simulador ISim para
testear el funcionamiento de un módulo antes de incorporarlo a la plataforma
final, la herramienta IP ChipScope™ para monitorizar señales internas sin la
necesidad de un osciloscopio o la utilidad Xilinx CORE Generator™ System
para el diseño de componentes predefinidos por Xilinx configurables por el
usuario. 1.2 VHDL El lenguaje VHDL (VHSIC – Hardware Description
Language) es un lenguaje de descripción hardware concebido con el fin de
diseñar una herramienta estándar e independiente para el modelado,
documentación y simulación de los sistemas electrónicos digitales, placas de
circuito y componentes, durante todas las fases de su diseño. La primera
revisión, desarrollada por IBM y Texas Instruments vio la luz en 1985.
Posteriormente, conscientes de su enorme potencial, la IEEE Computer Society
decidió adoptarlo y estandarizarlo. Dos versiones se han desarrollado desde
entonces por este organismo, bajo las referencias 1076-87 y 1076-93, ésta
última incorporando algunas mejoras con respecto a la versión anterior.
Introducción 2 VHDL mejoraba los lenguajes de descripción hardware sencillos,
tipo netlist, que se utilizaban ya en las herramientas de simulación de los
entornos CAD para diseño electrónico. Estos lenguajes es que eran capaces
de describir un sistema únicamente de forma estructural, y no de forma
comportamental, lo que los limitaba a lo hora de diseñar proyectos de cierta
envergadura. En cambio, VHDL posee una amplia sintaxis que permite el
modelado de circuitos a partir de diferentes niveles de abstracción: descripción
estructural o de interconexionado de elementos; descripción arquitectural, a
nivel de transferencia de registros; y descripción funcional o comportamental,
que describe el comportamiento esperado del circuito. Basándonos en esta
dualidad estructural/comportamental que nos ofrece VHDL desarrollaremos
todo el proyecto, combinando las ventajas de cada una para abordar cada
parte. De esta forma, concebimos el proyecto como una serie de módulos
interconectados, apoyándonos en la descripción estructural, dónde cada uno
de ellos se implementa independientemente, aprovechando la descripción
comportamental. 1.3 La plataforma ZedBoard En el mercado hay un amplio
rango de ofertas de FPGAs, como Artix, Virtex, Spartan o Zynq, entre otras. Sin
embargo, ZedBoard ha sido la elegida para este proyecto, concretamente el
modelo que monta un SoC Zynq XC7X020-1CLG484, fabricada por la empresa
americana Xilinx. Las razones para escoger esta ZedBoard en lugar de
cualquiera de las demás son: los diferentes tipos de memoria que ofrece, el
procesador ARM Cortex-A9 de doble núcleo que incorpora, la interfaz para
conectar una amplia variedad de periféricos y su arquitectura SoC. 1.3.1 Tipos
de memoria El modelo de ZedBoard utilizado incluye distintos tipos de
memorias, como los 512MB de memoria RAM DDR3, 256MB de memoria flash,
560 KB de Block RAM y un slot para tarjeta SD. Esto da la flexibilidad de
almacenar sistemas de reducido tamaño en la memoria flash, con las ventajas
que ofrece este tipo de memoria, al mismo que permite almacenar sistemas
más grandes en la memoria SD, por ejemplo un sistema operativo como Linux.
1.3.2 Microprocesador ARM Cortex-A9 de doble núcleo Los microprocesadores
ARM cuentan con una arquitectura RISC (Reduced Instruction Set Computer)
de 32 bits desarrollada por la empresa ARM Holdings. Su simplicidad los hace
ideales para aplicaciones de baja potencia, lo que ha hecho que estén
presentes es la mayoría de dispositivos inteligentes de hoy en día, como
smartphones, tablets, videoconsolas o smart TVs, entre otros. Por tanto,
familiarizarse con este tipo de microprocesadores es muy recomendable por el
gran mercado que tienen. Además, el ARM Cortex-A9 que incluye esta
ZedBoard cuenta con dos núcleos capaces de llegar a una frecuencia de 1
GHz, por lo que no habrá en ningún momento falta de potencia de procesado.
1.3.3 Interfaces Otro aspecto muy importante es el amplio rango de dispositivos
que se pueden conectar a la ZedBoard, tales como monitores, a través de las
salidas VGA y HDMI; dispositivos USB, por el puerto USB OTG 2.0; conexión
Ethernet de hasta 1Gbps; o micrófonos y altavoces, por las conexiones mini-
Jack de 3.5 mm. Además, aparte de estas interfaces ampliamente conocidas,
cuenta con una serie de conectores PMOD y FMC que hacen de la ZedBoard
una FPGA muy versátil, pudiendo conectar multitud de dispositivos que no son
compatibles con las interfaces típicas. Un ejemplo claro Introducción 3 de esto
es el sensor que empleamos en este proyecto, que conectaremos a través de
la interfaz FMC con una placa extensora, como veremos más adelante. 1.3.4
Arquitectura SoC La ZedBoard es una placa de desarrollo basada en el Xilinx
Zynq-7000 All Programmable SoC (System-on-a-chip), lo que hace que puede
ser empleada para multitud de aplicaciones. Por tanto, no es sólo una FPGA,
es también un SoC totalmente programable, ya que combina el sistema de
procesado (PS), que incluye el microprocesador ARM, con la parte de lógica
programable (PL), que incluye a todos los periféricos, como vemos en la Figura
1. Esto hace que pueda trabajar a una velocidad más alta y con unas
dimensiones más reducidas que una FPGA tradicional. En concreto, la
ZedBoard combina el microprocesador Cortex-A9 con 85.000 celdas de lógica
programable de la serie 7 de Xilinx
En este capítulo haremos un repaso de las herramientas de Xilinx que
utilizaremos para
trabajar con la ZedBoard y desarrollar el proyecto.
1.4.1 ISE® Design Suite
La herramienta ISE® Design Suite es el entorno de diseño que ofrece Xilinx al
programador para trabajar con cualquier dispositivo de la familia Zynq-7000,
permitiendo el
acceso a todas las funciones y herramientas adicionales para programar estas
FPGAs. Durante
todo este proyecto emplearemos la versión 14.4, que permite trabajar con los
SoC Z-7010, Z7020, y Z-7030.
1.4.2 Xilinx CORE Generator™ System (LogiCore)
Xilinx CORE Generator™ System es una funcionalidad incluida en el pack
ISE® Design
Suite facilita en gran medida el diseño de componentes usados con frecuencia
pero que
requieren mucho tiempo para su programación. Para ello Xilinx ofrece
componentes
predefinidos, denominados Intellectual Properties (IP), para FPGAs
configurables por el
usuario. Estos IPs abarcan un rango muy amplio de aplicaciones, siendo los
más comunes
bloques de memoria, FIFOs o filtros y adaptadores. Usar estos IPs puede
ahorrar días o
incluso meses de tiempo de diseño, haciendo que un determinado proyecto
pueda salir antes
al mercado.
1.4.3 ISE® Simulator (ISim)
ISim es un completo simulador HDL integrado en el pack ISE. La simulación
HDL puede
ser un paso fundamental en el diseño de cualquier proyecto, pudiendo testear
el
funcionamiento de cualquier módulo programado antes de aplicarlo sobre la
plataforma real.
Introducción
5
Por este motivo, ISim se convierte en una herramienta básica la trabajar con la
programación
de FPGAs.
1.4.4 IP ChipScope™
El analizador lógico integrado, Integrated Logic Analyzer (ILA) en inglés, que
emplea la
herramienta IP ChipScope™ es un analizador configurable que puede ser
usado para
monitorizar cualquier señal interna del diseño. El núcleo del ILA incluye
funcionalidades
avanzadas de lógica moderna, pudiendo habilitar distintas señales de disparo e
incluyendo la
opción de añadir expresiones booleanas como disparo. También permite
configurar la
cantidad de muestras adquiridas en cada captura. Debido a que el núcleo del
ILA es síncrono
con el diseño que está siendo monitorizado, todas las restricciones de reloj que
sean
aplicadas al diseño son también aplicadas a los componentes dentro del ILA.