16
Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP) Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I PRÁCTICA No. 7 LÓGICA COMBINATORIA USANDO PLD’s (INTERFAZ DE PROGRAMACION WARP) OBJETIVOS: Familiarizar al alumno con la interfaz del software Warp 6.3 para el diseño digital con lógica programable. Describir los procedimientos en Warp 6.3 para crear, compilar y simular un proyecto desarrollado en VHDL. INTRODUCCIÓN Warp R6.3 de Cypress Semiconductor es una de las tantas herramientas existentes para el diseño con lógica programable la cual permite procesar varios tipos de entrada de datos (esquemática y compilador estándar de VHDL y la combinación de ambas) lo cual la hace muy funcional. En la actualidad es uno de estándares más usados en la industria, ya que presenta la característica de optimizar los diseños con rapidez y precisión utilizando muy poca área del circuito. Warp R6.3 permite la grabación de distintas familias de dispositivos lógicos programables, como pueden ser: PLD, CPLD y FPGA. Así durante el curso se utilizará el SPLD PALCE22V10 el cual esta construido internamente con flip-flops, además de un arreglo AND-OR. Cada sección de un SPLD se denomina macrocelda, que es un circuito que contiene una función de lógica combinacional de suma de productos y un flip-flop opcional. MATERIAL Y EQUIPO EMPLEADO Laboratorio equipado con computadoras donde se encuentre instalado el paquete computacional Warp R6.3. Pre-reporte: Leer previamente la práctica.

Manual Galaxy

Embed Size (px)

DESCRIPTION

Manual de uso para el programa Galaxy (warp 6.3)

Citation preview

Page 1: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

PRÁCTICA No. 7

LÓGICA COMBINATORIA USANDO PLD’s (INTERFAZ DE PROGRAMACION WARP)

OBJETIVOS:

Familiarizar al alumno con la interfaz del software Warp 6.3 para el diseño digital con lógica programable.

Describir los procedimientos en Warp 6.3 para crear, compilar y simular un

proyecto desarrollado en VHDL. INTRODUCCIÓN Warp R6.3 de Cypress Semiconductor es una de las tantas herramientas existentes para el diseño con lógica programable la cual permite procesar varios tipos de entrada de datos (esquemática y compilador estándar de VHDL y la combinación de ambas) lo cual la hace muy funcional. En la actualidad es uno de estándares más usados en la industria, ya que presenta la característica de optimizar los diseños con rapidez y precisión utilizando muy poca área del circuito. Warp R6.3 permite la grabación de distintas familias de dispositivos lógicos programables, como pueden ser: PLD, CPLD y FPGA. Así durante el curso se utilizará el SPLD PALCE22V10 el cual esta construido internamente con flip-flops, además de un arreglo AND-OR. Cada sección de un SPLD se denomina macrocelda, que es un circuito que contiene una función de lógica combinacional de suma de productos y un flip-flop opcional. MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras donde se encuentre instalado el paquete computacional Warp R6.3.

Pre-reporte:

Leer previamente la práctica.

Page 2: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

DESARROLLO I. Crear un Proyecto en VHDL 1.1.- Una vez dentro de Windows hacer click en el botón de Inicio, seleccionar Programas > Cypress > Warp R6.3 > Galaxy. Después de abrir este programa se procederá a realizar un proyecto nuevo.

Figura 1.1: Inicio de Programa Galaxy 1.2.- Después de abrir el programa Galaxy, seleccionar File > New (figura 1.2).

Figura 1.2: Opción New del menú File

Page 3: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

1.3. Luego aparecerá otra ventana como la que se muestra en la figura 1.3. Esta ventana permitirá crear un proyecto con el que se podrá programar un dispositivo y se deberá seleccionar la segunda opción Project [Target – Device].

Figura 1.3: Opción Project [Target-Device] del menú New 1.4.- Después de seleccionar la opción (Project [Target – Device] ) aparecerá otra ventana (figura 1.4), aquí se deberá de seleccionar en Project Type la opción de VHDL; a continuación se tiene que asignar un nombre al proyecto, por ejemplo el nombre de practica1. En el segundo cuadro de texto se selecciona el directorio donde se guardará el proyecto, se puede hacer un directorio nuevo desde esa misma ventana con solo escribir el nombre, por ejemplo a:\practica1, o también se tiene la opción de buscar una carpeta ya existente en la opción Browse. Cuando se termina de especificar los nombres y el lugar donde se guardará, hacer click en el botón de Siguiente.

Figura 1.4: Ventana Project Information 1.5.- Al hacer esto, aparecerá una ventana nueva con el título Add Files to Project (figura1.5), ésta se usa cuando ya se tienen archivos que se quieran agregar al proyecto nuevo. Como esta es la primer practica no es necesario especificar nada en esta ventana, solo se debe hacer click en el botón Siguiente.

Page 4: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.5: Ventana Add Files to Project 1.6.- La siguiente ventana (figura 1.6) tiene el título de Select Target Device, esta ventana es muy importante ya que en esta se selecciona el PLD en el que se va a trabajar. Los PLD’s mas usuales son los mas pequeños (16V8, 22V8 ó 22V10), los cuales aparecen en la ventana como SPLD; seleccionar C22V10. Para observar la siguiente opción se hace doble click sobre este texto, a continuación aparece una lista de los SPLD´s más comunes, se selecciona el SPLD que se desee e inmediatamente aparecerá una lista donde hay varios tipos del mismo SPLD. Aquí es muy importante que se seleccione un SPLD que tenga un encapsulado tipo PDIP para que luego de programarlo se pueda montar sobre un protoboard; seleccionar PALCE22V10-10PC/PI. En la parte de abajo de esta misma ventana aparece información del SPLD que se selecciona; después de seleccionar el SPLD adecuado hacer click en Finalizar.

Figura 1.6: Ventana para seleccionar el tipo de dispositivo 1.7.- Al realizar lo anterior, aparecerá una ventana donde se pregunta si se quiere guardar el nuevo proyecto, aquí solo se deberá hacer click en Sí.

Page 5: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

1.8.- Al terminar de hacer esto ya se tiene un nuevo proyecto donde se encuentra suficiente información para que el compilador pueda generar el archivo *.jed. Ahora se debe agregar el código que se compilará, para esto seleccionar File > New > Text File

también se puede agregar al hacer click sobre el icono de New Text File. Se deberá escribir lo siguiente dentro de este archivo: library ieee; A continuación seleccionar File > Save As, elige el nombre del directorio que se usó en el paso 4 (a:\practica1), ya que se elige el mismo directorio, escribir el nombre del archivo, se sugiere que sea el nombre de practica1 con la extensión .vhd (es necesario asegurarse de poner la extensión .vhd), de esta manera se está especificando que es un archivo que contiene código en VHDL, después de hacer esto se procede a guardar el archivo. 1.9.- Después de guardarse, el siguiente paso es cerrar el archivo de texto seleccionando en la barra de menús File > Close. 1.10.- De la barra de menús seleccionar Project > Add Files, aparecerá una ventana nueva con el título Add Files to Project (figura 1.7) y deberá aparecer el archivo creado anteriormente practica1.vhd, luego hacer click en Add y después en OK.

Figura 1.7: Ventana para agregar archivos existentes al proyecto

1.11.- Al hacer esto, el archivo de texto se ha convertido en un archivo de VHDL y está dentro del proyecto, ahora todo lo que se programe será compilado en el dispositivo que se especificó anteriormente. En la ventana de proyecto (si no está abierta, se puede ver haciendo click en la barra de menús View > Project Window) aparece un icono en forma de hoja, el cual tiene el nombre del proyecto creado, hacer doble click en este icono y luego aparecerá un archivo con la instrucción: library ieee; la palabra library aparece en color azul porque es una palabra reservada; esto indica que se ha hecho correctamente el procedimiento de crear un proyecto nuevo (figura 1.8).

Page 6: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.8: Ventana de proyecto

1.12.- A continuación todas las palabras reservadas aparecerán en color azul y los comentarios en color rojo, solamente que para empezar los comentarios se ponen dos guiones seguidos (--). Después de esto ya se puede comenzar a hacer el código en VHDL. 1.13.- Por último, se procede a escribir este código en VHDL como ejemplo para observar las palabras reservadas y los comentarios. La línea de código library ieee; solo se escribe una vez. Código en VHDL: library ieee; --Librería use IEEE.STD_LOGIC_1164.ALL; --Empaquetamiento entity practica1 is --Entity port ( --Declaración de puertos A : in std_logic; --Dirección: in, out, inout B : in std_logic; --Tipo de dato: std_logic X : out std_logic); end practica1; architecture Behavioral of practica1 is --Arquitectura begin --Inicio del comportamiento X <= A or B; --or (palabra reservada) end Behavioral; --Final del comportamiento Nota: Este ejemplo será usado posteriormente en las fases de compilación y simulación.

Page 7: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

II. Compilación de un Proyecto 2.1.- Para la compilación de un proyecto es necesario tener el código en VHDL del programa deseado. Un archivo vhd debe tener una estructura básica para su correcta compilación, así las partes que la componen se describen a continuación. Librerías.- Contienen componentes compilados. Entity.- Sentencia que define la especificación de un componente, para ello contiene los siguientes elementos: Nombre de la entity. Puertos de entrada y salida. Modos de los puertos in: entrada al componente, sólo puede ser leído.

out: salida del componente, sólo se le puede asignar valor. inout: señal bidireccional, se puede leer o asignar valor. buffer: registro asociado a una salida.

Tipos definidos para los puertos:

Boolean Bit

Bit_vector Character

String

Integer Real Time

Std_logic Std_logic_vector

Arquitectura.- Especifica la funcionalidad del componente definido en la entity. Del código en VHDL expuesto en el punto 1.13 se pueden hacer los siguientes comentarios: La entidad (entity) tiene el nombre de practica1, la cual contiene los siguientes puertos con el nombre de A, B y X, a su vez estos puertos tienen su modo de in y out y el tipo de dato es std_logic, por último se agrega la palabra reservada end junto con el nombre de la entity. En la declaración de la arquitectura podemos observar que se hace referencia al comportamiento que tendrá este programa, es por ello que se agrega otra vez practica1, a continuación se empieza a describir el comportamiento en el cual a la salida X se le asignará el valor de A or B y por último se termina la arquitectura con la palabra reservada end agregándole el comportamiento. 2.2. Una vez escrito el código en el programa Galaxy, los pasos para la compilación son sencillos y se describen a continuación. 2.2.1. Ver en la barra de menús la opción de Project > Compiler Options, al hacer esto se abrirá una ventana nueva (figura 1.9), en la parte de Synthesis se tiene que asegurar que la opción de Simulation > Timing Model este seleccionada Active-HDLSim / Active-VHDL y luego hacer click en Aceptar, esto es necesario para el momento de la simulación.

Page 8: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.9: Opciones del compilador

2.2.2. Lo siguiente es ir a la barra de menús y hacer click en Compile > Project. Después de hacer esto, en la ventana Output Window aparece el resultado de la compilación (sí la ventana antes mencionada no esta a la vista, se debe ir a la barra de menús y hacer click en View > Output Window), en caso de que la compilación tenga errores, estos pueden ser observados dentro de la pestaña de Errors & Warnings de esta misma ventana, en esta parte aparecen los Errors & Warnings y el posible número de la línea de código donde puede estar el error (figura 1.10).

Figura 1.10: Ventana de estado de compilación 2.2.3.- Al terminar la compilación correcta del proyecto se generan una serie de archivos, estos se pueden observar en la ventana Project Window (si no esta a la vista, hacer click en la barra de menús y luego en View > Project Window) este archivo es: practica1.rpt, el cual contiene las ecuaciones, los pines de entrada y salida, así como también la utilización del SPLD (Small PLD) seleccionado; este archivo se puede ver al hacer click en la pestaña de Output Files View dentro de la misma ventana de Project Window (figura 1.11).

Page 9: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.11: Archivos de salida

2.3.- Salir del programa Galaxy haciendo click en la barra de menús sobre File > Exit o simplemente cerrando la ventana de programa. III. Simulación 3.1.- Después de crear un proyecto nuevo y su correcta compilación, ya es posible realizar una Simulación adecuada, para esto comenzamos por abrir el programa para la simulación, el cual se encuentra en Inicio > Programas > Cypress > Warp R6.3 > Active-HDL Sim con este simulador comprobaremos el correcto funcionamiento de nuestro código realizado.

Figura 1.12: Inicio de programa Active-HDL Sim

Page 10: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

3.2. El proceso de simulación es posible realizarse en los siguientes pasos: 3.2.1. Cargar un archivo con el formato de simulación adecuado (Active-HDLSim / Active-VHDL; visto en el punto 2.2.1). Abrir el archivo deseado para la simulación, para hacer esto se tiene que ir a la barra de menús del Active-HDL Sim y en la opción de File > Open VHDL hacer clic (figura 1.13). El archivo que se tiene que cargar deberá tener el formato apropiado para la simulación (Active-HDLSim / Active-VHDL), este se crea en el subdirectorio vhd dentro del directorio de trabajo anteriormente seleccionado. Se debe seleccionar el archivo correcto, de otra forma la simulación no podrá llevarse a cabo.

Figura 1.13: Ventana para abrir archivo VDHL para simulación

Sí el archivo es el correcto se desplegarán una serie de mensajes en la ventana de compilación (figura 1.14). Uno de ellos es: Compile success 0 Errors 0 Warnings Analysis time : 0.4 [s] ELBREAD: Elaboration process. ELBREAD: Elaboration time 0.2 [s].

Figura 1.14: Ventana para la opción console

Page 11: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

3.2.2.- Iniciar una Simulación. Para comenzar la simulación se debe ir a la barra de menús y dar click en Simulation > Initialize Simulation. Después se procede a abrir una ventana para analizar las señales requeridas dentro del diseño, a esta ventana (figura 1.15) se le llama Waveform Window (si esta ventana no se encuentra abierta, se puede abrir una al hacer click sobre File > New Waveform).

Figura 1.15: Ventana de simulación

3.2.3.- Agregar señales. Para continuar con el proceso de Simulación se deberán agregar las señales a la ventana Waveform, para realizar esto ir a la barra de menús y dar click en Waveform > Add Signals (figura 1.16).

Figura 1.16: Opción para agregar señales para simulación

Después de realizar esto, se abrirá una ventana con la lista de todas las señales de entrada, salida, entrada/salida y nodos internos de conexión que se hayan hecho en el diseño (figura 1.17). Para agregar las señales deseadas se debe hacer doble click sobre la señal deseada; se pueden agregar tantas señales como sean requeridas al mismo tiempo, para ello se deberá presionar la tecla Control y hacer click sobre cada una de las señales que se requieran e inmediatamente después hacer click sobre el botón Add.

Page 12: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.17:Ventana para seleccionar señales a simulación

3.2.4.- Agregar señales de estimulación. Estas señales de estimulación son utilizadas para definir el tipo de entrada que tendrá cada una de las señales que fueron agregadas a la ventana Waveform, para seleccionar el tipo que tendrá la señal primero se debe de hacer click sobre la señal deseada y luego en Waveform > Stimulators (figura 1.18).

Figura 1.18: Ventana Stimulators A continuación se hace una breve descripción de los tipos de señales de estimulación que existen en Active-HDL Sim. Clock Una estimulación de reloj produce una señal rectangular definida por los siguientes parámetros: Frecuencia, tiempo de inicio, ciclo de trabajo y valor inicial

Page 13: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Custom Un estimulador personalizado es una señal definida gráficamente y se realiza definiendo los valores deseados en la ventana de simulación. Formula Este tipo de estimulador produce una señal definida por medio de una formula de una manera sencilla. La señal es definida con una secuencia pares de valor – tiempo. La componente de tiempo indica el momento en el que la señal asume el valor especificado. La unidad del tiempo es en picosegundos. Para repetir con un periodo especifico se debe de agregar el modificador (–r). La sintaxis de este tipo de estimulador es la siguiente: <valor> <tiempo> [, <valor> <tiempo>... ] [-r <periodo>] Ejemplo: ‘0000’ 0 ps, ‘1111’ 100000 ps, ‘0011’ 200000 ps -r 300000 Con la componente tiempo se especifica el momento en que la señal tomará el valor especificado. Para repetir durante un periodo especificado se agrega el modificador –r. Hotkey Este tipo de estimulador es similar al de Valor, pero tiene un mecanismo más fácil para cambiar el valor. Para realizar esto solamente se tendrá que presionar una tecla específica. Se puede realizar una lista de valores para cambiar; cada que se presione la tecla se estará cambiando entre los valores que se tienen en la lista. Predefinidos Estos tipos de estimuladores son una serie de señales de tipo reloj con distintas frecuencias o señales del tipo formula que pueden ser asignados a las señales. Para agregar un nuevo estimulador a la lista, se puede hacer en la misma ventana en la opción Predefined. Valor Este estimulador se le asigna un valor constante a la señal deseada. Si se realiza una simulación paso a paso, se podrá cambiar el valor entre cada uno de los pasos, para hacer esto se tiene que volver a definir el valor en la ventana Stimulators.

0000 1111 0011

0 ps 100000 ps 200000 ps

Page 14: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Sí la estimulación requerida es de tipo Valor, existen varios valores a los que se podrá forzar la señal deseada (figura 1.19); estos valores pueden ser: ‘0’ Cero Fuerte Otros Valores: ‘1’ Uno Fuerte ‘L’ Cero Débil ‘-‘ No importa ‘X’ Desconocido Fuerte ‘H’ Uno Débil ‘Z’ Alta Impedancia ‘W’ Desconocido Débil ‘U’ No Inicializado

Figura 1.19: Menú para asignar el tipo de valor a una señal Si se requiere más información acerca de los tipos de estimuladores, consultar la sección de ayuda en el Active-HDL Sim. Al seleccionar el tipo de estimulador para una señal, aparecerá una lista de valores que se pueden asignar a esa señal. En el caso del estimulador de tipo Valor, aparecen varios tipos, después de seleccionar uno de los valores al cual será forzada la señal deseada, se deberá de dar click en la palabra Apply, y asi sucesivamente con todas las señales, al terminar con todas se debe de dar click en Close. Para el ejemplo que se tiene en esta practica, las señales tendrán el tipo de estimulación de Valor y el valor al que se forzará primeramente las señales A y B serán: A= ‘0’ y B= ‘0’. 3.2.5.- Ejecutar una Simulación. Después de realizar los pasos anteriores se podrá iniciar la simulación al seleccionar de la barra de menús Simulation > Run la simulación será terminada después del tiempo predeterminado por el software, también se puede realizar una simulación hasta un tiempo deseado, esto se puede hacer dando click en Simulation > Run Until o también con la opción >Run For y a continuación se puede poner el tiempo hasta el cual se requiera llegar la simulación después de esto hacer click en OK.

Page 15: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

Figura 1.20: Cuadro de diálogo Run Until

Después de simular hasta los 100ns, se volverán a seleccionar las señales A y B y se volverá a cambiar los valores de ellas para realizar todas las combinaciones posibles. A continuación se puede observar en la tabla 1.1 como se irán agregando los valores a las señales y el tiempo al que se deberán de simular una por una.

Tabla 1.1: Valores para simulación de ejemplo

3.2.6.-Guardar una Simulación. Para poder guardar la grafica de las señales deseadas, hacer click sobre la barra de menús y posteriormente en File > Save As, al realizar esto aparecerá una ventana para dar nombre a la grafica que será guardada, esta simulación será guardada en la carpeta de trabajo SRC. 3.3.- Terminar una Simulación Después de observar el comportamiento de una simulación se deberá terminar la simulación de una manera correcta al hacer click en la barra de menús sobre Simulation > Stop Simulation. 3.4.- Salir de una Simulación. Después de guardar una simulación, ya se puede salir del programa Active-HDL Sim, se puede salir haciendo click en File > Exit o simplemente cerrando la ventana de programa.

A B Tiempo 0 0 100 ns 0 1 200 ns 1 0 300 ns 1 1 400 ns

Page 16: Manual Galaxy

Lógica Combinatoria usando PLD’s (Interfaz de Programación WARP)

Eduardo Romero A. – ITSON Laboratorio de Sistemas Digitales I

IV: EJERCICIO. 4.1. Tomando como ejemplo el ejercicio anterior, realice la descripción en VHDL del circuito sumador completo mostrado en figura X.

Figura 1.21: Diagrama del ejercicio propuesto

4.2. Una vez que el proyecto en Warp con la descripción del circuito esté compilado y sin errores, proceda a invocar el entorno de simulación Active-HDL Sim. Para comprobar el funcionamiento del circuito para todas las combinaciones, usar el estimulador de señal de tipo CLK. ACTIVIDADES COMPLEMENTARIAS 1. Dentro del archivo *.rpt identificar las ecuaciones que se generan, el número de pines utilizados (in y out) y la utilización de las macroceldas (dedicated inputs, clock/inputs y I/O Macrocells). 2. Buscar dentro de la ayuda de Galaxy los distintos tipos de SPLD’s que se pueden programar con esta herramienta. Observar las características principales de cada uno de ellos. 3. Dentro del Language Reference Manual, buscar las características de cada tipo de dato existente en VHDL. (integer, bolean, bit, character, string, bit_vector, std_logic, std_logic_vector). 4.- Establecer las diferencias entre usar un tipo bit_vector y uno std_logic. 5. Investigue las diversas formas de describir un circuito en VHDL (comportamental, flujo de datos y estructural). Con base en ello, diseñe el código, compile y simule alguno de los siguientes circuitos (El profesor indicará cuál de todos).

a) Un sumador completo de dos números de 3 bits. b) Un decodificador de binario a 7 segmentos. c) Un circuito comparador de dos números (A y B) de 3 bits, que tendrá tres salidas

para indicar sí: A > B, A < B y A = B, respectivamente d) Un circuito restador completo de dos números de 3 bits. e) Un circuito multiplicador de 2 números de 3 bits.