Está en la página 1de 42

Son las instrucciones que se utilizan para definir y asignar terminales a variables,

o asignar a variables operaciones con variables o constantes.


Ejemplos de asignaciones de terminales:
PIN 2 = a; /*asigna al terminal 2 la variable a*/
PIN 2 = !a; /*asigna al terminal 2 la variable a negada*/
PIN [2,3,4,5,6,7,8,9]= [A0,A1,A2,A3,A4,A5,A6,A7];
PIN [2..9] = [A0,A1,A2,A3,A4,A5,A6,A7];
PIN [2..9] = [A0..A7];
Ejemplos de asignaciones con variables intermedias: Las variables
intermedias no tiene terminales asignados y son útiles para simplificar las
ecuaciones que generan las salidas.
X0 = A0&A1 # A1&A2;
FIELD entradas = [D,C,B,A];
Ejemplos de ecuaciones booleanas de salida: Son las ecuaciones asociadas a
las varibles declaradas para los terminales de salida.
El simbolo => utilizado en las tablas significa asignación de un ecuación booleana.
S = X0#Y0;
Table input=>output {
‘d’00 => ‘d’000;
‘d’01 => ‘d’001;
‘d’02 => ‘d’004;
}
Operadores Lógicos

La jerarquía hacer referencia a que operador se tendrá en cuenta primero al hacer


una operación, por ejemplo si tenemos S=!A&B, se tendrá en cuenta primero
la operación de negar A y luego se hará la operación AND.

Operadores Aritméticos

Los operadores aritméticos se utilizan para realizar operaciones entre valores que
sean de tipo numérico y no con variables de tipo booleano como las asignadas a
lo terminales por medio de la instrucción PIN. Normalmente lo que se hace es que
el resultado de una operación aritmética se asigna a una variable o registro.

Instrucciones Adicionales
Instrucción De Repetición REPEAT: Esta instuccion no es formalmente igual a
la que se utiliza en otros lenguajes de programacion como BASIC por ejemplo.
Esta instrucción se utiliza en WinCupl para ahorrar escritura de lineas de código y
no para implimentar una estructura ciclica en el dispositvo GAL.
Ejemplo:
$repeat i = [0..3]

$define D(i) 'b'(i)

$repend
esto equivale a escribir el siguiente código:

$define D0 'b'000

$define D1 'b'001

$define D2 'b'010

$define D3 'b'011

EJEMPLOS
Ejemplo 1

Implementar una compuerta AND de dos entradas en una GAL22V10.


Name Ejem01 ;
PartNo 00 ;
Date 17/05/2013 ;
Revision 01 ;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;
/*Terminales de entrada de la compuerta AND*/
PIN 3 = a ;
PIN 4 = b;
/*Terminales de salida para las compuertas*/
PIN 17 = s;
s = a&b; /*Compuerta AND*/

Ejemplo 2

Implementar una compuerta OR y una compuerta AND de dos entradas en una


GAL22V10.
Name Ejem02 ;
PartNo 00 ;
Date 17/05/2013 ;
Revision 01 ;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;
/*Terminales de entrada de la compuerta AND*/
PIN 2 = A0 ;
PIN 3 = A1;
/*Terminales de entrada de la compuerta OR*/
PIN 4 = B0;
PIN 5 = B1;
/*Terminales de salida para las compuertas*/
PIN 23 = S0; /*Salida compuerta AND*/
PIN 22 = S1 ;/*Salida compuerta OR*/
/*Operaciones Logicas*/
S0 = A1&A0; /*Compuerta AND*/
S1 = B1#B0; /*Compuerta OR*/
Ejemplo 3

Implementar un decodificador de binario a decimal con la GAL22V10

Tabla de la verdad correspondiente al decodificador, que se empleara en el programa.


En este ejemplo no se esta empleando el punto decimal dp a pesar de que esta conectado en
el esquema mostrado.

CARACTERES EN UN DISPLAY 7 SEGMENTOS


Para otras aplicaciones puede ser útil generar caracteres alfanuméricos con un display de 7
segmentos, aqui se deja una tabla con su respectivo valor decimal teniendo en cuenta que el
segmento a es el menos significativo y el segmento g el mas significativo

Mapa de caracteres
Name Ejem03 ;
PartNo 00 ;
Date 17/05/2013 ;
Revision 01 ;
Designer Julio ;
Company UNIAJC ;
Assembly None ;
Location ;
Device G22V10 ;
/*Terminales de entrada */
PIN [2..5] = A, B, C, D;
/*Terminales de salida */
PIN [13..20] = sa,sb,sc,sd,se,sf,sg,sdp;
/*Declaraciones */
FIELD entradas = [D,C,B,A];
FIELD salidas = [sdp,sg,sf,se,sd,sc,sb,sa];
/*Ecuaciones booleanas */
TABLE entradas => salidas {
'b'0000 => 'b'00111111;
'b'0001 => 'b'00000110;
'b'0010 => 'b'01011011;
'b'0011 => 'b'01001111;
'b'0100 => 'b'01100110;
'b'0101 => 'b'01101101;
'b'0110 => 'b'01111101;
'b'0111 => 'b'00000111;
'b'1000 => 'b'01111111;
'b'1001 => 'b'01100111;
'b'1010 => 'b'00000000;
'b'1011 => 'b'00000000;
'b'1100 => 'b'00000000;
'b'1101 => 'b'00000000;
'b'1110 => 'b'00000000;
'b'1111 => 'b'00000000;
}

También podría gustarte