45
SUMADOR 1 BIT – EJEMPLO PROCESO DE DISEÑO 1 1 1 E E J J E E M M P P L L O O D D E E P P R R O O C C E E S S O O D D E E D D I I S S E E Ñ Ñ O O A lo largo del libro se van a resolver varios ejercicios prácticos con los siguientes objetivos: Realizar un estudio exhaustivo del dispositivo lógico programable complejo XC9572 de XILINX. Utilizar muchos de los recursos del entorno ‘ISE v7.1i de XILINX’. Manejar adecuadamente el simulador ‘ModelSim XE III v6.0a’ integrado en ‘ISE’. Dar una visión del gran espectro de posibilidades teórico/prácticas que la tarjeta de aplicación didáctica ‘TAD-XC9572’ pone a nuestra disposición. Las fases que se seguirán en el proceso de diseño de cada uno de los ejercicios propuestos son las siguientes:: FRONT-END 1. ESPECIFICACIÓN 2. SIMULACIÓN FUNCIONAL (Pre-Layout) 3. SÍNTESIS BACK-END 4. IMPLEMENTACIÓN 1. COLOCACIÓN (Translate) 2. CONEXIÓN (Fit) 5. VERIFICACIÓN (Post-Layout) 6. PROGRAMACIÓN 7. VERIFICACIÓN EN CIRCUITO Para la elección de este primer ejercicio se ha tenido en cuenta su simplicidad, de manera que podamos centrar toda nuestra atención en el aprendizaje del entorno ‘ISE’ y del ‘ModelSim.

Sumador 1bit

Embed Size (px)

Citation preview

Page 1: Sumador 1bit

SUMADOR 1 BIT – EJEMPLO PROCESO DE DISEÑO

EEEjjjeeerrrccciiiccciiiooo

1

111 EEEJJJEEEMMMPPPLLLOOO DDDEEE PPPRRROOOCCCEEESSSOOO DDDEEE DDDIIISSSEEEÑÑÑOOO

A lo largo del libro se van a resolver varios ejercicios prácticos con los siguientes objetivos:

Realizar un estudio exhaustivo del dispositivo lógico programable complejo XC9572 de XILINX.

Utilizar muchos de los recursos del entorno ‘ISE v7.1i de XILINX’.

Manejar adecuadamente el simulador ‘ModelSim XE III v6.0a’ integrado en ‘ISE’.

Dar una visión del gran espectro de posibilidades teórico/prácticas que la tarjeta de aplicación didáctica ‘TAD-XC9572’ pone a nuestra disposición.

Las fases que se seguirán en el proceso de diseño de cada uno de los ejercicios propuestos son las siguientes::

FRONT-END

1. ESPECIFICACIÓN

2. SIMULACIÓN FUNCIONAL (Pre-Layout)

3. SÍNTESIS

BACK-END

4. IMPLEMENTACIÓN

1. COLOCACIÓN (Translate) 2. CONEXIÓN (Fit)

5. VERIFICACIÓN (Post-Layout)

6. PROGRAMACIÓN

7. VERIFICACIÓN EN CIRCUITO

Para la elección de este primer ejercicio se ha tenido en cuenta su simplicidad, de manera que podamos centrar toda nuestra atención en el aprendizaje del entorno ‘ISE’ y del ‘ModelSim’.

Page 2: Sumador 1bit

SUMADOR 1 BIT – ENUNCIADO PROCESO DE DISEÑO

2

Cin A B S Cout

0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

EEENNNUUUNNNCCCIIIAAADDDOOO

Implementar en el CPLD XC9572 un sumador completo de 1 bit. AAANNNÁÁÁLLLIIISSSIIISSS

Su tabla de verdad es la siguiente:

A B Cin 00 01 11 10

0 0 1 0 1 1 1 0 1 0

Tabla 5: Karnaugh ‘S’

A B Cin

00 01 11 10

0 0 0 1 0 1 0 1 1 1

Tabla 6: Karnaugh ‘Cout’

Tabla 4: Tabla de la verdad

Empleando Karnaugh obtenemos:

S = A ⊕ B ⊕ Cin

Cout = AB + Cin( A + B)

Otra manera de expresar el acarreo de salida es, adicional.

Cout = AB + Cin( A ⊕ B) y así nos ahorramos una puerta OR

Page 3: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

3

111ººº FFFRRROOONNNTTT---EEENNNDDD

EEESSSPPPEEECCCIIIFFFIIICCCAAACCCIIIÓÓÓNNN

La especificación de este ejemplo se va a realizar empleando un lenguaje formal de representación gráfico, apoyado en la herramienta gráfica de captura de esquemáticos integrada en el entorno ‘ISE’ llamada ‘ECS’ (System Capture Engineering).

El proceso de diseño parte con la creación de un proyecto y este proyecto lo generaremos con la herramienta ‘Project Navigator/Design Manager’ (Gestor de diseños).

El ‘ISE’ contiene el ‘Project Navigator’, que se encarga de gestionar todas las etapas del flujo de diseño. Esta utilidad es una interfaz que se monta sobre todo el conjunto de programas que participan en el diseño. Cada uno de estos programas actúa sobre un etapa concreta del diseño.

El ‘Project Navigator’:

Conecta los programas entre sí de manera coherente siguiendo el flujo de diseño.

Homogeneiza las llamadas a los programas utilizando una misma interfaz independiente de si el proveedor del programa es Xilinx o una empresa externa.

Mantiene un control de versiones del proyecto.

El esquema a diseñar es el siguiente: EEESSSQQQUUUEEEMMMAAA

Fig. 61: Sumador completo de 1 Bit

Page 4: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

4

111...--- AAABBBRRRIIIRRR PPPRRROOOJJJEEECCCTTT NNNAAAVVVIIIGGGAAATTTOOORRR

En el escritorio encontramos el icono del ‘Project Navigator’, hacemos doble clic y se abre.

Fig. 62: Interfaz gráfica del ‘Project Navigator’

El ‘Project Navigator’ se divide en cuatro ventanas:

1. En la esquina superior izquierda se muestran las distintas fuentes de diseño, que pertenecen al proyecto organizadas jerárquicamente.

2. Debajo de las fuentes se encuentra la ventana de Procesos. En esta ventana se mostrará la lista de

procesos disponibles para la fuente seleccionada en la ventana superior. Para cada proceso se muestra el estado del mismo, si ha sido ejecutado y, en caso afirmativo, si el resultado ha sido correcto.

Dependiendo de la fuente de diseño los procesos disponibles son distintos.

3. La tercera ventana está situada en la parte inferior de la pantalla. Ésta es la consola de Mensajes, que se

actualiza con mensajes informativos y de advertencia a medida que se activan los distintos procesos.

4. La última ventana se sitúa a la derecha y es un editor de HDL, entre otras muchas cosas.

Page 5: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

5

222...--- CCCRRREEEAAARRR NNNUUUEEEVVVOOO PPPRRROOOYYYEEECCCTTTOOO

Desde ‘File->New Project’ desplegamos la ventana de la Figura 63, donde configuramos los primeros parámetros del proyecto.

Fig. 63: Pantalla de ‘New Project’

Primero, localizamos el directorio donde vamos a ubicar el proyecto ‘C:\Xilinx71i_WEBPACK\bin\Projects’; luego, escribimos el nombre del proyecto ‘Sumador1bit’ y al mismo tiempo, se nos crea una carpeta en el directorio anteriormente elegido ‘C:\Xilinx71i_WEBPACK\bin\Projects\Sumador1bit’; y por último, seleccionamos el tipo de entrada del proyecto, en nuestro caso será gráfico.

Hacemos clic en siguiente y se nos abrirá la ventana de la Figura 64.

Fig. 64: Selección de dispositivo y flujo de diseño

Page 6: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

6

Las opciones son las:

Device Family: Nos permite elegir la familia del CPLD a utilizar. Seleccionamos XC9500 CPLD’s.

Device: Selecciona el CPLD en concreto de la familia elegida. En nuestro ejemplo ‘XC9572’.

Package: Permite seleccionar el tipo de encapsulado. Elegimos el ‘PC84’. Speed Grade: Selecciona la velocidad de trabajo del CPLD. El dato viene en nano segundos y se refiere al retardo pin a pin. La selección depende del dispositivo que dispongamos, en nuestro caso elegimos ‘-7’.

Design Flow: En este apartado seleccionamos el tipo de entrada (Schematic), el sintetizador (XST para VHDL), el simulador (ModelSim) y el lenguaje de simulación utilizado (VHDL).

333...--- AAAÑÑÑAAADDDIIIRRR FFFUUUEEENNNTTTEEE

Tras esta configuración se nos abre la ventana de la Figura 70, donde se nos pide que creemos, o añadamos, el fichero fuente. Hacemos clic en ‘New Source’.

Fig. 70: Selección fichero fuente

Page 7: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

7

Vamos a añadir una fuente a nuestro proyecto para especificar los requerimientos del sistema utilizando un lenguaje formal de presentación gráfico.

En la ventana que se nos despliega, seleccionamos la plantilla ‘Schematic’ y asignamos un nombre a la fuente, en nuestro caso pondremos ‘sumador1bit’. La opción de ‘Add to project’ deberá estar activada.

Fig. 71: Selección de plantilla de la nueva fuente

Se crea el siguiente informe:

Fig. 72: Informe del nuevo fichero fuente

Page 8: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

8

En esta ventana hacemos clic en ‘Siguiente’.

Fig. 73: Selección fichero fuente

Se nos da la posibilidad de añadir más ficheros fuentes. En nuestro caso no añadiremos más.

Fig. 74: Opción de añadir más ficheros fuente

Page 9: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

9

Se nos crea el siguiente informe con las especificaciones del nuevo proyecto:

Fig. 75: Informe del nuevo proyecto

Si todo está correcto, aparecerán dos nuevas entradas dentro de la ventana de ‘Fuentes de Diseño’ del proyecto. Una con el nombre del proyecto ‘sumador1bit.ise’, y la otra con el nombre del dispositivo CPLD ‘XC9572-7pc84’. Además, el editor de esquemas ‘ECS’ queda abierto dentro del ‘Project Navigator’.

Ahora estamos listos para realizar y añadir nuestros diseños al proyecto.

Fig. 76: Vista del ‘Project Navigator’

Page 10: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

10

444...--- DDDIIISSSEEEÑÑÑAAARRR EEESSSQQQUUUEEEMMMAAA DDDEEELLL SSSUUUMMMAAADDDOOORRR

Hacemos clic en la pestaña ‘Symbols’ y se nos abre la ventana de símbolos, mostrándonos las librerías y sus componentes correspondientes.

Fig. 78: Ventana de selección de componentes

El primer componente que vamos a colocar es una puerta xor de 2 entradas ‘xor2’. Para ello, tenemos dos formas de hacerlo:

Seleccionando ‘All Symbols’ y escribiendo ‘xor2’ en ‘Symbol Name Filter’. Posteriormente arrastramos el símbolo con el ratón hasta colocarlo en el lugar deseado dentro del esquemático.

La otra manera, es seleccionando la categoría ‘Logic’ y escribiendo ‘xor2’ en ‘Symbol Name Filter’ o buscando directamente dentro de la librería. Posteriormente, arrastramos el símbolo con el ratón hasta colocarlo en el lugar deseado dentro del esquemático.

Ver Figura 79.

Page 11: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

11

Fig. 79: Selección y colocación del símbolo ‘xor2’

El resto de componentes los colocamos tal y como muestra la Figura 80.

Fig. 80: Colocación de componentes

Page 12: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

12

Fig. 20: Conexión de componentes.

444...111...--- DDDIIIBBBUUUJJJAAANNNDDDOOO LLLÍÍÍNNNEEEAAASSS DDDEEE CCCOOONNNEEEXXXIIIÓÓÓNNN

Desde la barra de menús, seleccionamos ‘Add->Wire’ o hacemos clic en el icono de la barra de herramientas.

Fig. 81: Icono para añadir líneas de conexión

Si la línea a dibujar va de un pin hasta otro, haremos clic en el pin fuente y, llevando el ratón hasta el pin de destino, volveremos a hacer clic en este pin.

Si la línea a dibujar comienza en un pin pero no llega a otro, apretaremos el botón izquierdo del ratón en el pin fuente y nos moveremos hasta el lugar de destino elegido, donde soltaremos el botón.

La Figura 82 nos muestra las conexiones a realizar.

Fig. 82: Conexión de componentes

Desde la barra de menús, seleccionamos ‘Add->Net Name’ o hacemos clic en el icono de la barra de herramientas.

Fig. 83: Icono para añadir nombres de net

Escriba el nombre ‘A’ en la caja de ‘Name’ tal y como señala la Figura 84. Notará cómo en el cursor del ratón se añade el nombre ‘A’ y haciendo clic en la línea que se quiera nombrar, esta tomará el nombre.

Page 13: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

13

La Figura 84 también nos muestra el resto de los nombres del diseño (B, Cin, S y Cout)

Fig. 84: Nombres de net 444...222...--- AAAÑÑÑAAADDDIIIEEENNNDDDOOO MMMAAARRRCCCAAASSS III///OOO (((AAAddddddiiinnnggg III///OOO MMMaaarrrkkkeeerrrsss)))

Todas las líneas que vayan a tener conexión con el exterior del CPLD, deben ser marcadas.

Nota.- En el diseño de una macro el ‘I/O Marker’ determina los puertos del diseño interno.

Desde la barra de menús, seleccionamos ‘Add->I/O Marker’ o hacemos clic en el icono de la barra de herramientas.

Fig. 85: Icono para añadir ‘I/O Markers’

Las ‘I/O Markers’ pueden ser de entrada, salida o bidireccionales, por lo que deberemos elegir el tipo de marca antes de proceder a su colocación.

Para colocar una marca basta con situarse encima del nombre de la net y hacer clic. En el caso de no haber sido nombrada la net, el ‘ECS’ pondrá un nombre tomando como referencia parámetros internos.

Page 14: Sumador 1bit

SUMADOR 1 BIT – ESPECIFICACIÓN PROCESO DE DISEÑO

El esquema quedará como el de la Figura 86.

14

Fig. 86: Esquema completo

Antes de seguir con el proceso, es recomendable verificar los errores que hayamos podido cometer en el diseño a nivel de conexionado. Hacemos clic en el icono de la barra de herramientas.

Fig. 87: Icono para detección de errores

Si todo es correcto, el resultado será el de la Figura 88.

Fig. 88: Informe sobre el chequeo de errores

Page 15: Sumador 1bit

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

15

222ººº SSSIIIMMMUUULLLAAACCCIIIÓÓÓNNN FFFUUUNNNCCCIIIOOONNNAAALLL

(((PPPrrreee---LLLaaayyyooouuuttt))) Una vez especificado el diseño (gráfico o textual), se debe realizar una simulación funcional o de comportamiento (Pre-layout) para comprobar el comportamiento del circuito (sin retardos).

Para verificar nuestro diseño, se va a utilizar la herramienta de simulación ‘ModelSim’, la cual necesita un fichero fuente de texto de entrada, escrito en un Lenguaje Descriptivo de Hardware (HDL) que contenga los vectores de prueba para poder realizar la simulación a la entidad creada. Para la obtención de este fichero ‘ISE’ dispone de una herramienta llamada ‘HDL Bencher’.

Una vez abierta la herramienta, tenemos dos posibilidades para generar el fichero de test ‘test bench’:

Empleando el formato gráfico que se nos brinda tras la apertura del programa. De manera que los estímulos los podremos meter gráficamente haciendo clic en las señales de entrada y salida. Este estilo recibe el nombre de ‘test bench waveform’. Antes de abrir el ‘ModelSim’ el test creado gráficamente será compilado y convertido a un formato HDL, en nuestro caso VHDL.

Si cerramos el formato gráfico, podremos escribir directamente el fichero de texto en lenguaje HDL, concretamente en nuestro caso VHDL, utilizando una plantilla genérica a la cual se le debe de añadir a mano los vectores de prueba.

En nuestro ejemplo vamos a emplear el formato gráfico.

111...--- CCCRRREEEAAARRR EEELLL FFFIIICCCHHHEEERRROOO DDDEEE TTTEEESSSTTT BBBEEENNNCCCHHH WWWAAAVVVEEEFFFOOORRRMMM

El test bench es un fichero VHDL en el que se instancia la entidad que se desea probar ‘uut’ (unit under test).

A esta unidad se le aplican un conjunto de vectores de prueba (estímulos), en modo texto o gráfico, de los cuales se conoce la salida esperada. Posteriormente, desde el ‘ModelSim’, se compara la salida que ofrece la ‘uut’ con la salida esperada, y si no son iguales es que ha habido algún error.

Por tanto, el primer paso es crear el fichero de test bench. Pulsando el botón derecho sobre el fichero ‘sumador1bit.sch’ seleccionamos la opción de ‘New Source’. En la siguiente pantalla elegimos la opción de ‘New->Test Bench Waveform’, y le llamamos ‘tb_sumador1bit’.

Fig. 89: Seleccionando Test Bench Waveform

Page 16: Sumador 1bit

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

16

A continuación asociamos el fichero de test bench al fichero de ‘sumador1bit’.

Fig. 90: Asociando Test Bench

Fig. 91: Asociando Test Bench

Page 17: Sumador 1bit

17

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

Hecho esto, se nos lanza una ventana desde la que podemos configurar los parámetros temporales de la simulación.

Nuestro diseño no dispone de reloj por lo que seleccionaremos una entrada combinacional para realizar la simulación ‘Combinatorial (or internal clock)’.

Los tiempos de retardo los dejamos por defecto, es decir, chequearemos las salidas 50ns después de ser asignadas las entradas y asignaremos nuevas entradas 50ns después de ser chequeadas las salidas.

Fig. 92: Configurando tiempos de simulación del TestBench

Ahora ‘HDL Bencher’ se nos abre dentro del entorno ‘ISE’ mostrándonos las formas de onda.

Fig. 93: Ventana de Test Bench

Page 18: Sumador 1bit

18

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

En nuestro caso, vamos a comprobar la tabla de verdad del sumador completo de un bit. Para ello, meteremos los estímulos haciendo clic con el botón izquierdo del ratón encima del fondo azul de las entradas, hasta realizar todas las combinaciones de la tabla en la línea de tiempo horizontal, tal como muestra la Figura 94.

Fig. 94: Entrada de estímulos y respuestas esperadas en el ‘HDL Bencher’

En las salidas, de fondo amarillo, podríamos poner el valor esperado en cada una de las combinaciones o, por el contrario, esperar a que el propio simulador nos dé la respuesta adecuada. Nosotros no pondremos el valor.

Seguidamente salvamos las formas de onda y cerramos el ‘HDL Bencher’.

Podemos observar cómo se nos ha asociado el fichero de test ‘tb_sumador1bit’ al fichero ‘sumador1bit.sch’; además, el fichero de test bench lleva consigo asociados un conjunto de procesos.

Fig. 95: Nuevo fichero de test en ‘Project Navigator’

Page 19: Sumador 1bit

19

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

222...--- SSSIIIMMMUUULLLAAACCCIIIÓÓÓNNN FFFUUUNNNCCCIIIOOONNNAAALLL CCCOOONNN MMMOOODDDEEELLLSSSIIIMMM M d l i

Antes de arrancar la utilidad de simulación ‘ModelSim’, añadimos el fichero test bench al proyecto haciendo clic en ‘Add Test Bench to Project’. Esto genera un nuevo fichero en formato HDL, en nuestro caso VHDL, denominado ‘tb_sumador1bit_tb.vhd’, que será utilizado por ‘ModelSim’ para realizar la simulación.

Fig. 96: Añadiendo test bench al proyecto

En la siguiente figura podemos ver como queda el ‘Project Navigator’ y parte del contenido del fichero ‘tb_sumador1bit_tb.vhd’.

Fig. 97: Parte del contenido del fichero ‘tb_sumador1bit_tb.vhd’

Page 20: Sumador 1bit

20

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

Teniendo seleccionada la fuente ‘tb_sumador1bit-testbench_arch [tb_sumador1bit_tb.vhd]’, pulsamos dos veces seguidas sobre el proceso ‘Simulate Behavioral VHDL Model’. De esta forma se lanzará la aplicación de simulación asociada al ‘Project Navigator’, en nuestro caso ‘ModelSim XE III v6.0a’. La simulación se ejecutará automáticamente dando como resultado la consola de ‘ModelSim’:

Fig. 98: Entorno de trabajo de ‘ModelSim’

Nota.- Si no se nos abre el entorno, pudiera ser que no estuviera configurado el ‘Project Navigator’ para poder utilizar el simulador ‘ModelSim’. Si nos dirigimos a ‘Edit->Preferences…’, podremos configurar la ruta donde tengamos instalado el fichero ‘modelsim.exe’.

Fig. 99: Configuración de ‘ModelSim’ en ‘Project Navigator’

Page 21: Sumador 1bit

21

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

222...111...--- CCCOOONNNTTTRRROOOLLL DDDEEE LLLAAA SSSIIIMMMUUULLLAAACCCIIIÓÓÓNNN

Se puede controlar la ejecución de la simulación mediante los siguientes botones:

STOP RESTART BREAK

RUN CONTINUE RUN RUN ALL

Fig. 107: Barra de herramientas.

Stop Wave Drawing.- Para la simulación.

Restart.- Inicializa la simulación para poder realizar una nueva ejecución.

Run.- Simula durante un tiempo igual al tiempo de simulación.

Continue Run.- Realiza una simulación de forma indefinida.

Run All.- Realiza una simulación por el tiempo establecido en el fichero HDL construido a partir del ‘test bench’.

222...222...--- CCCUUURRRSSSOOORRREEESSS

La herramienta permite grabar la situación del cursor en diferentes puntos, mostrando diferencia de tiempos entre cada marca. Para ello se utilizan los botones del cursor:

Fig. 108: Barra de herramientas. 222...333...--- FFFOOORRRMMMAAATTTOOO YYY BBBAAASSSEEE DDDEEE RRREEEPPPRRREEESSSEEENNNTTTAAACCCIIIÓÓÓNNN

Se puede cambiar tanto el formato como la base de representación de las señales. Para ello deberemos de seleccionar una o más señales y, si queremos cambiar el formato de representación, con el botón derecho del ratón elegiremos ‘Format’.

Se pueden elegir tres opciones:

Literal.- Se utiliza una representación numérica en la base elegida. En el caso de que el formato elegido sea literal se puede elegir la base de representación mediante ‘Format->Radix’.

Logic.- Muestra la forma de onda.

Event.- Muestra únicamente las transiciones de la señales.

Page 22: Sumador 1bit

SUMADOR 1 BIT – SIMULACIÓN FUNCIONAL (Pre-Layout) PROCESO DE DISEÑO

222...444...--- AAANNNÁÁÁLLLIIISSSIIISSS DDDEEE LLLAAA SSSIIIMMMUUULLLAAACCCIIIÓÓÓNNN

22

Sólo queda efectuar el análisis de la simulación.

Fig. 110: Simulación funcional de la ‘uut’ ‘sumador1bit’

Page 23: Sumador 1bit

23

SUMADOR 1 BIT – SÍNTESIS PROCESO DE DISEÑO

333ººº SSSÍÍÍNNNTTTEEESSSIIISSS

El ‘ISE’ incluye Xilinx® Synthesis Technology (XST), el cual sintetiza VHDL, Verilog, o diseños con mezcla de lenguajes para crear un fichero netlist específico de Xilinx conocido como fichero NGC.

Nota.- El fichero NGC es un netlist que contiene datos de diseño lógico y restricciones. Este fichero reemplaza al EDIF y NCF.

XST coloca el fichero NGC en el directorio del proyecto y el fichero es aceptado como entrada para efectuar el Translate (NGDBuild), paso que daremos durante la Implementación.

111...--- DDDEEESSSCCCRRRIIIPPPCCCIIIÓÓÓNNN DDDEEELLL FFFLLLUUUJJJOOO DDDEEE DDDIIISSSEEEÑÑÑOOO DDDEEELLL XXXSSSTTT

La Figura 107 muestra los ficheros de entrada y salida del sintetizador XST.

Fig. 111: Flujo del XST 222...--- FFFIIICCCHHHEEERRROOOSSS DDDEEE EEENNNTTTRRRAAADDDAAA///SSSAAALLLIIIDDDAAA

222...111...--- EEENNNTTTRRRAAADDDAAA

VHDL: IEEE 1076-1987, IEEE 1076-1993, incluyendo IEEE standard y Synopsys®

Verilog: IEEE 1364-1995, IEEE 1364-2001

XCF: (Xilinx Constraints File) este fichero puede contener especificaciones de tiempo y restricciones de diseño que se propagarán al fichero NGC.

Core files: Estos ficheros no son soportados por el CPLD.

Page 24: Sumador 1bit

24

SUMADOR 1 BIT – SÍNTESIS PROCESO DE DISEÑO

222...222...--- SSSAAALLLIIIDDDAAA

Synthesis Report: Contiene los resultados del proceso de síntesis, incluyendo área y estimación de tiempos.

RTL Schematic: Es una representación esquemática del diseño pre-optimizado mostrado como RTL (Register Transfer Level). Esta representación esta hecha con símbolos genéricos tal como, sumadores, multiplexores, contadores, puertas AND, puertas OR, etc..

Fig. 112: Representación RTL del Sumador de 1 bit

Technology schematic: Es la representación esquemática de un fichero NGC mostrado en términos de elementos lógicos optimizados para la tecnología específica a utilizar como por ejemplo, LUTs, acarreos, buffers I/O, etc..

Fig. 113: Representación del fichero NGC del Sumador de 1 bit

En este esquema podemos observar como el ‘ISE’, automáticamente, ha añadido unos IBUF’s y OBUF’s que no habíamos diseñado. Debido a esta automatización prescindiremos, en adelante, de introducirlos manualmente.

333...--- SSSÍÍÍNNNTTTEEESSSIIISSS DDDEEELLL SSSUUUMMMAAADDDOOORRR DDDEEE 111 BBBIIITTT

Hacemos doble clic en el proceso ‘Synthesize-XST’ situado en la ventana de procesos y se nos efectúa la síntesis del sumador.

Fig. 114: Síntesis del sumador de 1 bit

Page 25: Sumador 1bit

25

SUMADOR 1 BIT – IMPLEMENTACIÓN PROCESO DE DISEÑO

444ººº BBBAAACCCKKK---EEENNNDDD

IIIMMMPPPLLLEEEMMMEEENNNTTTAAACCCIIIÓÓÓNNN 111...--- CCCRRREEEAAANNNDDDOOO RRREEESSSTTTRRRIIICCCCCCIIIOOONNNEEESSS (((***...UUUCCCFFF)))

Antes de realizar el ‘Translate’, vamos a crear un fichero de restricciones (.ucf) en el cual podremos asignar periodos y retardos de tiempo a los distintos elementos del diseño, así como asignar localizaciones de pin y configurar los IOB’s, los bloques de RAM, BUFG’s, y demás recursos del CPLD que hayan sido utilizados.

A modo de ejercicio, vamos a crear un fichero de restricciones para la localización de pines. Para ello, dentro de la ventana de procesos, abrimos la utilidad ‘Assign Package Pins’.

Nota.- La localización de los pines, si no se indica lo contrario, es automatizada durante la implementación.

Fig. 115: Agregar fichero .ucf

Fig. 116: Observar fichero .ucf

Page 26: Sumador 1bit

26

SUMADOR 1 BIT – IMPLEMENTACIÓN PROCESO DE DISEÑO

Asignación de pines con PACE (Pin-out Area Constraints Editor), proceso asociado al fichero de restricciones ‘add1bit.ucf’.

Fig. 117: PACE (Pin-out Area Constraints Editor)

Una vez dentro del programa ‘PACE’ podemos realizar la localización de dos maneras:

1. En modo texto, escribiendo el nº del pin en su correspondiente ventana.

Fig. 118: Asignando pines

2. En modo gráfico, arrastrando el pin tal como muestra la Figura 119.

Fig. 119: Asignando pines

Page 27: Sumador 1bit

27

SUMADOR 1 BIT – IMPLEMENTACIÓN PROCESO DE DISEÑO

D0 VSS D1 MÓDULO VCC D2 VEE D3 LCD D5 RS D6 2X16 R/W D7 E

8 2 9 3

10 4 11

12 13 5 14 6

D1

LN10204

111...111...--- SSSEEELLLEEECCCCCCIIIÓÓÓNNN DDDEEE PPPIIINNNEEESSS EEENNN LLLAAA ‘‘‘TTTAAADDD---XXXCCC999555777222’’’

La ‘TAD-XC9572’ tiene pines dedicados a los siguientes dispositivos:

LCD (Empleados como uso exclusivo del LCD) U4

Pin 63 7 Pin 69 Pin 67 Pin 68 Pin 70 D4 Pin 71 Pin 72 Pin 75

1

Pin 79 Pin 80 Pin 81

LCD 2X16

Fig. 120: Pines dedicados en el LCD

Display’s (Tienen doble función: como I/O o de uso del Display respectivo) U2 U3

Pin 25 Pin 34

Pin19

7 a 9 f b 3 GND 8 g

GND 1 e c

d

6 Pin 17 Pin 26 Pin 36

10 Pin 35 4 5 Pin 31

Pin 21 2 Pin 32 Pin 43

7 a 9 f b 3 GND 8 g

GND 1 e c

d

6 Pin 40

10 Pin 37 4 5 Pin 33

Pin 45 2 Pin 41

SC52-11HWA

display cc SC52-11HWA

display cc

Selector I/O - Dispaly

Selector

I/O - Dispaly

Fig. 121: Pines dedicados en los Display’s

Barra de LED’s (Tienen doble función: como I/O o de uso de la Barra de LED’s)

Pin 39

Pin 46

Pin 44

Pin 51

Pin 52

Pin 47

Pin 54

Pin 55

Pin 48

Pin 50

10 11

9 12

8 13

7 14

6 15

5 16

4 17

3 18

2 19

1 20

L1 L2 L3 L4 L5 L6 L7 L8 L9 L10

Selector I/O – LED’s

Fig. 122: Pines dedicados en la barra de LED’s

Page 28: Sumador 1bit

SUMADOR 1 BIT – IMPLEMENTACIÓN PROCESO DE DISEÑO

28

El circuito a implementar, como ya sabemos, es:

Fig. 123: Diseño a implementar

Y para su análisis en la ‘TAD-XC9572’ hemos decidido utilizar, de forma aleatoria, la siguiente configuración de pines entrada/salida.

Pin 25 Pin 17 Pin 31

Pin 44

LED 3

LED 2

Pin 46

Fig. 124: Asignación de pines en el diseño a implementar

Page 29: Sumador 1bit

SUMADOR 1 BIT – IMPLEMENTACIÓN PROCESO DE DISEÑO

29

222...--- CCCOOOLLLOOOCCCAAACCCIIIÓÓÓNNN (((TTTrrraaannnssslllaaattteee)))

Realiza todos los pasos necesarios para convertir los ficheros netlist de entrada, en un formato propietario NGD que utiliza una representación interna de la tecnología que se está empleando. Este fichero describe el diseño en términos lógicos (puertas lógicas, decodificadores, RAM’s, flip-flop’s, etc).

Para ejecutar la utilidad nos ponemos encima de ‘Translate’ y hacemos doble clic.

Fig. 125: Run ‘Translate’ 333...--- CCCOOONNNEEEXXXIIIOOONNNAAADDDOOO (((FFFiiittt)))

Fit mapea la lógica definida por el fichero NGD dentro de los recursos del CPLD, tal como células lógicas, I/OB’s y otros componentes. La salida del proceso es un fichero VM6 que representa físicamente el conexionado de los componentes en el CPLD.

Para ejecutar la utilidad nos ponemos encima de ‘Fit’ y hacemos doble clic.

Fig. 126: Run ‘Fit’

Page 30: Sumador 1bit

30

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

555ººº PPPRRROOOGGGRRRAAAMMMAAACCCIIIÓÓÓNNN

Para realizar la programación del dispositivo vamos a necesitar de las herramientas Hard y Soft siguientes:

Un PC con el entorno ‘ISE’ instalado y que disponga de un puerto USB. Un cable de descarga. Una F.A. ATX. La tarjeta de aplicación didáctica ‘TAD-XC9572’.

Fig. 147: Configuración física 111...--- CCCAAABBBLLLEEE DDDEEE DDDEEESSSCCCAAARRRGGGAAA

Para realizar la descarga del diseño, Xilinx nos ofrece varios tipos de cables con distintos recursos y precios.

HW-USB HW-PC4 HW-MULTILINX HW-MULTIPRO

Fig. 148: Distintos tipos de cable de descarga

Entre todos ellos nosotros hemos seleccionado, por tecnología y precio, el cable ‘HW-USB. Ver Figura 149.

Fig. 149: Cable de descarga ‘HW-USB’

Page 31: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

31

aéreos.

111...111...--- CCCAAARRRAAACCCTTTEEERRRÍÍÍSSSTTTIIICCCAAASSS

• Supported on Windows • Automatically senses and adapts to target I/O voltage • Interfaces to devices operating at 5V (TTL), 3.3V

(LVCMOS), 2.5V, 1.8V, and 1.5V • Configures all Xilinx devices

- Virtex™ / Virtex-E / Virtex-II™ / Virtex-II Pro™ / Virtex-4™ - Spartan™ / Spartan-XL™ / Spartan-II™ / Spartan-IIE / Spartan-3™ / Spartan-3L - XC9500 / XC9500XL / XC9500XV - CoolRunner™ XPLA3 / CoolRunner-II™ - XC18V00 ISP PROM - XCF00S / XCF00P Platform Flash PROM - XC4000XL / XV / EX / E

• LED Status Indicator • CE, USB-IF, and FCC compliant

Para realizar la descarga en el CPLD con este cable podemos utilizar un cable tipo Ribbon o un adaptador de cables

AÉREO

Fig. 150: Adaptador aéreo y tipo ribbon

RIBBON

Tal y como se ve en la Figura 151, el cable HW-USB soporta JTAG (IEEE 1149.1) y el modo Serial Slave.

Fig. 151: Parte superior del ‘HW-USB’

Page 32: Sumador 1bit

32

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

111...222...--- CCCAAARRRAAACCCTTTEEERRRÍÍÍSSSTTTIIICCCAAASSS EEELLLÉÉÉCCCTTTRRRIIICCCAAASSS DDDEEELLL CCCAAABBBLLLEEE HHHWWW---UUUSSSBBB

Tabla 7: Condiciones de operación DC recomendadas

111...333...--- PPPIIINNNEEESSS DDDEEELLL CCCAAABBBLLLEEE HHHWWW---UUUSSSBBB

Ribbon Cable

Number

JTAG Configuration

Mode

Type

Description

2

VREF

IN

Voltaje de referencia. Nota.- El VREF debe estar ajustado y no debe de tener una resistencia limitadora de corriente en serie.

4 TMS OUT Esta es la señal de modo JTAG que establece la transición de estado apropiado en el dispositivo ISP (In System Programmable).

6 TCK OUT Es la señal de reloj para las operaciones JTAG. 8 TDO IN Por aquí se recibe el stream de datos serie desde el pin TDO del último dispositivo de la

cadena JTAG. 10 TDI OUT Este pin transmite el stream de datos serie al pin TDI del primer dispositivo de la cadena

JTAG. 1,3,5,7 9,11,13 Ground digital.

Tabla 8: Descripción de los pines implicados en el modo JTAG

Page 33: Sumador 1bit

33

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

222...--- MMMOOODDDOOO DDDEEE CCCOOONNNFFFIIIGGGUUURRRAAACCCIIIÓÓÓNNN BBBOOOUUUNNNDDDAAARRRYYY SSSCCCAAANNN

La familia XC9500 de Xilinx sólo soporta el modo BOUNDARY SCAN (JTAG).

En este modo, el CPLD se configura a través del IEEE 1149.1 Test Access Port (TAP). El IEEE 1149.1 Test Acces Port (TAP) y el Boundary Scan, comúnmente conocido como JTAG, es un método de testeo ampliamente extendido.

JTAG es el acrónimo de Joint Test Action Group. Este estándar proporciona un método para asegurar la integridad de los componentes, a nivel de placa, y demás interconexiones. También ofrece la flexibilidad de utilizar instrucciones propias, para un dispositivo, definidas por el usuario.

La arquitectura interna de la familia XC9500 incluye todos los elementos necesarios definidos en el estándar IEEE 1149.1, tal como:

EL TAP El controlador del TAP El registro de instrucciones El decodificador de instrucciones El registro de Boundary Scan Y el registro de Bypass

La familia XC9500 también soporta opcionalmente:

El registro de identificación de 32 bits Y el registro de configuración

Todo ello totalmente compatible con el estándar.

Fig. 152: Arquitectura del Boundary Scan

El modo JTAG nos permite verificar el CPLD tras su configuración (Readback).

Page 34: Sumador 1bit

34

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

222...111...--- EEELLL CCCOOONNNTTTRRROOOLLLAAADDDOOORRR TTTAAAPPP

Responde a la alimentación de las secuencias de control a través del puerto de acceso de test (TAP) y, genera las señales de reloj y control requeridas por otros bloques del circuito.

222...222...--- EEELLL RRREEEGGGIIISSSTTTRRROOO DDDEEE IIINNNSSSTTTRRRUUUCCCCCCIIIOOONNNEEESSS

Es un registro de desplazamiento al se le cargan las instrucciones, que seleccionan las operaciones a ejecutar, en modo serie.

222...333...--- EEELLL RRREEEGGGIIISSSTTTRRROOO DDDEEE DDDAAATTTOOOSSS

El registro de datos es un banco de registros de desplazamiento. El estímulo requerido por una operación es cargado en serie dentro del registro de datos, seleccionado por la instrucción en uso. Tras la ejecución de la operación, el resultado puede ser registrado para su examen.

222...444...--- EEELLL PPPUUUEEERRRTTTOOO DDDEEE AAACCCCCCEEESSSOOO DDDEEE TTTEEESSSTTT JJJTTTAAAGGG

El TAP tiene cuatro pines que manejan los bloques del circuito y las operaciones específicas de control. El TAP carga y descarga instrucciones y datos. Los cuatro pines del TAP son:

TMS - Test Mode Select selecciona el modo de la señal de entrada del controlador TAP. El controlador TAP es una máquina finita de 16-estados que controla el motor del JTAG. En el flanco de subida del pin TCK, TMS determina la secuencia de estado. TMS tiene una resistencia interna pull-up que proporciona un 1 lógico en el sistema si TMS está inactivo.

TCK - JTAG Test Clock secuencia el controlador TAP así como todos los registros del JTAG.

TDI -Test Data Input es la entrada serie de datos para todas las instrucciones JTAG y los registros de datos. El estado del controlador TAP y el contenido del registro de instrucción, determina que registro es alimentado por TDI en cualquier operación. TDI tiene una resistencia interna pull-up que proporciona un 1 lógico en el sistema si TDI está inactivo. TDI carga los registros del JTAG en los flancos de subida del TCK.

TDO - Test Data Out es la salida serie de datos para todas las instrucciones JTAG y los registros de datos. El estado del controlador TAP y el contenido del registro de instrucción, determina que registros alimenta TDO para una operación específica. Solamente un registro, de datos o de instrucción, es conectado entre TDI y TDO por cualquier operación JTAG. TDO cambia de estado en los flancos de bajada deTCK y está activo sólo durante el registrado de datos a través del dispositivo. TDO está en 3-estado en los demás momentos.

TRST - [Opcional] Asynchronous Test Reset para el TAP. El pin TRST trabaja en bajo activo. Cuando se produce un reset, la máquina de estados coloca, dentro, un estado de Test-Logic-Reset y, la instrucción IDCODE es cargada como la instrucción activa. Si el dispositivo no soporta la instrucción IDCODE el TAP toma por defecto la instrucción BYPASS.

222...555...--- CCCOOONNNTTTRRROOOLLLAAADDDOOORRR TTTAAAPPP JJJTTTAAAGGG

El controlador TAP es una máquina de 16-estados FSM, que controla la carga de datos dentro de algunos registros del JTAG. EL diagrama de estados del controlador TAP se muestra en la Figura 153.

El estado del pin TMS junto con el flanco de subida del TCK determina la secuencia de las transiciones de estado. Básicamente son dos transiciones de estado por cada muestra de la señal TDI: uno, por el registrado de la información en el registro de instrucción y, el otro, por el registrado de datos en el registro de datos.

Page 35: Sumador 1bit

35

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

Fig. 153: Diagrama de estados del controlador TAP 222...666...--- CCCAAADDDEEENNNAAA JJJTTTAAAGGG

Fig. 154: Topología de cadena JTAG

Page 36: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

36

333...--- IIINNNSSSTTTAAALLLAAACCCIIIÓÓÓNNN DDDEEELLL CCCAAABBBLLLEEE DDDEEE DDDEEESSSCCCAAARRRGGGAAA HHHWWW---UUUSSSBBB

El cable HW-USB está diseñado para correr bajo Windows siempre y cuando haya sido instalado previamente el entorno de diseño ‘ISE’.

Debe ser conectado a un puerto USB 2.0 para operar con Hi-speed. (En un puerto USB 1.0 tiene limitada su velocidad máxima de trabajo)

El proceso de instalación es el siguiente:

1. Se conecta el HW-USB a un puerto USB del PC y el ordenador responde con la siguiente pantalla donde

seleccionamos ‘Sí, sólo esta vez’. Ver Figura 155.

Fig. 155: Nuevo hardware encontrado

2. Instalamos el Firmware del HW-USB seleccionando ‘Instalar automáticamente el software (recomendado)’.

Fig. 156: Instalación del Firmware del HW-USB

Page 37: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

37

3. Veremos estas dos pantallas y daremos a ‘Finalizar’.

Fig. 157: Finalizando la instalación del Firmware del HW-USB

4. Automáticamente Windows detectará un nuevo Hardware para proceder a la instalación del Driver.

Fig. 158: Nuevo hardware encontrado

Page 38: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

38

5. Instalamos el Driver del HW-USB seleccionando ‘Instalar automáticamente el software (recomendado)’.

Fig. 159: Instalación del Driver del HW-USB

6. Veremos estas dos pantallas y daremos a ‘Finalizar’.

Fig. 160: Finalizando la instalación del Driver del HW-USB

Page 39: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

39

7. Si todo ha ido bien en el Administrador de Dispositivos aparecerá la entrada ‘Programming cables’.

Fig. 161: Administrador de Dispositivos

Page 40: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

40

444...--- PPPRRROOOCCCEEESSSOOO DDDEEE DDDEEESSSCCCAAARRRGGGAAA EEENNN EEELLL CCCPPPLLLDDD

El último paso del proceso es la transformación del fichero (*.VM6), conseguido durante la implementación, en un fichero con un formato universal de programación física de PLD’s denominado JEDEC (*.JED), con el que realizaremos la descarga en el CPLD a través de un cable JTAG.

444...111...--- CCCOOONNNFFFIIIGGGUUURRRAAACCCIIIÓÓÓNNN DDDEEELLL HHHAAARRRDDDWWWAAARRREEE

444...111...111...--- TTTAAADDD---XXXCCC999555777222

444...111...111...111...--- CCCOOONNNEEEXXXIIIÓÓÓNNN DDDEEE LLLAAA AAALLLIIIMMMEEENNNTTTAAACCCIIIÓÓÓNNN

Para un correcto funcionamiento del entrenador ‘TAD-XC9572’, necesitamos tensiones de 5V y 3.3V. Esto lo podemos llevar a cabo a través de una F.A. ATX, o directamente desde nuestras fuentes del laboratorio, suministrando 5V y 3.3V en la regleta de alimentación.

Fig. 162: Conectores de alimentación

444...111...111...222...--- SSSEEELLLEEECCCCCCIIIÓÓÓNNN EEEJJJEEECCCUUUTTTAAARRR///CCCOOONNNFFFIIIGGGUUURRRAAARRR

El entrenador tiene un conmutador que selecciona entre EJECUTAR y CONFIGURAR, actuando del siguiente modo:

EJECUTAR (Modo normal de funcionamiento) La tensión de 5V llega a todos los dispositivos de la placa, menos al cable de descarga.

CONFIGURAR (Modo de descarga) La tensión de 5V solamente llega al cable de descarga.

Seleccionamos CONFIGURAR.

444...111...111...333...--- SSSEEELLLEEECCCCCCIIIÓÓÓNNN DDDEEE VVVOOUUTT

Fig. 155: Selector CONFIGURAR/EJECUTAR

La familia XC9500 puede trabajar con niveles lógicos de salida 5v TTL ó 3.3v, dependiendo de la tensión conectada al pin VCCIO.

Fig. 163: Selección del nivel lógico de salida en la familia XC9500

En la ‘TAD-XC9572’, esta selección del nivel lógico de salida la llevamos a efecto con el jumper mostrado en la Figura 164.

Fig. 164: Selector del nivel lógico de salida

Page 41: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

41

444...111...222...--- HHHWWW---UUUSSSBBB

444...111...222...111...--- CCCOOONNNEEEXXXIIIÓÓÓNNN DDDEEE LLLAAA AAALLLIIIMMMEEENNNTTTAAACCCIIIÓÓÓNNN DDDEEELLL CCCAAABBBLLLEEE HHHWWW---UUUSSSBBB

El cable HW-USB toma alimentación, directamente, desde el puerto USB del PC.

Fig. 165: Selector del nivel lógico de salida

444...111...222...222...--- CCCOOONNNEEEXXXIIIÓÓÓNNN DDDEEE LLLOOOSSS PPPIIINNNEEESSS DDDEEE CCCOOONNNFFFIIIGGGUUURRRAAACCCIIIÓÓÓNNN

Conectar los cables desde el conector del cable HW-USB hasta los pines del entrenador, tal como muestra la figura 166.

Fig. 166: Conexión pines configuración

Nota.- Primero conectaremos la alimentación y luego los cables de configuración. La Vref es +5V.

Page 42: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

42

444...222...--- GGGEEENNNEEERRRAAACCCIIIÓÓÓNNN DDDEEELLL FFFIIICCCHHHEEERRROOO (((***...JJJEEEDDD)))

Ejecutamos ‘Generate Programming File’ para generar el fichero ‘sumador1bit.jed’.

Fig. 167: Generando el fichero ‘sumador1bit.jed’

444...333...--- DDDEEESSSCCCAAARRRGGGAAA DDDEEELLL FFFIIICCCHHHEEERRROOO (((***...JJJEEEDDD)))

‘IMPACT’ es el programa, integrado en ‘ISE’, que vamos a utilizar para descargar el fichero JED dentro del CPLD.

Para abrir ‘IMPACT’ haremos doble clic en ‘Configure Device (iMPACT)’.

Fig. 168: Abriendo ‘IMPACT’

‘IMPACT’ nos responde con una ventana donde seleccionaremos el modo de trabajo JTAG.

Page 43: Sumador 1bit

SUMADOR 1 BIT – PROGRAMACIÓN PROCESO DE DISEÑO

43

Comienza la programación.

Fig. 183: Programando

Si todo ha ido bien la programación habrá finalizado de forma correcta.

Fig. 184: Programación finalizada

Page 44: Sumador 1bit

44

SUMADOR 1 BIT – VERIFICACIÓN EN CIRCUITO PROCESO DE DISEÑO

666ººº VVVEEERRRIIIFFFIIICCCAAACCCIIIÓÓÓNNN EEENNN CCCIIIRRRCCCUUUIIITTTOOO

En la Figura 185 podemos observar el correcto funcionamiento del diseño en circuito con la siguiente configuración de entrada/salida:

ENTRADAS

• A Æ ‘1’ • B Æ ‘1’ • Cin Æ ‘1’

SALIDAS

• S Æ ‘1’ • Cout Æ ‘1’

Fig. 185: Verificación en circuito S

Page 45: Sumador 1bit

45

SUMADOR 1 BIT – VERIFICACIÓN EN CIRCUITO PROCESO DE DISEÑO