Diseo de Circuitos Digitales
[email protected]
1
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
1
Diseo de Circuitos Digitales
[email protected]
2
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
2
Diseo de Circuitos Digitales
[email protected]
3
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 . 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.
3
Diseo de Circuitos Digitales Declaraciones:
[email protected]
4
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
4
Diseo de Circuitos Digitales
[email protected]
5
Ingrese a Output file, seleccione: JEDEC, fuse plot, equations,
absolute, list.
5
Diseo de Circuitos Digitales
[email protected]
6
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).
6
Diseo de Circuitos Digitales
[email protected]
7
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.
7
Diseo de Circuitos Digitales
[email protected]
8
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.
8
Diseo de Circuitos Digitales
[email protected]
9
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.
9
Diseo de Circuitos Digitales
[email protected]
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
[email protected] 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
[email protected]
12
12
Diseo de Circuitos Digitales
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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 74194Name 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 DigitalesPin 1 pin 2 pin 3 pin 4 pin 5 pin 6
pin 7 pin 8 pin 9 PIN 10 = = = = = = = = = =
[email protected]
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
[email protected]
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
[email protected]
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;
[email protected]
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
[email protected]
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
[email protected]
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