Você está na página 1de 63

Proyectos en WINCUPL

3. PROYECTOS EN WINCUPL

60

Proyectos en WINCUPL

4.1. Compuertas lgicas


Cdigo
Name Partno Revision Date Designer Company Location Assembly Device /* Inputs: Pin 1 = a; Pin 2 = b; /* Outputs: Pin Pin Pin Pin Pin Pin Pin Pin 12 13 14 15 16 17 18 19 = = = = = = = = define outputs as active HI levels */ Gates; 01; 00; 02/07/2012; Teth; ITS Zapopan; None; None; g16v8a; define inputs to build simple gates from */

inva; invb; and; nand; or; nor; xor; xnor; examples of simple gates expressed in CUPL */ /* NOT inverters b; & b); b; # b); b; $ b); /* /* /* /* /* /* */

/* Logic: inva invb and nand or nor xor xnor = = = = = = = = !a; !b; a & !(a a # !(a a $ !(a

AND gate */ NAND gate */ OR gate */ NOR gate */ XOR exclusive or gate XNOR exclusive nor gate

*/ */

Observe la identificacin de smbolos para cada compuerta, NOT !, AND &, OR # y XOR $, las funciones negadas de estas compuerta solo estn acompaadas del smbolo de negacin ! seguido de parntesis.

61

Proyectos en WINCUPL

Simulacin

Tabla de verdad
a 0 0 1 1 b 0 1 0 1 inva 1 1 0 0 invb 1 0 1 0 and 0 0 0 1 nand 1 1 1 0 or 0 1 1 1 nor 1 0 0 0 xor 0 1 1 0 xnor 1 0 0 1

En la simulacin los vectores verticales 1, 2, 3, y 4 cambian sucesivamente los valores asignados a las variables a y b, para cada vector las salidas asignadas a cada compuerta lgica modifica su valor segn estas variables, por ejemplo en el vector 2 a = 0 y b = 1, el resultado de la compuerta lgica AND es 0, se observa que la lnea de la grafica de tiempos esta en bajo para esta condicin.

62

Proyectos en WINCUPL

63

Proyectos en WINCUPL

4.2. Ecuaciones lgicas


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device ECULOG1 ; 00 ; 02/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/* *************** INPUT PINS *********************/ PIN 1 = A; PIN 2 = B; PIN 3 = C; /* *************** OUTPUT PINS *********************/ PIN 19 = Ecu1; PIN 18 = Ecu2; /* ************** LOGIC EQUATIONS *****************/ Ecu1 = (!A&!B&C)#(!A&B&!C)#(A&B&!C)#(A&B&C); Ecu2 = (!A&!B&C)#(!A&B&C)#(A&!B&C)#(A&B&!C);

El cdigo que se muestra arriba presenta las ecuaciones lgicas en la forma de suma de productos SOP, para su fcil identificacin cada producto est encerrado entre parntesis, de esta forma tambin se garantiza que cada producto AND se realice primero antes de la sentencia OR. En ambos casos las ecuaciones tienen como entradas de excitacin las mismas variables identificadas como A, B y C.

64

Proyectos en WINCUPL

Simulacin

En la simulacin se observa que las 8 posibles combinaciones para A, B y C estn cambiando sucesivamente en los vectores, modificando las salidas de las ecuaciones lgicas identificadas como Ecu1 y Ecu2.
( )

Tabla de verdad
A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 Ecu1 0 1 1 0 0 0 1 1 Ecu2 0 1 0 1 0 1 1 0

Observe que las ecuaciones lgicas estn expresadas en la forma de suma de productos y su transformacin en sumatoria de minterminos (Ecu1 = 1,2,6,7; Ecu2 = 1,3,5,6) corresponde con la presencia de 1 lgico en la configuracin de las entradas ABC.

65

Proyectos en WINCUPL

66

Proyectos en WINCUPL

4.3. Sumador completo


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device FA ; 00 ; 03/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; None ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN 1 = A; PIN 2 = B; PIN 3 = Cin; /**************** OUTPUT PINS *********************/ PIN 19 = S; PIN 18 = Cout; /************** LOGIC EQUATIONS *******************/ S= A$B$Cin; Cout= (B&Cin) # (A&Cin) # (A&B);

Ecuaciones lgicas para los bits de salida: ( )

El sumador completo es un circuito que recibe dos bits sumando A y B, adems de un bit de acarreo de entrada Cin, genera un bit de suma S y un bit de acarreo de salida Cout.

67

Proyectos en WINCUPL

Simulacin

Tabla de verdad del sumador


Bit sumando Bit sumando Bit acarreo Bit de suma salida Bit de acarreo salida

A
0 0 0 0 1 1 1 1

B
0 0 1 1 0 0 1 1

Cin
0 1 0 1 0 1 0 1

S
0 1 1 0 1 0 0 1

Cout
0 0 0 1 0 1 1 1

Cuando uno de los dos sumando es 1 la variable S muestra 1, cuando ambos sumando tienen 1 la variable S muestra 0 y 1 en el bit de acarreo de salida. El acarreo de entrada es un sumando que se agrega a las entradas A y B. Cuando A, B y Cin tienen 1, la salida es S = 1 y Cout = 1. Si analizamos esta entrada desde numeracin decimal la suma de tres sumandos en 1 da 3, 3 en binario se expresa como 11. Note que el bit de acarreo Cout es el bit ms significativo.

68

Proyectos en WINCUPL

69

Proyectos en WINCUPL

4.4. Sumador completo de 4 bits


Cdigo
Name Partno Date Rev Designer Company Assembly Location Device Adder; 001; 02/07/2012; 01; Teth Cortes; ITS; NA; NA; G16V8;

/** Inputs **/ Pin [1..4] = [X1..4]; Pin [5..8] = [Y1..4]; /** Outputs **/ Pin [12..15] = [Z1..4]; Pin [16..18] = [C1..3]; Pin 19 = Carry; /* 4-bit sum /* Intermediate carry values /* Carry for 4-bit sum */ */ */ /* First 4-bit number /* Second 4-bit number */ */

/* Adder-slice circuit - add 2, 1-bit, numbers with carry */ function adder_slice(X, Y, Cin, Cout) { Cout = Cin & X /* Compute carry */ # Cin & Y # X & Y; adder_slice = Cin $ (X $ Y); /* Compute sum */ } /* Perform 4, 1-bit, additions and keep the final carry */ Z1 Z2 Z3 Z4 = = = = adder_slice(X1, adder_slice(X2, adder_slice(X3, adder_slice(X4, Y1, 'h'0, C1); /* Initial carry = 'h'0 */ Y2, C1, C2); Y3, C2, C3); Y4, C3, Carry); /*Get final carry value*/

70

Proyectos en WINCUPL

Simulacin

El sumador completo de 4 bits est conformado por cuatro sumadores completos conectados entre s, donde el acarreo de salida del primero se enlaza al acarreo de entrada del segundo y as sucesivamente. Los cuatro bit de los dos sumandos X y Y entran en paralelo. Observe que el circuito no tiene el acarreo de entrada en el primer sumador y el acarreo de salida del cuarto, representa el acarreo total del circuito. En la simulacin las entradas y las salidas se muestran como hexgonos enlazados y representan un bus de 4 bits, para observar su valor es necesario seleccionar la seal y el vector para la interseccin deseada.

71

Proyectos en WINCUPL

72

Proyectos en WINCUPL

4.5. Decodificador paralelo de 2 bits


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device Dec2 ; 00 ; 03/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN 1 = A; PIN 2 = B; /**************** OUTPUT PINS *********************/ PIN 19 = M0; PIN 18 = M1; PIN 17 = M2; PIN 16 = M3; /************* LOGIC EQUATIONS *******************/ M0 M1 M2 M3 = !A & !B; = !A & B; = A & !B; = A & B;

El decodificador paralelo de 2 bits es un circuito muy simple que se construye con cuatro ecuaciones lgicas. Para las cuatro posibles combinaciones de las entradas A y B se debe activar en alto una y solo una de las cuatro salidas identificadas en el cdigo como M0, M1, M2 y M3.

73

Proyectos en WINCUPL

Simulacin

Tabla de verdad

A
0 0 1 1

B
0 1 0 1

Mo
1 0 0 0

M1
0 1 0 0

M2
0 0 1 0

M3
0 0 0 1

Observe la correspondencia entre la grafica de tiempos de la simulacin y la tabla de verdad que describe el funcionamiento del circuito. Las ecuaciones lgicas descritas en el cdigo estn modeladas por minterminos, es decir:

74

Proyectos en WINCUPL

75

Proyectos en WINCUPL

4.6. Decodificador paralelo de 3 bits


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device DEC3; 00; 03/07/2012; 01; Teth Cortes; ITS ZAPOPAN; NA; NA; g16v8a;

/**************** INPUT PINS *********************/ PIN 1 = C; /* MSB */ PIN 2 = B; PIN 3 = A; /* LSB */ /**************** OUTPUT PINS *********************/ PIN 19 =M0; PIN 18 =M1; PIN 17 =M2; PIN 16 =M3; PIN 15 =M4; PIN 14 =M5; PIN 13 =M6; PIN 12 =M7; /************** LOGIC EQUATIONS ******************/ M0 M1 M2 M3 M4 M5 M6 M7 = = = = = = = = !C !C !C !C C C C C & & & & & & & & !B !B B B !B !B B B & & & & & & & & !A; A; !A; A; !A; A; !A; A;

76

Proyectos en WINCUPL

Simulacin

Tabla de verdad

C
0 0 0 0 1 1 1 1

B
0 0 1 1 0 0 1 1

CA
0 1 0 1 0 1 0 1

M0
1 0 0 0 0 0 0 0

M1
0 1 0 0 0 0 0 0

M2
0 0 1 0 0 0 0 0

M3
0 0 0 1 0 0 0 0

M4
0 0 0 0 1 0 0 0

M5
0 0 0 0 0 1 0 0

M6
0 0 0 0 0 0 1 0

M7
0 0 0 0 0 0 0 1

El circuito decodificador paralelo de tres bits exhibe un comportamiento similar al decodificador de dos bits, pero en esta ocasin se utilizan tres bits de seleccin C, B y A para colocar en alto uno y solo uno de los ocho bit de salida identificados como M0, M1, M2, M3, M4, M5, M6 y M7; como se observa en la grafica de tiempos de la simulacin y la tabla de verdad.

77

Proyectos en WINCUPL

78

Proyectos en WINCUPL

4.7. Decodificador BCD a 7 segmentos


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device DECBCD; 00; 03/07/2012; 01; Teth Cortes; ITS ZAPOPAN; NA; NA; g16v8a;

/**************** INPUT PINS *********************/ PIN PIN PIN PIN 2 3 4 5 = = = = A0; /* LSB */ A1; A2; A3; /* MSB */

/**************** OUTPUT PINS *********************/ PIN PIN PIN PIN PIN PIN PIN 12 13 14 15 16 17 18 = = = = = = = a; b; c; d; e; f; g;

/************ LOGIC EQUATIONS *********************/ TABLE A3,A2,A1,A0 => a,b,c,d,e,f,g { 'h'0=> 'b'1111110; 'h'1=> 'b'0110000; 'h'2=> 'b'1101101; 'h'3=> 'b'1111001; 'h'4=> 'b'0110011; 'h'5=> 'b'1011011; 'h'6=> 'b'0011111; 'h'7=> 'b'1110000; 'h'8=> 'b'1111111; 'h'9=> 'b'1110011;

79

Proyectos en WINCUPL

'h'A=> 'h'B=> 'h'C=> 'h'D=> 'h'E=> 'h'F=> }

'b'0000000; 'b'0000000; 'b'0000000; 'b'0000000; 'b'0000000; 'b'0000000;

Simulacin

El circuito decodificador BCD a 7 segmentos recibe como entrada un nmero binario de cuatro bits de A0 como el bit menos significativo LSB hasta A3 como el bit ms significativo MSB, y genera siete salidas a, b, c, d, e, f, y g que encienden o apagan un arreglo de leds que forman un carcter numrico en un dispositivo conocido como display de 7 segmentos. En la figura de la derecha DP es un punto que acompaa al carcter, en el cdigo DP se omite.

80

Proyectos en WINCUPL

Tabla de verdad

A3 A2 A1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

A0
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

a
1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0

b
1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0

c
1 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0

d
1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0

e
1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0

f
1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0

g
0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0

Observe que todas las posibles combinaciones de A0, A1, A2 y A3 estn presentes en la tabla de verdad, sin embargo solo se despliega un valor en el display de 0 (0000) a 9 (1001), despus a partir de 10 (1010) hasta 15 (1111) las salidas se asignan en cero. En el caso de desear continuar la cuenta en hexadecimal, desplegando los caracteres alfabticos a, b, c, d, e y f es necesario configurar las salidas desde 1010 hasta 1111 para que se enciendan los leds correspondientes a cada carcter. Observe que en el cdigo la palabra reservada table realiza una asignacin de las salidas en funcin de las entradas simplificando la programacin, de otra forma se debe definir una ecuacin lgica por cada una de las salidas.

81

Proyectos en WINCUPL

82

Proyectos en WINCUPL

4.8. Codificador de 8 posiciones a binario


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device COD8 ; 00 ; 03/07/2012 ; 01 ; Teth Azrael ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN PIN PIN PIN PIN PIN PIN PIN 2 3 4 5 6 7 8 9 = = = = = = = = E0; E1; E2; E3; E4; E5; E6; E7;

/**************** OUTPUT PINS *********************/ PIN 19 = S0; /* LSB */ PIN 18 = S1; PIN 17 = S2; /* MSB */ /************ LOGIC EQUATIONS *********************/ TABLE E7,E6,E5,E4,E3,E2,E1,E0 => S2,S1,S0 { 'b'00000001 => 'b'000; 'b'00000010 => 'b'001; 'b'00000100 => 'b'010; 'b'00001000 => 'b'011; 'b'00010000 => 'b'100; 'b'00100000 => 'b'101; 'b'01000000 => 'b'110; 'b'10000000 => 'b'111; }

83

Proyectos en WINCUPL

Simulacin

El circuito codificador de 8 posiciones a binario, en palabras simples, funciona de manera inversa al decodificador de tres bits. Es decir tiene ocho entradas y cuando una y solo una de ellas se activa en alto la salida muestra el nmero binario correspondiente. En la grafica de tiempos se observa como se fue activando sucesivamente cada una de las entradas y consecuentemente la cuenta binaria en S0-S2 fue incrementando, hasta llegar a 111. En el diagrama del circuito electrnico de prueba se propone colocar un conmutador rotativo de ocho posiciones, para evitar que ocurran dos o ms entradas en alto, de lo contrario el circuito va hacia una situacin no definida.

84

Proyectos en WINCUPL

85

Proyectos en WINCUPL

4.9. Multiplexor de 4 a 1
Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device MUX4A1 ; 00 ; 03/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN PIN PIN PIN PIN PIN PIN 1 2 3 4 5 6 7 = = = = = = = G; D0; D1; D2; D3; A; B; /* /* /* /* /* /* /* Senal de habilitacion estroboscopica */ Senal de dato 0 */ Senal de dato 1 */ Senal de dato 2 */ Senal de dato 3 */ LSB del codigo de seleccion */ MSB del codigo de seleccion */

/**************** OUTPUT PINS *********************/ PIN 19 = Y; /* salida del muxtiplexor de 4 a 1 */

/************** LOGIC EQUATIONS *******************/ Y = !B&!A&D0&G # !B&A&D1&G # B&!A&D2&G # B&A&D3&G;

El multiplexor de 4 a 1 es un circuito que coloca un bit de dato de cuatro seales de datos identificados como D0, D1, D2 y D3 en el bit de salida Y. La seal de habilitacin G es un estrobo que indica el tiempo en el que se muestrea el dato de las lneas de entrada. La ecuacin lgica es:

86

Proyectos en WINCUPL

Simulacin

En el vector 1, B=0, A=0 y G=0, la salida se coloca en Y=0 porque la seal de habilitacin inhibe que el dato de D0 se transfiera hacia Y. Por el contrario en el vector 2 B=0, A=0 y G=1, la seleccin de lnea corresponde a D0 con 1 por lo tanto la salida Y=1, es decir Y tiene asignado el valor de D0 (Y=D0). En los vectores 3, 5 y 7 la seal de habilitacin esta en cero G=0 y no existe muestreo de la seal de datos, la salida Y exhibe un valor en bajo. En el vector 4 con B=0, A=1 y G=1, la seleccin corresponde a la lnea de datos D1, que muestra un 0, as la salida Y= D1=0. En el vector 6 con B=1, A=0 y G=1, la seleccin corresponde a la lnea de datos D2, que muestra un 1, as la salida Y=D2=1. Finalmente en el vector 8 con B=1, A=1 y G=1, la seleccin corresponde a la lnea de datos D3, que muestra un 1, as la salida Y=D3=1.

87

Proyectos en WINCUPL

88

Proyectos en WINCUPL

4.10. Multiplexor de 8 a 1
Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device MUX8a1 ; 00 ; 03/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN PIN PIN PIN PIN PIN PIN PIN PIN PIN PIN PIN 1 = G; 2 = D0; 3 = D1; 4 = D2; 5 = D3; 6 = D4; 7 = D5; 8 = D6; 9 = D7; 12 = A; 13 = B; 14 = C;

/* LSB */ /* MSB */

/**************** OUTPUT PINS *********************/ PIN 19 = Y; /* salida del multiplexor de 8 a 1 */

/************** LOGIC EQUATIONS *******************/ Y = !C&!B&!A&D0&G # !C&!B&A&D1&G # !C&B&!A&D2&G # !C&B&A&D3&G # C&!B&!A&D4&G # C&!B&A&D5&G # C&B&!A&D6&G # C&B&A&D7&G;

El multiplexor de 8 a 1 es similar al multiplexor de 4 a 1. Transfiere un dato hacia el bit de salida Y de una seleccin de lneas, en este caso son ocho las lneas de datos de D0 a D7 y son tres los bits de seleccin C, B y A, donde C es el bit ms significativo y A es el bit menos significativo.

89

Proyectos en WINCUPL

Simulacin

En la simulacin los vectores impares tienen la seal de habilitacin en bajo, en consecuencia no existe muestreo en las seales de datos, la salida es Y=0. Por el contrario en los vectores pares se transfiere el dato de las lneas D0 a D7 segn el cdigo de seleccin en CBA, como se muestra en la siguiente tabla: C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1

Y
Y=D0 Y=D1 Y=D2 Y=D3 Y=D4 Y=D5 Y=D6 Y=D7

90

Proyectos en WINCUPL

91

Proyectos en WINCUPL

4.11. Comparador de magnitud de dos palabras


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device COMP2 ; 00 ; 03/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/**************** INPUT PINS *********************/ PIN 1 = A0; PIN 2 = A1; PIN 3 = B0; PIN 4 = B1; /**************** OUTPUT PINS *********************/ PIN 19 = F1; /* Ecuacion A menor que B */ PIN 18 = F2; /* Ecuacion A igual que B */ PIN 17 = F3; /* Ecuacion A mayor que B */ /************** LOGIC EQUATION ********************/ F1 = !A1&B1 # !A1&!A0&B0 # !A0&B1&B0; F2 = !A1&!A0&!B1&!B0 # !A1&A0&!B1&B0 # A1&!A0&B1&!B0 # A1&A0&B1&B0; F3 = A1&!B1 # A0&!B1&!B0 # A1&A0&!B0;

Este circuito compara dos palabras binarias de dos bits cada una, identificadas como A y B, donde A0 y B0 son los bits menos significativos. Son tres los posibles resultados, A>B solo F3 se coloca en alto, A=B solo F2 se coloca en alto y A<B solo F1 se coloca en alto. Las ecuaciones lgicas de las funciones de salida son:

92

Proyectos en WINCUPL

Simulacin

Tabla de verdad A1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 A0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

F1 A<B
0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0

F2 A=B
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1

F3 A>B
0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0

Entre la tabla de verdad y la simulacin se observa la relacin de las tres comparaciones.

93

Proyectos en WINCUPL

94

Proyectos en WINCUPL

4.12. Contador de dcadas


Cdigo
Name Partno Date Revision Designer Company Assembly Location Device /** Pin Pin Pin Pin /** Count10; 001; 02/07/12; 02; Teth Cortes; ITSZ; NA; NA; g16v8a; **/ /* /* /* /* **/ /* Counter outputs /* Ripple carry out */ */ Counter clock Counter clear input Counter direction input Register output enable */ */ */ */

Inputs 1 2 3 11 = = = =

clk; clr; dir; !oe;

Outputs

Pin [14..17] = [Q3..0]; Pin 18 = carry;

/** Declarations and Intermediate Variable Definitions **/ field count = [Q3..0]; $define S0 'b'0000 $define S1 'b'0001 $define S2 'b'0010 $define S3 'b'0011 $define S4 'b'0100 $define S5 'b'0101 $define S6 'b'0110 $define S7 'b'0111 $define S8 'b'1000 $define S9 'b'1001 field mode = [clr,dir]; up = mode:0; down = mode:1; clear = mode:[2..3]; /* declare counter bit field */ /* define counter states */

/* /* /* /*

declare mode define count define count define count

control field */ up mode */ down mode */ clear mode */

/** Logic Equations **/

95

Proyectos en WINCUPL Sequenced count { present S0 if if if if if if if if if if if if if if if if if if if if if if if if if if if if if if if if up down clear down up down clear up down clear up down clear up down clear up down clear up down clear up down clear up down clear up down clear up /* free running counter */ next S1; next S9; next S0; out carry; next S2; next S0; next S0; next S3; next S1; next S0; next S4; next S2; next S0; next S5; next S3; next S0; next S6; next S4; next S0; next S7; next S5; next S0; next S8; next S6; next S0; next S9; next S7; next S0; next S0; next S8; next S0; out carry;

present S1 present S2 present S3 present S4 present S5 present S6 present S7 present S8 present S9

/* carry output */

Simulacin

96

Proyectos en WINCUPL

El circuito contador de dcadas realiza una cuenta de 0 a 9 en sentido ascendente o descendente, cuando la entrada dir=0 la cuenta es ascendente, si dir=1 entonces la cuenta es descendente. En la simulacin los hexgonos llevan la cuenta que se muestra en la casilla value, para ver resultado se debe seleccionar el rengln [Q3..Q0] y el vector deseado. Se comienza por definir en el cdigo los diez estados, despus a travs de la funcin sequenced se determina la transicin entre los estados segn el valor de dir y en respuesta a cada pulso de la seal de reloj.

Diagrama de estados dir=0 dir=0

S9
dir=1 dir=1 dir=1

S0
dir=1

dir=0

S8
dir=0

S1
dir=0

dir=1

S7
dir=1 dir=0 dir=1 dir=1 dir=1

S2
dir=0

S6
dir=0

dir=1

S3
dir=0

S5
dir=0

S4

97

Proyectos en WINCUPL

98

Proyectos en WINCUPL

4.13. Detector de secuencia


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device FSM2 ; 00 ; 04/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; None ; ; g16v8a ;

/* *************** INPUT PINS *********************/ PIN 1 = clock ; PIN 2 = s ; /* data input */ PIN 3 = !enable ; /* *************** OUTPUT PINS *********************/ PIN [14..15] = [Q1..0]; PIN 19 = found; field STATE = [Q1..0]; $define S0 'b'00 $define S1 'b'01 $define S2 'b'10 $define S3 'b'11 SEQUENCE STATE { present S0 if s default present S1 if s default present S2 if s default present S3 if s out found; default } next next next next next next next S1; S0; S2; S1; S3; S1; S0;

next S0;

99

Proyectos en WINCUPL

Simulacin

Diagrama de estados

1 0 SO 00 1 0 S1 01 1 S2 10 1 S3 11

0 0
Este circuito tiene implementado una maquina de estados para detectar la secuencia 0111. Cuando es detectada found se coloca en alto de lo contrario found permanece en bajo. El diagrama de estados esta modelado en el cdigo a travs de la instruccin sequence que determina las transiciones de un estado a otro en respuesta al bit se entrada s. En la simulacin se observa la llegada de s de dos secuencias 0111 una despus de la otra y la activacin en alto de found en el ltimo bit se la secuencia.

100

Proyectos en WINCUPL

101

Proyectos en WINCUPL

4.14. Generador de secuencia


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device FSM3 ; 00 ; 05/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ;

/* *************** INPUT PINS *********************/ PIN 1 = clock ; PIN 2 = s ; /* data input */ PIN 11 = !enable ; /* *************** OUTPUT PINS *********************/ PIN [14..15] = [Q1..0]; PIN 19 = sal; field STATE = [Q1..0]; $define S0 'b'00 $define S1 'b'01 $define S2 'b'10 $define S3 'b'11 SEQUENCE STATE { present S0 if s default present S1 if s default present S2 if s default present S3 if s default } next next next next next next next next S1 ; S0; S2 out sal; S0; S3 out sal; S2; S0 out sal; S0;

Este circuito es la implementacin de una maquina de estados que genera en la salida sal la secuencia 0111 con la llegada de los pulsos de reloj y la transicin entre los estados.

102

Proyectos en WINCUPL

Secuencia

Tabla de excitacin

S 0
S0 S1 S2 S3 S0 / 0 S0 / 0 S0 / 0 S0 / 0

1
S1 / 0 S2 / 1 S3 / 1 S0 / 1

En la tabla de excitacin se deduce lo siguiente: cuando la entrada s es igual a 0 todas las transiciones son hacia el estado S0 con la sal en 0, por otro lado cuando la entrada s es igual a 1 las transiciones ocurren de S0 hacia S1 con sal en 0, de S1 hacia S2 con sal en 1, de S2 hacia S3 con sal en 1 y de S3 hacia S0 con sal en 1. En el circuito electrnico s se propone como un botn pulsador, mientras permanezca oprimido el circuito genera de forma ininterrumpida la secuencia 0111, cuando el botn deje de oprimirse la secuencia no se genera, es decir sal es 0 y el estado actual fija en S0.

103

Proyectos en WINCUPL

104

Proyectos en WINCUPL

4.15. Contador de anillo


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device /** Pin Pin Pin Pin /** CONTADOR ; 00 ; 05/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ; **/

Inputs 1 2 3 11 = = = =

clk; clr; dir; !oe; **/

/* Register output enable

*/

Outputs

Pin [14..17] = [Q3..0];

/* Counter outputs

*/

/** Declarations and Intermediate Variable Definitions **/ field count = [Q3..0]; $define S0 'b'0000 $define S1 'b'0001 $define S2 'b'0010 $define S3 'b'0100 $define S4 'b'1000 field mode = [clr,dir]; anillo_up = mode:0; anillo_dw = mode:1; clear = mode:[2..3]; /* declare counter bit field */ /* define counter states */

/* declare mode control field */ /* define count clear mode */

105

Proyectos en WINCUPL

/** Logic Equations **/ Sequenced count { present S0 present S1 present S2 present S3 present S4 } if if if if if if if if if if if if if if if anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear next next next next next next next next next next next next next next next S1; S4; S0; S2; S4; S0; S3; S1; S0; S4; S2; S0; S1; S3; S0;

Simulacin

El contador de anillo va colocando en alto cada uno de los bits de forma sucesiva, como se observa en la tabla de verdad. En el diagrama electrnico construido con flip flops tipo D la salida Q del cuarto dispositivo alimenta la entrada D del primero.

106

Proyectos en WINCUPL

107

Proyectos en WINCUPL

4.16. Contador Johnson


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device /** Pin Pin Pin Pin */ /** johnson ; 00 ; 05/07/2012 ; 01 ; Teth Cortes ; ITS ZAPOPAN ; NA ; NA ; g16v8a ; **/ = = = = clk; clr; dir; !oe;

Inputs 1 2 3 11 Outputs

/* Register output enable

**/ /* Counter outputs */

Pin [14..17] = [Q3..0];

/** Declarations and Intermediate Variable Definitions **/ field count = [Q3..0]; $define S0 'b'0000 $define S1 'b'0001 $define S2 'b'0011 $define S3 'b'0111 $define S4 'b'1111 field mode = [clr,dir]; anillo_up = mode:0; anillo_dw = mode:1; clear = mode:[2..3]; /* declare counter bit field */ /* define counter states */

/* declare mode control field */ /* define count clear mode */

108

Proyectos en WINCUPL

/** Logic Equations **/ Sequenced count { present S0 present S1 present S2 present S3 present S4 } if if if if if if if if if if if if if if if anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear anillo_up anillo_dw clear next next next next next next next next next next next next next next next S1; S4; S0; S2; S4; S0; S3; S1; S0; S4; S2; S0; S1; S3; S0;

Simulacin

El contador de Johnson va colocando en alto sucesivamente los bits hasta completar los cuatro bits, como se observa en la tabla de verdad. En el diagrama electrnico construido con flip flops tipo D la salida del cuarto dispositivo alimenta la entrada D del primero.

109

Proyectos en WINCUPL

110

Proyectos en WINCUPL

Anillo
CLK Q0 1 0 0 0 1 0 0 0 Q1 0 1 0 0 0 1 0 0 Q2 0 0 1 0 0 0 1 0 Q3 0 0 0 1 0 0 0 1 Q0 1 1 1 1 1 1 1 1

Johnson
Q1 0 1 1 1 0 1 1 1 Q2 0 0 1 1 0 0 1 1 Q3 0 0 0 1 0 0 0 1

Los contadores de anillo y Johnson se consideran como registros simples de corrimiento (shift register).

El diagrama electrnico mostrado arriba representa un circuito SIPO serial-in parallel-out, Su funcionamiento es el siguiente, entra un dato de forma serial que se va recorriendo de Q1 hacia Q4 con la llegada de cada pulso de la seal de reloj. Este circuito es un ejemplo de la importancia de los registros de corrimiento en los sistemas digitales, ya que permiten manejar flujos de datos entre formatos serie y paralelo.

111

Proyectos en WINCUPL

4.17. Control de motores a pasos


Cdigo
Name Partno Date Revision Designer Company Assembly Location Device /** Stepper; 01; 14/04/11; 01; ELECTRONICA 2; ITS ZAPOPAN; None; None; g16v8a; **/ = clk; = motor; = dir; = !oe;*/ **/ /* Stepper A outputs /* Stepper B outputs */ */ /* /* /* /* Step advance Select which motor to step Step direction input Register output enable */ */ */ */

Inputs

Pin 1 Pin 2 Pin 3 /* Pin 11 /** Outputs

Pin [19..16] = [A3..0]; Pin [15..12] = [B3..0];

/** Declarations and Intermediate Variable Definitions **/ field stepA = [A3..0]; field stepB = [B3..0]; $define S0 'b'0011 $define S1 'b'0010 $define S2 'b'0110 $define S3 'b'0100 $define S4 'b'1100 $define S5 'b'1000 $define S6 'b'1001 $define S7 'b'0001 $define SI 'b'1111 field upA = downA upB = downB /* declare stepper bit field */ /* define stepper excitation states */

/* the power-on state */ /* declare mode control field */

mode = [motor,dir]; mode:1; = mode:0; mode:3; = mode:2;

112

Proyectos en WINCUPL

/** Logic Equations **/ Sequenced stepA { present SI default present S0 if upA if downA default present S1 if upA if downA default present S2 if upA if downA default present S3 if upA if downA default present S4 if upA if downA default present S5 if upA if downA default present S6 if upA if downA default present S7 if upA if downA default } Sequenced stepB { present SI default present S0 if upB if downB default present S1 if upB if downB default present S2 if upB if downB default present S3 if upB if downB default present S4 if upB if downB default present S5 if upB if downB default present S6 if upB /* stepper A counter */ next S0; next S1; next S7; next S0; next S2; next S0; next S1; next S3; next S1; next S2; next S4; next S2; next S3; next S5; next S3; next S4; next S6; next S4; next S5; next S7; next S5; next S6; next S0; next S6; next S7; /* stepper B counter */ next S0; next S1; next S7; next S0; next S2; next S0; next S1; next S3; next S1; next S2; next S4; next S2; next S3; next S5; next S3; next S4; next S6; next S4; next S5; next S7;

113

Proyectos en WINCUPL if downB default if upB if downB default next S5; next S6; next S0; next S6; next S7;

present S7 }

El circuito controla de manera alternada dos motores a pasos identificados en el cdigo dentro de las secuencias como A y B. El pin 2 permite seleccionar cual de los dos motores estar activado, es importante recalcar que el cdigo no permite que los dos motores trabajen de forma simultanea. El pin 3 selecciona el sentido de giro del motor invirtiendo la transicin de estados segn el valor almacenado en las variables up y down.
field upA = downA upB = downB mode = [motor,dir]; mode:1; = mode:0; mode:3; = mode:2; /* declare mode control field */

El segmento de cdigo reproducido arriba es una parte importante de la estructura del cdigo, su anlisis es el siguiente: Las variables motor y dir configuradas a travs de los pines 2 y 3 del circuito integrado se almacenan en un campo de dos variables. El campo mode determina las cuatro posibles opciones de operacin del circuito descritas en la siguiente tabla.

mode
mode:0 mode:1 mode:2 mode:3

motor
0 0 1 1

dir
0 1 0 1 downA upA downB upB

Descripcin
Motor A activado con giro reverso Motor A activado con giro directo Motor B activado con giro reverso Motor B activado con giro directo

Segn el valor del campo mode se carga en alto el valor de una de las variables upA, upB, downA y downB, que posteriormente son evaluadas en las sentencias if que configuran la transiciones de estados dentro de las dos instrucciones sequenced asignada cada una para el control de un motor distinto.

114

Proyectos en WINCUPL

115

Proyectos en WINCUPL

En el proyecto se propone el control de un motor a pasos unipolar con secuencia de medio paso, sin embargo existen otras dos formas de secuencia. A continuacin se describen sus caractersticas principales. Secuencia de medio paso. Se obtiene un paso ms corto activando dos bobinas y luego slo una y as sucesivamente.

Paso 1 2 3 4 5 6 7 8

Bobina
A B C D

1 1 0 0 0 0 0 1

0 1 1 1 0 0 0 0

0 0 0 1 1 1 0 0

0 0 0 0 0 1 1 1

116

Proyectos en WINCUPL

Secuencia de paso completo. Consiste en activar cada una de las bobinas de forma independiente, lo que provoca que el eje del motor se oriente hacia la bobina activada. En algunos motores esto brinda un funcionamiento ms suave. Su desventaja es que al estar solo una bobina activada el par de paso y de retencin es menor.

Paso 1 2 3 4

Bobina
A B C D

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

Impulsor (motor) unipolar Unipolar significa que cada extremo de bobina tiene solamente una polaridad. Una bobina unipolar cuenta con dos bobinas. De forma alternativa, la corriente circula a travs de una de estas bobinas y en una direccin. Comparado con un motor bipolar, slo se utiliza la mitad de cobre. El devanado en fase del motor debe tener una derivacin central. Con frecuencia se utiliza un diodo Zener adicional para asegurar un rpido decaimiento de corriente en la bobina apagada. Esto proporcionar un par motor mayor, especialmente en frecuencias ms altas.

117

Proyectos en WINCUPL

Secuencia de paso completo doble. Consiste en tener activadas dos bobinas al mismo tiempo, ambas consecutivas, de modo que el eje del motor se oriente hacia el punto medio de ambas bobinas. Esta es la secuencia ms usada y la que generalmente recomienda el fabricante. Con esta secuencia se obtiene un alto par de paso y de retencin.

Paso 1 2 3 4

Bobina
A B C D

1 0 0 1

1 1 0 0

0 1 1 0

0 0 1 1

Velocidad de rotacin Revoluciones del motor por minuto se calculan mediante , donde f = frecuencia de pasos, = ngulo de paso. Paso Movimiento rotativo del rotor a travs de un ngulo de paso. ngulo de paso ngulo rotativo a travs del cual el eje del motor gira por un pulso controlado. Frecuencia de pasos Nmero de pasos del motor (paso a paso) en un segundo.

118

Proyectos en WINCUPL

4.18. Control de un torniquete de paso


Cdigo
Name PartNo Date Revision Designer Company Assembly Location Device /** PIN PIN PIN turnstile1 ; 02 ; 29/06/2012 ; 01 ; Engineer ; ITS ZAPOPAN ; None ; Zapopan ; g16v8 ;

INPUT PINS **/ 1 = clock; 2 = Walk_Thru; 3 = coin;

/** OUTPUT PINS **/ PIN 14 = CNT_PULSE; PIN 15 = LOCK; $define LOCKED 'b'0 $define OPEN 'b'1 /** State Machine **/ Sequenced LOCK { Present LOCKED if coin next OPEN; if !coin next LOCKED; Present OPEN if Walk_Thru next LOCKED; Default next OPEN; Out CNT_PULSE; }

El cdigo es la implementacin de una maquina de estados para el control de un torniquete de paso para el acceso de personas. Su funcionamiento es muy simple, si el usuario deposita una moneda, el torniquete se desbloquea y permite el paso, despus se vuelve a bloquear y enva un pulso en alto para realizar una cuenta del transito de las personas.

119

Proyectos en WINCUPL

Diagrama de estados

!coin

LOCKED 0 walk_thru

coin OPEN 1

!walk_thru CNT_PULSE
En el estado LOCKED pueden ocurrir dos situaciones, mientras no se detecte una moneda (coin) el sistema se mantiene en el mismo estado, cuando se detecta una moneda existe una transicin del estado LOCKED hacia OPEN, el torniquete esta desbloqueado esperando que una persona pase a travs de l. Mientras no se detecte el transito de una persona por un giro del torniquete el sistema permanece en OPEN. La variable CNT_PULSE (contador de pulsos) se coloca en alto para enviar la seal a otro circuito externo para que realice la cuenta del nmero de veces que el sistema estuvo en OPEN como la interpretacin del nmero de personas que pasaron por el torniquete. Si la variable walk_thru se coloca en alto, est es la seal del transito de una persona por el giro del torniquete, en consecuencia el siguiente estado es LOCKED y el sistema bloquea el torniquete hasta que no se vuelva a recibir una moneda.

120

Proyectos en WINCUPL

Simulacin

Del anlisis del cdigo de control de un torniquete de paso se deduce lo siguiente: En el vector 1 se recibe en alto las seal coin y la seal de salida LOCK est en alto desbloqueando el pasador magntico del torniquete y este queda libre para girar. En el vector 2 se mantiene el estado OPEN. En el vector 3 se activa en alto la seal Walk_Thru est puede ser generada por un interruptor electromecnico o un sensor de presencia que detecte el giro del torniquete ciertos grados, inmediatamente ocurre una transicin de estados hacia LOCKED bloqueando el pasador, quedando el sistema en espera de una nueva seal de coin. El proceso se vuelve a replicar a partir del vector 6. Cabe sealar que la seal CNT_PULSE va reproduciendo los valores de LOCK sin embargo sus aplicaciones son diferentes. La seal LOCK se utiliza para controlar el pasador magntico que bloquea el giro del torniquete, por otro lado CNT_PULSE produce una seal de pulsos hacia un circuito contador externo, con las conexiones correctas es posible visualizar en un display el nmero de personas que han transitado a travs del torniquete.

121

Proyectos en WINCUPL

122

Você também pode gostar