ejemplos wincupl

20
ELECTRONICA DIGITAL AVANZADA Dr. José De Jesús Moreno Vázquez LENGUAJE DE PROGRAMACION CUPL

description

Ejemplos básicos de programación cupl

Transcript of ejemplos wincupl

ELECTRONICA DIGITAL AVANZADA

Dr. José De Jesús Moreno Vázquez

LENGUAJE DE PROGRAMACIONCUPL

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

Usando WinCUPL

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;

}

Dr. José De Jesús Moreno Vázquez

ELECTRONICA DIGITAL AVANZADA

Uso del PLD Con un ADC