Está en la página 1de 17

Introduccin a la programacin de PLDs

Sira E. Palazuelos Cagigas Ernesto Martn Gorostiza

Departamento de Electrnica Universidad de Alcal

PALCE22V10

Introduccin a la programacin de PLDs

Proceso de diseo

Problema de Diseo

Especificacin Formal - Diag. de bloques - Tabla de Verdad - Funcionas Lgicas - Circuito

Descripcin utilizando un Lenguaje de Descripcin Hardware (CUPL) Ficheros ASCII

Simulador

Compilador

PALCE22V10

Grabador de PLDs

Fichero .JED

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Ejemplo: Multiplexor + Conversor BCD 7segmentos
Entradas Dos datos BCD de 4 bits. Seleccin. Salidas Seales de activacin del display.

Funcionamiento Visualiza dgito decimal correspondiente al dato BCD seleccionado si es vlido (si no apaga display y enciende el punto).

A3-A0 B3-B0 Seleccin

MUX S3-S0 BCD 7 Seg

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Conexin de la PAL (asignacin de pines)
A3 A2 A1 A0 B3 B2 B1 B0 Seleccin I1 (2) I2 (3) I3 (4) I4 (5) I5 (6) I6 (7) I7 (8) I8 (9) I9 (10) (15) I/O1 (16) I/O2 (17) I/O3 (18) I/O4 (19) I/O5 (20) I/O6 (21) I/O7 (14) I/O0 a b c d e f g Punto

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Programa: Cabecera
El campo de la cabecera ms importante es Device
Name Partno Revision Date Designer Company Location Assembly Device Prac3; CIR001; 01; 13/3/99; Julio Pastor; Departamento de Electronica; Universidad de Alcala de Henares; None; p22v10;

CABECERA

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

CUERPO DEL PROGRAMA

/**************************************************/ /* LABORATORIO DE ELECTRONICA DIGITAL */ /* Practica 3: Multiplexor - Decodificador BCD */ /**************************************************/

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Programa: Asignacin de pines
A3 A2 A1 A0 B3 B2 B1 B0 Seleccin I1 (2) I2 (3) I3 (4) I4 (5) I5 (6) I6 (7) I7 (8) I8 (9) I9 (10) (15) I/O1 (16) I/O2 (17) I/O3 (18) I/O4 (19) I/O5 (20) I/O6 (21) I/O7 (14) I/O0 a b c d e f g Punto

CABECERA

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

/** Definicion de los pines de entrada Pin [2..5] = [A3..0]; Pin [6..9] = [B3..0]; Pin 10 = select; /* Dato A */ /* Dato B */ /* Seleccion */

**/

CUERPO DEL PROGRAMA

/** Definicion de los pines de salida Pin [15..21] = a,b,c,d,e,f,g; Pin 14 = punto;

**/

/* A los displays*/ /* Punto decimal */

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Programa: Descripcin del multiplexor
A3-A0 B3-B0
CABECERA

MUX S3-S0

S3 = Select A3 + Select B3 S2 = Select A2 + Select B2 S1= Select A1+ Select B1 S0 = Select A0 + Select B0

Seleccin

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

/** Cuerpo del programa **/

/* Descripcion del multiplexor utilizando funciones logicas */ CUERPO DEL PROGRAMA S3 S2 S1 S0 = = = = (!select (!select (!select (!select & & & & A3) A2) A1) A0) # # # # (select (select (select (select & & & & B3); B2); B1); B0);

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Programa: Conversor BCD 7 segmentos
S3 S2 S1 S0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 a 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 b 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 c 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 d 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 e 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 f 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 g Punto 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0
9

S3-S0

BCD 7 Seg

a-f

Punto

Introduccin a la programacin de PLDs

Ejemplo de programa en CUPL


Programa: Conversor BCD 7 segmentos

CABECERA

/* Descripcion del conversor BCD - 7 segmentos utilizando una tabla de verdad */ TABLE S3,S2,S1,S0=> !a,!b,!c,!d,!e,!f,!g,!punto { 'h'0=>'b'11111100; 'h'1=>'b'01100000; 'h'2=>'b'11011010; 'h'3=>'b'11110010; 'h'4=>'b'01100110; 'h'5=>'b'10110110; 'h'6=>'b'00111110; 'h'7=>'b'11100000; 'h'8=>'b'11111110; 'h'9=>'b'11100110; 'h'A=>'b'00000001; 'h'B=>'b'00000001; 'h'C=>'b'00000001; 'h'D=>'b'00000001; 'h'E=>'b'00000001; 'h'F=>'b'00000001; }

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

CUERPO DEL PROGRAMA

Introduccin a la programacin de PLDs

10

Ejemplo de programa en CUPL


Programa: Contador (secuencial)
Parte correspondiente a definicin de campos y cdigos de estado (despus de la cabecera y la asignacin de pines)
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 */

CABECERA

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

CUERPO DEL PROGRAMA

/* /* /* /*

declare mode define count define count define count

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

Introduccin a la programacin de PLDs

11

Ejemplo de programa en CUPL


Programa: Contador (secuencial)
Parte correspondiente al autmata
Sequenced count { present S0 if if if if present S1 if if if present S2 if if if present S9 if if if if } up down clear down 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 S0; next S8; next S0; out carry;

CABECERA

ASIGNACIN DE PINES A ENTRADAS Y SALIDAS

CUERPO DEL PROGRAMA

/* carry */

Introduccin a la programacin de PLDs

12

Atmel WinCUPL
Abrir fichero .PLD

Introduccin a la programacin de PLDs

13

Atmel WinCUPL
Compilar el programa

Introduccin a la programacin de PLDs

14

Atmel WinCUPL
Compilar el programa
Si no compila el programa:
Problemas de sintaxis (repasar programa). Existen , acentos etc. (es recomendable que no aparezcan ni en los comentarios). Puede ser porque haya que reasignar los pines, si obtenemos el error Demasiados trminos producto en pin X. Ver fichero .doc
===================================================================== Symbol Table ===================================================================== Pin Variable Pterms Max Min Pol Name Ext Pin Type Used Pterms Level --- -------------------- ------ ----d 15 V 11 10 1 b 16 V 9 12 1 c 17 V 9 14 1 a 18 V 9 16 1 e 19 V 7 16 1 f 20 V 9 14 1 g 21 V 8 12 1 punto 14 V 4 8 1

Introduccin a la programacin de PLDs

15

PALCE22V10

Introduccin a la programacin de PLDs

16

Atmel WinCUPL
Compilar el programa
Solucin: verificaremos si es posible hacer una reasignacin de pines, de forma que en todas las salidas el nmero de productos necesarios sea menor al nmero de productos disponibles.
===================================================================== Symbol Table ===================================================================== Pin Variable Pol Name --- -------a b c d e f g punto Ext --Pin --15 16 17 18 19 20 21 14 Type ---V V V V V V V V Pterms Max Used Pterms ------ -----9 9 9 11 7 9 8 4 10 12 14 16 16 14 12 8 Min Level ----1 1 1 1 1 1 1 1

Introduccin a la programacin de PLDs

17

Atmel WinCUPL
Otros comentarios
Es necesario introducir una seal de reloj a los biestables de la PAL cuando funciona como elemento secuencial. Esta seal debe se introduce en el pin 1 de la PAL. La caracterstica Power Up Reset de la PAL hace que tras alimentar el sistema todos los biestables de la PAL tengan salida 0, es decir, el estado en el que la PAL comienza siempre es el 0. Esta circunstancia debe ser considerada en la programacin de la PAL: se debe incluir siempre ese estado inicial y gestionar las transiciones oportunas. El WinCUPL no admite la letra '' ni acentos, en ningn punto del programa (ni siquiera en los comentarios). El WinCUPL incluye un directorio de ejemplos (EXAMPLES) que pueden utilizarse para familiarizarse con la sintaxis.
Introduccin a la programacin de PLDs
18

Atmel WinCUPL
Simular el programa

Introduccin a la programacin de PLDs

19

Atmel WinCUPL
Simular el programa

Introduccin a la programacin de PLDs

20

10

Atmel WinCUPL
Simular el programa

Ahora definimos el nmero de unidades de tiempo durante las cuales queremos realizar la simulacin.

Introduccin a la programacin de PLDs

21

Atmel WinCUPL
Simular el programa

Haciendo click con el botn derecho se puede dar un valor a cada entrada en cada instante de tiempo o durante toda la simulacin.
Introduccin a la programacin de PLDs
22

11

Atmel WinCUPL
Simular el programa

Con este icono se realiza la simulacin y se obtienen los resultados.

Introduccin a la programacin de PLDs

23

Atmel WinCUPL
Simular el programa

Despus de la simulacin podemos observar en la pantalla resultante la evolucin de las seales de salida en el tiempo. Si los resultados no son los deseados se revisar el programa, compilar y simular de nuevo hasta que lo sean.

Introduccin a la programacin de PLDs

24

12

Atmel WinCUPL
Archivos involucrados
Fichero .PLD Ficheros ASCII Compilador Simulador Fichero .SI

Fichero Fichero .ABS .DOC Fichero .JED


Introduccin a la programacin de PLDs

Fichero Fichero .SO .WO

25

Programacin de dispositivos programables. ALL-11


ALL-11. WACCESS
Utilizaremos el programador ALL-11 junto con el programa WACCESS para volcar nuestro programa en la PAL, creando las conexiones necesarias.

El PLD se situar en el programador ajustado a la parte inferior con la muesca hacia arriba, y se bajar la palanca.
Introduccin a la programacin de PLDs
26

13

WACCESS
Una vez colocada correctamente la PAL en el programador, ejecutamos el programa:

WACCESS

Introduccin a la programacin de PLDs

27

WACCESS
A continuacin, seleccionamos el dispositivo. Primero el fabricante:

Introduccin a la programacin de PLDs

28

14

WACCESS
Posteriormente, dentro del fabricante, elegiremos el tipo de dispositivo, y el modelo exacto.

Introduccin a la programacin de PLDs

29

WACCESS
En caso de error aparecer un mensaje que puede ser:

Posibles causas de error:


La PAL est estropeada. PAL mal colocada (al revs, o no ajustada a la parte inferior). El fabricante o el modelo seleccionados no se corresponden con la PAL. El programador no est encendido (botn de la parte posterior).

Introduccin a la programacin de PLDs

30

15

WACCESS
Si todo va bien, seguiremos con el proceso de grabacin:
Cargamos el fichero .jed que deseamos grabar en la PAL:

Introduccin a la programacin de PLDs

31

WACCESS
Una vez cargado el .jed, programamos la PAL:

Introduccin a la programacin de PLDs

32

16

WACCESS
En caso de error aparecer un mensaje que puede ser:

Posibles causas de error:


La PAL est estropeada. PAL mal colocada (al revs, o no ajustada a la parte inferior). El fabricante o el modelo seleccionados no se corresponden con la PAL. El programador no est encendido (botn de la parte posterior).

Introduccin a la programacin de PLDs

33

WACCESS
Si todo va bien, debera aparecer la siguiente pantalla:

En ese caso, la PAL estar correctamente grabada, levantaremos la palanca del programador y retiraremos el dispositivo.

Introduccin a la programacin de PLDs

34

17

También podría gustarte