pactica josu.docx

23
Universidad Anáhuac Oaxaca Asignatura: Circuitos Digitales Práctica: MULTIPLEXOR Y CIRCUITO COMBINACIONAL EN FPGA Profesor: Josué Gregorio Aguilar Cruz Equipo: López González Glenda Jasibe

Upload: courtney-mitchell

Post on 12-Dec-2014

112 views

Category:

Documents


5 download

DESCRIPTION

practica circuitos digitales

TRANSCRIPT

Page 1: pactica josu.docx

Universidad Anáhuac Oaxaca

Asignatura:

Circuitos Digitales

Práctica:

MULTIPLEXOR Y CIRCUITO COMBINACIONAL EN FPGA

Profesor:

Josué Gregorio Aguilar Cruz

Equipo:

López González Glenda Jasibe

Rojas Sánchez Jorge Alberto

Oaxaca de Juárez a 7 de mayo del 2013.

Page 2: pactica josu.docx

INTRODUCCIÓN Los multiplexores son circuitos combinacionales con varias entradas y una única salida de datos, están dotados de entradas de control capaces de seleccionar una, y sólo una, de las entradas de datos para permitir su transmisión desde la entrada seleccionada hacia dicha salida.

En el campo de la electrónica el multiplexor se utiliza como dispositivo que puede recibir varias entradas y transmitirlas por un medio de transmisión compartido. Para ello lo que hace es dividir el medio de transmisión en múltiplescanales, para que varios nodos puedan comunicarse al mismo tiempo.

Figura multi.

Estos circuitos combinacionales poseen   líneas de entrada de datos, una línea de salida y n entradas de selección. Las entradas de selección indican cuál de estas líneas de entrada de datos es la que proporciona el valor a la línea de salida.

También se pueden construir multiplexores con mayor número de entradas utilizando multiplexores demenos entradas, utilizando la composición de multiplexores.

Page 3: pactica josu.docx

figura multi2

En electrónica digital, es usado para el control de un flujo de información que

equivale a un conmutador. En su forma más básica se compone de dos

entradas de datos (A y B), una salida de datos y una entrada de control.

Cuando la entrada de control se pone a 0 lógico, la señal de datos A es

conectada a la salida; cuando la entrada de control se pone a 1 lógico, la señal

de datos B es la que se conecta a la salida.

El multiplexor es una aplicación particular de los decodificadores, tal que existe

una entrada de habilitación (EN) por cada puerta AND y al final se hace

un OR entre todas las salidas de las puertas AND.

La función de un multiplexor da lugar a diversas aplicaciones:

1. Selector de entradas.

2. Serializador: Convierte datos desde el formato paralelo al formato serie.

3. Transmisión multiplexada: Utilizando las mismas líneas de conexión, se

transmiten diferentes datos de distinta procedencia.

4. Realización de funciones lógicas: Utilizando inversores y conectando a 0

o 1 las entradas según interese, se consigue diseñar funciones

complejas, de un modo más compacto que con las tradicionales puertas

lógicas.

Page 4: pactica josu.docx

Circuito combinacionalUn circuito combinacional es un circuito cuya salida es función exclusivamente del estado de sus entradas. Está compuesto por puertas lógicas y no deben presentar realimentación, es decir, ninguna salida de ningún componente debe usarse como entrada del circuito.

Un circuito combinacional puede describirse utilizando una fórmula con Álgebra de Boole en la que las salidas sean dependiente solamente de las entradas.

Existen muchos circuitos combinacionales típicos. Algunos de ellos son:

Codificadores: Convierten una señal binaria en otra señal binaria de distintas características.

Multiplexores y Demultiplexores: Seleccionan una salida entre varias señales de entrada o al contrario, de una señal de entrada se obtienen varias salidas.

Comparadores: comparan 2 números en código binario.

Unidades aritméticas: suman, restan, multiplican, números binarios.

VHDLVHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde VHSIC es el acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el acrónimo de Hardware Description Language.

Es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para describir circuitos digitales. Otros métodos para diseñar circuitos son la captura de esquemas (con herramientas CAD) y los diagramas de bloques, pero éstos no son prácticos en diseños complejos. Otros lenguajes para el mismo propósito son Verilog y ABEL.

Aunque puede ser usado de forma general para describir cualquier circuito se usa principalmente para programar PLD (Programable Logic Device - Dispositivo Lógico Programable), FPGA (Field Programmable Gate Array), ASIC y similares.

Formas de describir un circuito

Dentro del VHDL hay varias formas con las que podemos diseñar el mismo circuito y es tarea del diseñador elegir la más apropiada.

Page 5: pactica josu.docx

Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que más se parece a los lenguajes de software ya que la descripción es secuencial. Estas sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los procesos son ejecutados en paralelo entre sí, y en paralelo con asignaciones concurrentes de señales y con las instancias a otros componentes.

Flujo de datos: describe asignaciones concurrentes (en paralelo) de señales.

Estructural: se describe el circuito con instancias de componentes. Estas instancias forman un diseño de jerarquía superior, al conectar los puertos de estas instancias con las señales internas del circuito, o con puertos del circuito de jerarquía superior.

Mixta: combinación de todas o algunas de las anteriores.

En VHDL también existen formas metódicas para el diseño de máquinas de estados, filtros digitales, bancos de pruebas etc.

Secuencia de diseño

El flujo de diseño de un sistema podría ser:

División del diseño principal en módulos separados. La modularidad es uno de los conceptos principales de todo diseño. Normalmente se diferencia entre dos metodologías de diseño: top-down y botton-up. La metodología top-down consiste en que un diseño complejo se divide en diseños más sencillos que se puedan diseñar (o describir) más fácilmente. La metodología botton-up consiste en construir un diseño complejo a partir de módulos, ya diseñados, más simples. En la práctica, un diseño usa generalmente ambas metodologías.

Entrada de diseños, pueden usarse diversos métodos tal como se vio anteriormente. Simulación funcional, es decir, comprobaremos que lo escrito en el punto anterior

realmente funciona como queremos, si no lo hace tendremos que modificarlo. En este tipo de simulación se comprueba que el código VHDL o Verilog (u otro tipo de lenguaje HDL) ejecuta correctamente lo que se pretende.

Síntesis. En este paso se adapta el diseño anterior (que sabemos que funciona) a un hardware en concreto, ya sea una FPGA o un ASIC. Hay sentencias del lenguaje que no son sintetizables, como por ejemplo divisiones o exponenciaciones con números no constantes. El hecho de que no todas las expresiones en VHDL sean sintetizables es que el VHDL es un lenguaje genérico para modelado de sistemas (no sólo para diseño de circuitos digitales), por lo que hay expresiones que no pueden ser transformadas a circuitos digitales. Durante la síntesis se tiene en cuenta la estructura interna del dispositivo, y se definen restricciones, como la asignación de pines. El sintetizador optimiza las expresiones lógicas con objeto de que ocupen menor área, o bien son eliminadas las expresiones lógicas que no son usadas por el circuito.

Simulación post-síntesis. En este tipo de simulación se comprueba que el sintetizador ha realizado correctamente la síntesis del circuito, al transformar el código HDL en bloques lógicos conectados entre sí. Este paso es necesario ya que, a veces, los sintetizadores producen resultados de síntesis incorrectos, o bien realiza simplificaciones del circuito al optimizarlo.

Ubicación y enrutamiento. El proceso de ubicación consiste en situar los bloques digitales obtenidos en la síntesis de forma óptima, de forma que aquellos bloques que se encuentran muy interconectados entre sí se sitúen próximamente. El proceso de

Page 6: pactica josu.docx

enrutamiento consiste en interconectar adecuadamente los bloques entre sí, intentando minimizar retardos de propagación para maximizar la frecuencia máxima de funcionamiento del dispositivo.

Anotación final. Una vez ha sido completado el proceso de ubicación y enrutamiento, se extraen los retardos de los bloques y sus interconexiones, con objeto de poder realizar una simulación temporal (también llamada simulación post-layout). Estos retardos son anotados en un fichero SDF (Standard Delay Format) que asocia a cada bloque o interconexión un retardo mínimo/típico/máximo.

Simulación temporal. A pesar de la simulación anterior puede que el diseño no funcione cuando se programa, una de las causas puede ser por los retardos internos del chip. Con esta simulación se puede comprobar, y si hay errores se tiene que volver a uno de los anteriores pasos.

Programación en el dispositivo. Se implementa el diseño en el dispositivo final y se comprueba el resultado.

Procedimiento de diseño

El primer paso del diseño consiste en la construcción del diagrama en bloque del sistema. En diseños complejos como en software los programas son generalmente jerárquicos y VHDL ofrece un buen marco de trabajo para definir los módulos que integran el sistema y sus interfaces, dejando los detalles para pasos posteriores.

El segundo paso es la elaboración del código en VHDL para cada módulo, para sus interfaces y sus detalles internos. Como el VHDL es un lenguaje basado en texto, se puede utilizar cualquier editor para esta tarea, aunque el entorno de los programas de VHDL incluye su propio editor de texto. Después de que se ha escrito algún código se hace necesario compilarlo. El compilador de VHDL analiza este código y determina los errores de sintaxis y chequea la compatibilidad entre módulos. Crea toda la información necesaria para la simulación. El próximo paso es la simulación, la cual le permite establecer los estímulos a cada módulo y observar su respuesta. El VHDL da la posibilidad de crear bancos de prueba que automáticamente aplica entradas y compara las salidas con las respuestas deseadas. La simulación es un paso dentro del proceso de verificación. El propósito de la simulación es verificar que el circuito trabaja como se desea, es decir es más que comparar entradas y salidas. En proyectos complejos se hace necesario invertir un gran tiempo en generar pruebas que permitan evaluar el circuito en un amplio rango de operaciones de trabajo. Encontrar errores en este paso del diseño es mejor que al final, en donde hay que repetir entonces una gran cantidad de pasos del diseño. Hay dos dimensiones a verificar:

Su comportamiento funcional, en donde se estudia su comportamiento lógico independiente de consideraciones de tiempo, como las demoras en las compuertas.

Su verificación en el tiempo, en donde se incluyen las demoras de las compuertas y otras consideraciones de tiempo, como los tiempos de establecimiento (set-up time) y los tiempos de mantenimiento (hold time).

Page 7: pactica josu.docx

Estructura de programa

VHDL fue diseñado en base a los principios de la programación estructurada. La idea es definir la interfaz de un módulo de hardware mientras deja invisible sus detalles internos. La entidad (ENTITY) en VHDL es simplemente la declaración de las entradas y salidas de un módulo mientras que la arquitectura (ARCHITECTURE) es la descripción detallada de la estructura interna del módulo o de su comportamiento. En la siguiente figura se ilustra el concepto anterior. Muchos diseñadores conciben la Entity como una funda de la arquitectura dejando invisible los detalles de lo que hay dentro (architecture). Esto forma la base de un sistema de diseño jerárquico, la arquitectura de la entidad de más nivel (top level) puede usar otras entidades, dejando invisible los detalles de la arquitectura de la identidad de menos nivel. En la figura las entidades B, E y F no utilizan otras entidades. Mientras que la entidad A utiliza todas las demás. A la pareja entidad-arquitectura se la llama modelo. En un fichero texto VHDL la entidad y la arquitectura se escriben separadas, por ejemplo a continuación se muestra un programa muy simple en VHDL de una compuerta de 2 entradas. Como otros programas, VHDL ignora los espacios y saltos de líneas. Los comentarios se escriben con 2 guiones (--) y terminan al final de la línea. En la figura siguiente se muestra la estructura de un modelo en VHDL. SINTAXIS PARA LA DECLARACION DE LA ENTIDAD VHDL define muchos caracteres especiales llamados “palabras reservadas”. Aunque las palabras reservadas no son sensibles a las mayúsculas o minúsculas, en el ejemplo que sigue las utilizaremos en mayúsculas y negrita para identificarlas.

ENTITY Nombre_entidad ISPORT ( Nombre de señal: modo tipo de señal; . . . Nombre de señal: modo tipo de señal ) ;END nombre_entidad ;

Además de darle nombre a la entidad el propósito de la declaración es definir sus señales (o ports) de interfaz externa en su declaración de ports. Además de las palabras reservadas o claves ENTITY, IS, PORT and END, una ENTITY tiene los siguientes elementos.

Nombre_entidad; es un identificador seleccionado por el usuario para seleccionar la entidad.

Nombre de señal; es una lista de uno o más identificadores separados por una coma y seleccionados por el usuario para identificar las señales externas de la interfaz.

MODO es una de las 4 siguientes palabras reservadas para indicar la dirección de la señal:

Modo Descripción

IN En este modo las señales solo entran en la entidad

OUT Las señales salen de la entidad

Page 8: pactica josu.docx

BUFFEREste modo se utiliza para las señales que además de salir de la entidad pueden usarse como entradas realimentadas

INOUTEste modo se utiliza para señales bidireccionales. Se emplea en salida con tres estados. Se puede asignar como sustituto de los tres modos anteriores, pero no se aconseja pues dificulta la comprensión del programa.

Cuando se omite el modo de una señal en la declaración de la entidad se sobreentiende que es de entrada.

Tipo de señal; en VHDL, hay varios tipos de señales predefinidas por el lenguaje, tales como:

TIPO Características

BIT En este tipo las señales solo toman los valores de "1" y "0"

Booleana En este tipo las señales solo toman los valores de True y False

Std_logicEn este tipo las señales toman 9 valores, entre ellos tenemos: "1", "0", "Z" (para el 3er estado), "-" (para los opcionales).

Integer En este tipo las señales toman valores enteros. Los 1 y los 0 se escriben sin “

Bit_VectorEn este tipo los valores de las señales son una cadena de unos y ceros. Ejemplo: “1000”

Std_Logic_VectorEn este tipo los valores de las señales son una cadena de los nueve valores permisibles para el tipo std_logic.

CharacterContiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.

Ejemplo: “1-0Z” -231 + 1 231 - 1 Integer -2 147 483 647 2 147 483 647

Bit Character Severity_level Bit_vector Integer String Boolean Real time

Field Programmable Gate Array

Page 9: pactica josu.docx

Una Spartan de Xilinx.

Una FPGA (del inglés Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada 'in situ' mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGAs se utilizan en aplicaciones similares a los ASICs sin embargo son más lentas, tienen un mayor consumo de potencia y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGAs tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Historia: FPGA vs CPLD

Arquitectura interna de una FPGA.

Las FPGAs fueron inventadas en el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-fundadores de Xilinx, y surgen como una evolución de los CPLDs.

Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.

Page 10: pactica josu.docx

Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops). La arquitectura de las FPGAs, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexion de dichos bloques confiere a las FPGAs una gran flexibilidad.

Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de alto nivel (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.

Características

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 (es una placa de uso genérico reutilizable o semi permanente) 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.

Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de los FPGA con microprocesadores y periféricos relacionados para formar un «Sistema programable en un chip». Ejemplo de tales tecnologías híbridas pueden ser encontradas en los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o más procesadores PowerPC embebidos junto con la lógica del FPGA. El FPSLIC de Atmel es otro dispositivo similar, el cual usa un procesador AVR en combinación con la arquitectura lógica programable de Atmel. Otra alternativa es hacer uso de núcleos de procesadores implementados haciendo uso de la lógica del FPGA. Esos núcleos incluyen los procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de código abierto LatticeMicro32 y LatticeMicro8.

Muchos FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la «computación reconfigurable», o los «sistemas reconfigurables».

Programación

En la FPGA no se realiza programación tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR, XOR. La labor del "programador" es describir el hardware que tendrá la FPGA. Por consiguiente, 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.

El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en un FPGA. Un diseño puede ser capturado ya sea como

Page 11: pactica josu.docx

esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware). Los HDLs más utilizados son:

VHDL Verilog ABEL

En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño. Los niveles de abstracción superior son los funcionales y los niveles de abstracción inferior son los de diseño al nivel de componentes hardware básicos. Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de programación gráfica de alto nivel.

Aplicaciones

Cualquier circuito de aplicación específica puede ser implementado en un FPGA, siempre y cuando esta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan los FPGA incluyen a los DSP (procesamiento digital de señales), radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.

Existe código fuente disponible (bajo licencia GNU GPL)[1] de sistemas como microprocesadores, microcontroladores, filtros, módulos de comunicaciones y memorias, entre otros. Estos códigos se llaman cores.

Tecnología de la memoria de programación

Las FPGAs también se pueden diferenciar por utilizar diferentes tecnologías de memoria:

Volátiles: Basadas en RAM. Su programación se pierde al quitar la alimentación. Requieren una memoria externa no volátil para configurarlas al arrancar (antes o durante el reset).

No Volátiles: Basadas en ROM. Hay de dos tipos, las reprogramables y las no reprogramables.

1. Reprogramables: Basadas en EPROM o flash. Éstas se pueden borrar y volver a reprogramar aunque con un límite de unos 10.000 ciclos.

2. No Reprogramables: Basadas en fusibles o antifusibles. Solo se pueden programar una vez, lo que las hace poco recomendables para trabajos en laboratorios.

Ejemplo de tarjeta de desarrollo que incorpora una FPGA[] :

Page 12: pactica josu.docx

XilinxXilinx es la mayor empresa en investigación y desarrollo de chips conocidos como field-programmable gate arrays (FPGAs).

Historia

Fue fundada por Ross Freeman (el inventor de las FPGA), Bernie Vonderscmitt (pionero del concepto de compañía fabless) y Jim Barnett en 1984 y con base en Silicon Valley. Al año siguiente desarrollaron su primera FPGA, el modelo XC2064. Hoy en día, la base reside en San José, California, mientras que en Europa se hallan en Dublín, Irlanda y en Asia en Singapur.

Page 13: pactica josu.docx

Tecnología

En general existen 3 grandes tipos de dispositivos electrónicos: de memoria, procesadores y de logica.

Los dispositivos de memoria almacenan información aleatoria (archivos, hojas de calculo..);

Los procesadores ejecutan instrucciones de software para ejecutar una gran variedad de tareas (ejecutar un programa de proceso de datos o un videojuego)

Los dispositivos de logica poveen funciones especificas (comunicacion entre dispositivos y el resto de funciones que un sistema debe ejecutar). A su vez, existen 2 tipos de categorias de dispositivos logicos: los fijos y los programables. Xilinx esta en el negocio de los dispositivos de logica programable.

Xilinx desarrolla FPGAs y CPLDs que son usados en numerosas aplicaciones, como telecomunicaciones, automoción, productos de consumo, industria militar y otros campos. Las familias de dispositivos de Xilinx son: lógica de pegamento (CoolRunner y CoolRunner II), bajo coste (Spartan) y alto rendimiento (Virtex).

Las familias Virtex-II Pro, Virtex-4 y Virtex-5 son particularmente interesantes para los diseñadores de System on a chip (SoC) porque pueden incluir dos núcleos del IBM PowerPC 405.

Xilinx también crea núcleos IP (IP Cores) en lenguajes HDL para permitir a los diseñadores reducir los tiempos de desarrollo. Estos núcleos van desde funciones simples como contadores a sistemas complejos como microcontroladores, un ejemplo de esto último es el microprocesador Microblaze.

Tarjeta Spartan

Page 14: pactica josu.docx

Materiales o herramientas:

-Una computadora con puerto serial

-Una FPGA(xilinx spartan)

-Software active-hdl 6.2

-Software xilinx

Desarrollo :

1.-Escribimos el código utilizando lenguaje vhdl en active-HDL

architecture yuo of yuo isbegin

process (Sel, A, B, C, D)begin

case Sel iswhen "00" => Sal <= A;when "01" => Sal <= B;when "10" => Sal <= C;when "11" => Sal <= D;when others => Sal <= 'X';

end case;end process;

end yuo;

architecture siste of siste isbegin

Y0<=(A and B)or C;Y1<=(not A or not C);Y2<=(A and (not B));y3<=((not A and C) or (not B));

end siste;

Page 15: pactica josu.docx

2.- Creamos un proyecto donde utilizamos como módulos el multiplexor y el circuito combinacional. Figura (ensamble)

Figura (ensamble)

3.- Simulamos nuestro código en active-HDL como se muestra en la (figura sim1).

Figura sim1

Page 16: pactica josu.docx

4.- Tomamos nuestros códigos y los pasamos al programa Xilinx proyect navigator. figura(navi)

Figura(navi).

5.- Compilamos nuestros proyectos y cargamos el programa a la FPGA Figura (quema).

Figura (quema).

Page 17: pactica josu.docx

6.-En estas imágenes podemos observar el funcionamiento en nuestro FPGA después de ser programado. Figura f1 y f2

Figura f1

Figura f2

Page 18: pactica josu.docx

Conclusión:

Llegamos a la conclusión que las FPGA son muy dóciles , es esta cierto punto fácil de programar y volver a quemar en caso de error de programación, aunque tuvimos algunos problemas con el software (active => xilinx) pudimos solucionarlos con la información adecuada, creemos que sería más recomendable hacer nuestro código en el Project navigator , sus diferentes aplicaciones son una gran ventaja además de su rapidez.

Bibliografía:

- http://www.wikipedia.org/

- http://es.wikipedia.org/wiki/Multiplexor