TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las...

26
Diseño 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 diseño, simulación e implementación 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 elaboración del diseño que queremos realizar. Como se muestra en figura 3 1

Transcript of TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las...

Page 1: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño 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 diseño, simulación e implementación 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 elaboración del diseño que queremos realizar. Como se muestra en figura 3

1

Page 2: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 2

Figura. Nº 3.

Este archivo también podrá ser abierto en C:\wincupl\tmpl.pld.

3. Es conveniente guardar el archivo cada cierto tiempo para evitar perdidas de información si ocurre algún 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 diseño que se esta realizando por ejemplo si se esta haciendo una secuencia de luces utilizar

2

Page 3: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 3

sec_luces, el archivo debe ser guardado con la extensión *.pld. Además aparece una dirección (Directory) que es donde se guardará, si desea cambiarlo deberá ingresar también el directorio donde lo quiere hacer. Por ejemplo: Filename: D:\mis documentos\laboratorio\prac_1.pld Luego de esto presione OK. Para guardar cambios después 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)

• Título 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 implementación del circuito. Aunque se recomienda documentar estos archivos con el fin de tener información clara sobre el archivo que se genero. Se deben utilizar máximo 8 caracteres.

Por ejemplo:

Como se puede ver cada línea se termina con punto y coma (;). Posteriormente se puede poner una breve descripción 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 información que se encuentre entre estos símbolos /* */ serán comentarios y no harán parte del diseño. Puede incluir varias líneas.

3

Page 4: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 4

• Declaraciones:

Declaración 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:

También se pueden hacer asignaciones de la siguiente manera:

Declaración 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 lógica necesaria que se quiere programar. En el se pueden hacer maquinas de estado Mayle o Moore y ecuaciones de lógica combinacional y secuencial, entre otros. Por ejemplo:

5. Después 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

Page 5: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 5

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

5

Page 6: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño 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 diseño 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 simulación.

7. Se debe realizar un archivo para generar la simulación, para esto abra la

plantilla existente para realizar este que se encuentra en C:\wincupl\tmpl.si y guárdelo con otro nombre pero con la misma extensión en el directorio donde se encuentra el archivo con extensión (.pld).

6

Page 7: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 7

Al igual que en el archivo de diseño este archivo también 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

Page 8: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño 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. Después de crear el archivo de simulación 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 extensión .so y allí se puede obsevar el error, sino hay ningún error en el mismo archivo con extensión .so encuentra los resultados de la simulación en la parte inferior.

8

Page 9: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño 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 simulación.

9. Después de verificar que la simulación si arroja los resultados esperados, utilice el archivo con extensión .jed para programar al GAL22V10 con el chip master utilizado para este proceso.

Ejemplo paso a paso: Implementar funciones lógicas utilizando circuitos combinacionales.

En un edificio de 4 pisos hay un ascensor el cual funciona de la siguiente forma: Existen 4 señales 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 señal al sistema de control del ascensor. Esta señal llega en dos líneas C1 C0 que indican en binario el número del piso desde el cual se solicita el ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de cada piso como entradas y que entregue al sistema de control del ascensor, el par C1, C0.

• Además de esto, debido a que en 2 o más pisos pueden estarse activando 2 o más pulsadores al tiempo, debe diseñarse el circuito de tal forma que se le dé prioridad de atención a la señal del piso más alto activado.

En el caso en el cual no hay activada ningún pulsador (caso en el cual nadie utiliza el ascensor) debe activarse una línea NP la cual entrega al sistema de control la información de que el ascensor esta sin uso. En otro caso, la señal NP (no petición de servicio) esta desactivada.

9

Page 10: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 10

Solución: 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

Page 11: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 11

P4 P3 P2 P1 C2 C1 NP 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0

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. Después de abrir el programa se abre el archivo TMPL.pld para utilizarlo como guía y se hacen las modificaciones necesarias resultando lo siguiente: Después de guardar y especificar las opciones de compilación, 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 librerías del cupl por lo que se elegirá la pal22v10. Luego puede compilar.

11

Page 12: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 12

12

Page 13: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 13

La grafica anterior muestra que compilo bien, ahora se procede a hacer la simulación. Creando el archivo necesario utilizando el TMPL.si que sirve de guía para el desarrollo de este y esta incluido en las librerías del CUPL. Haciendo las modificaciones resulta:

13

Page 14: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 14

Después de generar este archivo y elegir las opciones de simulación se corre la simulación y se abre el archivo que se genero en la misma carpeta donde se estaba trabajando con extensión *.so este contiene el resultado de la simulación como se muestra en la siguiente grafica. Este resultado puede ser comparado con la tabla de verdad que se había utilizado al principio. Si los resultados eran los esperados se puede programar para probar y hacer el montaje requerido, incluyendo la polarización de la Gal.

14

Page 15: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 15

Luego puede abrir el archivo con extensión .doc generado por CUPL donde podrá encontrar en la parte inferior un diagrama con la asignación de los pines como se muestra en la siguiente gráfica, que será útil en el momento de implementar el circuito.

15

Page 16: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 16

IMPORTANTE A continuación 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 lógicas necesarias para programar los dispositivos. DOC: Creado por CUPL, contiene todo de las ecuaciones de la lógica que CUPL generó de su programa, muestra los errores que encontró al compilar el programa (localización del error) y provee información acerca de cómo se selecciono la lógica en el dispositivo usado además el chip Diagram. ABS: Creado por CUPL, usado por este para ejecutar la simulación. LST: Creado por CUPL, enumera las líneas correspondientes al código generado y al final los errores con el numero correspondiente de la línea. JED: Creado por CUPL, archivo usado por el programador para programar el chip usado para implementar el diseño. SI: Archivo de entrada para simulación creado por el usuario, contiene los vectores de prueba. SO: Archivo de salida para simulación creado por CUPL, contiene los resultados de la simulación, incluyendo los errores presentes.

• Variables y símbolos reservados por el programa, estas no pueden ser usadas para asignación de las variables que deseamos implementar, estas tampoco deben tener espacios.

16

Page 17: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 17

Se pueden representar números en binario, octal, decimal, o hexadecimal. La asignación de pines e índices de variables se da en decimal, para el resto de números 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

Page 18: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 18

Operaciones aritméticas:

Operaciones lógicas:

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

18

Page 19: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 19

Ejemplos

1. Realización de un registro de corrimiento Como ejemplo para un registro de corrimiento se realizará la implementación 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

Page 20: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 20

Pin 1 = clk ;/*señal de reloj*/ pin 2 = S0 ;/*linea de seleccion de desplazamiento, carga o permanencia*/ pin 3 = S1 ;/*linea de seleccion de desplazamiento, carga o permanencia*/ pin 4 = clear ; pin 5 = lin ;/*bit que se desplazara hacia la izquierda*/ pin 6 = rin ;/*bit que se desplazara hacia la derecha*/ pin 7 = INd ;/*entrada de carga paralela "d"*/ pin 8 = INc ;/*entrada de carga paralela "c"*/ pin 9 = INb ;/*entrada de carga paralela "b"*/ PIN 10 = INa ;/*entrada de carga paralela "a"*/ /** Outputs **/ Pin 23 = Qd ;/*salidas correspondientes al shift register "d"*/ Pin 22 = Qc ;/*salidas correspondientes al shift register "c"*/ Pin 21 = Qb ;/*salidas correspondientes al shift register "b"*/ Pin 20 = Qa ;/*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 lógicas 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 máquina 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

Page 21: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 21

J1 = X + Q2 K1 = X Q2

J2= 1Q K2 = 11 QXQX += (teorema de Demorgan) Z = 21QQX 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 transición. 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 después de la ocurrencia de un pulso de reloj y la sección 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 Estado siguiente Salidas X=0 X=1 X=0 X=1

Q2 Q1 Q2Q1 Q2Q1 Z Z 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 0 0 0

Fig. 1.2

Diagrama de estado: La infamación disponible en la tabla de estado, puede representarse gráficamente en un diagrama de estado. En este diagrama se representa cada estado encerrado en un círculo y la transición entre estados se indica por flechas que conectan los círculos. En la figura 1.3 se representa el diagrama de estado de la tabla presentada en la figura 1.2.

21

Page 22: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 22

Fig.1.3

El número binario dentro de cada círculo identifica un estado en particular. Las líneas entre círculos se marcan con dos números separados por una línea oblicua. El valor en la entrada (X) que causa la transición se escribe encima y el valor de la salida (Z) del estado presente se escribe debajo. Por ejemplo, la línea 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 círculo 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 información, pero el diagrama es una forma práctica y fácil de presentar un problema. Código 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

Page 23: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 23

pin 1 = clock; /*Señal de reloj*/ pin 2 = x; /*Señal de entrada de la cual depende el up/down*/ /*salidas*/ pin 15 = Q0; /*salidas de los estados*/ pin 16 = Q1; pin 17 = Q2; /* 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. Diseñemos un contador binario en BDC. En la figura 1.6 se muestra el diagrama de estado de este contador:

Fig. 1.6

23

Page 24: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 24

Las flechas entre círculos no se marcan con valores de entrada y salida como en los diagramas de estado normales. Recuérdese 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. Obsérvese que el contador del valor 1001 salta al 0000 y no al 1010. Por esta razón 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 Entradas de los FF Q4 Q3 Q2 Q1 Q4 Q3 Q2 Q1 J4 K4 J3 K3 J2 K2 J1 K1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1

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

0 0 0 0 0 0 0 1 X X

X X X X X X X X 0 1

0 0 0 1 X X X X 0 0

X X X X 0 0 0 1 X X

0 1 X X 0 1 X X 0 0

X X 0 1 X X 0 1 X X

1 X 1 X 1 X 1 X 1 X

X 1 X 1 X 1 X 1 X 1

Fig. 1.7

J4 = Q3 Q2 Q1

J3 = Q2 Q1

J2= 4Q Q1

J1= 1

24

Page 25: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Diseño de Circuitos Digitales [email protected] 25

K4 = Q1

K3 = Q2 Q1

K2 = Q1

K1 = 1

Fig. 1.8

25

Page 26: TUTORIAL CUPL (actualizado 11/07/2005) · ascensor. Diseñe un circuito digital que reciba las señales de los pulsadores de Diseñe un circuito digital que reciba las señales de

Con las ecuaciones obtenidas anteriormente se dibuja el diagrama lógico del contador BDC. Fig. 1.9.

Fig. 1.9 Para la conformación del código en Cupl se realiza de la misma foma que con el ejemplo anterior pero haciendo la correspondencia con los 32 estados diferentes que resultarían incluyendo la selección “x”.

26