Você está na página 1de 15

Universidad Católica de Oriente

Facultad de Ingeniería
Laboratorio de diseño digital I

PRACTICA # 0

El objetivo de la práctica es conocer el software Xilinx ISE 9.1 mediante la captura de


esquemáticos.

El problema a resolver:

X(2) X(1) X(0) Z(2) Z(1) Z(0)


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

Las ecuaciones para las tres variables de salida son:


Z2 = !X0X2 + X0X1
Z1 = !X2X1 + !X0X1 + X0!X1X2
Z0 = !X2X1 + X0X1 + !X0!X1X2

Ahora comencemos con el Xilinx ISE.


Ejecutar el programa
INICIO > PROGRAMAS > XILINX ISE 9.1I > PROJECT NAVIGATOR

El próximo paso es crear un proyecto: FILE > NEW PROYECT

Se abre el cuadro de opciones para crear un proyecto


En este cuadro se selecciona el nombre del proyecto (PROJECT NAME), use nombres sin
espacios ni caracteres; para la práctica utilicemos tut1. También se puede seleccionar la
ubicación del proyecto y el tipo del módulo de más alto nivel (TOP-LEVEL MODULE
TYPE), en nuestro caso, esquemáticos (SCHEMATIC). Presione siguiente.

El siguiente paso es seleccionar el dispositivo:

Xilinx (http://www.xilinx.com) es fabricante de varios tipos de dispositivos reprogramables


(CPLD’s, FPGA’s, etc). El programa de Ingeniería electrónica, cuenta en el laboratorio con
FPGAs de la familia Xilinx Spartan3E – XC3S100E.
Completamos la parte superior del cuadro con estos datos.

La parte inferior muestra las herramientas de síntesis (SYNTHESIS TOOL), el simulador


(SIMULATOR) y el lenguaje de Simulación generado (GENERATED SIMULATION
LANGUAJE). Para nuestro caso las opciones por defecto son suficientes.

Finalmente presione siguiente tres veces consecutivas (en estos pasos se pueden agregar
archivos al proyecto pero lo haremos posteriormente)
Una vez creado el proyecto, hay que crear un nuevo diseño de esquemático. Para ello hacer
clic derecho sobre el área SOURCES y clic en NEW SOURCE

Aparecerá un cuadro de diálogo en donde debemos seleccionar el nombre del archivo


(tut1Z2 ya que es el esquemático para la variable de salida Z2) y el tipo de archivo
(SCHEMATIC).

Una vez seleccionado el tipo de archivo y el nombre, pulsar NEXT. En el siguiente cuadro de
diálogo, simplemente resume las propiedades del esquemático que acabamos de crear.

Una vez hecho esto se abrirá el editor de esquemáticos. Si no aparece esta pantalla, de clic
en SOURCES en la parte derecha de la pantalla y luego doble clic en el nombre del
esquematico
En la parte izquierda superior hay una ventana con cuatro pestañas, en la primera podemos
ver la jerarquía de los módulos (SOURCES) que en un proyecto simple, aparecen los
archivos de trabajo) y en la cuarta se encuentran los símbolos (SYMBOLS) donde se
encuentran los componentes que se pueden añadir a un esquemático.

Símbolos está dividido en varios cuadros de dialogo. En el primero de ellos, categorías


(CATEGORIES) se puede escoger el tipo de elementos que se quiere usar, como puertas
lógicas, comparadores, multiplexores, memorias, etc. Este actúa como filtro para el cuadro
de dialogo Símbolos (SYMBOLS), en este es donde finalmente se selecciona el componente
especifico (por ejemplo AND2, and de 2 entradas). También si se conoce el nombre exacto
se puede utilizar el cuadro SYMBOL NAME FILTER.
Recordemos que la ecuación para Z2 es !X0X2 + X0X1, por lo tanto para comenzar añadimos
una AND de dos entradas (and2), una AND de dos entradas con una entrada negada
(and2b1) y una OR de dos entradas (or2); estas se encuentran bajo la categoría LOGIC. Si se
desea cambiar la rotación puede usar el cuadro ORIENTATION.
Después de agregar todos los componentes el editor se debe ver como la siguiente figura:

Luego conectemos los componentes con la herramienta agregar conexión (ADD WIRE) ,
ubicada en la parte superior izquierda de la pantalla. Al terminar el circuito debe quedar
como en la figura:

Ahora es necesario definir las entradas y salidas del circuito; por lo tanto es necesario
agregar marcadores de Entrada/Salida (ADD I/O MARKER) . Seleccione la herramienta
y de clic sobre los puntos que son entradas o salidas.
Cuando se selecciona una herramienta, en la parte inferior izquierda, aparecen las opciones
para esta, para este caso aparecen opciones sobre la dirección del marcador (Entrada,
salida, Entrada/Salida, etc.). Antes de dar clic sobre cada punto de Entrada/Salida seleccione
la dirección correcta. Al finalizar el circuito se debe ver como la figura:

Ahora editemos cada nodo para que corresponda con el nombre de cada entrada o salida.
Para esto doble clic sobre el marcador
En NAME escribimos el nombre correspondiente a cada marcador (X0, X1, X2, o Z2), Al
finalizar el circuito se debe ver como en la figura:

Una vez terminado el diseño del circuito puede hacerse una comprobación simple sobre el
mismo para asegurarnos de que todas las conexiones están bien hechas y que no hay cables
sueltos o puertas sin conectar. Para ello desde el menú principal clic en Tools y dentro de
este menú en Check Schematics. Aparecerá una ventana que nos informará si hay algún
Error o Warning.

Creación de un símbolo

Con el diseño realizado se podrá hacer un nuevo componente, consistente en un “caja


negra”, un bloque con el mismo número de entradas y salidas del circuito original diseñado
y con su funcionalidad. Este nuevo símbolo creado pasa a formar parte de la librería de
componentes del proyecto y podrá utilizarse como un componente más. Esto es
fundamental para realizar diseños jerárquicos.

Para crearlo desde el menú principal clic en TOOLS y dentro de este menú SYMBOL
WIZARD.

Aparecerá la siguiente ventana en la que señalaremos la opción USING SCHEMATIC.

Aparecen un conjunto de ventanas que permiten editar el símbolo, como no vamos a


cambiar el símbolo por defecto podemos dar siguiente.
Al terminar una nueva librería con el nombre del proyecto estará disponible en
CATEGORIES.
Realice el procedimiento para las otras dos salidas, creando sus respectivos símbolos. Al
finalizar, deben aparecer estos dos esquemáticos en el proyecto

Esquemático para Z1
Esquemático para Z0

Creemos un nuevo esquemático para conectar los tres bloques diseñados, recuerden clic
derecho sobre SOURCES y luego NEW SOURCE.

Los simbolos para las tres salidas aparecen en CATEGORIES con la ruta del proyecto

Agregamos los tres símbolos al esquemático y los conectamos


Antes de continuar, vamos a crear un bus para la entrada y otro bus para la salida. Un bus
no es más que una agrupación lógica de líneas que cumplen una misma función. En este
caso podemos decir que existe un bus de entrada que llamaremos X y un bus de salida que
llamaremos Z. Para esto, nombramos las líneas (dando doble clic sobre ellas) ya no como X2,
X1 o X0, sino X(2), X(1) y X(0). Hacemos lo mismo con las salidas: Z(2), Z(1) y Z(0).

Luego, en cualquier parte del esquemático agregamos dos líneas y las llamamos X(2:0) y
Z(2:0) respectivamente. Finalmente le ponemos el marcador correspondiente (entrada para
X y salida para Z). El esquemático final debe verse como en la figura
Simulación
Para simular el circuito diseñado, damos clic en SOURCES, y cambiamos la barra SOURCES
FOR de SYNTHESIS/IMPMENTATION a BEHAVIORAL SIMULATION

Luego clic derecho sobre el área de SOURCES, Seleccionamos NEW SOURCE, pero en este
caso al crear la nueva fuente seleccionamos TEST BENCH WAVEFORM y le damos un
nombre al archivo de simulación, por ejemplo tb_tut1Fin:
Luego clic en NEXT, nos pregunta cual modulo dentro del proyecto deseamos simular,
seleccionamos tut1Fin que contiene los tres bloques ensamblados presionamos NEXT
siguiente dos veces y luego finalizar.

Al hacer esto aparece una ventana para iniciar los parámetros de simulación. Nuestro
circuito es combinacional (la diferencia entre combinacional y secuencial se ve dentro de los
temas del curso). Por lo tanto seleccionamos COMBINATORIAL (OR INTERNAL
CLOCK), el resto de opciones pueden dejarse por defecto.

Se abre el editor de formas de onda del simulador. Como el circuito es extremadamente


simple realizamos todas las posibles combinaciones dando clic en la parte inicial del área
gris de la señal de entrada X; esto abre el editor de patrones.
Damos clic en PATTERN WIZARD. Para generar todas las posibles combinaciones de las
entradas podemos realizar un conteo hacia arriba de 1 en 1 de 0 a 7. Las opciones para que
el PATTERN WIZARD cree esto, son las que se ven en la figura.

Clic en OK, y el patrón de X cambia como se ve en la figura

Guardamos el archivo de simulación, al hacer esto en SOURCES aparece el archivo.

Para simular, damos clic en el archivo y en la pestaña PROCESS VIEW (parte inferior
derecha de la pantalla) aparece la opción SIMULATE BEHAVIORAL MODEL bajo la
opción XILINX ISE SIMULATOR
Damos doble clic, y el proceso de simulación comienza. Al finalizar el resultado aparece en
una nueva ventana:

Como vemos se cumple la tabla de verdad con la que partimos el diseño

Implementación

La FPGA se encuentra en un sistema de desarrollo de la compañía digilent

Para la implementación necesitamos que las entradas X2, X1 y X0 sean suiches, mientras
que las salidas Z2, Z1 y Z0 sean leds. Por lo tanto cada pin de la FPGA debe ser asignado a un
siguiendo las instrucciones entregadas por el fabricante de la tarjeta de desarrollo (Digilent
inc)

Para asignar los pines debemos cambiar la barra SOURCES FOR nuevamente a
SYNTHESIS IMPLEMENTATION seleccionamos el esquemático en SOURCES y. En la
parte inferior en PROCESS aparece la opción USER CONSTRAINTS y dentro de esta
ASSIGN PACKAGE PINES.
Al dar doble clic el ISE pregunta si desea crear un nuevo archivo de restricciones (UCF) a lo
que respondemos si. Al hacer esto se abre el PACE. Este es un programa que permite crear
restricciones de área, tiempo, etc para la FPGA. En nuestro caso solo nos interesa la
asignación de pines. Llenamos la tabla con los valores que seleccionamos anteriormente
pero antecediendo la letra p. Al terminar el PACE se debe ver como en la figura siguiente:

Guardamos (si aparece el cuadro de dialogo Bus Delimeter seleccionamos XST OPTIONAL
{}) y cerramos el PACE.
El último paso es programar la FPGA, para esto conecte el cable JTAG al puerto USB y
finalmente el adaptador.
Seleccione el esquemático en SOURCES y de doble clic en GENERATE PROGRAMMING
FILE. Xilinx ISE comienza todo el proceso de Síntesis del circuito e Implementación. Deben
aparecer marcas verdes sobre los tres procesos (SYNTHESIZE, IMPLEMENT DESIGN
y GENERATE PROGRAM FILE), en caso de error observe la consola (parte inferior) e
intente corregir el error.
Luego dentro de GENERATE PROGRAM FILE ejecutamos el IMPACT. Seleccionamos
BOUNDARY SCAN MODE, presionamos Siguiente y seleccionamos AUTOMATICALLY
CONNECT TO CABLE AND IDENTIFY BOUNDARY-SCAN CHAIN. El software
comienza a buscar la FPGA por todos los puertos posibles.
Cuando termine la búsqueda, de clic derecho sobre el gráfico de la FPGA y seleccione
ASSIGN NEW CONFIGURATION FILE. Seleccione el archivo .bit del proyecto en el que
está trabajando (tut1Fin.bit).

Al hacer esto se nos advierte sobre un problema de configuración del reloj. Podemos
ignorarlo. Luego presionamos clic derecho sobre el gráfico de la FPGA y clic en PROGRAM.
Finalmente OK para programar la FPGA

Verifique el funcionamiento del circuito con los suiches y los leds asignados.

Você também pode gostar