Professional Documents
Culture Documents
CUPL Introduccin
Objetivo: Lenguaje CUPL Asignaturas: Dispositivos Lgicos Programables (5 de Ing. Telecomunicacin) Autor: Juan Carlos Campo
Bibliografa: Manual Protel99. Altium
Cabecera
NAME CLASE1; DATE 20/10/2004; PARTNO ; REVISION ; DESIGNER ; COMPANY ; ASSEMBLY ; LOCATION ; DEVICE p16l8;
Comentarios
/* esto es un comentario */
Ingenieros de Telecomunicacin. Dispositivos Lgicos Programables. Universidad de Oviedo
Definicin de pines
/*ENTRADAS*/ PIN 1= A0; PIN 2= A1; PIN 3= A2; PIN 4= A3; /*SALIDAS*/ PIN 19= G; PIN 18= F;
Para dispositivos virtuales no se indica el nmero Las variables no pueden tener espacios y distingue maysculas de minsculas
Definicin de campos
FIELD ENT=[A3..0];
Ingenieros de Telecomunicacin. Dispositivos Lgicos Programables. Universidad de Oviedo
Operadores lgicos
OPERADOR ! & # $
PRECEDENCIA 1 2 3 4
Operadores aritmticos
Operador ** * / % + Descripcin Potencia Multiplicacin Divisin Mdulo Suma Resta Ejemplo 2**3 435 4/2 9%8 2+4 4-1
Ejemplo
Realizar un programa en CUPL para la PAL16L8 que haga las funciones de decodificador BCD a 7 segmentos
Simulacin
Fichero .si Cabecera: idntica a CUPL Comentarios: igual que en CUPL
Simulacin: ORDER
ORDER: A0, A1, A2;
Simulacin: VECTORS
ORDER: A0, A1, A2; /*A0 Y A1 entradas A2 salida*/ VECTORS: 00* 01* Valor Descripcin
0 1 C K L H Z N P R * Entrada a 0 Entrada a 1 Entrada reloj, 0, 1, 0 Entrada reloj, 1, 0, 1 Testea salida a 0 Testea salida a 1 Testea salida a alta impedancia No testeada Precarga registros internos Generacin aleatoria Salida a determinar
Ejemplo
Aadir el fichero de simulacin para el decodificador Realizar un programa que calcule el cuadrado de un nmero de entrada de tres bits
Extensin .OE
/* PIN DE SALIDA */ /* LO CONFIGURA COMO SALIDA */ /* El compilador lo hace automticamente viendo el uso que se hace del pin */
Extensin .D
Extensin .D
.AP .AR
.CE
.CK
.DFB
.J .K
Ejemplo
$INCLUDE fichero.pld
$MACRO name argument1 argument2...argumentn; macro function body $MEND $MACRO mifun ent1 ent2 sal; sal=ent1#ent2; $MEND mifun(in1, in2, out); /* llamada a macro */ $REPEAT index=[number1,number2,_numbern] repeat body $REPEND $REPEAT i = [0..7] !out{i} ='h'{i} & enable; $REPEND