Diseño lógico usando Xilinx ISE

Embed Size (px)

Citation preview

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    1/40

    Laboratorio de Fundamentos de computadores 1

    Facultad de Informtica

    Universidad Complutense de Madrid

    Manual de prcticasLaboratorio de Fundamentos de

    Computadores

    PARTE I:Diseo lgico usando Xilinx ISE

    AUTORES: David Atienza Alonso, Hortensia Mecha Lpez,

    Inmaculada Pardines Lence, Silvia Del Pino Gordo

    Dpto. Arquitectura de Computadores y Automtica

    Universidad Complutense de Madrid

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    2/40

    Laboratorio de Fundamentos de computadores 2

    Facultad de Informtica

    Universidad Complutense de Madrid

    PRCTICA 0: Captura y simulacin de circuitosdigitales

    El objetivo de esta primera prctica es la toma de contacto con lasherramientas de captura y simulacin de circuitos digitales que se utilizarn parala realizacin de las prcticas de que consta esta parte de la asignatura.

    La prctica consistir en comprobar el funcionamiento de varias puertasbsicas (NOT, AND, OR y NAND). A lo largo de este guin se irn indicandotodos los pasos a seguir para poder simular el funcionamiento de un circuitodigital.

    El proceso de realizacin de una prctica constar habitualmente de tresfases:

    Diseo del circuito. Captura del esquema del circuito. Simulacin del circuito.

    El alumno deber realizar la primera fase antes del turno de laboratorio quele corresponda, y slo las otras dos en el propio laboratorio. En esta primeraprctica no ser necesario hacer un diseo sobre el papel, previo a la captura,debido a su sencillez. Nos limitaremos a explicar el uso de la herramientaIntegrated System Environment (ISE) de Xilinx, que es la aplicacin que vamosa utilizar para la realizacin de estas prcticas, y que permiten llevar a cabo lasdos ltimas fases.

    El circuito que vamos a capturar y simular corresponde al que se muestra enel diseo 1. Como puede verse, consta de dos entradasA y B, y cuatro salidas,salida_NOT, salida_AND, salida_OR y salida_NAND. Para comprobar elfuncionamiento de estas puertas se tendrn que generar todas las

    combinaciones posibles de las variables de entrada y visualizar el valor de lasalida para cada una de las funciones. Estos valores deben coincidir con la tablade verdad de las funciones.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    3/40

    Laboratorio de Fundamentos de computadores 3

    Facultad de Informtica

    Universidad Complutense de Madrid

    Diseo 1: Puertas lgicas simples

    1. Captura del esquema del circuito

    Para poder proceder a su simulacin, en primer lugar hemos de capturar elesquema del circuito. Es decir, realizar una representacin grfica del diseomediante componentes (como las puertas lgicas), conexiones entre ellos yentradas y salidas. Para ello tendremos que arrancar la herramienta Xilinx ISE ycrear un nuevo proyecto. Un proyecto es un conjunto de ficheros de diseo,tales como esquemticos, listas de conexionado, libreras de componentes,vectores de test para la simulacin, etc., seleccionados para un diseoespecfico.

    1.1 Ejecutar la aplicacin

    Para abrir el entorno de Xilinx ISE, pulsar el icono del escritorio,

    o arrancar la aplicacin desde el men Inicio seleccionando:

    Inicio Programas ElectrnicaXilinx ISE 9.1i Project Navigator

    salida_NOT

    salida_AND

    salida_OR

    salida_NAND

    Xilinx ISE 9.1i.lnk

    A

    B

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    4/40

    Laboratorio de Fundamentos de computadores 4

    Facultad de Informtica

    Universidad Complutense de Madrid

    Nos aparecer una ventana como la que se muestra en la Figura 1.

    Figura 1: Ventana inic ial de Xilinx ISE

    La ventana tiene un total de cuatro ventanas secundarias:

    La ventana superior izquierda es la ventana de fuentes, que presenta laorganizacin jerrquica de los elementos incluidos en el proyecto. Esta ventanatiene a su vez tres pestaas que permiten ver los mdulos funcionales (Sources),las bibliotecas de mdulos (Libraries) o varias instantneas del proyecto(Snapshots).

    La ventana inferior izquierda es la ventana de procesos, que presenta lasdistintas operaciones que se pueden realizar sobre el objeto seleccionado en laventana de fuentes.

    La ventana inferior es la ventana de mensajes, donde se muestran distintosmensajes del proceso que se est ejecutando.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    5/40

    Laboratorio de Fundamentos de computadores 5

    Facultad de Informtica

    Universidad Complutense de Madrid

    La ventana de la derecha es la ventana para la edicin de los distintos ficherosfuentes. Es una interfaz de mltiples documentos (MDI) conocida como espaciode trabajo (workspace), y permite ver informes HTML, documentos ASCII (comocdigo de descripcin de hardware VHDL), esquemticos, diagramas de estados,simulaciones, etc.

    Cada ventana puede ser redimensionada, despegada de su ubicacin original, omovida a una nueva ubicacin. Para restaurar la configuracin de ventanas pordefecto seleccionamos View Restore Default Layout.

    1.2 Acceso a la ayuda

    En cualquier momento podemos acceder a la ayuda para consultar informacinadicional acerca del software ISE. El acceso realizar de dos formas:

    Presionamos F1 para acceder a la documentacin de una herramienta ofuncin especfica que hayamos seleccionado o resaltado.

    Lanzamos los contenidos generales de la ayuda desde el men Help.Contiene informacin acerca de la creacin y mantenimiento de nuestroflujo de diseo en ISE.

    Figura 2: Ventana de ayuda en el ISE

    1.3 Creacin de un nuevo proyecto

    Para crear un nuevo proyecto pulsamos FileNew Project. La creacin de unnuevo proyecto necesita que introduzcamos 3 tipos de datos:

    Datos del proyecto.

    Datos del dispositivo donde se va a implementar.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    6/40

    Laboratorio de Fundamentos de computadores 6

    Facultad de Informtica

    Universidad Complutense de Madrid

    Ficheros fuente del proyecto

    En primer lugar, nos aparecer una ventana como la de la Figura 3, dondedebemos insertar los datos del proyecto.

    Figura 3: Datos del proyecto

    1.3.1 Datos del proyecto

    Project Name damos el nombre de nuestro proyecto. Por ejemplo practica1.

    Project Location damos el camino de datos donde se guarda el proyecto.Aconsejamos utilizar c:\hlocal\NombreProyecto En nuestro ejemploc:\hlocal\practica1.

    Top Level Source Type De momento slo utilizaremos el Tipo Schematic,aunque podran utilizarse otros mtodos de descripcin, como mquinas deestado o lenguajes de descripcin hardware: VHDL y Verilog.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    7/40

    Laboratorio de Fundamentos de computadores 7

    Facultad de Informtica

    Universidad Complutense de Madrid

    1.3.2 Datos del disposit ivo

    Despus pulsamos el botn de Next, lo cual da lugar a la aparicin de otraventana (como la de la Figura 4) que sirve para dar los datos del dispositivo sobreel que se va a realizar la implementacin del diseo.

    En este caso hay que introducir los datos de la familia de FPGAs con la quevamos a trabajar (Spartan 2, Spartan 3, Virtex, etc), los datos del dispositivo enparticular y de su empaquetamiento. Todos estos datos pueden leerse sobre elcircuito integrado correspondiente a la FPGA que estamos usando, y para el caso

    en particular de las FPGAs del laboratorio son los que se muestran en la Figura 4(Spartan3 XC3S1000 FT256). El resto de los datos sobre las herramientas desntesis, simulador, etc, deben seleccionarse tambin como se muestra en lamisma figura.

    Figura 4: Datos del dispositivo y del flujo de diseo

    1.3.3 Ficheros fuente del proyecto

    Los ficheros fuentes del proyecto pueden ser de dos tipos:

    Ficheros nuevos, que vamos a crear en nuestro proyecto.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    8/40

    Laboratorio de Fundamentos de computadores 8

    Facultad de Informtica

    Universidad Complutense de Madrid

    Ficheros existentes, creados para otros proyectos y que vamos areutilizar en nuestro proyecto.

    Volvemos a pulsarNext y nos aparece una ventana como la de la Figura 5. Estaventana sirve para determinar todos los ficheros fuente que vamos a crear ennuestro proyecto. En las prcticas iniciales nuestro proyecto estar formado porun nico diseo en formato esquemtico, y por tanto slo utilizaremos un ficherofuente. Pero en prcticas ms complejas puede utilizarse diseo jerrquico,formado por varios mdulos conectados entre s, cada uno de ellos sobre unfichero fuente diferente, e incluso en un formato distinto.

    Figura 5: Datos de los nuevos ficheros fuente del proyecto

    1.3.4 Ficheros nuevos de nuestro proyecto

    Pulsamos New Source y damos el nombre del fichero (por ejemplo prueba1), elcamino de datos donde vamos a almacenar el diseo (se puede dejar el que salepor defecto), y el tipo correspondiente, que en nuestro caso ser Schematic,

    como se muestra en la Figura 6.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    9/40

    Laboratorio de Fundamentos de computadores 9

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 6: Datos de nuestro f ichero fuente

    Pulsamos Next y Finish.

    Si el directorio no existe nos pregunta que si queremos crearlo. En este casodiremos Yes. A continuacin nos aparece otra ventana, parecida a la de la Figura5, pero con los datos de los ficheros fuente que hemos indicado que queremoscrear, tal y como se muestra en la Figura 7.

    Figura 7: Datos de ficheros fuente nuevos que queramos crear en nuestro proyecto

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    10/40

    Laboratorio de Fundamentos de computadores 10

    Facultad de Informtica

    Universidad Complutense de Madrid

    Si nuestro proyecto va a constar de ms de un mdulo nuevo, repetiramos esteproceso tantas veces como sea necesario. Cuando hayamos terminado de dar losnombres de todos los ficheros que vamos a crear, pulsamos Next, y aparece unaventana como la de la Figura 8, que sirve para incluir en el proyecto otros ficherosfuente generados anteriormente. Si no vamos a incluir otros ficheros, pulsamosNext y Finish.

    1.3.5 Ficheros existentes, reutilizacin en nuestro proyecto.

    El mtodo es exactamente el mismo del proceso de crear nuevos ficheros fuente

    (apartado 1.3.4), pero en este caso para aadir diseos existentes (de otrosproyectos) tanto en formato de esquemtico, como en otros lenguajes dedescripcin como VHDL. Por ejemplo, si queremos aadir un esquemtico dealgn diseo previamente realizado, pulsaremosAdd Source.

    Figura 8: Datos de ficheros fuente ya creados que queramos aadir al proyecto

    Seleccionamos el fichero que queremos aadir (prueba1.sch) y a continuacinNext, FinishyOK. Con esto hemos terminado el proceso de Inicializacin.

    1.3.6 Apertura de un proyecto existente

    Simplemente seleccionamos ArchiveOpen Project y seleccionamos elproyecto que queremos abrir (con la opcin Tipo ISE Project Files) en la ventanacorrespondiente (ver Figura 9).

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    11/40

    Laboratorio de Fundamentos de computadores 11

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 9: Apertura de un proyecto existente

    1.4 Creacin del esquemtico

    Una vez terminado el proceso de inicializacin, o bien el de abrir un proyectoexistente, debe aparecer una ventana como la que se muestra en la Figura 10.Observamos que en el workspace aparece la pestaa Design Summary, y queen la ventana Sources est seleccionada la pestaa Sources.

    Figura 10: Entorno de Xilinx ISE

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    12/40

    Laboratorio de Fundamentos de computadores 12

    Facultad de Informtica

    Universidad Complutense de Madrid

    En la ventana de fuentes, con la pestaa Sources seleccionada, observamos lalista desplegable etiquetada Sources for:, que nos permite seleccionar fuentespara distintas etapas del proceso de diseo (para sntesis, para simulacin lgica,simulacin despus de la colocacin, etc.). Nos situaremos en la seleccinSynthesis/Implementation, y dentro del conjunto de mdulos para sntesis,seleccionamos el esquemtico que queremos editar (por ejemplo, prueba1), ycon el botn derecho del ratn pulsamos Open. El espacio de trabajo (o ventanade edicin) cambia entonces a un editor de esquemticos que presenta la Figura11.

    Figura 11: Entrada de esquemticos

    En la ventana de fuentes nos aparece una nueva pestaa Symbols, y alseleccionarla se muestra la biblioteca de mdulos prediseados que podemosutilizar en nuestro diseo (Figura 12). En la ventana para edicin dibujaremosnuestro diseo.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    13/40

    Laboratorio de Fundamentos de computadores 13

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 12: Entrada de esquemticos con men de smbolos

    Para elegir los smbolos utilizamos la pestaa Symbolsde la ventana de fuentes,y a travs del men Categories y el men Symbols iremos seleccionando loselementos de nuestro diseo y colocndolos en la ventana de edicin. En elejemplo vemos que estamos generando un esquemtico que incluye distintostipos de puertas bsicas (panel de la derecha en la Figura 12) a partir de lossmbolos de la categora Logic (panel de la izquierda en la Figura 12): inversor(inv), and de 2 entradas (and2), or de 2 entradas (or2) y nand de 2 entradas(nand2).

    Para realizar las conexiones utilizaremos el botn AddWire que se

    encuentra en la barra de herramientas.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    14/40

    Laboratorio de Fundamentos de computadores 14

    Facultad de Informtica

    Universidad Complutense de Madrid

    Una vez realizadas las conexiones el diseo debe quedar como se muestra en laFigura 13.

    Figura 13: Puertas lgicas e interconexiones sin Buffers de E/S

    En el caso que vayamos a implementar el diseo, nos falta aadir los IBUF y

    OBUF (categora IO, smbolos ibuffy obuf), y los pines de entrada-salida con elbotn que se encuentra tambin en la barra de herramientas. En este caso

    las entradas las nombraremos como A y B, y las salidas recibirn el nombresalida_not, salida_and2, salida_or2 y salida_nand2.

    El resultado es el que se muestra en la Figura 14. Una vez terminado esaconsejable salvar el diseo.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    15/40

    Laboratorio de Fundamentos de computadores 15

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 14: Puertas y entradas con Buffers de E/S

    1.5 Creacin del NETLIST

    Para que el fichero pueda ser simulado se debe generar el listado deconexiones (Netlist) del mismo. Verificamos que el esquemtico no contieneerrores lgicos seleccionando ToolsCheck Schematic. La ventana demensajes debera informar que no se detectan errores o advertencias. Si laventana de mensajes nos informa de alguna advertencia o error, se debe

    remediar antes de continuarLlegado a este punto estamos en disposicin de pasar a simular el circuito,

    para esta fase se requiere (aparte del ISE) un programa adicional de simulacinlgica. En este laboratorio utilizaremos el programa de simulacin MentorModelsim. El acceso a dicho programa se encuentra plenamente integrado en elinterfaz grfico del ISE, por lo que puede ser invocado sin cambiar de entorno,como veremos a continuacin.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    16/40

    Laboratorio de Fundamentos de computadores 16

    Facultad de Informtica

    Universidad Complutense de Madrid

    2 Simulacin del diseoEn primer lugar, en la ventana de fuentes seleccionamos la pestaa Sources y laopcin Behavioral Simulation en la lista desplegable Sources for:, de formaque se visualicen las fuentes de nuestro proyecto que se pueden simular, yelegimos aquella que queremos simular (en nuestro caso prueba1.sch). Antes derealizar la simulacin, es necesario generar un testbenchcon las entradas conque queremos estimular a nuestro diseo para comprobar que funciona. Es decir,la simulacin slo va a realizarse para el conjunto de estmulos que coloquemosen el testbench. Para circuitos simples, el conjunto de estmulos puede ser eltotal de todas las posibles entradas de un diseo, pero para mdulos muycomplejos puede interesarnos realizar la simulacin slo para un conjunto deposibles entradas.

    2.1 Generacin de un fichero de estmulos (Testbench)

    Para generar el conjunto de estmulos, seleccionamos en el men superior:

    ProjectNew Source y en la ventana que nos aparece (Figura 15)seleccionamos:

    Tipo de fuente: Test Bench Waveform, y damos un nombre al fichero dondevamos a crearlo, por ejemplo test1, como se muestra en la Figura 15.

    Figura 15: Generacin de un testbench

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    17/40

    Laboratorio de Fundamentos de computadores 17

    Facultad de Informtica

    Universidad Complutense de Madrid

    Pulsamos Next y en la siguiente ventana (Figura 16) nos piden el nombre de lafuente con la cual queremos asociar el testbench. En nuestro ejemploseleccionaremos prueba1.

    Figura 16: Fuente asociada al Testbench

    Pulsamos Next y Finish.

    A continuacin nos aparece una ventana con datos temporales para la simulacin

    del diseo (Figura 17), como por ejemplo la forma del reloj, el tiempo desimulacin, etc. En este ejemplo, como se trata de un circuito combinacional,seleccionaremos la opcin Combinatorial y dejaremos el resto de opciones consu valor por defecto. Para continuar pulsaremos Finish.

    Figura 17: Datos temporales de la simulacin

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    18/40

    Laboratorio de Fundamentos de computadores 18

    Facultad de Informtica

    Universidad Complutense de Madrid

    En la siguiente ventana (Figura 18), nos aparece el valor que se ha asignado deforma automtica, de todas las entradas y salidas de nuestro circuito.

    Figura 18: Formas de onda iniciales del TestBench

    Es necesario modificar el conjunto de estmulos que aparece inicialmente, de laforma que consideremos ms adecuada, para probar el mximo nmero decombinaciones de entrada posibles. Simplemente pulsando en lascorrespondientes formas de onda, donde queramos cambiar su valor, semodifican automticamente. Un posible Testbench final que cubre las 4 posiblescombinaciones de la seales de entrada es el que se muestra en la Figura 19.Una vez terminado, salvar las formas de onda.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    19/40

    Laboratorio de Fundamentos de computadores 19

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 19: Formas de onda finales del TestBench

    Se puede observar que en la ventana de fuentes, con la seleccin BehavioralSimulation, ha aparecido la nueva fuente test1.tbw, en cuyo interior se encuentranuestro esquemtico prueba1.sch. El mdulo test1.tbw es realmente el quepodemos simular, puesto que tiene definidas las entradas. Si seleccionamos estemdulo, y en la ventana de procesos seleccionamos la pestaa Process,veremos que entre los procesos asociados a la fuente test1.tbw aparece el desimulacin.

    2.1.1 Simulacin de estmulos complejos de seales

    Una manera alternativa de definir los estmulos de una cierta seal es pulsandocon el botn derecho sobre su forma de onda y seleccionar entonces la opcin deSet Value, lo que produce la aparicin del cuadro de dilogo que se muestra enla Figura 20.

    Figura 20: Dialogo para fijar valores de simulacin para variables

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    20/40

    Laboratorio de Fundamentos de computadores 20

    Facultad de Informtica

    Universidad Complutense de Madrid

    Donde se puede seleccionar la opcin Pattern Wizard, que permite definir cmovaran las seales de entrada o tipo de patrn de estmulos (Pattern Type), laduracin del estmulo en ciclos (Number of cycles), y con qu parmetros sedebe aplicar el patrn (Pattern Parameters), segn se muestra en la Figura 21 .

    Figura 21: Formas de onda finales del TestBench

    De las opciones que aparecen en la ventana, slo utilizaremos inicialmente elpatrn de tipo Pulsos (Pulse). Este patrn nos permite darle un valor inicial acada seal (Initial Value), el retardo que dicho valor inicial se debe mantener(Initial Value), e indicar cul ser el valor del pulso (Pulse Value) y el nmero deciclos de reloj que quiere mantenerse la seal a dicho valor (Pulse Width). Deeste modo, para crear un estmulo que dure 8 ciclos desde la posicin actual de

    simulacin, para una seal que cambie su valor cada ciclo de reloj y tenga comovalor inicial un 0 lgico, debemos definir la seal como se muestra en la figura. Demanera similar, si se quisiera generar una seal que cambie su valor lgico, bastacon fijar su retardo inicial y su ancho de pulso a 2, y as sucesivamente conpotencias de dos para las seales con mayor peso.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    21/40

    Laboratorio de Fundamentos de computadores 21

    Facultad de Informtica

    Universidad Complutense de Madrid

    2.2 Simulacin de un Testbench

    En la ventana de fuentes, seleccionamos la pestaa Sources, y dentro de lasfuentes la correspondiente al Testbench (test1.tbw). En la ventana de procesosseleccionamos la pestaa Process, para que nos aparezcan todos los procesosasociados a la fuente test1 (segn se muestra en la Figura 22). Entoncesmandamos ejecutar la simulacin pulsando dos veces sobre ModelSimSimulatorSimulate Behavioral Model, o bien seleccionado ModelSimSimulatorSimulate Behavioral Model y pulsando el botn derecho yseleccionandoRun.

    Figura 22: Inicio de la s imulacin utilizando ModelSim

    El resultado de la simulacin se presenta en la Figura 23 . En algunas ocasioneshay que cerrar una ventana que aparece en el workspace, justo antes de lavisualizacin de la simulacin. Es necesario centrar la ventana de la simulacin yajustar el zoom para observar correctamente el resultado.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    22/40

    Laboratorio de Fundamentos de computadores 22

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 23: Resultado de la simulacin del TestBenchSi consideramos que es mejor cambiar el valor de los estmulos de entrada, habrque repetir el proceso de edicin del testbench. Si no est abierto el fichero conlas formas de ondas, primero pinchamos sobre la fuente correspondiente(test1.tbw) y con el botn derecho del ratn pulsar Open. Una vez abierto, semodifican las formas de onda pinchando sobre ellas como se ha explicado en elapartado 2.1 y luego se vuelve a ejecutar la simulacin seleccionando, en laventana de procesos, Modelsim o algn otro simulador alternativo que seencuentre instalado.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    23/40

    Laboratorio de Fundamentos de computadores 23

    Facultad de Informtica

    Universidad Complutense de Madrid

    PRCTICA 1: Diseo de un comparador.

    OBJETIVO: Diseo completo de un circuito combinacional usando puertaslgicas.

    ESPECIFICACIN:

    Alto nivel:

    Entradas: X X { 0, 1, 2, 3 }Y Y { 0, 1, 2, 3 }

    Salida: S S { 0, 1, 2 }

    Funcin de alto nivel: 0 si X = Y1 si X < Y2 si X > Y

    PASOS A SEGUIR:

    1.-Codificar en binario puro las entradas y las salidas del sistema.

    2.-Obtener las tablas de verdad del comportamiento del circuito en trminos dela codificacin realizada en 1.

    3.-Especificar el circuito usando expresiones cannicas.

    4.-Simplificar las expresiones cannicas usando diagramas de Karnaugh.

    5.-Disear el circuito usando dos niveles de puertas AND/OR (smbolos andX yorX de la librera de smbolos del ISE, sustituyendo la X de los nombresde los smbolos por el nmero de entradas de cada puerta deseada)

    6.-Capturar y simular el circuito del punto 5.

    7.-Convertir el circuito del punto 5 en dos niveles de puertas NAND (smbolosnandX de la librera de smbolos del ISE).

    8.-Captura y simulacin del circuito del punto 7.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    24/40

    Laboratorio de Fundamentos de computadores 24

    Facultad de Informtica

    Universidad Complutense de Madrid

    IMPLEMENTACIN:

    Nombres de los diferentes puertos:

    Vector X: X0 y X1 (en maysculas).

    Vector Y: Y0 y Y1 (en maysculas).

    Vector S: S0 y S1 (en maysculas).

    Nombre de los archivos:

    Paso 6: Pr11.sch Paso 8: Pr12.sch

    NOCIONES TERICAS:

    Formas cannicas de las expresiones de conmutacin.

    Mapas de Karnaugh.

    Codificacin en binario.

    Equivalencia de dos niveles de puertas AND - OR y dos niveles de puertasNAND.

    1 TestBench exhaustivos en Xilinx ISE

    En la simulacin del esquemtico diseado en esta prctica debemos haceruna prueba exhaustiva de todas las posibles configuraciones de las entradas(tabla de verdad) y verificar que las salidas toman el valor esperado. Para ellodebemos forzarestmulos peridicos en las seales de entrada, empezandopor la seal menos significativa, continuamos con las siguientes doblando elperodo de la seal anterior, y as sucesivamente hasta la ms significativa. Estetipo de estmulos se pueden introducir segn las indicaciones de la Seccin

    2.1.1.Las formas de onda que deben fijarse en el TestBench de esta prctica

    mediante la definicin de patrones se muestran en la Figura 24, donde podemosobservar que aparecen ordenadamente todos los casos de la tabla de verdad.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    25/40

    Laboratorio de Fundamentos de computadores 25

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 24: TestBench de la simulacin de la tabla de verdad

    Las ondas resultantes de esta simulacin en Modelsim se muestran en laFigura 25, donde podemos observar que aparecen ordenadamente todos los

    casos de la tabla de verdad.

    Figura 25: Resultados de la simulacin en Modelsim del comparador

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    26/40

    Laboratorio de Fundamentos de computadores 26

    Facultad de Informtica

    Universidad Complutense de Madrid

    PRCTICA 2: Diseo de un sumador.

    OBJETIVO: Diseo modular y jerrquico de circuitos combinacionales.

    ESPECIFICACIN:

    Alto nivel:

    Diseo de un sumador de nmeros positivos, codificados en binario purode 4 bits; poseer una lnea de Cin (para el acarreo de entrada) y otra de Cout(para el acarreo de salida).

    Binaria:

    Entradas: X, Y { 0, 1 }4 / X, Y en binario puroCin { 0, 1 }

    Salidas: S { 0, 1 }4 / S en binario puro

    Cout { 0, 1 }

    Funcin:S = ( X+Y+ Cin ) mod 16Cout = 1 si X+Y+ Cin > 15

    0 en caso contrario

    PASOS A SEGUIR:

    1.- Implementar el circuito sumador de un bit usando puertas NAND y XOR(smbolos nandX y xorX de la librera de smbolos del ISE, sustituyendo laX de los nombres de los smbolos por el nmero de entradas de cadapuerta deseada)).

    .2.-Captura y simulacin del sumador de un bit.

    3.- Interconectar los cuatro sumadores de un bit entre s y con puertos externos.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    27/40

    Laboratorio de Fundamentos de computadores 27

    Facultad de Informtica

    Universidad Complutense de Madrid

    4.-Capturar y simular el circuito completo.

    5.-Disear jerrquicamente en dos niveles el sumador completo.

    6.-Capturar el diseo jerrquico.

    IMPLEMENTACIN:

    Nombres de los diferentes puertos:

    Entradas del sumador de un bit: X, Y y Ci.

    Salida del sumador de un bit: Z y Co.

    Vectores de entrada del sumador de 4 bits X=(X0,X1,X2,X3), Y=(Y0,Y1,Y2,Y3).

    Vector de salida del sumador de 4 bits S=(S0,S1,S2,S3).

    Entrada y salida de acarreo del sumador de 4 bits: Cin y Cout.

    Nombre de los archivos:

    Paso 2: Pr21.SCH.

    Paso 4: Pr22.SCH.

    Paso 6: Pr23.SCH.

    1 Nociones tericas

    El elemento de suma ms sencillo es el llamado semisumador, que tienedos entradas, los dos bits a sumar, y dos salidas, el bit de suma y el bit deacarreo. A partir de este mdulo podemos desarrollar el sumador completo deun bit, que tiene tres entradas: los dos bits a sumar y un acarreo de entrada, ydos salidas: el bit de suma y el bit de acarreo de salida.

    La forma ms sencilla de implementar un sumador de nmeros codificados

    en binario con n bits es mediante el "encadenamiento" de n sumadorescompletos de un bit. Este mtodo se corresponde con el mtodo de suma "amano" de dos nmeros en binario. Los sumadores se disponen en batera,sumando cada uno de ellos cada par bits de igual peso de las entradas, y seconectan los bits de acarreo de forma que el acarreo de salida del sumador depeso i sea el acarreo de entrada del sumador de peso i+1. Finalmente, elacarreo de entrada del sumador de peso 0 se pone al valor lgico 0, y el acarreo

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    28/40

    Laboratorio de Fundamentos de computadores 28

    Facultad de Informtica

    Universidad Complutense de Madrid

    de salida del sumador de mayor peso (n-1) constituye el acarreo de salida de lasuma total.

    2 Nociones de Xilinx ISE

    2.1 Diseo jerrquico en Xilinx ISE

    Para realizar un diseo jerrquico necesitamos crear un smbolo a partir de un

    diseo ya existente. El smbolo consistir en un nuevo componente donde elusuario slo ver un bloque con el mismo nmero de entradas y de salidas que elesquema original, que englobar a ste y realizar su misma funcin. Este smboloque se crea, pasa a formar parte de la librera de componentes del proyecto, ypodr utilizarse como un dispositivo ms. Como ejemplo, vamos a generar unsmbolo llamado prueba1 que representa el conjunto de puertas lgicas bsicas dela prctica 0 (prueba1.sch). Para crearlo, una vez terminado el diseo vamos a laventana de fuentes (vista Synthesis/Implementation) y seleccionamos el ficherofuente que contiene el conjunto de puertas lgicas. En la ventana de procesosseleccionamos la pestaa Process, y dentro de Design Utilities pulsamos dosveces sobre Create Schematic Symbol, segn se muestra en la Figura 26.

    Figura 26: Generacin de un smbolo asociado a un esquemtico

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    29/40

    Laboratorio de Fundamentos de computadores 29

    Facultad de Informtica

    Universidad Complutense de Madrid

    Para ver que la operacin se ha realizado de forma satisfactoria, y que tenemosel smbolo disponible en la librera, se accede a la ventana de fuentes yseleccionamos la pestaa Symbol. En la categora c:/hlocal/practica1 aparece elnuevo smbolo prueba1, como se muestra en la Figura 27.

    Figura 27: Esquemtico del nuevo smbolo prueba1

    De este modo, el mdulo prueba1 puede aadirse a un nuevo esquemtico (porejemplo, jerarquico.sch) como cualquier smbolo de las libreras del ISE. Trasaadir el mdulo prueba1 al nuevo esquemtico, al seleccionar la pestaaSources, vemos que el nuevo mdulo est dentro del esquemtico jerarquico.schal ser un diseo jerrquico, como se muestra en la Figura 28.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    30/40

    Laboratorio de Fundamentos de computadores 30

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 28: Diseo jerrquico de esquemticos

    La realizacin de smbolos es una herramienta muy til a la hora de disearcircuitos ms complicados y que adems tengan partes que se repitan. Facilita eldiseo jerrquico y estructurado, permitiendo una mayor claridad a la hora depresentar un circuito y entender su funcionamiento.

    2.2 Buses

    Cuando en un diseo utilizamos seales de ms de un bit, es conveniente emplearbuses. Lo primero que hay que hacer es crear los terminales de los buses. Para

    ello, al crear los pines de entrada-salida con el botn de la barra de

    herramientas, nos aparecer una ventana como la que se muestra en la Figura 29,

    donde tendremos que indicar el nombre, el tipo de terminal y el nmero de bits delbus, segn el formato NOMBRE(NUM-BITS).

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    31/40

    Laboratorio de Fundamentos de computadores 31

    Facultad de Informtica

    Universidad Complutense de Madrid

    Figura 29: Pantalla de definicin de propiedades del bus

    Como ltimo paso, hay que renombrar los cables de conexin de las entradas delas puertas correspondientes con los nombres de los componentes del bus que sedesean. Para ello, pulsamos con el botn derecho sobre el cable que queramosrenombrar y elegimos la opcin de renombrarlo (Rename Selected Net), de modo

    que nos aparece una ventana tal y como se muestra en la Figura 30.

    Figura 30: Pantalla para renombrar un cable de conexin

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    32/40

    Laboratorio de Fundamentos de computadores 32

    Facultad de Informtica

    Universidad Complutense de Madrid

    Despus slo hay que incluir el nombre del componente del bus que queramosutilizar como cable de conexin para dicha puerta segn el formato NOMBRE(BIT)(o NOMBRE(BIT-INICIO:BIT-FIN) en el caso de ser un rango de bits). Comoejemplo, el resultado final con un bus de entrada para un esquemtico que contieneuna puerta AND de 4 entradas quedara como aparece en la Figura 31.

    Figura 31: Uso de un bus de entrada para una puerta and4

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    33/40

    Laboratorio de Fundamentos de computadores 33

    Facultad de Informtica

    Universidad Complutense de Madrid

    PRCTICA 3: Diseo de un generador desecuencia ascendente / descendente.

    OBJETIVO: Diseo completo de un circuito secuencial usando biestables.

    ESPECIFICACIN:

    Alto nivel:

    Diseo de un circuito secuencial capaz de generar dos secuencias binariasdistintas de valores por su salida S = (s2, s1, s0), en funcin de una entrada decontrol C:

    Si C = 0 la secuencia ser 0, 3, 4, 2, 5, 1, 6, 7, 0 ...Si C = 1 la secuencia ser 0, 7, 6, 1, 5, 2, 4, 3, 0 ...

    En el momento en que vare el valor de la entrada de control el circuito

    proseguir contando en la otra secuencia desde el punto en donde seencontraba.

    PASOS A SEGUIR:

    1.-Obtener el diagrama de estados del sistema como mquina de Moore.

    2.-Codificar los estados con el valor de la salida que les corresponde, de formaque la salida sea directamente el estado.

    3.-Construir la tabla de transicin de estados del generador de secuencias.

    4.-Disear el sistema usando biestables tipo D disponibles en la librera desmbolos (pestaa Symbols) con el nombre fdc.

    5.-Captura y simulacin del circuito diseado en el punto 4.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    34/40

    Laboratorio de Fundamentos de computadores 34

    Facultad de Informtica

    Universidad Complutense de Madrid

    6.-Disear un mdulo combinacional traductor de cdigo que convierta lasecuencia que genera un contador convencional en la que nosotrosdeseamos.Utilizar para la implementacin de la expresin de conmutacin del bit mssignificativo un multiplexor de 8 a 1, que se encuentra en la librera con elnombre m8_1e.Utilizar para la implementacin de la expresin de conmutacin del segundobit un decodificador de 3 a 8, que se encuentra en la librera con el nombred3_8e, y las puertas OR (orX) necesarias.Utilizar para la implementacin de la expresin de conmutacin del bit menossignificativo dos niveles de multiplexores de 4 a 1, que se encuentra en lalibrera con el nombre m4_1e.

    7.-Captura y simulacin del circuito combinacional diseado en el punto anterior.

    8.- Opcional: Implementar un contador convencional de 0 a 7. Crear un smboloa partir de este contador y otro a partir del traductor de cdigo implementadocon multiplexores. Conectar los dos smbolos. Captura y simulacin delcircuito resultante.

    IMPLEMENTACIN:Nombres de los diferentes puertos:

    Lnea de entrada de control: C.

    Vector de salida: S=(S2,S1,S0).

    Inicializacin a 0 de los biestables (Q=0): CLR=1

    Seal de reloj: CLK

    Nombre de los archivos:

    Paso 5: Pr31.SCH.

    Paso 7: Pr32.SCH.

    Paso 8: Pr33.SCH.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    35/40

    Laboratorio de Fundamentos de computadores 35

    Facultad de Informtica

    Universidad Complutense de Madrid

    1 Nociones tericas

    1.1 Multiplexores

    Un multiplexor de 2n a 1 es un mdulo combinacional con 2n entradas dedatos (x), n entradas de control (s), una entrada de capacitacin (E), y una saliday que verifica la siguiente expresin de conmutacin:

    Las entradas de control seleccionan cul de las entradas de datos se ofrececomo salida. Por lo tanto, las lneas de control representan la codificacin binariade la entrada de datos a seleccionar. Por ejemplo, en un multiplexor de 16 a 1(16 lneas de datos x15 a x0, cuatro lneas de control s3 a s0, y una salida y), laasignacin de las lneas de control al vector 0101 selecciona como salida lalnea de datos x5.

    La idea de la sntesis usando multiplexores consiste en utilizar las variables

    de entrada de la funcin a implementar como entradas de control del multiplexor,y fijar cada entrada de datos del multiplexor al valor lgico asociado almintrmino correspondiente.

    1.2 Descodif icadores

    Un descodificador de n a 2n, es un mdulo combinacional con n entradas dedatos (x), una entrada de capacitacin (E), y 2n salidas (y) que verifican lasiguiente expresin de conmutacin:

    Las entradas de datos representa la codificacin en binario del nmero de lalnea de salida que se activa, es decir, que toma el valor lgico 1, mientras queel resto de salidas permanecen a nivel lgico 0. Por ejemplo, en undescodificador de 4 a 16 (4 lneas de entrada de datos x3 a x0, y 16 lneas desalida y15 a y0), la asignacin de las entradas al vector 1001 activar la lnea y9,permaneciendo el resto de lneas inactivas.

    y = E x m s si=0

    2

    i i n-1 0

    n-1

    ( ... )

    i i n-1 0y = E m ( x ...x )

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    36/40

    Laboratorio de Fundamentos de computadores 36

    Facultad de Informtica

    Universidad Complutense de Madrid

    Para implementar funciones de conmutacin con descodificadoresutilizaremos las variables de entrada de la funcin como entradas de datos deldescodificador. Podemos observar que cada lnea de salida representa unmintrmino diferente de la funcin, de este modo la funcin podrimplementarse como suma lgica (OR) de sus correspondientes mintrminos.

    1.3 Mquinas de estados

    Las mquinas de Moore y de Mealy son dos mtodos alternativos de modelar

    sistemas secuenciales, ofreciendo dos maneras de implementar el mismosistema. La diferencia entre ambos radica en el modo que tienen de generar lasalida: mientras que en la mquina de Mealy cualquier cambio que se produzcaen la entrada se manifiesta en la salida, an cuando no se modifique su estado,en la de Moore la salida slo cambiar cuando el estado de la mquina cambie.

    Formalmente podemos expresarlo:

    Mquina de Mealy Mquina de Moore

    z(t) = H( s(t), x(t) )s(t+1) = G( s(t), x(t) )

    z(t) = H( s(t) )s(t+1) = G( s(t), x(t) )

    1.3.1 Biestables D

    Un biestable (flip-flop) es un circuito secuencial de dos estados, cuya salidabinaria de un bit corresponde con su estado. Como cualquier sistema secuencialpuede ser especificado usando las funciones de salida y de transicin.

    El biestable sncrono tipo D, posee dos entradas binarias de un bit: una dereloj CLK y una de datos D, as mismo posee una salida binaria de un bit: Q,verificando:

    Q(t) D(t) Q(t+1)

    0 0 0

    0 1 1

    1 0 0

    1 1 1

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    37/40

    Laboratorio de Fundamentos de computadores 37

    Facultad de Informtica

    Universidad Complutense de Madrid

    2 Nociones de Xilinx ISE

    2.1 Biestable D

    El biestable tipo D (fdc en ISE) modelado en la librera, es un biestabledisparado por flanco de subida (cuando el reloj cambia de 0 a 1, el biestablemuestrea la entrada en ese instante y decide su transicin, el resto de lasmodificaciones de la entrada no le afectan).

    Este componente, aparte de las entradas sncronas referidas anteriormente,posee una entrada asncrona (modifica el estado del flip-flop,independientemente del valor del reloj y de la entrada D): la entrada de clear,CLR. Con valor 0 no tiene efecto sobre el comportamiento del biestable, perocuando toma el valor 1 modifica inmediatamente (asncronamente) el estado delmismo, ponindolo a 0. Se puede observar su comportamiento temporal en laFigura 32 .

    Figura 32: Simulacin en Modelsim del biestable fdc

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    38/40

    Laboratorio de Fundamentos de computadores 38

    Facultad de Informtica

    Universidad Complutense de Madrid

    PRCTICA 4: Diseo de un reconocedor desecuencias.

    OBJETIVO: Diseo de un circuito secuencial modelando su comportamientocomo mquinas de Moore y Mealy.

    ESPECIFICACIN:

    Alto nivel:

    Diseo de un sistema sncrono que posee una entrada, x, por la querecibe bits en serie, y una salida binaria, z, que tomar el valor lgico 1cuando los ltimos cuatro bits de entrada formen la secuencia 1101, y 0 enotro caso.

    PASOS A SEGUIR:

    1.-Obtener el diagrama de estados del sistema, suponiendo que es unreconocedor solapado, como mquina de Moore.

    2.-Obtener el diagrama de estados del sistema, suponiendo que es unreconocedor solapado, como mquina de Mealy.

    3.-Obtener las tablas de salida y transicin de estados de los sistemasespecificados en los puntos 2 y 3.

    4.-Disear el sistema especificado en el punto 1 usando biestables tipo JK, queaparecen en la librera del ISE con el nombre fjkc.

    5.-Captura y simulacin del circuito diseado en el punto 4.

    6.-Disear el sistema especificado en el punto 2 usando biestables tipo D.

    7.-Captura y simulacin del circuito diseado en el punto 6.

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    39/40

    Laboratorio de Fundamentos de computadores 39

    Facultad de Informtica

    Universidad Complutense de Madrid

    OTRA IMPLEMENTACIN OPCIONAL:

    Estudiar la manera de implementar el sistema con un registro dedesplazamiento y un mdulo combinacional reconocedor.

    Un registro de desplazamiento de n bits es un mdulo que almacena los nltimos bits introducidos. Se implementa fcilmente encadenando biestables D.

    El mdulo combinacional reconocedor debe verificar que la configuracinalmacenada en el registro corresponda con la secuencia a reconocer.

    IMPLEMENTACIN:

    Nombres de los diferentes puertos:

    Lnea de entrada: X.

    Lnea de salida: S.

    Inicializacin a 0 de los biestables (Q=0): CLR=1

    Seal de reloj: CLK

    Nombre de los archivos:

    Paso 5: Pr41.SCH.

    Paso 7: Pr42.SCH.

    Implementacin opcional: Pr43.SCH.

    1 Nociones tericas

    1.1 Biestable JK

    El biestable sncrono tipo JK, posee tres entradas binarias de un bit: una dereloj CK y dos de datos J y K. As mismo, posee una salida binaria de un bit: Q,verificando:

  • 7/22/2019 Diseo lgico usando Xilinx ISE

    40/40

    Facultad de Informtica

    Universidad Complutense de Madrid

    Q(t) J(t) K(t) Q(t+1)

    0 0 0 0

    0 0 1 0

    0 1 0 1

    0 1 1 1

    1 0 0 1

    1 0 1 0

    1 1 0 1

    1 1 1 0

    Su tabla de excitacin es:

    Q(t) Q(t+1) J(t) K(t)

    0 0 0 -

    0 1 1 -

    1 0 - 1

    1 1 - 0

    La entrada asncrona de CLEAR funciona de manera anloga a la del biestablefdc de la prctica 3.