GUÍA PARA PROGRAMACIÓN DE FPGAS

Documentos relacionados
Tema 1: Microelectrónica. Técnicas de implementación de CID

METODOLOGÍA PARA EL APRENDIZAJE DE SISTEMAS ELECTRÓNICOS DIGITALES Y SU DISEÑO

FPGAs. Susana Borromeo Área de Tecnología Electrónica. Diseño de Sistemas Electrónicos. 2014/2015. Metodología de Diseño. Características generales

PLANIFICACIÓN DOCENTE DISEÑO Y SIMULACIÓN DE CIRCUITOS ELECTRÓNICOS ASISTIDO POR COMPUTADOR

Introducción a los Dispositivos Lógicos Programables (FPGAs) Guillermo Güichal

FPGA FIELD PROGRAMMABLE GATE ARRAY

Introducción a los Dispositivos Lógicos Programables (FPGAs) Guillermo Güichal

Introducción al Diseño Digital con FPGAs.

Introducción a VHDL. Sistemas digitales UTM-2006 JJVS

Dispositivos Lógicos Programables

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA ELECTRÓNICA

CAPÍTULO II: DISPOSITIVOS LÓGICOS PROGRAMABLES DISPOSITIVOS LÓGICOS PROGRAMABLES IEC FRANCISCO JAVIER TORRES VALLE

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL

Introducción a los dispositivos de lógica programable en campo (FPGA) Laboratorio de diseño digital

Estructura interna de una memoria RAM estática

Estructura interna de una memoria RAM estática

Lógica Estándar. Compuertas lógicas, flip flop, decodificadores, disponibles en chips SSI y MSI. No son una buena solución de diseños grandes.

Asignaturas antecedentes y subsecuentes Diseño de Sistemas Digitales II

UNIDADES TECNOLÓGICAS DE SANTANDER PROGRAMA DE ASIGNATURA

BLOQUE 2 (PARTE 2) DISPOSITIVOS LÓGICOS PROGRAMABLES

METODOLOGIA DE DISEÑO DE CIRCUITOS INTEGRADOS DIGITALES

Diseño de Sistemas Electrónicos

UNIDAD 1. INTRODUCCIÓN A LOS DISPOSITIVOS LÓGICOS PROGRAMABLES (PLDs)

Programa de Asignatura

AUTOTEST. 1. Una magnitud que toma valores continuos es: (a) una magnitud digital (c) un número binario 2. El término bit significa:

Objetivos. Instituto Tecnológico de Costa Rica Escuela de Ingeniería Electrónica I SEMESTRE Contenido del Curso EL FLUJO DE DISEÑO O DIGITAL

Dra. Adriana del Carmen Téllez Anguiano DISPOSITIVOS LÓGICOS PROGRAMABLES (PLD)

INTRODUCCIÓN A LOS CIRCUITOS INTEGRADOS

GUÍA DOCENTE ELECTRÓNICA DIGITAL GRADO EN INGENIERÍA ELECTRÓNICA INDUSTRIAL Y AUTOMÁTICA

Tema 2: Memorias y Dispositivos Lógicos Programables

Lenguajes de Descripción de Hardware

1. INTRODUCCIÓN A LOS CIRCUITOS DIGITALES PROGRAMABLES

Electrónica Digital. Tema 2. Dispositivos Lógicos Programables (PLD)

TEMA 0: Introducción: Aspectos Tecnológicos y Metodológicos del diseño de sistemas

Lógica Programable -Introducción - Introducción n a los Sistemas Lógicos y Digitales 2008

Cuerpo de Profesores Técnicos de Formación Profesional

PROGRAMA DE LA ASIGNATURA: SISTEMAS ELECTRÓNICOS DIGITALES

Dispositivos lógicos programables (PLDs(

ARQUITECTURAS ESPECIALES

METODOLOGIAS DE DISEÑO PARA COMPUTACIÓN RECONFIGURABLE.

4.1. Circuitos Digitales Configurables

PRE: Electrónica y Laboratorio PRE: Matemática Discreta COR: Espacio de Laboratorio de Lógica Digital

TECNOLOGIA. R = (Vcc Vd) / I (Vd: caida en el LED) INTENSIDAD LUMINICA: SE MIDE EN CANDELA (Cd)

Diseño de Sistemas Digitales Utilizando FPGA

FIELD PROGRAMMABLE GATE ARRAY (FPGA)

XILINX XC2S50. Joaquín Olivares

Curso: Programación de FPGAs con VHDL (teórico-práctico)

Estudio del impacto de implementaciones de operadores aritméticos en dispositivos lógicos programables FPGA

ELECTRONICA DIGITAL. Guía de Aprendizaje Información al estudiante. Electrónica Digital. M5. Electrónica. Ingeniería Electrónica.

Curso: Programación de FPGAs con VHDL (teórico-práctico)

Sistemas Digitales Trabajo Práctico 2. Voltímetro digital con salida VGA

XVI. utilizarlos de la forma más eficiente posible en el diseño de sistemas digitales.

EDIG. Electrónica Digital

Bloques funcionales combinacionales. Bloques para el encaminamiento y/o transferencia de datos

PRE: Electrónica y Laboratorio PRE: Matemática Discreta COR: Espacio de Laboratorio de Lógica Digital

Dispositivos de lógica programable

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE DISPOSITIVOS DIGITALES

Lógica Programable - Dispositivos - Introducción n a los Sistemas Lógicos y Digitales 2008

Transcripción:

GUÍA PARA PROGRAMACIÓN DE FPGAS Joaquín Olivares, Gustavo Minnucci, C. Diego Moreno, Fco. Javier Quiles, J. Ignacio Benavides Escuela Politécnica Superior de la Universidad de Córdoba olivares@uco.es 1. RESUMEN Se ha realizado un manual de prácticas para alumnos de segundo ciclo de Ingeniero en Automática y Electrónica Industrial para la asignatura de Sistemas Electrónicos Digitales, con el objeto de facilitar y servir de orientación en el proceso de programación bajo el Lenguaje de Descripción Hardware VHDL, de simulación y síntesis de circuitos digitales sobre FPGAs, para ello se mostrarán aspectos relevantes como la estructura de una FPGA y las características relevantes de VHDL y del entorno de Xilinx. 2. INTRODUCCIÓN Si pensamos en la complejidad que ya de por si conllevan el diseño, la programación y la simulación en el proceso del Diseño Digital, sumado a la complejidad, ya no sólo para realizar el proceso de síntesis sobre un dispositivo sino también para comprender y utilizar las herramientas existentes para síntesis, que presentan áridos y extensos libros de soporte, es comprensible que frecuentemente no se cubran los aspectos referentes a la síntesis e implementación práctica en las asignaturas troncales referentes a esta materia, por carestía de tiempo. El presente manual de prácticas se constituye en una guía precisa que contempla los diversos procesos necesarios para el diseño, programación e implementación de circuitos digitales en estos dispositivos. En especial explotaremos las posibilidades de la FPGA Xilinx XC4005-XL y de todos sus componentes, mostrando ejemplos completos y proponiendo ejercicios en los que el alumno podrá dar utilidad a circuitos digitales genéricos para aplicaciones particulares. La idea del proyecto es que el alumno culmine el proceso de diseño, programación y simulación de los circuitos digitales con el proceso de utilización de herramientas de síntesis, la implementación y por último la verificación de un dispositivo real sin necesitar demasiado tiempo para familiarizarse con los complejos entornos de síntesis. 3. CARACTERÍSTICAS DEL LENGUAJE DE DESCRIPCIÓN HARDWARE VHDL En este apartado se da una introducción y revisión de las principales características y limitaciones del lenguaje. Los puntos principales incluidos en el manual se presentan a continuación, algunos de los cuales comentados: [2] [3] 3.1. Estándar del lenguaje IEEE std1076-1993.

3.2. Concurrencia El comportamiento de un sistema Digital viene dado en función de sus componentes y de la interconexión física de los mismos, por tanto, este lenguaje debe permitir simular dichos componentes y las conexiones entre los mismos, apareciendo los conceptos de entidad, arquitectura y señal. w<= not a; x <= a and b; y <= c and w; z <= x or y; Tabla 1. a) Diseño VHDL b) Instrucciones VHDL En la tabla 1 se muestra un circuito y su representación concurrente en lenguaje VHDL. 3.3. Secuencialidad Para procesos complejos que la mente humana no es capaz de discurrir concurrentemente, podemos crear bloques que se evalúen secuencialmente, aparecen los conceptos de process y variable. 3.4. Modularidad Podemos crear componentes con una funcionalidad y parámetros definidos que pueden ser reutilizados en posteriores diseños. 3.5. Limitaciones El lenguaje proporciona una funcionalidad amplia, dado que es un lenguaje compatible entre diferentes herramientas de CAD y portable entre distintos Dispositivos Electrónicos programables, por tanto no todas las operaciones que permita un simulador de VHDL son implementables en todas las herramientas CAD ni en todos los Dispositivos. 3.6. Otras características relevantes También se afrontan otros aspectos como la estructura sintáctica, tipo de los datos, jerarquía, compatibilidad, portabilidad, documentación, temporización, COREs, etc. 4. DISPOSITIVOS DE LÓGICA PROGRAMABLE PLA, GAL, PAL, CPLD, FPGA. El uso de dispositivos lógicos programables se ha difundido entre los diseñadores de hardware debido a las múltiples ventajas que estos poseen,

algunas de ellas son que permiten reemplazar a gran cantidad de componentes discretos, admiten reprogramación y permiten un diseño relativamente simple, en la figura 1 se muestra la estructura general de un dispositivo de lógica programable. [1] Entradas Salidas In 0 In 1 In 2 In n Función de entrada Matriz AND Matriz OR Función de salida Q 0 Q 1 Q 2 Q p Realimentación Estructura básica Figura 1. Estructura general de un PLD 4.1. FPGA (Field Programmable Gate Array) Las FPGA son Matrices de Puertas Programables en Campo. Simplemente son matrices de puertas eléctricamente programables que contienen múltiples niveles de lógica. Las FPGA se caracterizan por altas densidades de puerta, alto rendimiento, un número grande de entradas y salidas definibles por el usuario, un esquema de interconexión flexible, y un entorno de diseño similar al de matriz de puertas. No están limitadas a la típica matriz AND-OR. Por contra, contienen una matriz interna configurable de relojes lógicos (CLBs) y un anillo de circunvalación de bloques de entrada/salida (IOBs). Cada CLB contiene lógica programable combinacional y registros de almacenamiento. La sección de lógica combinacional es capaz de implementar cualquier función booleana de sus variables de entrada. Cada IOB puede programarse independientemente para ser una entrada, y salida con control tri-estado o un pin bidireccional. También contiene flip-flops que pueden usarse como buffers de entrada y salida. Los recursos de interconexión son una red de líneas que corren horizontalmente y verticalmente las filas y columnas entre el CLBS. Los interruptores programables conectan las entradas y salidas de IOBS y CLBS a líneas cercanas. Las líneas largas recorren la anchura o longitud entera del dispositivo, estableciendo intercambios para proporcionar una distribución de señales críticas con la mínima demora o distorsión. Los diseñadores que usan FPGAs pueden definir funciones lógicas en un circuito y revisar estas funciones como sea necesario. Así, las FPGAs pueden diseñarse y verificarse en unos días, a diferencia de las varias semanas necesarias para las matrices de puerta programables.

4.2. Estructura de una FPGA En realidad, la estructura interna, ver figura 2, de una FPGA depende de su tipo y fabricante. En este apartado se intenta mostrar un esquema genérico para las FPGA s a utilizar en las prácticas sucesivas. Los datos provistos por el fabricante son una herramienta insustituible a la hora de evaluar la arquitectura interna del dispositivo y su funcionamiento, por lo que resulta conveniente su lectura. [8] A continuación, se verán algunas características de la familia Xilinx XC4000, las cuales presentan tres tipos de componentes diferenciados en su interior: CLB, IOB y red de Interconexión. Figura 2. Estructura interna de una FPGA 4.2.1. CLB (Bloques lógicos configurables) Los CLB son los ladrillos básicos de la FPGA. Se encuentran distribuidos uniformemente por toda el área de la misma y son idénticos entre sí. Dependiendo del tipo de FPGA, ver figura 3, estos bloques lógicos poseen distintos componentes. Los CLBs son configurables, estableciéndose en ellos las conexiones y funciones que se implementarán. Figura 3. Estructura interna de un CLB de una FPGA de la familia XC4000 de Xilinx

4.2.2. IOB (bloques de entrada/salida) Los IOB son una especie de CLB especializado, que se encuentran junto a los pines de conexión externa al chip. En la figura 4 se muestra la estructura interna de un IOB. Su función es interconectar la lógica interna con el exterior permitiendo definir distintas características eléctricas como: ser dirección de datos del pin (Entrada / Salida), Configuración en estado de reposo (Pull Down / Pull Up), tipo de IO (combinacional o registrada), etc. Figura 4. Estructura interna de un IOB de una FPGA de la familia XC4000 de Xilinx 4.2.3. Red de Interconexión La Red de Interconexión, mostrada en la figura 5, es un conjunto de caminos formados por Wires (líneas de conexión) y PSM (Programmable Switch Matrix o matrices de interconexión - magic boxes). Éstas últimas permiten la conexión de distintos Bloques Lógicos Programables (CLB's) entre sí y/o la conexión con Bloques de Entrada/Salida (IOB's). Figura 5. Estructura interna de la Red de Interconexión de una FPGA de la familia XC4000 de XIlinx Todas las funciones lógicas, multiplexores, decodificadores, biestables, memorias, etc, se implementan utilizando los componentes internos de los CLB's. Cuanto mayor es el circuito a diseñar, mayor será la cantidad de CLB's necesaria para implementarlo. El funcionamiento de los distintos IOBs, CLBs y Redes de Interconexión queda determinado por un Bitstream ( ó tira de bits) de configuración que son cargados después del reset del dispositivo. Este Bit-Stream es el que determina el funcionamiento del dispositivo y otorga al mismo la característica de Dispositivo Reconfigurable.

5. LAS HERRAMIENTAS DE DISEÑO, COMPILACIÓN Y SIMULACIÓN Para programar una FPGA de la familia Xilinx XC4000 en nuestro caso, vamos a necesitar una serie de herramientas sobre las cuales se ofrece un manual al alumno. Las herramientas mostradas se enumeran a continuación: [4] [5] [7] 5.1. Xilinx Foundation 2.1i Entorno integrado de desarrollo para la generación, compilación y depuración de programas VHDL y esquemáticos, en la figura 6 se muestra la interfaz de usuario. Esta herramienta incluye un simulador que evalúa tanto consideraciones de índole funcionales como temporales. Permite manejar proyectos, compilar componentes para Figura 6. Entorno de programación Xilinx Foundation 2.1i librerías y generar archivos binarios de configuración para programación de diferentes FPGAs de la familia Xilinx. 5.2. Utilidades XESS Una vez creado el código para programar la FPGA, debemos introducir el código físicamente en la FPGA, y además debemos ser capaces de comunicarnos con los diferentes puertos de la misma y poder configurarla apropiadamente, XESS constituye un conjunto de utilidades para la comunicación con la tarjeta FPGA, se muestra al alumno el funcionamiento de las mismas. Estas contemplan la transmisión de datos a la FPGA, activación de puertos asociados a pines en la FPGA, configuración del reloj programable y test de funcionamiento. [8] [9] 5.2.1. XESS GXSLoad Esta herramienta, figura 7, permite la carga de los archivos binarios de configuración generados por Xilinx Foundation a la FPGA de la Kit de desarrollo Xess XS-40. También permite la carga de la memoria RAM estática así como la programación de la memoria Flash de almacenamiento permanente. Figura 7. Xess GXSLoad.

5.2.2. XESS GXSPort Esta herramienta, mostrada en la figura 8, permite la activación de líneas del puerto paralelo que están conectadas a pines de la FPGA. Por este medio se pueden generar estímulos externos. Figura 8. Xess GXSPort. 5.2.3. XESS GXSTest Esta herramienta permite el testeo de funcionamiento del Kit Xess XS-40 y la conexión del puerto paralelo, se muestra en la fig. 9. Figura 9. Xess GXSTest. 5.2.3. XESS GXSSetClk Esta herramienta permite la configuración del reloj programable del Kit de desarrollo XS-40. Consta de un divisor de frecuencia programable siendo posible obtener señales de reloj según la expresión: T[clk] = K * T[xtal] Figura 10. Xess GXSTest. T[xtal] = 10 nseg (f[xtal] = 100 MHz) y K = 1,2,3,4 6. HERRAMIENTAS HARDWARE 6.1. Kit de desarrollo para FPGA En un primer lugar se presenta la tarjeta de prácticas XS 40005 XL, mostrando las características internas de la misma, a nivel de estructura y arquitectura, esta tarjeta se muestra en la figura 11. Figura 11. Xess GXSTest.

Los kits de desarrollo de FPGA permiten la ejecución en hardware los programas. Además, implementan interfaces de comunicaciones PS2, salida de video VGA, RAM estáticas. En la figura 12, se muestran las conexiones con los interfaces de comunicaciones. Poseen pines de conexión inferior que permiten extender los pines de la FPGA a otra placa específica o conectar instrumentos de medición. Figura 12. Conexionado 6. TUTORIALES DE DISEÑO E IMPLEMENTACIÓN Una vez conocidas las herramientas y el entorno, es el momento de realizar diferentes prácticas que proporcionen al alumno una visión práctica de los conocimientos impartidos en la asignatura. Este punto refleja la segunda parte del manual, que consiste en una libreta de prácticas en ella se describen una serie de prácticas mediante imágenes, código fuente VHDL, comportamiento de los componentes presentados y se proponen ciertas actividades al alumno, las prácticas propuestas se enumeran a continuación: [6] Circuitos Combinacionales. Circuitos Secuenciales. Máquinas de Estados. Utilización de la Memoria Interna y Externa incluida en la XC4005-XL. Comprensión de la importancia de la configuración del reloj. Utilización del LED incluido en la tarjeta para ofrecer resultados. Cada práctica propuesta proporciona al alumno los fundamentos teóricos generales para afrontarla, incluyendo teoría, esquemas y código VHDL sobre los componentes sobre los que se articula la práctica, registros, contadores, multiplexores, utilización de la RAM de la tarjeta, etc., posteriormente se proponen al alumno los ejercicios a realizar que dotarán al mismo de un mayor conocimiento sobre el lenguaje y el comportamiento de los componentes, para ello el alumno deberá rellenar en un espacio reservado a tal fin en el manual, cuestiones referentes a la práctica y trazar el cronograma correspondiente a la simulación del diseño.

7. CONCLUSIONES Se ha elaborado un manual para alumnos de la asignatura Sistemas Electrónicos Digitales de la titulación de Ingeniero en Automática y Electrónica Industrial, este manual tiene dos partes bien diferenciadas, la primera parte tiene como objeto, dotar a los alumnos con fundamentos sobre Dispositivos Lógicos Programables, Instrumentación y el Lenguaje de Descripción Hardware VHDL, por otra parte, la segunda parte del manual se constituye en una libreta de prácticas que aportará al alumno conocimientos sobre Diseño de Sistemas Digitales, el alumno deberá programar, simular e implementar las prácticas propuestas, respondiendo en el espacio habilitado a tal fin cuestiones referentes a la práctica y dibujando el cronograma obtenido en la simulación de la práctica. 8. BIBLIOGRAFÍA Y RECURSOS INTERNET [1] Peter J. Ashenden. 1996. "The Designer's Guide to VHDL". Ed. Morgan Kaufmann. [2] David Pellerin. 1997. "VHDL Made Easy!". Ed. McGraw-Hill. [3] S. A. Pérez. 2002. Diseño de Sistemas Digitales con VHDL. Ed. Thomson. [4] Xilinx, Inc. 1999. Foundation Series 2.1i Quick Start Guide. [5] Xilinx, Inc. 1999. Foundation Series 2.1i User Guide. [6] John F. Wakerly. 2001. Diseño Digital Principios y Prácticas. Ed. Prentice-Hall. [7] David E. Vanden Bout. 2001. Pragmatic Logic Design. www.xess.com/pragmatic-2_1.html [8] Xess Corporation. XS40-005XL Prototyping Board with 3.3V, 9000 gate FPGA. www.xess.com/prod004.php3 [9] Xess Corporation. 1998. XS40, XSP, and XS95 Board Manual. XSTOOLS CDROM