Anda di halaman 1dari 26

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

TUTORIAL CUPL (actualizado 11/07/2005)


En este documento encontrar una ayuda para el manejo del software para el diseo, simulacin e implementacin en una GAL22V10 de circuitos digitales.

1. ABRIR EL PROGRAMA Se da un clic en inicio-programas-CUPL starter kit, luego clic en el icono CUPL.

Figura. N 1.

2. Inicialmente aparece una ventana de bienvenida por unos segundos, luego aparece la ventana principal, y aparece una ventana Message que puede ser minimizada. Se procede de la siguiente manera file-new.

Figura. N 2.

Aparece en pantalla una plantilla que ser til para la elaboracin del diseo que queremos realizar. Como se muestra en figura 3

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

Figura. N 3.

Este archivo tambin podr ser abierto en C:\wincupl\tmpl.pld. 3. Es conveniente guardar el archivo cada cierto tiempo para evitar perdidas de informacin si ocurre algn problema ya sea del programa, PC o condiciones externas. Cuando se va a guardar por primera vez se ingresa al men File-Saveas.

Figura. N 4.

En el espacio Filename, debe escribir el nombre del archivo, se sugiere utilizar nombres que tengan que ver con el diseo que se esta realizando por ejemplo si se esta haciendo una secuencia de luces utilizar

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

sec_luces, el archivo debe ser guardado con la extensin *.pld. Adems aparece una direccin (Directory) que es donde se guardar, si desea cambiarlo deber ingresar tambin el directorio donde lo quiere hacer. Por ejemplo: Filename: D:\mis documentos\laboratorio\prac_1.pld Luego de esto presione OK. Para guardar cambios despus ingrese al men File-Save presione <F2>. 4. El archivo que se va a crear esta divido en tres partes: (se seguir la plantilla que se muestra en la figura 3) Ttulo o encabezado:

Todo este encabezado es requerido y se deber tener a la hora de generar el archivo, pero solamente el campo del Name deber tener el valor real ya que este nombre que se utilice aqu ser el utilizado por el programa para generar el archivo *.Jed que es el utilizado para programar el dispositivo con el cual se har la implementacin del circuito. Aunque se recomienda documentar estos archivos con el fin de tener informacin clara sobre el archivo que se genero. Se deben utilizar mximo 8 caracteres. Por ejemplo:

Como se puede ver cada lnea se termina con punto y coma (;). Posteriormente se puede poner una breve descripcin o comentario de lo que se va hacer, esto se debe hacer de la siguiente manera: /* Secuencia de luces a una velocidad de un Hertz*/ La informacin que se encuentre entre estos smbolos /* */ sern comentarios y no harn parte del diseo. Puede incluir varias lneas.

Diseo de Circuitos Digitales Declaraciones:

nmunoz@udea.edu.co

Declaracin de pines de entradas y salidas: Especifica los pines que van a ser usados y las variables que son asignadas a cada uno de estos. Por ejemplo:

Tambin se pueden hacer asignaciones de la siguiente manera:

Declaracin de variables intermedias: Son variables que no tienen asignado un pin y pueden ser tiles para reducir las expresiones correspondientes a cada salida. Por ejemplo:

Cuerpo: Este contiene toda la lgica necesaria que se quiere programar. En el se pueden hacer maquinas de estado Mayle o Moore y ecuaciones de lgica combinacional y secuencial, entre otros. Por ejemplo:

5. Despus de guardar todos los cambios realizados, se compila para verificar si quedo bien desarrollado el archivo, de la siguiente manera: ingrese al men Option-compile options

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

Ingrese a Output file, seleccione: JEDEC, fuse plot, equations, absolute, list.

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

Presione OK y nuevamente OK. 6. Elija el dispositivo en el cual se va ha implantar, en este caso se elegir la pal22v10 es el dispositivo que servir para implementar el diseo en la Gal22v10. Ingrese al men Option-select device

Presione OK. Ingrese al men Run-Device Specific compile, si se genera un mensaje de error puede observar cual es el error, maximizando la ventana que salio inicialmente Message, sino hay errores se procede hacer la simulacin.

7. Se debe realizar un archivo para generar la simulacin, para esto abra la plantilla existente para realizar este que se encuentra en C:\wincupl\tmpl.si y gurdelo con otro nombre pero con la misma extensin en el directorio donde se encuentra el archivo con extensin (.pld).

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

Al igual que en el archivo de diseo este archivo tambin consta de 3 partes: Titulo o encabezado Este es el mismo que se pone en el archivo anterior.

Orden En este se da el orden de todas las variables tanto de entrada como de salida para el dispositivo. (Teniendo en cuenta los bits mas significativos).

Estas van separadas por comas , y se finaliza con punto y coma ;. Contiene la lista de vectores para la prueba que se desea aplicar a las variables definidas anteriormente.

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

El asterisco es cambiado por el simulador por el valor correspondiente. Con base en los ejemplos que se han hecho a lo largo de este tutorial se tiene en cuenta que en orden de izquierda a derecha cada columna corresponde a: a, b, c, d, L1, L2. 8. Despus de crear el archivo de simulacin y guardarlo ingrese al men Option-simulator options y seleccione Listenig File. Presione OK.

Luego ingrese al men Run- Device Specific Simulate, si se presentan errores abra el archivo con extensin .so y all se puede obsevar el error, sino hay ningn error en el mismo archivo con extensin .so encuentra los resultados de la simulacin en la parte inferior.

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

Como se ve en la grafica anterior se generan los estados de las salidas con base en lo generado anteriormente en el archivo de simulacin. 9. Despus de verificar que la simulacin si arroja los resultados esperados, utilice el archivo con extensin .jed para programar al GAL22V10 con el chip master utilizado para este proceso.

Ejemplo paso a paso: Implementar funciones lgicas utilizando circuitos combinacionales. En un edificio de 4 pisos hay un ascensor el cual funciona de la siguiente forma: Existen 4 seales para indicar que se va a utilizar el ascensor, cada una es un pulsador en cada piso como muestra la figura. Cuando un usuario desea utilizarlo oprime el interruptor del piso en el cual se encuentre, esto transmite una seal al sistema de control del ascensor. Esta seal llega en dos lneas C1 C0 que indican en binario el nmero del piso desde el cual se solicita el ascensor. Disee un circuito digital que reciba las seales de los pulsadores de cada piso como entradas y que entregue al sistema de control del ascensor, el par C1, C0. Adems de esto, debido a que en 2 o ms pisos pueden estarse activando 2 o ms pulsadores al tiempo, debe disearse el circuito de tal forma que se le d prioridad de atencin a la seal del piso ms alto activado. En el caso en el cual no hay activada ningn pulsador (caso en el cual nadie utiliza el ascensor) debe activarse una lnea NP la cual entrega al sistema de control la informacin de que el ascensor esta sin uso. En otro caso, la seal NP (no peticin de servicio) esta desactivada.

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

10

Solucin: Son 4 entradas y 3 salidas, P1, P2, P3, P4, C0, C1 y NP respectivamente. De acuerdo con las condiciones de funcionamiento expresadas en el enunciado, se puede obtener la siguiente tabla de verdad del circuito a implementar. Y posteriormente con esta se obtienen las ecuaciones: PARA P1, P2, P3, P4 0 = INACTIVO 1= ACTIVO C1 C2 0 0 = PISO 1 0 1 = PISO 2 1 0 = PISO 3 1 1 = PISO 4 NP = 1 NO HAY SOLICITUD . 10

Diseo de Circuitos Digitales P4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 P3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 P2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 P1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

nmunoz@udea.edu.co C2 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 C1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 NP 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

11

NP = P1.P2.P3.P4

(donde () significa que esta inactivo)

C2 = P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 C1 = P1.P2.P3.P4 + P1.P2.P3.P4+ P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 + P1.P2.P3.P4 Con base en estas se procede a utilizar el CUPL. Despus de abrir el programa se abre el archivo TMPL.pld para utilizarlo como gua y se hacen las modificaciones necesarias resultando lo siguiente: Despus de guardar y especificar las opciones de compilacin, si compila antes de guardar podr perder los cambios realizados, luego elegir el chip en el cual se va a programar, en este caso utilizaremos la gal22v10 pero no se encuentra disponible en las libreras del cupl por lo que se elegir la pal22v10. Luego puede compilar.

11

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

12

12

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

13

La grafica anterior muestra que compilo bien, ahora se procede a hacer la simulacin. Creando el archivo necesario utilizando el TMPL.si que sirve de gua para el desarrollo de este y esta incluido en las libreras del CUPL. Haciendo las modificaciones resulta:

13

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

14

Despus de generar este archivo y elegir las opciones de simulacin se corre la simulacin y se abre el archivo que se genero en la misma carpeta donde se estaba trabajando con extensin *.so este contiene el resultado de la simulacin como se muestra en la siguiente grafica. Este resultado puede ser comparado con la tabla de verdad que se haba utilizado al principio. Si los resultados eran los esperados se puede programar para probar y hacer el montaje requerido, incluyendo la polarizacin de la Gal.

14

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

15

Luego puede abrir el archivo con extensin .doc generado por CUPL donde podr encontrar en la parte inferior un diagrama con la asignacin de los pines como se muestra en la siguiente grfica, que ser til en el momento de implementar el circuito.

15

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

16

IMPORTANTE A continuacin se enumeran algunas cosas que se deben tener en cuenta a la hora de utilizar este programa. Extensiones de archivos generados: PLD: Creado por el usuario, contiene todas las instrucciones lgicas necesarias para programar los dispositivos. DOC: Creado por CUPL, contiene todo de las ecuaciones de la lgica que CUPL gener de su programa, muestra los errores que encontr al compilar el programa (localizacin del error) y provee informacin acerca de cmo se selecciono la lgica en el dispositivo usado adems el chip Diagram. ABS: Creado por CUPL, usado por este para ejecutar la simulacin. LST: Creado por CUPL, enumera las lneas correspondientes al cdigo generado y al final los errores con el numero correspondiente de la lnea. JED: Creado por CUPL, archivo usado por el programador para programar el chip usado para implementar el diseo. SI: Archivo de entrada para simulacin creado por el usuario, contiene los vectores de prueba. SO: Archivo de salida para simulacin creado por CUPL, contiene los resultados de la simulacin, incluyendo los errores presentes. Variables y smbolos reservados por el programa, estas no pueden ser usadas para asignacin de las variables que deseamos implementar, estas tampoco deben tener espacios.

16

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

17

Se pueden representar nmeros en binario, octal, decimal, o hexadecimal. La asignacin de pines e ndices de variables se da en decimal, para el resto de nmeros esta por defecto en hexadecimal, y para especificar una base debe estar precedido por su prefijo.

Declaraciones: Comandos: El comando mas usado es $DEFINE, asigna a una variable un valor o estado. Por ejemplo: $MACRO and $REPEAT, estos dos comandos forman un ciclo que se repite cuantas veces se desee. Por ejemplo:

Que equivale a

17

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

18

Operaciones aritmticas:

Operaciones lgicas:

NOTA IMPORTANTE !!! El Pin nmero 1 en la gal22v10 es utilizado para asignar el reloj y es la unica entrada de reloj de la gal.

18

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

19

Ejemplos 1. Realizacin de un registro de corrimiento Como ejemplo para un registro de corrimiento se realizar la implementacin del circuito integrado shift register 74194, mediante la sintaxis CUPL.

SHIFT REGISTER 74194


Name shift_r; Partno g_01; Date 22/05/05; Revision 01; Designer grupo1; Company udea; Assembly none; Location none; Device GAL22V10; /******************************************************************/ /* */ /* */ /* */ /******************************************************************/ /* Allowable Target Device Types: */ /******************************************************************/ /** Inputs **/

19

Diseo de Circuitos Digitales


Pin 1 pin 2 pin 3 pin 4 pin 5 pin 6 pin 7 pin 8 pin 9 PIN 10 = = = = = = = = = =

nmunoz@udea.edu.co

20

clk ;/*seal de reloj*/ S0 ;/*linea de seleccion de desplazamiento, carga o permanencia*/ S1 ;/*linea de seleccion de desplazamiento, carga o permanencia*/ clear ; lin ;/*bit que se desplazara hacia la izquierda*/ rin ;/*bit que se desplazara hacia la derecha*/ INd ;/*entrada de carga paralela "d"*/ INc ;/*entrada de carga paralela "c"*/ INb ;/*entrada de carga paralela "b"*/ INa ;/*entrada de carga paralela "a"*/

/** Outputs **/ Pin 23 Pin 22 Pin 21 Pin 20 = = = = Qd Qc Qb Qa ;/*salidas correspondientes al shift register "d"*/ ;/*salidas correspondientes al shift register "c"*/ ;/*salidas correspondientes al shift register "b"*/ ;/*salidas correspondientes al shift register "a"*/

/** Declarations and Intermediate Variable Definitions **/ /*no hay variables intermedias*/ /** Logic Equations **/ Qa.d = !clear & ((Qa&!S1&!S0)#(rin&!S1&S0)#(Qa&S1&!S0)#(INa&S1&S0)); Qb.d = !clear & ((Qb&!S1&!S0)#(Qa&!S1&S0)#(Qc&S1&!S0)#(INb&S1&S0)); Qc.d = !clear & ((Qc&!S1&!S0)#(Qb&!S1&S0)#(Qd&S1&!S0)#(INc&S1&S0)); Qd.d = !clear & ((Qd&!S1&!S0)#(Qc&!S1&S0)#(rin&S1&!S0)#(INd&S1&S0)); /*En las ecuaciones lgicas se dan a conocer las acuaciones que corresponden a cada*/ /*una de las salidas de los flip-flop que integran un shift register 74194*/

2. Hacer una mquina de estado Un ejemplo de un circuito secuencial se muestra en la figura 1.1. Este tiene una variable de entrada X, una variable de salida Z y dos flip-flops. Se asume, que hay cambios en los flip-flops en los flancos negativos del CK (reloj):

Fig. 1.1 De la figura 1.1 obtenemos lo siguiente: 20

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

21

J1 = X + Q2 K1 = X Q2 J2= Q1 K2 = X Q 1 = X + Q1 (teorema de Demorgan) Z = X Q1Q2 Tabla de estado: La secuencia de tiempo de las entradas, salidas y estados de los flip-flops puede representarse en una tabla de estado tabla de transicin. Ella consiste en 3 secciones llamadas: Estado presente, estado siguiente y salida. El estado presente designa los estados de los flip-flops antes de un pulso de reloj. El estado siguiente muestra los estados de los flip-flops despus de la ocurrencia de un pulso de reloj y la seccin de salida lista los valores de las variables de salida durante el estado presente. La figura 1.2 nos detalla la tabla de estado para el circuito secuencial mostrado en la figura 1.1. Estado presente Q2 0 0 1 1 Q1 0 1 0 1 Estado siguiente X=0 X=1 Q 2Q 1 Q 2Q 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 Fig. 1.2 Salidas X=0 X=1 Z Z 0 0 0 0 0 1 0 0

Diagrama de estado: La infamacin disponible en la tabla de estado, puede representarse grficamente en un diagrama de estado. En este diagrama se representa cada estado encerrado en un crculo y la transicin entre estados se indica por flechas que conectan los crculos. En la figura 1.3 se representa el diagrama de estado de la tabla presentada en la figura 1.2.

21

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

22

Fig.1.3 El nmero binario dentro de cada crculo identifica un estado en particular. Las lneas entre crculos se marcan con dos nmeros separados por una lnea oblicua. El valor en la entrada (X) que causa la transicin se escribe encima y el valor de la salida (Z) del estado presente se escribe debajo. Por ejemplo, la lnea marcada 1/0 que va desde el estado 00 al 11 indica que el circuito est en el estado 00 y con X = 1 pasar al estado 11 con la llegada del pulso de reloj. La salida Z tiene un valor de "0" en el estado 00. Una flecha que salga y entre al mismo crculo significa que con las condiciones de entrada no hay cambio de estado. No hay diferencia entre una tabla de estado y un diagrama de estado. Los dos presentan la misma informacin, pero el diagrama es una forma prctica y fcil de presentar un problema.

Cdigo en Cupl MAQUINA DE ESTADOS FINITA

Name maquin; Partno g_01; Date 22/05/05; Revision 01; Designer grupo1; Company udea; Assembly none; Location none; Device GAL22V10; /*ejemplo de maquina de estados*/

/*entradas*/

22

Diseo de Circuitos Digitales pin 1 = clock; pin 2 = x; /*salidas*/ pin 15 = Q0; pin 16 = Q1; pin 17 = Q2;

nmunoz@udea.edu.co

23

/*Seal de reloj*/ /*Seal de entrada de la cual depende el up/down*/

/*salidas de los estados*/

/* descripcion del hardware*/ d=x; $define stateA 'b'000 /*Por medio de la instruccion $define se */ $define stateB 'b'001 /*asigna un valor en binario a cada estado*/ $define stateC 'b'010 /*dado que el primer bit de la palabra representa*/ $define stateD 'b'011 /*el condicional de up/down y los demas bits son el*/ $define stateE 'b'100 /*estado en el cual se encuentra la maquina de estados*/ $define stateF 'b'101 $define stateG 'b'110 $define stateH 'b'111 sequence [d, Q1, Q0]/*Instruccion para definir las variables de una maquina de estados*/ { present stateA next stateC;/*Mediante el "present ... next..." se declara el estado */ present stateB next stateB;/*inicial y el siguiente de una maquina de estados*/ present stateC next stateB;/*dependiendo de las exigencias del problema*/ present stateD next stateD; present stateE next stateH; present stateF next stateF; present stateG next stateF; present stateH next stateE; } 3. Diseemos un contador binario en BDC. En la figura 1.6 se muestra el diagrama de estado de este contador:

Fig. 1.6

23

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

24

Las flechas entre crculos no se marcan con valores de entrada y salida como en los diagramas de estado normales. Recurdese que las transiciones de estado ocurren durante un pulso de reloj. Los flip-flops no cambian de estado si no hay un pulso de reloj. Desde este punto de vista, el diagrama de estado de un contador no tiene que mostrar valores de entrada/salida a lo largo de las flechas que conectan los estados. La nica entrada al circuito es el pulso de cuenta y las salidas se especifican directamente con los estados presentes de los flip-flops. El siguiente estado del contador depende enteramente de su estado presente. Debido a esta propiedad, un contador se especifica completamente con una lista de la secuencia de la cuenta, es decir, la secuencia de los estados binarios. En la figura 1.7 se representa la tabla de estado correspondiente al diagrama de la figura 1.6. Los estados no utilizados (1010 hasta 1111) se toman como no importa. Obsrvese que el contador del valor 1001 salta al 0000 y no al 1010. Por esta razn se llama contador BDC (Binario Decimal Codificador). En la figura 1.8 se representan los 8 mapas y las ecuaciones correspondientes.

Estado presente Estado siguiente Q4 Q3 Q2 Q1 Q4 Q3 Q2 Q1 J4 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 1 X 1 0 0 1 1 0 0 0 X 0 0 0 0 1 0 0 1 Fig. 1.7

K4 X X X X X X X X 0 1

Entradas de los FF J3 K3 J2 K2 X 0 X 0 X 1 X 0 0 X X 0 1 X X 1 X 0 0 X X 1 0 X 0 X 0 X 1 X 1 X X 0 X 0 X 0 X 0

J1 1 X 1 X 1 X 1 X 1 X

K1 X 1 X 1 X 1 X 1 X 1

J 4 = Q3 Q2 Q1

J2= Q4 Q1

J 3 = Q2 Q1

J1= 1

24

Diseo de Circuitos Digitales

nmunoz@udea.edu.co

25

K 4 = Q1

K 2 = Q1

K 3 = Q2 Q1

K1 = 1

Fig. 1.8

25

Con las ecuaciones obtenidas anteriormente se dibuja el diagrama lgico del contador BDC. Fig. 1.9.

Fig. 1.9

Para la conformacin del cdigo en Cupl se realiza de la misma foma que con el ejemplo anterior pero haciendo la correspondencia con los 32 estados diferentes que resultaran incluyendo la seleccin x.

26

Anda mungkin juga menyukai