práctica 1 - dacya.ucm.es de laboratorio/p1-fc... · práctica 1 diseño y simulación de un...

29
Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica es la toma de contacto con la herramienta de captura y simulación de circuitos digitales Xilinx-ISE. El circuito combinacional que se va a diseñar y simular es un sumador binario de números de 2 bits. La práctica está dividida en dos partes: a) Diseñar y simular un sumador completo de un bit Implementar el circuito usando puertas NAND y XOR. Captura y simulación del circuito usando la herramienta Integrated System Environment (ISE) de Xilinx b) Diseñar y simular un sumador binario de números de 2 bit Implementar el circuito encadenando dos sumadores completos de un bit Captura y simulación del circuito usando la herramienta Integrated System Environment (ISE) de Xilinx El proceso de realización de una práctica constará habitualmente de cuatro fases: 1. Diseño del circuito 2. Captura del esquema del circuito 3. Simulación del circuito 4. Montaje del circuito - La fase de diseño consiste en realizar, en papel, el diseño (tabla de verdad, expresiones de conmutación, …) del problema que se plantea en el enunciado de cada una de las prácticas. - Para las fases de captura y simulación se va a usar la herramienta Integrated System Environment (ISE) de Xilinx. - La fase de montaje se realizará en el entrenador que hay en cada puesto del laboratorio. A lo largo de este guión se va a desarrollar la práctica siguiendo las fases explicadas en la introducción: 1. Diseño Especificación del diseño: Alto nivel: Diseñar un sumador de números naturales de 2 bits codificados en binario puro. El sumador además de los números de entrada y del valor de la suma, tendrá una línea de Cin para el acarreo de entrada y otra de Cout para el acarreo de salida. Binaria:

Upload: hakien

Post on 28-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Práctica 1

Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica es la toma de contacto con la herramienta de captura y simulación de circuitos digitales Xilinx-ISE. El circuito combinacional que se va a diseñar y simular es un sumador binario de números de 2 bits. La práctica está dividida en dos partes:

a) Diseñar y simular un sumador completo de un bit Implementar el circuito usando puertas NAND y XOR. Captura y simulación del circuito usando la herramienta Integrated System

Environment (ISE) de Xilinx

b) Diseñar y simular un sumador binario de números de 2 bit Implementar el circuito encadenando dos sumadores completos de un bit Captura y simulación del circuito usando la herramienta Integrated System

Environment (ISE) de Xilinx El proceso de realización de una práctica constará habitualmente de cuatro fases:

1. Diseño del circuito 2. Captura del esquema del circuito 3. Simulación del circuito 4. Montaje del circuito

- La fase de diseño consiste en realizar, en papel, el diseño (tabla de verdad, expresiones de conmutación, …) del problema que se plantea en el enunciado de cada una de las prácticas. - Para las fases de captura y simulación se va a usar la herramienta Integrated System Environment (ISE) de Xilinx. - La fase de montaje se realizará en el entrenador que hay en cada puesto del laboratorio. A lo largo de este guión se va a desarrollar la práctica siguiendo las fases explicadas en la introducción: 1. Diseño Especificación del diseño: Alto nivel: Diseñar un sumador de números naturales de 2 bits codificados en binario puro. El sumador además de los números de entrada y del valor de la suma, tendrá una línea de Cin para el acarreo de entrada y otra de Cout para el acarreo de salida. Binaria:

Page 2: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Entradas: A, B є { 0, 1 }2 / A, B números de 2 bits en binario puro Cin є { 0, 1 }

Salidas: S є { 0, 1 }2 / S en binario puro Cout є { 0, 1 } Función: S = ( X+Y+ Cin ) mod 4

Cout =1 si X+Y+ Cin > 4 0 en caso contrario

1.1. Diseñar del sumador completo de un bit Como se ha viso en clase de teoría, el elemento de suma más sencillo es el llamado semisumador, que tiene dos entradas, los dos bits a sumar, y dos salidas, el bit de suma y el bit de acarreo. A partir de este módulo podemos desarrollar el sumador completo de un bit, que tiene tres entradas: los dos bits a sumar y un acarreo de entrada, y dos salidas: el bit de suma y el bit de acarreo de salida. A continuación se muestran la tabla de verdad, los mapas de karnaugh y las expresiones de conmutación del sumador completo de un bit: Tabla de verdad Mapas de Karnaugh y sus expresiones: Para la salida S: Para la salida Cout:

Cout = AB + CinA + CinB S= A B C

Cin A B Cout S

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

Page 3: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

La figura 1 muestra la implementación (una representación gráfica del diseño hecha mediante componentes lógicas, conexiones entre ellos y entradas y salidas) del sumador completo de un bit usando puertas NAND y XOR.

1.2. Diseñar un sumador binario de números de 2-bit La forma más sencilla de implementar un sumador de números codificados en binario con n bits es mediante el "encadenamiento" de n sumadores completos de un bit. Este método se corresponde con el método de suma "a mano" de dos números en binario. Los sumadores se disponen en serie, sumando cada uno de ellos un par bits de igual peso de las entradas, y se conectan los bits de acarreo de forma que el acarreo de salida del sumador de peso i sea el acarreo de entrada del sumador de peso i+1. Finalmente, el acarreo de entrada del sumador de peso 0 se pone al valor lógico 0, y el acarreo de salida del sumador de mayor peso (n-1) constituye el acarreo de salida de la suma total. La figura 2 muestra la implementación del sumador binario de números de 2 bits. .

Figura 1: Diseño del sumador completo de un bit

Figura 2: Diseño del sumador binario de números de 2 bits

Page 4: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

2. Captura del esquema del circuito Una vez diseñado el circuito en papel, para poder realizar su simulación primero hay que capturar el esquema del circuito. Es decir, pasar la representación gráfica del circuito que se ha obtenido en la fase de diseño, del papel a la herramienta de simulación. Para ello tendremos que arrancar la herramienta Xilinx ISE y crear un nuevo proyecto. Un proyecto es un conjunto de ficheros de diseño, tales como esquemáticos, listas de conexionado, librerías de componentes, vectores de test para la simulación, etc., seleccionados para un diseño específico. Pasos a seguir:

2.1. Ejecutar la herramienta Xilinx Para abrir el entorno de Xilinx ISE, pulsar el icono del escritorio,

o arrancar la aplicación desde el menú Inicio seleccionando: Inicio Programas Electrónica Xilinx ISE 10.1i Project Navigator Aparecerá una ventana como la que se muestra en la figura 3.

Figura 3: Ventana inicial de Xilinx ISE

Xilinx ISE 10.1i.lnk

Page 5: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Esta ventana tiene un total de cuatro ventanas secundarias:

La ventana superior izquierda es la ventana de fuentes (source), que presenta la organización jerárquica de los elementos incluidos en el proyecto. Esta ventana tiene a su vez tres pestañas que permiten ver los módulos funcionales (Sources), las bibliotecas de módulos (Libraries) o varias instantáneas del proyecto (Snapshots).

La ventana inferior izquierda es la ventana de procesos (proccess), que

presenta las distintas operaciones que se pueden realizar sobre el objeto seleccionado en la ventana de fuentes.

La ventana inferior es la ventana de mensajes, donde se muestran distintos

mensajes del proceso que se está ejecutando.

La ventana de la derecha es la ventana para la edición de los distintos ficheros fuentes y se conoce como espacio de trabajo (workspace). Es una interfaz de múltiples documentos (MDI) y permite ver informes HTML, documentos ASCII (como código de descripción de hardware VHDL), esquemáticos, diagramas de estados, simulaciones, etc. En esta ventana aparece una pestaña llamada “What’s New in ISE Design Suite 10.1” donde se muestra información sobre la herramienta.

Cada ventana puede ser redimensionada, “despegada” de su ubicación original, o movida a una nueva ubicación. Para restaurar la configuración de ventanas por defecto seleccionamos View Restore Default Layout. Nota: En cualquier momento podemos acceder a la ayuda para consultar información adicional acerca del software ISE. El acceso se puede realizar de dos formas:

Presionando F1 para acceder a la documentación de una herramienta o función específica que hayamos seleccionado o resaltado.

Lanzando los contenidos generales de la ayuda desde el menú Help, como se

muestra en la figura 4. Este menú contiene información acerca de la creación y mantenimiento de nuestro flujo de diseño en ISE.

Figura 4: Ventana de ayuda en el IS

Page 6: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Una vez abierta la herramienta hay que abrir un proyecto.

2.2. Abrir un proyecto

Para abrir un proyecto existen dos opciones: Abrir un proyecto que ya existe: barra de herramientas, pulsar Archive

Open Project y seleccionar el proyecto que queremos abrir. Abrir un proyecto nuevo, en este caso primero hay que crearlo: barra de

herramientas y pulsar File New Project. En nuestro caso se quiere crear un nuevo proyecto para realizar la práctica 1 por lo que pulsamos File New Project. La creación de un nuevo proyecto necesita tres tipos de datos:

Datos del proyecto. Datos del dispositivo donde se va a implementar Ficheros fuente del proyecto

En primer lugar aparece una ventana como la de la figura 5, donde hay que insertar los datos del proyecto.

Datos del proyecto:

- Project Name: el nombre del proyecto. En nuestro caso se llama practica1 (sin acentos) - Project Location: lugar donde se guarda el proyecto. Se aconseja utilizar c:\hlocal\NombreProyecto. En nuestro caso c:\hlocal\practica1.

- Top Level Source Type: De momento sólo utilizaremos el Tipo Schematic, aunque podrían utilizarse otros métodos de descripción, como máquinas de estado o lenguajes de descripción hardware: VHDL y Verilog.

Figura 5: Datos del proyecto

Page 7: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Al pulsar Next aparece otra ventana, como la de la figura 6, que sirve para dar los datos del dispositivo sobre el que se va a realizar la implementación del diseño.

Datos del dispositivo

En esta ventana hay que seleccionar el simulador que se va a usar. Elegimos ISE Simulator (VHDL/Verilog) que es el que proporciona esta herramienta. El resto de campos no afectan a la simulación. Estos campos sólo son necesarios si el circuito se va a volcar en una FPGA, cosa que queda fuera del alcance de esta asignatura. Por ejemplo a estos campos se le pueden dar los valores que muestra la figura 6.

Figura 6: Datos del dispositivo y del flujo de diseño

Volvemos a pulsar Next y aparece una ventana como la de la figura 7. Esta ventana nos permite añadir ficheros fuente al proyecto.

Ficheros fuente del proyecto Estos pueden ser:

- Ficheros nuevos - Ficheros que ya existen, es decir creados para otros proyectos y que se quieren reutilizar en este proyecto.

La primera ventana que aparece (figura 7) es para crear ficheros nuevos.

Page 8: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 7: Añadir al proyecto ficheros fuente nuevos

Esta práctica necesita ficheros donde poder dibujar los circuitos combinacionales que se han obtenido en la fase de diseño (figura 1 y figura 2), luego se debe pulsar New Source, y aparecerá una pantalla como la de la figura 8.

Figura 8: Datos de nuestro fichero fuente

Figura 8: Datos del nuevo fichero En esta pantalla hay que rellenar los siguientes campos:

- Nombre del fichero: se va a realizar primero el apartado a) de la práctica por lo que llamaremos al fichero P1a.

- Localización: la opción por defecto es dentro de la carpeta del proyecto, la

dejamos. - Tipo de fichero: seleccionamos esquemático (schematic) porque es el tipo de fichero que nos permite dibujar circuitos.

Page 9: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Una vez rellenos todos los campos pulsar Next y aparece una ventana con los datos del fichero fuente que se va a crear, tal y como se muestra en la figura 9. Si hay algún dato que está mal, pulsar Back y corregirlo. Si todo es correcto, pulsar Finish. Como el fichero es nuevo nos dice que no existe y nos pregunta si queremos crearlo, pulsamos Yes.

Figura 9: Datos del fichero que se ha creado A continuación aparece una ventana con el nombre y tipo del fichero que se ha creado, tal como se muestra en la figura 10.

Figura 10: Datos del fichero que se ha creado

Al pulsar Next, aparece la ventana de la figura 11. Esta ventana nos permite incluir en el proyecto ficheros fuente que ya existen. Como no queremos incluir ningún fichero de este tipo, pulsamos Next, aparece una ventana con todos los datos del proyecto que se ha creado, pulsamos Finish y ya está abierto el proyecto NOTA: Si se quiere añadir ficheros existentes, en vez de pulsar Next y Finish en la ventana de la figura 10, pulsamos Add Source. Entonces aparecerán los ficheros que

Page 10: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

ya existen y sólo hay que seleccionar el fichero que se quiere añadir. A continuación pulsar Next y Finish.

Figura 11: Añadir al proyecto ficheros ya creados

Con esto hemos terminado el proceso de creación del proyecto y debe aparecer una ventana como la que se muestra en la figura 12.

Figura 12: Captura de esquemáticos

En esta ventana se puede observar que en la ventana de edición aparece una nueva pestaña con el nombre del fichero que hemos abierto (P1a.sch). Esta pestaña tiene abierto el editor de esquemáticos. Además, en la ventana de fuentes, está seleccionada la pestaña llamada “Symbols”.

Page 11: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

2.3. Creación del esquemático para el apartado a) de la práctica En la pestaña P1a.sch, de la ventana de edición aparece abierto el editor de esquemáticos. En este editor hay que dibujar el circuito del apartado a) de la práctica (figura 1). Para realizar el dibujo necesitamos puertas NAND y XOR. Estas puertas se encuentran en la biblioteca de módulos prediseñados que ofrece la herramienta y que está en la pestaña Symbols de la ventana de fuentes. Con esta pestaña seleccionada aparece un menú de Categories y un menú de Symbols como muestra la figura 13.

Figura 13: Entrada de esquemáticos con menú de símbolos Para elegir una componente hay que seleccionar la categoría y luego el símbolo que queremos dentro de esa categoría. Para esta práctica se necesitan las siguientes puertas lógicas: tres NAND de 2 entradas, una NAND de 3 entradas y una XOR de 3 entradas. Para buscarlas, en el menú Categories hay que seleccionar la opción Logic. Una vez seleccionada la categoría, en el menú Symbols aparecen todos los símbolos de esa categoría. Para buscar un símbolo hay dos opciones: - Si no se sabe el nombre del símbolo hay que recorrer todo el menú de símbolos hasta encontrarlo

- Si se sabe el nombre del símbolo, se puede poner en el menú Symbol Name Filter y el símbolo aparece automáticamente en el menú Symbols Cuando el símbolo aparece en el menú Symbols, hay que seleccionarlo con el ratón. Una vez seleccionado se arrastra el ratón en la ventana de edición y cada vez que se pulse el botón izquierdo aparecerá un dibujo de la componente seleccionada.

Page 12: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

En nuestro caso sabemos los nombres de los símbolos para esta práctica:

- “xor3” es una Xor de 3 entradas, - “nand2” una nand de 2 entradas - “nand3” una nand de 3 entradas.

Una vez dibujadas las puertas que se necesitan, se ponen las variables de entrada del circuito como muestra la figura 14. En este circuito las variables de entrada son A, B y Cin.

Figura 14: Puertas y variables de entrada del circuito Para poner las variables de entrada, primero hay que añadir cable en el editor de esquemáticos, uno por variable de entrada. Para poner el cable hay que seleccionar el

botón AddWire que se encuentra en la barra de herramientas. Una vez

seleccionado se pincha el ratón donde se quiere poner el cable, se arrastra y se suelta cuando se haya dibujado la cantidad de cable que se quiere. Después, en cada cable hay que poner un pin con el nombre de la variable. Para

poner un pin hay que usar el botón que se encuentra en la barra de herramientas.

Con este botón seleccionado se lleva el ratón al extremo de cada cable y se pincha en él. Para cambiar el nombre del pin hay que pinchar dos veces en el y se abre una ventana como muestra la figura 15. En Name se pone el nombre de la variable. En “PortPolarity” hay que seleccionar la opción input porque es una variable de entrada. Una vez rellenos los campos pulsar Apply y OK.

Page 13: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 15: Ventana de la etiqueta

Cuando estén puestas las etiquetas de todas las variables de entrada hay que hacer

las conexiones de todo el circuito seleccionando de nuevo el botón AddWire .

NOTA: Una manera de ver si un cable está uniendo bien dos componentes es seleccionando una de las componentes y moviéndola. Si están bien unidas se moverá el cable con la componente. NOTA: si se quiere borrar un cable, puede ocurrir que al pinchar en él se seleccionen todos los cables a los que está unido, y al dar a suprimir se eliminan todos esos cables. Para evitar esto hay que seleccionar la pestaña Options de la ventana de procesos. Dentro de esta pestaña está marcada la opción “Select the entire Branch”, y hay que marcar “Select the line segment”, (ver círculos rojos de la figura 16). Cuando se acabe de conectar todo el circuito hay que poner los pines a las variables

de salida, (Cout y S) seleccionando de nuevo el botón . Para estas variables el

campo de la etiqueta “PortPolarity” tiene que tener seleccionada la opción output porque son de salida. NOTA: No se puede poner un pin directamente en la patilla de una componente porque para conectar dos elementos (puertas, pines …) siempre tiene que haber un cable entre ellos. El circuito final se muestra en la figura 16.

Page 14: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 16: Circuito sumador completo de un bit Una vez acabado el dibujo del circuito, hay que salvar el fichero y verificar que el esquemático no contiene errores lógicos seleccionando Tools Check Schematic. La ventana de mensajes muestra los resultados del chequeo y avisa de los posibles errores o advertencias que detecte. Si la ventana de mensajes nos informa de algún error, se debe corregir antes de continuar. Llegado a este punto se pude pasar a simular el circuito. Para esta fase se requiere un simulador, y la herramienta ISE Xilinx proporciona el simulador ISE simulator. Este simulador se ha elegido al abrir el proyecto cuando se rellenan los datos del dispositivo (ver la figura 6).

Figura 17: Ventana de fuentes NOTA: Para comprobar si se ha elegido bien el simulador hay que colocarse en la pestaña source de la ventana de fuentes (figura 17). En esta ventana se muestra la organización jerárquica de los elementos incluidos en nuestro proyecto “práctica1”. Si

Page 15: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

al abrir el proyecto se han rellenado los campos como en la figura 6 aparecerá una carpeta llamada “xc3s1000-5ft256”. Colocar el ratón en dicha carpeta y una vez seleccionada dar al botón derecho y seleccionar propiedades. Aparece la ventana de datos del dispositivo (figura 6) y podemos ver qué simulador está seleccionado y, en caso de no ser el correcto, cambiarlo. NOTA: si no se salva el fichero esquemático y se corrigen los errores que puedan haber aparecido la herramienta no deja simular.

3. Simulación del apartado a) de la práctica La simulación sirve para verificar si un circuito está funcionando correctamente. Para comprobar el funcionamiento del sumador hay que comprobar si el circuito cumple su tabla de verdad. Para ello hay que dar a las variables de entrada del circuito cada uno de los valores de entrada de la tabla y ver si las variables de salida del circuito coinciden con los valores de salida que indica la tabla. La manera que tiene la herramienta de dar valores a sus variables de entrada es a través de un conjunto de estímelos. Estos estímulos se crean en los ficheros llamados ficheros de estímulos o testbench. Este tipo de ficheros contienen las entradas del circuito y nos permiten poner los valores que queramos dar a dichas entradas. Es importante saber que la simulación sólo va a realizarse para el conjunto de valores que coloquemos en el testbench. Cuando los circuitos tienen pocas variables de entrada se pueden probar todos los valores de la tabla. En los circuitos más complejos puede interesarnos realizar la simulación sólo para un conjunto de posibles entradas.

3.1. Generación de un fichero de estímulos (Testbench) Para generar un nuevo fichero hay que colocarse en la ventana de fuentes con la pestaña Sources seleccionada, y en la lista desplegable etiquetada “Sources for:” hay que cambiar la opción Implementation, que es la que nos ha permitido hacer el esquemático de nuestro circuito, por la opción Behavioral Simulation que es la que nos va a permitir generar un testbench y simular el circuito. A continuación, en el menú superior hay que seleccionar Project New Source y aparece una ventana como la de la figura 18: En esta ventana hay que rellenar los siguientes campos:

- Nombre del fichero: nombre del fichero de estímulos, por ejemplo test1

- Localización: la opción por defecto es dentro de la carpeta del proyecto, la

dejamos. - Tipo de fichero: los ficheros de estímulos son del tipo Test Bench Waveform

Page 16: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 18: Datos del nuevo fichero

Una vez rellenos los campos pulsar Next y en la siguiente ventana (figura 19) hay que seleccionar el fichero esquemático (el circuito) con el cual queremos asociar el testbench.

Figura 19: Ventana para elegir el fichero al que se asocia el testbench

Al pulsar Next y Finish aparece una ventana con los datos temporales para la simulación del diseño (Figura 20). En esta ventana los campos que hay que rellenar son los marcados en la figura 19 con un círculo rojo. El resto de opciones las dejamos con el valor por defecto. Los campos que hay que rellenar son:

- Clock Information: seleccionamos la opción Combinatorial porque nuestro circuito es combinacional y no precisa de reloj.

Page 17: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

- Inicial Lengh of the Test Bench: en este campo se indica durante cuanto tiempo se quiere dar valores a las entradas. Si el tiempo de simulación es mayor que el tiempo que asignemos a este fichero, los valores de las entradas se quedan con el último valor. Para este circuito dejamos el valor que sale por defecto. - Time Scale: la unidad de tiempo para los circuitos que se van a diseñar en este laboratorio es de nanosegundos (ns).

Figura 20: Datos temporales de la simulación

Cuando estén rellenos los campo pulsar Finish y se ha terminado el proceso de creación del fichero de estímulos (testbench) llamado test1.tbw La siguiente ventana que aparece (figura 21) tiene en la ventana de edición una nueva pestaña con el nombre del fichero que hemos creado (test1.tbw). Esta pestaña muestra el contenido de dicho fichero. El contenido del fichero de estímulos o testbench es el siguiente:

- La primera columna empezando por la izquierda muestra el nombre de cada una de las variables de entrada y salida que hay en el circuito. Aunque en el proceso de creación del testbench no se ha especificado cuales eran las variables de entrada y salida, la herramienta las conoce porque en el esquemático tienen pines. En el fichero de estímulos estas variables vienen representadas por una línea que puede tomar el valor de “0” ó “1” (son variables binarias). A cada una de las líneas que representan a las variables se las llama forma de onda y su valor por defecto es “0”. - La segunda columna muestra el valor numérico de las formas de onda en el intervalo de tiempo en el que está colocada la barra azul. En la figura 21 la

Page 18: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

barra azul está en el último intervalo, donde las formas de onda tienen valor “0” por lo que esta columna muestra todo “0”. Si se quiere cambiar de sitio la barra, simplemente hay que seleccionarla con el ratón y desplazarla con el botón derecho pulsado.

- La tercera columna muestra una línea temporal y las formas de onda de cada una de las variables. La línea temporal está dividida en intervalos dentro de los cuales no se puede modificar la forma de onda, es decir durante todo el intervalo la forma de onda mantiene el mismo valor. Dicho intervalo se llama paso de simulación y en este caso es de 100 ns, que es el valor que da por defecto la herramienta y no lo vamos a cambiar. Los primeros 100 ns están sombreados y la forma de onda no se pueden modificar en esa zona. La línea temporal acaba a los 1000 ns que es el tiempo que se ha definido al crear el testbench (ver figura 20).

Figura 21: Formas de onda iniciales del TestBench

Para dar los valores que nos interesan a una variable de entrada hay que colocarse en su forma de onda. Una vez en la forma de onda hay que colocarse en el intervalo de tiempo en el que se quiere cambiar el valor de “0” a “1” o de “1” a “0” y simplemente pulsando encima de la forma de onda se modifica. Como en esta práctica sólo hay 3 variables de entrada (Cin, A ,B) se pueden simular las 8 posibles combinaciones que presenta la tabla de verdad. Si se observa la tabla de verdad del circuito a simular (sumador completo de un bit), la variable B que es la

de menor peso (20) cambia de valor en cada combinación. La variable A, que tiene

peso 21, cambia cada dos combinaciones y la última variable Cin, con peso 2

2,

cambia cada cuatro combinaciones.

Page 19: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Tabla1: Tabla de verdad del sumador completo de un bit

Esta observación es muy útil para dar los valores a las variables y que nos salgan todas las combinaciones de la tabla:

- La variable B hay que cambiarla de valor cada intervalo de tiempo. - La variable A cada dos intervalos de tiempo. - La variable Cin cada cuatro intervalos de tiempo.

NOTA: Puede ocurrir que el orden en el que las variables aparecen en el testbench no coincida con el de la tabla verdad. Es aconsejable tener las variables ordenadas según su peso, como en la tabla de verdad. Para mover una variable sólo hay que seleccionarla con el ratón y con el botón izquierdo pulsado arrastrarla al lugar donde se quiere poner. IMPORTANTE: Las variables de salida no se pueden modificar porque al ser salidas del circuito su valor lo dará el simulador. Una vez dados los valores a las variables de entrada las formas de onda tienen que quedar como muestra la figura 22, donde podemos observar que aparecen ordenadamente todos los casos de la tabla de verdad. El tiempo total de simulación que necesita este circuito es de 800 ns porque las variables de entrada tienen 8 combinaciones posibles y cada combinación se mantiene durante un intervalo, es decir 100 ns. Como el tiempo total de simulación que hemos definido es de 1000 ns hay suficiente para simular todas las combinaciones.

11111

01011

01101

10001

01110

10010

10100

00000

SCout(20)B

(21)A

(22)Cin

11111

01011

01101

10001

01110

10010

10100

00000

SCout(20)B

(21)A

(22)Cin

Page 20: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 22: Formas de onda finales de test1.tbw A continuación hay que salvar el fichero. Si no se salva la herramienta no deja simular. Cuando se ha salvado el testbench, en la pestaña Sources de la ventana de fuentes, con la opción Behavioral Simulation, ha aparecido el fichero de estímulos test1.tbw que acabamos de guardar (figura 23 círculo rojo de la ventana superior izquierda). De este fichero cuelga el esquemático P1a.sch que es el circuito al que está asociado dicho testbench (el testbench sólo contiene los valores de las variables de entrada por lo tanto necesita el circuito al que darle esos valores). El fichero test1.tbw es realmente el que podemos simular, porque es el fichero que tiene definidas las entradas.

3.2. Simulación de un Testbench Para simular el fichero test1.tbw tenemos que seleccionarlo. Una vez seleccionado vamos a la ventana de procesos y seleccionamos la pestaña Process. Esta pestaña muestra todos los procesos que se pueden ejecutar con el fichero test1.tbw. Entre los procesos está el simulador Xilinx ISE Simulator (figura 23 círculo rojo de la ventana inferior izquierda). Para ejecutar el simulador hay dos opciones:

- Pulsando dos veces sobre ISE Simulator Simulate Behavioral Model. - Seleccionado ISE Simulator Simulate Behavioral Model., pulsando el botón derecho del ratón y seleccionando Run.

Page 21: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 23: Ejecutar el simulador ISE Simulator

Al ejecutar el simulador, en la ventana de edición se abre una nueva pestaña llamada Simulation como la de la figura 24. Esta pestaña contiene el editor del simulador y en ella se muestran los resultados de la simulación del circuito que se encuentra en el fichero P1a.sch para los valores de entrada del fichero test1.tbw La ventana de simulación es una ventana con la misma información que el fichero testbench. En ella aparecen las variables de entrada con los valores que se les han asignado anteriormente y las variables de salida que ahora muestran el resultado de poner esos valores de entrada en el circuito.

Para saber si el resultado es correcto hay que comprobar si los valores de las variables de salida para cada entrada coinciden con los de la tabla de verdad. A veces

es necesario centrar la ventana de la simulación y ajustar el zoom (botones de la barra de herramientas) para observar correctamente el resultado. Aquí también puede ocurrir que el orden en el que las variables aparecen no coincida con el de la tabla verdad. Es aconsejable tener las variables ordenadas según su peso, para poder comprobar mejor el resultado. La barra azul que aparece en la ventana puede ayudar a ver mejor los valores de las variables en cada intervalo. A modo de ejemplo, en la figura 24 se puede observar que donde se encuentra la barra azul, las formas de onda de cada una de las variables tienen el valor que se muestra en la segunda columna. Si se quiere cambiar de sitio la barra azul, simplemente hay que seleccionarla con el ratón y desplazarla con el botón derecho pulsado.

Page 22: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 24: Simulación correcta del sumador completo de un bit.

El apartado a) de esta práctica se termina cuando hayas comprobado que el resultado de la situación es correcto. La figura 24 muestra la simulación correcta del sumador completo de un bit. Antes de seguir hay que cerrar el simulador. Cuidado, no cerrar la herramienta de Xilinx entera. A continuación hay que realizar la fase de captura y simulación del circuito del apartado b) de la práctica.

4. Creación del esquemático para el apartado b) de la práctica El circuito que tenemos que capturar ahora está representado en la figura 2. Para hacer el esquemático del nuevo circuito primero tenemos que abrir un nuevo fichero tipo schematic. Para ello nos colocamos en la ventana de fuentes, con la pestaña Sources seleccionada, nos vamos a la lista desplegable etiquetada “Sources for:” y seleccionamos la opción Implementation. Una vez seleccionada la opción Implementation, hay que seleccionar Project New Source. Aparece una ventana como la de la figura 8. Todos los campos se rellenan igual salvo el nombre del fichero que ahora que llamaremos P1b. Una vez rellenos todos los campos pulsamos Next y Finish y en la ventana de edición aparece una nueva pestaña con el nombre del fichero que se ha creado (P1b.sch). En esta pestaña está abierto el editor de esquemáticos.

Page 23: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Para dibujar el nuevo circuito hay que realizar los mismos pasos que en el apartado a) (ir a la figura 13). La figura 25 muestra el circuito final.

Figura 25: Circuito del sumador binario de números de 2 bits.

Una vez acabado el dibujo del circuito, hay que salvar el fichero y verificar que el esquemático no contiene errores lógicos seleccionando Tools Check Schematic. Si la ventana de mensajes nos informa de alguna advertencia o error, se debe corregir antes de continuar.

5. Simulación para el apartado b) de la práctica Para simular el nuevo circuito hay que crear un fichero de estímulos para dar los valores de entrada del circuito. Para ello hay que colocarse en la ventana de fuentes con la pestaña Sources seleccionada, y en la lista desplegable etiquetada “Sources for:” hay que cambiar la opción Implementation por la opción Behavioral Simulation. A continuación, en el menú superior hay que seleccionar Project New Source. Ahora el nombre del fichero de estímulos se llamará test1b. Pulsar Next y asociar el test1b con el esquemático P1b.sch. Volver a pulsar Next y Finish y aparece una ventana con los datos temporales para la simulación del diseño (Figura 26). En esta ventana hay que seleccionar combinatorial y en Inicial Length of test bench como mínimo 1700 ns porque ahora hay 4 variables de entrada: A1, A0, B1, B0 (Cin no cuenta porque va a valer siempre “0”) por lo tanto la tabla de verdad tiene 16 combinaciones y como cada combinación se mantiene durante un intervalo de 100 ns esto necesita 16x100=1600 ns. A esto hay que sumarle los 100 ns del primer intervalo que está sombreado y en él no se pueden modificar las ondas.

Page 24: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 26: Datos temporales de la simulación Cuando estén rellenos los campo pulsar Finish y se ha terminado el proceso de creación del fichero de estímulos (testbench) llamado test1b.tbw La siguiente ventana que aparece (figura 27) tiene en la ventana de edición una nueva pestaña con el nombre del fichero que hemos creado (test1b.tbw). Esta pestaña muestra el contenido de dicho fichero.

Figura 27: Formas de onda iniciales de test1b.tbw

Page 25: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Antes de seguir hay que comprobar que la línea temporal del testbench termina en 1700 ns (circulo rojo de la figura 27), porque es el tiempo que se necesita simular el circuito para poder tener todas las combinaciones de la tabla de verdad. Si la línea temporal del testbench no termina en 1700 ns es porque no se ha definido bien el campo Inicial Length of test bench (figura 26). Para corregirlo hay que poner el ratón en el editor del testbech donde no haya formas de onda, pulsar el botón derecho, seleccionar Set End of Test Bench y poner los valores correctos en la ventana que aparece (figura 28).

Figura 28: Dialogo para fijar la línea temporal del testbench Una vez comprobada la línea temporal del testbench hay que dar valores a las variables de entrada. Como en este circuito tenemos más variables de entrada que en el del apartado a) para dar los valores que nos interesan a cada una de ellas vamos a usar un método más rápido que el del apartado anterior.

5.1. Simulación de estímulos complejos de señales Una manera alternativa para definir los valores de las variables de entrada es la siguiente: colocar el ratón en la forma de onda de la variable que a la que se quiere dar valores, no pinchar en la forma de onda sólo posicionar el ratón encima. Pulsar el botón derecho y seleccionar la opción de Set Value, y aparecerá el cuadro de diálogo que se muestra en la figura 29. IMPORTANTE: Los valores de la forma de onda cambian desde el intervalo donde esté colocado el ratón cuando se ha seleccionado Set Value. Dentro del intervalo da igual donde se coloque el ratón porque la onda no cambia dentro de él. En nuestro caso nos interesa que sea desde el primer intervalo.

Figura 29: Dialogo para fijar valores de simulación para variables

Seleccionar la opción Pattern Wizard y aparecerá una ventana como la de la figura 30.

Page 26: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 30: Formas de onda finales del TestBench. Los datos de esta figura son para la variable de menor peso

Esta ventana tiene los siguientes campos:

- Pattern Type: el tipo de patrón de estímulo, es decir cómo varía la señal de entrada. Nuestras variables de entrada son tipo pulso (Pulse). - Number of cycles: define durante cuantos intervalos de tiempo (ciclos) queremos dar valor a las variables. Como tenemos 16 combinaciones necesitamos 16 intervalos de tiempo.

- Pattern Parameters: los parámetros del tipo de patrón. En este caso son los parámetros de un patrón tipo Pulse son: Initial Value: valor inicial que queremos que tome la variable. Para

nuestras variables “0” Initial Delay: cuántos intervalos de tiempo (ciclos) queremos que se

mantenga el valor inicial, es decir el “0” Pulse Value: cuál será el valor del pulso. Para nuestras variables “1” Pulse Width: cuántos intervalos de tiempo (ciclos) queremos que se

mantenga el valor del pulso, es decir el “1” Para dar valor a las variables de entrada A1, A0, B1, B0 hay que rellenar la ventana de la figura 30 para cada una de ellas:

- Los campos Inicial Value y Pulse Value tienen el mismo valor en todas las variables porque al ser binarias sólo pueden tomar el valor “0” y el “1”. - Los campos Inicial Delay y Pulse Width dependen de la variable que esté seleccionada.

Page 27: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Para saber qué valor hay que poner en los campos Inicial Delay y Pulse Width en cada variable hay que observar la tabla 2.

Tabla2: Tabla de verdad del sumador binario de números de 2 bits

Observando la tabla se puede ver que:

- La variable B0 cuyo peso es 20

cambia de valor en cada combinación. Es decir mantiene tanto el valor “0” como el valor “1” un intervalo de tiempo, luego para esta variable Inicial Delay=Pulse Width=1 (figura 30)

- La variable B1 cuyo peso es 21

cambia de valor cada dos combinaciones. Es decir mantiene tanto el valor “0” como el valor “1” dos intervalos de tiempo, luego para esta variable Inicial Delay=Pulse Width=2

- La variable A0 cuyo peso es 22

cambia de valor cada cuatro combinaciones. Es decir mantiene tanto el valor “0” como el valor “1” cuatro intervalos de tiempo, luego para esta variable Inicial Delay=Pulse Width=4

- La variable A1 cuyo peso es 23, cambia de valor cada ocho combinaciones.

Es decir mantiene tanto el valor “0” como el valor “1” ocho intervalos de tiempo, luego para esta variable Inicial Delay=Pulse Width=8

La variable Cin la dejamos a “0”. Una vez dados los valores a las variables de entrada y si estas están colocadas de menor a mayor peso las formas de onda tienen que quedar como muestra la figura 31, donde podemos observar que aparecen ordenadamente todos los casos de la tabla de verdad.

Page 28: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 31: Formas de onda finales de test1.tbw

A continuación hay que salvar el fichero. Si no se salva la herramienta no deja simular. Al salvar el fichero, en la pestaña Sources de la ventana de fuentes, con la opción Behavioral Simulation, aparece el nuevo fichero de estímulos test1b.tbw. De este fichero cuelga el esquemático P1b.sch que es el circuito al que está asociado dicho testbench (el testbench sólo contiene los valores de las variables de entrada por lo tanto necesita el circuito al que darle esos valores). Para realizar la simulación hay que seguir los mismos pasos que en el apartado a) de la práctica (ir a la figura 23). El simulador por defecto sólo simula 1000 ns. Como en este caso se necesita simular como mínimo 1700 ns, hay que simular 700 ns más. Existen dos modos de hacer esto:

- Poniendo en la ventana de mensajes run 700 ns (ver círculo rojo inferior de la figura 32). Si se pone más tiempo no pasa nada, simplemente las variables de entrada se quedan con el último valor que tienen en el testbench.

- Usando los botones que se encuentran en la barra de herramientas (ver círculo rojo superior de la figura 32). Primero hay que definir el tiempo que se quiere añadir a la simulación, en nuestro caso 700 ns y luego se pulsa el botón Run. La figura 32 muestra la simulación correcta del sumador binario de números de 2 bits, En ella podemos observar que se cumplen todos los casos de la tabla de verdad.

Page 29: Práctica 1 - dacya.ucm.es de laboratorio/P1-FC... · Práctica 1 Diseño y simulación de un circuito combinacional usando puertas lógicas El objetivo de esta primera práctica

Figura 32: Simulación correcta del sumador binario de números de 2 bits.

El apartado b) de esta práctica se termina cuando hayas comprobado que el resultado de la simulación es correcto.