ejemplos wincupl
description
Transcript of ejemplos wincupl
ELECTRONICA DIGITAL AVANZADA
Dr. José De Jesús Moreno Vázquez
! INVERSORA& AND# OR$ XOR
COMBINACIONAL
‐Uso de ecuaciones o tabla de verdad
SECUENCIAL
‐Uso de ecuaciones o máquina de estado
ELECTRONICA DIGITAL AVANZADA
Dr. José De Jesús Moreno Vázquez
Implementación de lógica combinacionalProblema: Las expresiones CUPL deben escribirse para la función.
La suma de productos es la forma que usa CUPL.Existe un limite de 7 términos productos.
Dada: Una suma de ecuaciones de productosEncontrar: Una forma complemento de la ecuación también en suma de productos
Ejemplo: A = x'y + xy'z
En CUPL esto sería: A = !x&y # x&!y&z;
Ejemplo: B = x'y'z' + xy' + yz
En CUPL esto sería : B = !x&!y&!z # x&!y # y&z;
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
/*********************************************************//* Ejemplo de programa que implementa las siguientes ecuaciones *//* en lenguaje de programación CUPL *//* *//* A = x'y +xy'z *//* B = x'y'z' + xy' +yz *//* *//******************************************************//** Entradas **/Pin 2 = x;Pin 3 = y;Pin 4 = z;/** Salidas **/Pin 19 = A;Pin 18 = B;/** Declaración y definición de variables intermedias **//** Ecuaciones lógicas**/A = !x&y # x&!y&z;B = !x&!y&!z # x&!y # y&z;
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
/********************************************************//* Programa que implementa las siguientes ecuaciones*//* en lenguaje de programación CUPL usando tabla de verdad *//* *//* A = x'y +xy'z *//* B = x'y'z' + xy' +yz *//* *//********************************************************// ** Entradas **/Pin 2 = x;Pin 3 = y;Pin 4 = z;/ ** Salidas **/Pin 19 = A;Pin 18 = B;/** Declaración y definición de variables intermedias **/FIELD INPUT = [x,y,z];FIELD OUTPUT = [A,B];/** Tabla de verdad**/TABLE INPUT => OUTPUT {
0=>'b'01;1=>'b'00;2=>'b'10;3=>'b'11;4=>'b'01;5=>'b'11;6=>'b'00;7=>'b'01;
}
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
00 01
1011
Q Q+ENT SAL
Dado: Diagrama de estado para un reconocedor desecuencia (0110)
Implementación de circuito secuencial
DB = s(B'A) + s(BA')
DA = s'B' + BA'
Usando mapas K, de acuerdo a la tabla y usando flip‐flopTipo D:
Dejando: pin 1 = clock, pin 2 = s, pin 19 = f, pin 17 = B, pin 16 =A, pin 11 = /habilitaciónEcuaciones escritas de la forma Culp:
f
B.d = s&!B&A # s&B&!A;A.d = !s&!B # B&!A;f = !s&B&A;
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
/********************************************************//* Programa que implementa las siguientes ecuaciones*//* en lenguaje de programación CUPL usando ecuaciones *//* *//* DA = s’B’ + BA’ *//* DB = sB’A + sBA’ *//* f =s’BA/** Entradas **/Pin 1 = clock;Pin 2 = s; /* entrada de dato combinacional */Pin 11 = !habilitación;/** Salidas **/Pin 19 = f;Pin 17 = B;Pin 16 = A;/** Declaración y definición de variables intermedias **//** Ecuaciones **/B.d = s&!B&A # s&B&!A;A.d = !s&!B # B&!A;f = !s&B&A;
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA/*******************************************************//* Programa que implementa las siguientes ecuaciones*//* en lenguaje de programación CUPL usando Máquinas de Estado*//* *//** Entradas **/Pin 1 = clock;Pin 2 = s; /* combinacional data input */Pin 11 = !habilitación;/** Salidas **/Pin [14..15] =[Q1..0];Pin 19 = f; /* salida combinacional */
/** Declaración y definición de variables intermedias **/field state = [Q1..0];$define S0 'b'00$define S1 'b'01$define S2 'b'10$define S3 'b'11
/** Maquina de estado **/SEQUENCE state {present S0
if s next S0;default next S1;
present S1 if s next S2;default next S1;
present S2 if s next S3;
default next S1;present S3
if s next S0 out f;default next S0;}
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADAName FSM ;PartNo 00 ;Date 28/09/2010 ;Revision 01 ;Designer Engineer ;Company ITM ;Assembly None ;Location ;Device g16v8 ;
/* *************** INPUT PINS *********************/PIN 1 = clk ; /* reloj */ PIN 2 = x ; /* entrada */
/* *************** OUTPUT PINS *******************/PIN 16 = xs ; /* auxiliar */ PIN 17 = z ; /* salida */ /************** VARIABLES DE ESTADO***************/PIN 18 = a;PIN 19 = b;
$DEFINE q0 'b'00$DEFINE q1 'b'01$DEFINE q2 'b'11 $DEFINE q3 'b'10
xs.d = x;sequence a,b {
present q0if xs next q1;default next q0;
present q1if xs next q2;if !xs next q0;
present q2if xs next q3;out z;default next q0;
present q3if !xs next q0;default next q3;out z;
}
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADAName ventilador;PartNo 00 ;Date 27/09/2010 ;Revision 01 ;Designer Engineer ;Company itm ;Assembly None ;Location ;Device g16V8 ;
/* *************** INPUT PINS *********************/PIN 1 = CLK ; /* */ PIN 2 = x;/* *************** OUTPUT PINS *********************/PIN 12 = v1 ; /* VEL1 */ PIN 13 = v2 ; /* VEL2 */ PIN 14 = v3 ; /* VEL3 */
/* *************** OUTPUT PINS *********************/PIN 15 = xs ;
/* *************** OUTPUT PINS *********************/PIN 18 = a ; /* variable de ESTAD0 */ PIN 19 = b ; /* variable de ESTADO */
$DEFINE s0 'b'00$DEFINE s1 'b'01$DEFINE s2 'b'11 $DEFINE s3 'b'10
xs.d = x;sequence a,b {
present s0if xs next s1;default next s0;
present s1if xs next s2;default next s1;out v1;
present s2if xs next s3;default next s2;out v2;
present s3if xs next s0;default next s3;out v3;
}
Maquina de estado
00 01 11 10
0/0 0/0 0/0 0/0
0/0
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADAName ejemplo_fsm;PartNo 00 ;Date 27/09/2010 ;Revision 01 ;Designer Engineer ;Company itm ;Assembly None ;Location ;Device g16V8 ;/* *************** INPUT PINS *********************/PIN 1 = CLK ; /* */ PIN 2 = x; /* sensor 1 */ PIN 3 = y; /* sensor 2 */ /* *************** OUTPUT PINS *********************/PIN 12 = md ; /* motor 1 */ PIN 13 = mi ; /* motor 2 */ /* *************** auxiliares *********************/PIN 15 = sd ;PIN 16 = si ;/* *************** ESTADOS *********************/PIN 18 = a ; /* */ PIN 19 = b ; /* */
$DEFINE q0 'b'00$DEFINE q1 'b'01$DEFINE q2 'b'11
sd.d = x;si.d = y;sequence a,b {present q0if (sd & !si) next q1;if (sd & !si) out mi,md;if (!sd & si) next q2;default next q0;if !sd&!si out mi;if sd&si out md;
present q1if (!sd & si) next q2;if sd&!si next q0;if sd&!si out mi,md; default next q1;if !sd&!si out mi;if sd&si out md;
present q2if (!sd & si) next q0;if (sd & !si) next q1;if (sd & !si) out md,mi;default next q2;if !sd&!si out mi;if sd&si out md;
}
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
Name ejemplo_fsm_tabla;PartNo 00 ;Date 27/09/2010 ;Revision 01 ;Designer Engineer ;Company itm ;Assembly None ;Location ;Device g16V8 ;
/* *************** ENTRADAS*********************/
PIN 1 = x; /* sensor 1 */ PIN 2 = y; /* sensor 2 */
/* *************** SALIDAS*********************/PIN 18 = md ; /* MOTOR1 */ PIN 19 = mi ; /* MOTOR2 */
table x,y => md, mi {
'b'00 => 'b'11;'b'01 => 'b'10;'b'10 => 'b'01;'b'11 => 'b'00;
}
USANDO TABLA
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
COMPILANDO EL ARCHIVO PLD
Use el WinCUPL o algún otro texto editor para crear el archivo
Guarde el archivo con la extensión .PLD
Compile usando WinCUPL, asegúrese de no tener errores
Guarde el archivo . JED
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
Entrar con : options/compiler ( se abre la ventana mostrada)Usando WinCUPL
Pestaña “General”: seleccionar opción JEDECPestaña “Output Files”: seleccionar PLA
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
Usando WinCUPL
Compilar archivo para generar la extensión jed.(necesario para programar el PLD)
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
Usando WinCUPL
Una vez compilado no debe haber errores
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADA
Resultado del archivo compilado
Usando WinCUPL
Dr. José De Jesús Moreno Vázquez
ELECTRONICA DIGITAL AVANZADAName ejemplo_fsm_tabla;PartNo 00 ;Date 27/09/2010 ;Revision 01 ;Designer Engineer ;Company itm ;Assembly None ;Location ;Device g16V8 ;/* *************** INPUT PINS ******/IN 1 = a; /* lsb */ PIN 2 = b; /* */ PIN 3 = c; /* */ PIN 4 = d; /* */ PIN 5 = e; /* */ PIN 6 = f; /* */ PIN 7 = g; /* */ PIN 8 = h; /* msb */ /* *************** ESTADOS *********/PIN 15 = vb ; /* */ PIN 16 = vm ; /* */ PIN 17 = va ; /* */table h,g,f,e,d,c,b,a => vb, vm, va {
'b'00000000 => 'b'000;'b'01001101 => 'b'100;'b'01111111 => 'b'010;'b'11111111 => 'b'001;
}
Uso del PLD Con un ADC
Name ADC_TABLA;PartNo 00 ;Date 27/09/2010 ;Revision 01 ;Designer JJMV ;Company ITM ;Assembly None ;Location ;Device g16V8 ;
/* *************** INPUT PINS **********/PIN [1..8] = [D0..D7]; /* lsb */ /* *************** ESTADOS *************/PIN [15..17] = vb, vm, va ; /* */
field input =[D0..D7];field output =[vb,vm,va];
table input => output {
'h'00 => 'b'000; 'h'4D => 'b'100;'h'7F => 'b'010;'h'FF => 'b'001;
}