125
UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA División Ciencias Básicas e Ingeniería Proyecto de Ingeniería Electrónica PROGRAMADOR DE PALS Asesor: ING. GONZALO DUCHEN S. Alumno: NAÑEZ MARTINEZ ARMANDO Matrícula: 84225276 Agosto de 1990

UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

  • Upload
    vobao

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA División Ciencias Básicas e Ingeniería

Proyecto de Ingeniería Electrónica

PROGRAMADOR DE PALS

Asesor: ING. GONZALO DUCHEN S.

Alumno: NAÑEZ MARTINEZ ARMANDO Matrícula: 84225276

Agosto de 1990

Page 2: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

INDICE

Page 3: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador
Page 4: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

INTRODUCCION

El uso de arreglos lógicos programables (PALs) para la

elaboración de circutos combinacionales o secuenciales no es

demasiado complicado. El método de diseño es el mismo que

hemos aprendido durante nuestros cursos de circuitos lógicos,

salvo que en vez de usar compuertas y flip-flops, escogemos el

PAL adecuado para implantarle las funciones Booleanas

obtenidas durante el proceso de diseño.

Este reporte pretende proporcionar al lector la información

básica necesaria para crear sus propias aplicaciones; pero es

indispensable que adquiera un manual editado por el fabricante

del PAL como un complemento a la información que aquí se

presenta.

Este documento consta de cinco capítulos cuyo contenido es el

siguiente:

El capítulo 1 detalla algunas características de los PALs

que no están especificadas claramente en los manuales de los

fabricantes, la discusión está enfocada a los PALs 16L8 y 16R8

por ser los más representativos de esta familia de circuitos

integrados.

En el capítulo 2 se muestra un ejemplo completo del diseño

de un circuito secuencial. Trabajando pacientemente con 91, se

obtendrán provechosas experiencias para que el lector pueda

realizar sus propios diseños.

El capítulo 3 trata del programa PALASM, creado para

determinar automáticamente cuales fusibles habrán de ser

Page 5: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

quemados durante la implantación de funciones Booleanas en un

PAL. Se describen ampliamente las características del archivo

de entrada del programa y al final del capítulo se muestra el

listado del código fuente escrito en lenguaje FORTRAN 77.

En el capítulo 4 se explica la manera de usar el circuito

Programador de Pals y se declaran las precauciones que hay que

tomar para no causarle daños al dispositivo a programar.

En el capítulo 5 se expone un resumen de la información

utilizada para el diseño y construcción del circuito

Programador de Pals. El capítulo comienza con la definición

del problema, continúa con los requerimientos para la

programación del dispositivo, explica el funcionamiento del

diseño propuesto y al final se muestran los diagramas del

circuito, el diagrama de colocación de componentes, así como

el listado del programa PR0GPAL.C escrito en lenguaje TURBO C.

Page 6: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

OBJETIVOS

El objetivo de este proyecto es el diseño y la construcción

de un circuito programador de PALs controlado por una

computadora de tipo PC compatible (Printaform o Digitel). El

circuito será capaz de programar y copiar los PALs fabricados

por National Semiconductor y Texas Instruments. Se conectará a

la computadora a través del puerto paralelo para la impresora

(LPT1) . Los tipos de PALs que se podrán programar son:

PALs de 2 0 patas 10L8 10H8 12L6 12H6

16L2 16H2 16C1 16A4

16R4 16R6 16R8 16L8

16R4BP 16R6BP 16R8BP 16L8BP

16x4 14L4 14H4

Para la programación del dispositivo, la computadora leerá

un archivo, en formato BHLF, generado por el programa PALASM.

El contenido de ese archivo será una lista de los fusibles que

deberán quemarse durante la programación del PAL. La copia de

la configuración de un PAL será posible solamente cuando el

dispositivo no tenga quemado el fusible de seguridad, y la

información obtenida será almacenada en un archivo en formato

BHLF. Una de las restricciones del circuito es que no

programará el fusible de seguridad del PAL.

Page 7: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1.- INTRODUCCION A LOS PALS

La estructura de un PAL consiste de un arreglo AND

programable y un arreglo OR fijo. L o s dispositivos PAL con

registros en las salidas son muy útiles para la construcción

de circuitos secuenciales, ya que pueden proporcionar una

señal de retroalimentación que altere la función de un estado

determinado basándose en la condición del estado inmediato

anterior.

El tamaño del PAL se especifica por el número de entradas,

el número de términos producto y el número de salidas,

nosotros nos concentraremos en los tipos 16L8 y 16R8

producidos por National semiconductor y Texas Instruments por

ser los que más fácilmente podemos conseguir y que son

frecuentemente utilizados para la elaboración de circuitos

lógicos secuenciales o combinacionales.

1.1.- E l PAL16L8

El PALl6L8 es un PAL combinacional muy popular, en la

figura 1.1 se puede ver como las patas 1 a 9 y la pata 11 se

usan como entradas y las patas de la derecha (patas 12 a 19)

están disponibles como salidas. L a s patas 12 y 19 solamente

pueden utilizarse como salidas, pero 6 de las salidas (patas

- 1 -

Page 8: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

O

I / O

I10

110

I /O

110

I 1 0

O

I

Page 9: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

13 a 18) están también disponibles como entradas vía la línea

de conexión de retroalimentación después del inversor de

salida. Esta característica, llamada entrada/salida

programable, permite al usuario programar cada una de estas

seis patas para ser ya sea una entrada o salida. El

significado del número de parte PALl6L8 será ahora un poco más

obvio; 16 significa el máximo número de entradas potenciales

(10 entradas dedicadas y 6 entradas/salidas programables) , mientras que 8 significa el número de salidas y L significa el

tipo de salida, el cual es activo bajo para este número de

parte de PAL.

En el diagrama de la figura 1.1 podemos observar que las

líneas verticales que corren a través del arreglo, numerados O

a 31, son las líneas de entrada. Note que cada pata de

entrada/salida está asociada con dos líneas de entrada; una

línea está conectada a la salida no inversora del buffer de

entrada, mientras que la otra está conectada a la salida

complementada (o invertida). Esto permite la disponibilidad de

ambas polaridades de señales de entrada al arreglo.

Las líneas horizontales que corren a través del arreglo,

numeradas O a 63, son las líneas producto. Se puede pensar de

cada una de estas líneas producto como una compuerta AND con

32 entradas, las cuales corresponden al número total de líneas

de entrada. Ambas señales, la invertida y la no invertida, de

cada pata de entrada están conectadas vía fusibles de titanio

- 3 -

Page 10: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

tungsteno a cada línea producto antes de que el dispositivo

esté programado. Este es el arreglo AND programable en la

estructura PAL. Para programar al arreglo, el usuario

selecciona diferentes combinaciones de señales de entrada

abriendo los fusibles que conectan a las señales de entrada no

deseadas en una línea producto. En total, hay 2048 fusibles

disponibles en este dispositivo PAL ( 6 4 líneas producto por 32

líneas de entrada).

Note que cada pata de salida tiene 8 líneas producto

asociadas con ella. Las siete líneas producto inferiores de

cada grupo se suman en la compuerta OR, mientras que la línea

producto superior está conectada al buffer inversor de salida.

Las siete líneas producto inferiores y la compuerta OR

proporcionan la suma de productos a el PAL. La compuerta OR

determina si alguna de las líneas producto está activa, o es

verdadera, y luego el buffer de salida invierte la señal que

viene de la compuerta OR y la presenta en la salida. Note que

una línea producto con todos los fusibles dejados intactos no

afectará la suma en la compuerta OR, dado que el resultado

lógico de la operación: (entrada AND entrada') es falso.

1.2- ENTRADA/SALIDA PROGRAMABLE

Esta línea producto superior asociada con cada salida

controla los tres estados lógicos en el buffer de salida.

- 4 -

Page 11: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Cuando esta línea producto está activa, o es verdadera, la

salida es habilitada y la suma de productos determina el

estado de la salida. Sin embargo, cuando esta línea producto

está inactiva, o es falsa, la salida es deshabilitada con el

buffer de tres estados en el estado de alta impedancia.

Además, dado que la mayoría de los dispositivos PAL tienen la

característica de manejar una salida de 24 miliamperes, son

bastante apropiados como interfaces de bus. La línea producto

que controla los tres estados, junto con la trayectoria de

retroalimentación en seis de las salidas, permiten el

funcionamiento de la característica Entrada/salida. La pata es

una entrada al arreglo AND cuando todos los fusibles en la

línea producto que controla los tres estados son dejados

intactos, mientras que la pata es una salida cuando todos los

fusibles están abiertos. Note que una línea será siempre

verdadera, sin importar las combinaciones en la entrada,

cuando todos los fusibles están abiertos. La característica de

Entrada/Salida programable permite al usuario definir a las

patas como entradas o salidas según sea requerido por la

aplicación.

Es posible obtener una mayor flexibilidad, si se permite

que la lógica en la línea de productos superior determine la

dirección de la pata. Esto se hace programando una condición

en la línea de productos para la cual la pata sea una salida.

Se puede usar esta característica para asignar a las patas

disponibles funciones de Entrada/Salida o para poder realizar

- 5 -

Page 12: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

transferencias bidireccionales en operaciones tales como

desplazamiento y rotación de datos.

El PALl6L8 se utiliza en aplicaciones tales como

decodificadores, codificadores, multiplexores, comparadores,

etc. Otra manera de ver esto es que el arreglo AND programable

PAL16L8 contiene 2048 fusibles. Se puede programar estos

fusibles para crear casi cualquier configuración de hasta 250

AND, OR, y compuertas inversoras, lo cual equivale a 250

compuertas aproximadamente.

1.3.- PALS CON REGISTROS Y RETROALIMENTACION EN SUS SALIDAS

La estructura de un PAL con registros en las salidas es

similar a la de el PAL16L8 excepto por la adición de salidas

con registro. En el PAL16R8, cada uno de los ocho registros es

un flip-flop D que funciona con la subida del reloj (ver

figura 1.2). La señal de reloj (pata 1) es compartida por los

ocho flip-flops. Cada compuerta OR suma ocho líneas producto y

es la entrada D al flip-flop. La salida Q del flip flop está

disponible para retroalimentación dentro del arreglo PAL y

para salida del dispositivo. Ambas polaridades de la señal de

retroalimentación están disponibles. Esta retroalimentación

permite al PAL recordar el estado anterior, y puede alterar su

función basado en ese estado. Así que, los dispositivos PAL

con registros en sus salidas son ideales para construir

máquinas de estado con un solo circuito integrado.

- 6 -

Page 13: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

. 3!

- 7 -

Page 14: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Constants LOW (L) NEGATIVE (N) ZERO (O) GND FALSE x + FUSE NOT BLOWN HIGH (H) POSITIVE (P) ONE (1) Vcc TRUE - I FUSE B L O W

Operators = EQUAL : = REPLACED BY FOLLOWING CLOCK / COMPLEMENT

+ O R , SOM AND, PRODUCT

: + 1 XOR .4: XNOR, , . ( 1 CONDITIONAL THREE S T A T E , I F STATEMENT, ARITHMETIC

Equations

Conventional Symbology

PAL Symbology

- 8 -

Page 15: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

2.- PROCEDIMIENTO DE DISEÑO UTILIZANDO PALS

El proceso de diseño consiste de los siguientes pasos

- Definir el problema - Determinar el número requerido de variables de entrada

y el número de variables de salida

- Asignar letras a las variables de entrada y salida - Dibujar un diagrama a bloques

- Seleccionar el PAL apropiado - Deducir la tabla de verdad que define las relaciones entre las entradas y las salidas

- Obtener simplificada, la función de Boole para cada salida

- Correr el programa PALASM, para determinar cuales serán los fusibles que habrán de quemarse en el PAL.

- implantar las funciones Booleanas en el PAL.

La manera más simple de explicar este proceso es a través

de un ejemplo donde el lector obtenga la información básica

para desarrollar sus propias aplicaciones

2.1.- Definir el problema

Se pretende construir un contador binario de 4 bits,

alimentado por uno de cuatro relojes. Hay dos líneas

- 9 -

Page 16: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

disponibles para seleccionar los relojes, SELl y SELO. La

tabla 2.1 muestra las entradas requeridas para la seleción de

los relojes. Además se desea que el contador binario pueda

cambiarse a contador de décadas. Esta característica se

controlará mediante una entrada llamada BD. Cuando BD esté en

1 lógico, el contador habrá de contar en binario. Cuando esté

en cero, deberá contar en décadas.

Tabla 2.1. Selección de reloj

SELl SELO 1 SALIDA O O

CLKD 1 1 CLKC 1 O CLKB O 1 CLKA

2.2.- Dibujar un diagrama a bloques

La figura 2.1 muestra el DIAGRAMA A BLOQUES de como podría

elaborarse este ejemplo utilizando circuitos TTL. Como puede

verse se requieren tres circuitos, el ‘LS162 se utiliza para

generar el contador de cuatro bits, mientras que la selección

del reloj se maneja por el ‘LS253. EL ‘LS688 es un comparador

de 8 bits que se usa para seleccionar el contador de décadas o

el contador binario. En este ejemplo únicamente se utilizan

cinco de las 8 entradas de comparación. Se usan cuatro para

comparar las salidas del contador, mientras que la otra se

utiliza para la entrada BD. El comparador está alambrado para

irse a cero si la entrada BD es cero y la salida del contador

- 10 -

Page 17: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

es I1gn. Entonces la salida (P=Q) es retroalimentada a la

entrada de borrado CLR del 'LS162. Esto pondrá al contador en

ceros siempre que ocurra esta condición.

'U253

CLK

'U162

QO Q1

CLK Q2

CLR'

BD

- 43

vcc P4 44 ~

I (p=Q) I

I P7 47 - P6 46 P5 Q5

GND GND

Figura 2.1. Elaboración del contador con circuitos TTL.

2.3.- Seleccionar el PAL apropiado

Antes de proceder con el diseño del selector del reloj, la

primera pregunta que debemos responder es cual PAL vamos a

usar. Existen varios tipos diferentes de arquitecturas de

salida, Analizando nuestro ejemplo podemos notar que se

necesitarán cuatro flip-flops con retroalimentación para el

- 11 -

Page 18: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

contador de cuatro bits (QO, Q1, Q2, Q3) , mas dos entradas,

una para el reloj (CLK) y otra para el borrado (CLR) , además, se necesitarán siete entradas (SELO, SEL1, CLKA, CLKB, CLKC,

CLKD, BD) y dos salidas simples (CLKOUT, (P=Q) ' ) una para el

selector de reloj y otra para el comparador. En total se

necesitarán nueve entradas, cuatro salidas con registros

(flip-flops) y dos salidas simples. Con esta información a la

mano, podemos ver que el PALl6R4 (figura 2.6) resulta adecuado

para nuestra aplicación, puesto que tiene ocho entradas,

cuatro entradas/salidas simples y cuatro entradas/salidas con

registros.

2.4.- Deducir la tabla de verdad que define las relaciones

entre las entradas y las salidas

El primer paso en la determinación de las funciones de

Boole para el selector del reloj, es generar una tabla de

verdad con todas las posibles combinaciones de entrada. Esto

se muestra en la tabla 2.2. A partir de esta tabla puede

construirse el mapa de Karnaugh, como se muestra en la Figura

2.2, y luego obtener la ecuación simplificada para la salida

CLKOUT . Tabla 2.2. Tabla de verdad para la salida CLKOUT

SELl SELO CLKA CLKB CLKC CLKD CLKOUT O O O O O O O O O O O O 1 O O O O O 1 O O O O O O 1 1 O O O O 1 O O O

- 12 -

Page 19: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

O O

O O

O O

O O

O

O O

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

O O O O O O O O O O O 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 O O O O O O O O O O O O O O O O 1 1 1 1 1 1 1 1 1 1 1

O O O 1 1 1 1 1 1 1 1 O O O O O O O O 1 1 1 1 1 1 1 1 O O O O O O O O 1 1 1 1 1 1 1 1 O O O O O O O O 1 1 1

1 1 1 O O O O 1 1 1 1 O O O O 1 1 1 1 O O O O 1 1 1 1 O O O O 1 1 1 1 O O O O 1 1 1 1 O O O O 1 1 1 1 O O O

O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1 1 O O 1

1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O 1 O

O 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0

- 13 -

Page 20: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1 1 O O O 1 1 O 1 1

Es importante notar que las ecuaciones derivadas del mapa

de Karnaugh están escritas en notación AND OR. EL PAL que

hemos seleccionado está construido con lógica AND NOR. Esto

significa que tendremos que aplicar el teorema de DeMorgan a

las ecuaciones, o combinar los ceros en el mapa de Karnaugh

como se muestra en la figura 2.3, para obtener el complemento

de la función. Las ecuaciones resultantes pueden configurarse

fácilmente en el PAL16R4.

Sl,C,D\SO,A,B \ O00 001 o11 010 110 111 101 100

O00

001

o11

010

110

111 1 1 1 1

101 1 1 1 1 1 1 1 1

100 1 1 1 1

111 1 1 1 1

101 1 1 1 1 1 1 1 1

100 1 1 1 1

CLKOUT = Sl‘SO‘A + Sl’SOB+ SlSO’C + SlSOD Figura 2.2. Mapa de Karnaugh para CLKOUT

- 14 -

Page 21: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Sl,C,D\SO,A,B \ O00 O01 o11 010

O00

001

o11

O10

110

100

101

O O O O 111

O O O O

110 111 101 100 -I

O

O

O

O

O O O O

O O O O

CLKOUT' = Sl'SOIA' + Sl'SOB' + SISOIC1 + SlSODI

Figura 2.3. Mapa de Karnaugh para CLKOUTI

CONTADOR BINAR10 DE 4-BITS

El mismo procedimiento básico usado en la producción de las

ecuaciones para el selector de reloj, se usa en la

determinación de las ecuaciones para el contador de cuatro

bits. La única diferencia es que ahora estamos tratando con un

estado presente y un estado siguiente. Esto significa que

necesitaremos un flip-flop D para la elaboración del circuito.

Como antes, generamos una tabla de verdad como se muestra en

la tabla 2.3. Las ecuaciones para cada salida pueden derivarse

del mapa de Karnaugh construido a partir de la tabla de

verdad. Esto se muestra en la figura 2 . 4 . Note que estamos

- 15 -

Page 22: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

combinando los ceros en los mapas de Karnaugh para que las

ecuaciones sean de la forma AND NOR. Cuando la combinación de

ceros resulta complicada efectuamos la combinación de unos,

aplicamos el teorema de DeMorgan y un poco de manipulación

algebraica para expresar las ecuaciones en la forma deseada.

Tabla 2.3. Tabla de verdad para el contador binario de 4-bits

ESTADO PRESENTE

CLR 43 Q2 Q1 QO

O x x x x 1

0 0 0 1 1 O 0 0 0

O 1 0 1 1 O 1 0 0 1 O 0 1 1 1 O 0 1 0 1

1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 o 1 1 1 1 O 1 1 0 1

ESTADO SIGUIENTE

43 Q2 Q1 QO

0000 0001 0010 0011 0100 0101 0 1 1 0 0111 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 0000

010 110 111 101 100

O0

o1

11

10

QO' = CLR' + QO

- 16 -

Page 23: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Figura 2.4.A. Mapa de Karnaugh para QO1

Q1,QO\CLR,Q3tQ2 \ O00 001 o11 O10 110 111 101 100

O 0

o1

11

10

Qll = CLR' + Ql'QO' + QlQO Figura 2.4.B. Mapa de Karnaugh para Qll

Q1 t QO\CLR, 43 142 \ O00 001 o11 010 110 111 101 100

O 0

o1

11

10

Q2 = CLF¿Q2Q1Q11 + CLR QZQO' + CLRQ2'QlQO Q2 = CLR(Q2(Q11 + QO') + Q2'QlQO) Por el teorema de DeMorgan 42' = CLRI + (42' + QlQO)(Q2 + Q1' + QO') Q2l = CLR' + Q2'Ql' + Q2'Q01 + Q2QlQO Q2' = CLRI + Q2IQ1' + Q2QlQO + Q2'QO' Figura 2.4.C. Mapa de Karnaugh para 42

- 17 -

Page 24: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Q1, QO\CLR, Q3 42 \ O00 O01 o11 O10 110 111 101 100

O0

o1

11

10

Q3 = CLRQ3Q2QlQO + CLRQ3Q2' + CLRQ3Ql' + CLRQ3QO' 43 = CLR(Q3'Q2QlQO + Q3(Q2' + Q1' + QO') Por el teorema de DeMorgan Q3' = CLR' + (Q3 + Q2' + Q1' + QO') (Q3' + Q2QlQO) 43' = CLR' + Q3Q2QlQO + 43'42' + 43'41' + Q3'QO' 43' = CLR' + Q3'QZ' + 43'41' + Q3'QO' + Q3Q2QlQO Figura 2.4.D. Mapa de Karnaugh para 43

CONTADOR BINAR10 O CONTADOR DE DECADAS

Recordando que aspiramos a tener un contador de décadas

cuando la entrada BD esté en cero, podemos generar una tabla

de verdad para esta función (Tabla 2.4) . Dado que ya hemos diseñado el contador binario, podemos modificarlo para

simplificar nuestro nuevo diseño. Lo que deseamos es un

circuito cuya salida (Q') se vaya a cero, cuando la entrada BD

sea igual al nivel lógico I1O1I , y la salida del contador sea

igual a 11911. Entonces esta salida puede retroalimentarse a la

entrada CLR del contador para ponerlo a ceros cuando la

entrada BD esté en un nivel bajo. Siempre que la entrada BD

esté en un nivel alto, la salida del circuito (Q') estará en

un nivel alto, y en tal caso tendremos un contador binario.

En este ejemplo en particular, no se necesita un mapa de

Karnaugh porque la ecuación ya no puede simplificarse más.

- 18 -

Page 25: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

La ecuación resultante es: BDOUT' = BD'Q3Q2'Ql'QO

Donde BDOUT' es igual a Q en la tabla 2.4.

Tabla 2.4. Tabla de verdad del contador Binario/décadas

0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 O 0 0 1 1 0 0 1 0 0 O 0 1 0 1 O 0 1 1 0 O 0 1 1 1 0 1 0 0 0 O 1 0 0 1 O 1 0 1 0 O 1 0 1 1 O 1 1 0 0 O 1 1 0 1 O 1 1 1 0 o 1 1 1 1

o 1 o 1 o 1 o 1 o 1 o 1 o 1 o 1 o 1 1 0 o 1 o 1 o 1 o 1 o 1 o 1

1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1

01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01

2.5.- Obtener simplificada, La función de Boole para cada

salida

CLKOUT' = SELl'SELO'CLKA' + SELl'SELOCLKB' + SELlSELO'CLKC' + SELlSELOCLKD'

QO' = CLR' + QO Q1' = CLR' + Ql'QO' + QlQO Q2' = CLR' + Q2'Ql' + Q2QlQO + Q2'QO' 43' = CLR' + Q3'QZ' + 43'41' + Q3'QO' + Q3Q2QlQO BDOUT' = BD'Q3Q2'Ql'QO

- 19 -

Page 26: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

2.6.- CORRER EL PROGRAMA PALASM

(Para mayor información consulte el Capítulo 3)

- 20 -

Page 27: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PAL 16R4

8/SEP/9O CONTADOR DE 4 BITS DE DECADAS O BINARIO

CLK SELO SELl CLKA CLKB CLKC CLKD CLR BD GND OE BDOUT NC P3 P2 P1 PO NC CLKOUT VCC

/QO := /CLR + PO

/Q2 := /CLR + /92*/Q1 + P2*Pl*PO + /Q~*/PO

143 := /CLR + /Q3*/Q2 + /Q3*/Q1 + /Q3*/PO + Q ~ * P ~ * Q ~ * Q o

/BDOUT = /BD*Q3*/P2*/Pl*PO

DESCRIPCION:

CONTADOR CON CAPACIDAD PARA SELECCIONAR UNO DE CUATRO RELOJES

MEDIANTE LAS ENTRADAS SELl Y SELO. ADEMAS, CUANDO BD ESTA EN CERO SE CONVIERTE EN CONTADOR DE DECADAS, CUANDO BD ESTA EN UNO SE CONVIERTE EN CONTADOR BINARIO.

"""""

CLK +1 20+ VCC

I I

I I

I I

I I

I I

I I

I I

I I

I I

SELO +2 1 9 + CLKWT

SELl +3 18+

CLKA +4 17+ PO

CLKB +5 16+ Q1

CLKC +6 15+ P2

CLKD +7 14+ P3

CLR +8 13+

BD +9 12+ BDWT

GND +10 1 1 + OE """""

SELl SELO I CLKWT """""+"""-

o o I CLKA O 1 I CLKB 1 O I CLKC 1 1 I CLKD

BD I Q3 P2 a l PO

O I CONTADOR DE DECADAS 1 I CONTADOR BINARIO

ESTE ES EL ARCHIVO FUNC.DAT, CREARLO ANTES DE CORRER PALASM

- 21 -

Page 28: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PROCEDIMIENTO PARA USAR EL PROGRAMA PALASM

Una vez creado a l archivo FUNC.DAT (Ver hoja anterior), guardarnos una copia de este con un nombre más apropiado. Por ejenplo:

A:\> COPY FUNC-DA1 CONTBD.FUN I F i le(s) cop ied

Donde, CONTBD.FUN s i g n i f i c a que e l archivo contiene las funciones correspondientes a l CONTADOR BINARIO/DECADAS.

Ahora, ya estamos l i s t o s p a r a c o r r e r e l progreme

A:\>PALASW

NUMBER OF FUSES BLOUN = 629

OPERATION CODES: P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP a=auIT ENTER OPERATION CODE P

ENTER OPERATION CODE a Stop - Program terminated.

Hemos seleccionado la o p e r a c i h PLOT para obtener l a g r á f i c a de los fus ib les que van a quemarse en e l PAL. E l nombre del archivo

de salida para cualquier operaci6n es FUSES.DAT, por l o que es conveniente renombrarlo

A:\> REN FUSES.DAT CONTBD.PLT

D & , CONTBD.PLT s i g n i f i c a que el archivo contiene La grhf ica

(PLOT) de los fus ib les de un PAL programado como CONTADOR

BINARIO/DECADAS ACLARACION: Este archivo s6lo s i r v e como docunentaci6n para el

usuar io , e l Programador de PALS no puede Leerlo.

Continuamos con l a generaci6n de un archivo en formato BHLF que usaremos como entrada a l Programador de PALS

A:\>PALASM

NUMBER OF FUSES BLOUN = 1496

OPERATION COOES: P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP P=WIT ENTER OPERATION CODE L ENTER OPERATION CODE a Stop - Program terminated.

- 22 -

Page 29: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Hemos elegido e l c6digo de o p e r a c i h L = BHLF y e l a rch ivo de sal ida se l lama FUSES.DAT, como antes, vamos a renombrarlo:

A:\> REN FUSES.DAT CONTBD.BHL

1 F i lecs) copied

Donde, CONTBD.BHL s i g n i f i c a que e l a r c h i v o c o n t i e n e l a l i s t a de los fus ib les , en formato BHLF, para programar al PAL como

CONTADOR BINARIO/DECADAS

Este archivo este en e l formato adecuado para usarlo como entrada a l programador de PALS.

A:\>DIR CONTBD.*

Volune i n d r i v e A i s DISCO49 Directory of A:\

CONTBD FUN 1503 13/08/90 22:21 CONTBD PLT 5289 14/08/90 13:34 CONTBD BHL 3877 14/08/90 13:02

3 F i l e ( s ) 38920 bytes free

- 23 -

Page 30: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAMA P A L A 9 CODIGO DE OPERACION L = BHLF MWTADOR BINARIO/DECADAS

BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BLLLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLLF BHHLHF BHHLHF BHHLHF BHHLLF BHHLHF BHHLHF BHHLHF BHHLLF BHLLHF BLHLHF BHHLHF BHHLHF BHHLHF BLHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHHLHF BHLLLF BHLLHF BHLLHF BHLLHF BHLLHF BHLLLF BHLLHF BHLLHF BHLLHF BHLLHF BLLLHF BHLLHF BHLLHF BHLLLF BLLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLHLF BHLHHF BHLHHF BHLHHF BLLLLF BHLHHF BHLHHF BLLHHF BHLLHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLHHF BHLHHF BHLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF

- 2 4 -

Page 31: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

BLLHHF BLLHHF BLLHLF BLLHHF BLLHHF BLLHHF BLLHLF BLLLHF

BLLHHF BLLHHF BLLHLF BLLHHF BLLHHF BLLHHF BLLHHF BLLLHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLLLF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHLF BLLHHF BLLHHF BLLHHF BLLLHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHHF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLLLF BLLHLF BLLHLF BLLHLF BLLLLF BLLHLF BLLHLF BLLHLF BLLLLF BLLHLF BLLHLF BLLHLF BLLLLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLHLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

EL NOMBRE ORIGINAL DE ESTE ARCHIVO ES FUSES.DAT. RENOMBRARLO A: C0NTBD.BHL

- 25 -

Page 32: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAMA PALASM

CODIGO DE OPERACION: P = PLOT

CONTADOR DE 4 BITS DE DECADAS O BINAR10

1 1 1 1 1 1 1 1 1 1 2222 2222 2233 0123 4567 8901 2345 6789 0123 4567 8901

0 "" "" "" "" "" "" "" "" 1 -x" -x" -x" "" "" "" "" "" /SELl*/SELO*/CLKA 2 x"- -x" "" -x" "" "" "" "" /SELl*SELO*/CLKB 3 -x" x"- "" "" -x" "" "" "" SELl*/SELO*/CLKC 4 x"- x"- "" "" "" -x" "" "" SELl*SELO*/CLKD

5 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 6 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX

7 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

8 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 9 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

10 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 1 1 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 12 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 13 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 14 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 15 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

16 - - - - - - - - - - - - - - - - - - - - - - - - -x-- _ _ _ _ /CLR 17 _ _ _ _ _ _ _ _ "x- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ QO 18 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 19 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 20 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 21 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 22 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 23 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX

24 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - x - - _ _ _ _ /CLR 25 _ _ _ _ _ _ _ _ "-x "-x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /a1 */PO

Ql*QO 26 - _ - - "X- --X- - _ - - - - - - _ - _ - - _ _ _ 27 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 28 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 29 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 30 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 31 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX

32 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - x - - _ _ _ _ /CLR 33 "" "" "" "-x "-x "" "" "" /Q2*/Q1 34 "" "" "x- "x- "x- "" "" "" Q2*Q1 *PO 35 "" "" "-x "" "-x "" "" "" /Q2*/QO

36 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 37 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

- 26 -

Page 33: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

48 xxxx xxxx xxxx XXXX xxxx xxxx xxxx xxxx 49 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 50 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 51 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 52 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 53 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 54 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

56 - - - - - - - - - - - - - - - - - _ _ _ - _ _ - - _ _ - 57 "" "" "x- "-x "-x "x- "" -x" /BD*Q3*/Q2*/QI*QO 58 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 59 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx M) xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 61 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 62 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 63 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX

LEGEND: X : FUSE NOT BLOWN (L,N,O) - : FUSE BLOU (H,P,I)

NOMBRE ORIGINAL DEL ARCHIVO: FUSES.DAT

RENOMBRARLO A: CONTBD-PLT

- 27 -

Page 34: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

"

- 28 -

Page 35: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

2.7.- Implantar en el pal las funciones de Boole

Conecte el circuito Programador de Pals a la computadora

tal como se especifica en el capítulo 4 , donde encontrará la

información completa de como programar el PAL.

3 . - PROGRAMA PALASM

El programa PALASM crea un archivo que contiene una lista

de los fusibles que deben quemarse para que el PAL ejecute las

funciones lógicas especificadas en el diseño del usuario. El

programa PALASM recibe como entrada un archivo de texto,

denominado FUNC. DAT, que contiene el número de parte del PAL

que se va a programar y la lista de ecuaciones lógicas que

especifican la función del PAL. En la siguiente sección se dá

una explicación más detallada de las características del

archivo de entrada.

- 2 9 -

Page 36: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Operadores PALASM - - Igual

:= Reemplazado por, después del reloj

/ Complemento * AND , PRODUCTO

+ OR, SUMA

:+: XOR

: *: XNOR

( ) Condicional TRI-STATE, proposición IF, aritmético

Ejemplo:

IF(/A) /B = C + D

Significa que si A = 1 lógico, la salida B se coloca en el

estado de alta impedancia (TRI-STATE). Si A = O lógico, la

salida B dependerá del resultado de la operación (C OR D)'.

Ecuaciones

Estándar

PALASM

Q1 = AB' + A'B Q1 = A*/B + /A*B

3.1.- COMO CREAR EL ARCHIVO DE ENTRADA FUNC.DAT

Para utilizar el programa PALASM es necesario crear un

archivo de texto llamado FUNC.DAT donde se escribirán las

funciones lógicas que se van a programar en el PAL. El archivo

no deberá contener tabuladores debido a que el programa PALASM

no los reconoce y los considera como un error de entrada de

- 30 -

Page 37: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

datos, el error provocado por el uso de tabuladores es muy

difícil de detectar, pues se trata de un carácter no

imprimible. La salida del programa PALASM es un archivo

denominado FUSES.DAT, para que el circuito programador de pals

pueda aceptar este archivo, es indispensable escoger el

formato de salida BHLF al correr el programa PALASM.

Para crear el archivo F'UNC.DAT se puede utilizar el editor

de Turbo Pascal versión 3, esta versión no inserta tabuladores

automáticamente como lo hacen las versiones más nuevas. Para

salir del editor de Turbo Pascal hay que oprimir las teclas

<Control> <k> <d>.

Línea 1: El número de parte del pal debe empezar en la línea 1

columna 1 en este ejemplo usaremos al PAL12L6.

Línea 2: En el margen izquierdo de la línea 2 se coloca un

número de patrón para este diseño, seguido por el nombre del

diseñador y la fecha.

Línea 3: El nombre o descripción del dispositivo se coloca en

la línea 3, si una línea no es suficiente, puede usarse la

línea 4 para completar la descripción del dispositivo.

Línea 4 : Esta línea se salta si no se utiliza para completar

la línea 3.

- 31 -

Page 38: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Líneas 5, 6, y 7: Estas líneas se utilizan para darle un

nombre simbólico a cada una de las 20 patas del PAL ( Note que

deben incluirse los nombres GND y VCC) . La asignación de

nombres comienza en la pata 1 y continúa secuencialmente hasta

la pata 20.

Línea 8: Comenzando en la línea 8 se escriben las ecuaciones

lógicas que describen las funciones requeridas, utilizando los

símbolos definidos en las líneas 5, 6, y 7, en el formato

correspondiente al PAL seleccionado, por ejemplo los circuitos

12L6, 16L8, etc. tienen inversores en sus salidas, de ahí que,

las ecuaciones lógicas deben ser de la forma

/Ox = f(I1, 12, ...), es decir, /O1 = I1 significa que en

la salida O1 obtendremos el valor de I1 invertido.

En el ejemplo siguiente vamos a presentar un archivo que

declara las funciones siguientes:

o1 = 11' EQUIVALE A 01' = I1

02 = 11'12 I1 I1 02' = I1 + 12'

03 = I1 + I3 II II 03' = 11' + 13'

04 = (13'14)' II I1 04' = 13'14

05 = (13'1516 + I7 + 1819)' EQUIVALE A

05' = 13'1516 + I7 + I819 06 = (I819 + 13817819110)8 EQUIVALE A

06' = I819 + 13'17819110 En el lado izquierdo las ecuaciones están escritas en la

forma lógica AND-OR, y en el lado derecho han sido convertidas

- 32 -

Page 39: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

a la forma AND-NOR para que puedan ser utilizadas en las

especificaciones de los PALS del tipo 12L6, 16L8, 16R8, etc.

que tienen inversores en sus salidas. Los pals del tipo 12H6,

14H4, 16H2, no tienen inversores en sus salidas y sus

especificaciones se escriben en la forma AND-OR.

Línea 1 Línea 2 Línea 3 Línea 4 Línea 5 Línea 6 Línea 7 Línea 8 Línea 9 Línea 10 Línea 11 Línea 12 Línea 13 Línea 14 Línea 15 Línea 16 Línea 17 Línea 1 8

""" > Columna 1

PALl2L6 ESPECIFICACIONES DEL DISEÑO PAT 1476 BOB JONES 5/10/81 EJEMPLO DEL DISEÑO DE UN PAL

I1 I2 I3 I4 I5 I6 I7 I8 I9 GND I10 NC 05 06 04 03 02 O1 NC VCC

/o1 = I1 /o2 = I1 + /I2 /O3 = /I1 * /I3 /O4 = /I3 * I4 /O6 = I8 * I9 + /I9 + I3 * /I7 * I9 * I10 /O5 = /I3 * I5 *I6 + I7 + I8 * /I9 DESCRIPCION:

ESTE ES UN EJEMPLO DE UN ARCHIVO F'UNC.DAT PARA USARLO CON EL PROGRAMA PALASM.

- 33 -

Page 40: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

OTRO EJEMPLO DE ARCHIVO DE ENTRADA PARA EL PROGRAMA PALASM

PAL12H6 ESPECIFICACIONES DEL DISEÑO P0055A GENARO LOPEZ 5/AG0/90 EJEMPLO DE COMPUERTAS BASICAS

C D F G M N P Q I G N D J K L R O H E B A V C C

B = /A E = C * D H = F + G O = /M * /N R = P * / Q + / P * Q L = /I + /J + / K

DESCRIPCION:

EN ESTE ESPACIO SE PUEDE ESCRIBIR UNA DESCRIPCION MAS AMPLIA DE LA OPERACION DEL DISPOSITIVO, AS1 COMO TABLAS Y EJEMPLOS DE APLICACION, USANDO TANTAS LINEAS COMO SEAN NECESARIAS.

- 3 4 -

Page 41: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

3.2.- EJEMPLO DE APLICACION, COMPUERTAS BASICAS

- 35 -

Page 42: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Section 7 Application Examples*

- 36 -

Page 43: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PAL12H6

P0055A EJEMPLO DE COMPUERTAS BASICAS

C D F G M N P Q I G N D J K L R O H E B A V C C

B=/A

E=C*D

H=F+G

O=/M*/N

R=P*/Q+/P*Q

L=/I+/J+/K

DESCRIPCION: ESTE ES EL ARCHIVO FUNC.DAT, CREARLO ANTES DE CORRER PALASM

- 37 -

Page 44: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PROCEDIMIENTO PARA USAR EL PROGRAMA PALASM

Una vez creado e l a r c h i v o FUNC.DAT (Ver hoja anter ior) , guardamos une copia de Bste con un nombre &S apropiado.

Por ejenplo:

A:\> COPY FUNC.DAT BASGATES-FUN 1 F i le (s) cop ied

Donde, BASGATES.FUN s i g n i f i c a que el archivo contiene Las

funciones correspondientes a las CWPUERTAS BASICAS.

Ahora, ya estamos l i s t o s p a r a c o r r e r e l programa

A:\>PALASM

NUMBER OF FUSES BLOUN = 306

OPERATION CODES: P=PLOT H-HEX S=SHORT L=BHLF N=BPNF M=MAP P=PUIT

ENTER OPERATION CODE

P ENTER OPERATION CODE

P

Stop - Program terminated.

Hemos se lecc ionado la operac ih PLOT para obtener l a g r h f i c a de los fus ib les que van a quemarse en e l PAL. E l nombre del archivo de sal ida para cualquier operación es FUSES.DAT, por l o que es conveniente renombrarlo:

A:\> REM FUSES.DAT BASGATES-PLT

Donde, BASGATES.PLT s i g n i f i c a que el arch ivo cont iene la gráf ica

(PLOT) de Los fus ib les de un PAL programado como COMPUERTAS BAS I CAS. ACLARACION: Este archivo sólo s i r v e como docunentación para e l

usuar io , e l Programador de PALs no puede leer lo .

Continuamos con l a generación de un archivo en formato BHLF que usaremos como entrada a l Programador de PALs

A:\>PALASM

NUMBER OF FUSES BLOWN = 306

OPERATION CODES: P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP P=PUIT ENTER WERATION CODE L ENTER OPERATION CODE Q

Stop - Program terminated.

- 38 -

Page 45: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Hemos elegido el c6digo de o p e r a c i h L = BHLF y e l a rch ivo de sa l ida se llama FUSES.DAT, como antes, vamos a renombrarlo

A:\> REY FUSES.DAT BASGATES.BHL

1 F i le(s) cop ied

Donde, BASGATES.BHL s i g n i f i c a que et archivo contiene La L i s t a de los f u s i b l e s , en formato BHLF, para programar a l PAL como COMPUERTAS BASICAS.

Este archivo está en e l formato adecuado para usarlo tomo

entrada a l programador de PALS.

A:\>DIR BASCATES.*

Volune i n d r i v e A i s DISC049

Directory of A:\

BASGATES FUN 248 13/08/90 22:21 BASGATES PLT 5353 14/08/90 13:34 BASGATES BHL 38?7 14/08/90 13:02

3 F i l e ( s ) 40220 bytes free

- 39 -

Page 46: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAMA PALASU CODIGO DE OPERACIOll L = BHLF COnPUERTAS BASICAS

BHLHHF BHHHHF BHLHHF BHHHHF BLHHHF BHHHHF BHHHHF BHHLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BLLLHF BHLLHF BHHHHF BHHHHF BHLLHF BHLLHF BHHHHF BHHHHF BHLLHF BHLLHF BHHHHF BHHHHF BHLLHF BHLLHF BHHHHF BHHHHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BHLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLHHF BLLHHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHLHF BHHHHF BHHHHF BHHHHF BHLHHF BHHHHF BHHHHF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHHF BHHHHF BHHHLF BHHHLF BHHHHF BHHHHF BHHHLF BHHHLF BHHHHF BHHHHF BHHHLF BHHLLF BHHHHF BHHHHF BHHLLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHHHLF BHLHLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF BHHLLF

- 4 0 -

Page 47: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

BHHLLF BHHLLF BHHLLF BHLLLF BHHLLF BHHLLF BHHLLF BHHLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHHLLF BHHLLF BHLLLF BHLLLF BHHLLF BHHLLF BHLLLF BHLLLF BHHLLF BHHLLF BHLLLF BHLLLF BHHLLF BHHLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF BHLLLF

NOMBRE ORIGINAL DEL ARCHIVO: FUSES.OAT

RENOHBRARLO A: BASGATES.BHL

- 41 -

Page 48: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAM PALASM CODIGO DE OPERACIW P = PLOT

EJEMPLO DE CCWPUERTAS BASICAS

11 1111 1 1 1 1 2222 2222 2233 0123 4567 8901 2345 6789 0123 4567 8901

8 _ _ _ - "-X "00 "00 "00 "00 - - - - - - - - /A 9 xxxx xxxx xxoo xxoo xxoo xxoo xxxx xxxx 10 xxxx xxxx xxoo xxoo xxoo xxoo xxxx xxxx 11 xxxx xxxx xxoo xxoo xxoo xxoo xxxx xxxx 12 O000 0000 0000 O000 O000 O000 O000 O000 13 O000 O000 O000 O000 O000 O000 O000 O000 14 O000 O000 O000 O000 O000 O000 O000 O000 15 O000 O000 O000 O000 O000 O000 O000 O000

16 X-)(- - - - - "00 "00 "00 "00 "" "" C*D 17 XXXX XXXX XXOO XXOO XXOO XXOO XXXX XXXX 18 O000 O000 O000 O000 O000 O000 O000 O000 19 O000 O000 O000 O000 O000 O000 O000 O000 20 O000 O000 O000 O000 O000 O000 O000 O000 21 O000 O000 O000 O000 O000 O000 O000 O000 22 O000 0000 0000 O000 O000 O000 O000 O000 23 O000 O000 O000 O000 O000 O000 O000 O000

24 _ _ _ _ x"- "00 "00 "00 "00 "" "" F 25 _ _ _ _ - _ _ _ x-00 "00 "00 "00 "" "" G 26 O000 O000 O000 O000 O000 O000 O000 O000 27 O000 O000 O000 O000 O000 O000 O000 O000 28 O000 O000 O000 O000 O000 O000 O000 O000 29 O000 O000 O000 O000 O000 O000 O000 O000 30 O000 O000 O000 O000 O000 O000 O000 O000 31 O000 O000 O000 O000 O000 O000 O000 O000

32 _ _ _ _ _ _ _ _ "00 -xoo -xoo "00 "" "" /M*/U 33 xxxx xxxx xxoo xxoo xxoo xxoo xxxx xxxx 34 O000 O000 O000 O000 O000 O000 O000 O000 35 O000 O000 O000 O000 O000 O000 O000 O000 36 O000 O000 O000 O000 O000 O000 O000 O000 37 O000 O000 O000 O000 O000 O000 O000 O000 38 O000 O000 O000 O000 O000 O000 O000 O000 39 O000 O000 O000 O000 O000 O000 O000 O000

- 4 2 -

Page 49: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

40 "" "" "00 "00 "00 x-00 -x" "" P*/Q

41 _ _ _ _ _ _ _ _ --m --m x"- _ _ _ _ /P*Q 42 O000 O000 O000 O000 O000 O000 O000 O000 43 O000 O000 O000 O000 O000 O000 O000 O000 44 O000 O000 O000 O000 O000 O000 O000 O000 45 O000 O000 O000 O000 O000 O000 O000 O000 46 O000 O000 O000 O000 O000 O000 O000 O000 47 O000 O000 O000 O000 O000 O000 O000 O000

48 "" "" "00 "00 "00 "00 "" -x" /I 49 "" "" "00 "00 "00 ---X / J

50 _ _ _ _ _ _ _ _ "00 "00 "00 "00 "-x "" /K 51 XXXX XXXX XXOO XXOO XXOO XXOO XXXX XXXX 52 O000 O000 O000 O000 O000 O000 O000 O000 53 O000 O000 O000 O000 O000 O000 O000 O000 54 O000 O000 O000 O000 O000 O000 O000 O000 55 O000 O000 O000 O000 O000 0000 O000 O000

LEGEND: X : FUSE NOT BLOWN (L,N,O) - : FUSE BLW (H,P,1)

O : PHANTOM FUSE (L,N,O) O : PHANTOM FUSE ( H , P , l )

NOnBRE ORIGINAL DEL ARCHIVO: FUSES.DAT

RENOnBRARLO A: BASGATES.PLT

- 4 3 -

Page 50: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

- 4 4 -

Page 51: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

3.3.- EJEMPLO DE APLICACION, DECODIFICADOR PARA

MANEJAR UN DISPLAY DE 7 SEGMENTOS

- 4 5 -

Page 52: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

r.16 Hexadecimal 7-Segment Display Encoder ( C o n t m d

THREE STAOE HEXADECIMAL D t c o o E n m v E n

NnIvEn OUTPUTS LEWLAYP

- 4 6 -

Page 53: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PAL 16L8 PAL DESIGN SPECIFICATION

PAT0007 HEX DECODER/7SEG. DRIVER U/RIPPLE BLANKING, INTENSITY CON., & LAMP TEST

/RBI DO D l D2 D3 IC LT NC NC GND NC G /RBO F E D C B A VCC

IF (/IC) /A = /RW/DO*/D2 + /RBO*/DO*D3 + /RBO*Dl*D2 + /RBO*Dl*/D2*/D3 + /RWDO*D2*/D3 + /RBO*/Dl*/DZ*D3 + LT

IF (/IC) /B = /RBO*/D2*/D3 + /RBO*/DO*/D2 + /RBO*/DO*/Dl*/D3 + /RWDO*Dl*/D3 + /RBO*DO*/Dl*D3 + LT

IF (/IC) /C = /RBO*DO*/Dl + /RBO*DO*/D2 + /RBO*/Dl*/DZ + /RBO*DZ*/D3 + /RBO*/D2*D3 + LT

IF (/IC) /E = /RBO*/DO*/D2 + /RBO*D2*D3 + /RBO*/DO*Dl + /RBO*Dl*D3 + LT

IF (/IC) /F = /RBO*/DO*/Dl + /RBO*/D2*D3 + /RBO*Dl*D3 + /RBO*/DO*D2 + /RBO*/Dl*DZ*/D3 + LT

IF (VCC) RBO = /DO*/DI*/DZ*/D3*/RBI

I F (/IC) /G = /RBO*Dl*/D2 + /RBO*DO*D3 + /RBO*/D2*D3 + /RBO*/DO*Dl + /RBO*/Dl*DZ*/D3 + LT

DESCRIPTION: THE HEXADECIMAL DECODER/7-SEGMENT DRIVER FEATURES ACTIVE LOU OUTPUTS

FOR DRIVING DISPLAY DIRECTLY.

I F DATA INPUT IS ZERO AND RIPPLE BLANKING INPUT (/RBI) IS LOU THAT DIGIT UILL BE BLANKED AND RIPPLE BLANKING OUTPUT UILL BE LOU.

THE RIPPLE BLANKING OUTPUT (/RBO) PROVIDES BLANKING INFORMATION FOR THE NEXT LEAST SIGNIFICANT STAGE. IT PROVIDES A LOU IF /RBI IS

LOU AND THE DATA IN I S ZERO.

UHEN HIGH THE INTENSITY CONTROL (IC) UILL TURN OFF THE ENTIRE DISPLAY. IC MAY BE PULSED TO VARY THE INTENSITY OF THE DISPLAY.

UHEN HIGH THE LAMP TEST INPUT (LT) UILL TURN ON THE DISPLAY.

ESTE ES EL ARCHIVO FUNC.DAT, CREARLO ANTES DE CORRER PALASM

- 4 7 -

Page 54: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

PROCEDIMIENTO PARA USAR EL PROGRAMA PALASM

Una vez creado el archivo FUNC.DAT (Ver hoja anterior), guardamos une copia de este con un nombre m6s apropiado.

Por ejemplo:

A:\* COPY FUNC.DAT HEXDISP.FUN 1 F i lecs) copied

Donde, HEXDISP.FUN s i g n i f i c a que el archivo contiene Las funciones del WEX DISPLAY DECODER DRIVER1'.

Ahora, ya estamos l i s tos para cor rer e l programa

NUMBER OF FUSES BLOUN = 1496

OPERATION CODES: P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP Q=PUIT ENTER OPERATION CODE

P ENTER OPERATION CODE

Q Stop - Program terminated.

Hemos seleccionado la operación PLOT para obtener La g r á f i c a de los fus ib les que van a quemarse en e l PAL. E l nombre del archivo de salida para cualquier operación es FUSES-DAT, por l o que es conveniente renombrarlo:

A:\> REI FUSES-DAT HEXDISP.PLT

Donde, HEXDISP.PLT s i g n i f i c a que e l arch ivo cont iene l a g rá f i ca

(PLOT) de los fus ib les de un PAL programado como olHEXADECIMAL DISPLAY DECODER DRIVER". ACLARACION: Este archivo sólo s i r v e como d o c w n t a c i ó n p a r a e l u s u a r i o , e l Programador de PALs no puede l e e r l o .

Continuamos con l a generación de un archivo en formato BHLF que usaremos como entrada al Programador de PALs

A:\*PALASM NUMBER OF FUSES BLOWN = 1496

OPERATION CODES: P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP P=QUIT ENTER OPERATION CODE L ENTER OPERATION CODE Q Stop - Program terminated.

- 48 -

Page 55: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Hemos elegido e l c6digo de operacih L = BHLF y e l archivo de salida se Llama FUSES.DAT, como antes, conviene renombrarlo

A:\> REN FUSES.DAT HEXDISP.BHL 1 Fi le(s) copied

Donde, HEXDISP.BHL signif ica que e l archivo contiene l a l i s t a de los fusibles, en formato BHLF, para programar a l PAL como "HEX DISPLAY DECODER DRIVER".

Este archivo est6 en e l formato adecuado para usarlo como entrada a l programador de PALS.

A:\>DIR HEXDISP.'

Volune i n d r i v e A i s DISCO49 Directory of A:\

HEXDISP FUN 2039 13/08/90 22:21 HEXDISP PLT 5289 14/08/90 13:34 HEXDISP BHL 3877 14/08/90 13:02

3 Fi le(s) 38920 bytes free

- 4 9 -

Page 56: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAMA PALASM CODIGO DE OPERACION L = BHLF HEX DISPLAY DECODER DRIVER

BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHLHHF BHHHLF BHHHHF BHHHHF BHHHHF BLLHHF BHHHHF BHHHHF BHHHHF BHHLLF BHHHHF BHHHHF BLHHHF BHHLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHLHHF BLHLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLHF BHHHHF BHHHHF BHHHLF BLHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLHHHF BHHLHF BHHHHF BHHHHF BLHHLF BHLLHF BHHHHF BHHHHF BHHHLF BLLHHF BHHHHF BHHHHF BHHHHF BHHLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHLHF BLHHHF BHHHHF BHHHHF BLHLLF BHHHHF BHHHHF BHHHHF BLLHHF BHHHLF BHHHHF BHHHHF BHHHHF BHLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLHLLF BHHHHF BHHHHF BHHHHF BHHHHF BLHLHF BHHHHF BHHHHF BLHHLF BHLHHF BHHHHF BHHHHF BHLLHF BHHHLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLLF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BLLLHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLHLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHLLLF BHLHHF BHHHHF BLHHHF BHLLHF BHHHHF BHHHHF BHHHHF BLLHLF BHHHHF BHHHHF BHHHHF BHLHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLHLLF BHHHHF BHHHHF BHHHHF BHHHHF BHHHHF BLLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHLF BHLLHF BHLHHF BHLHHF BLLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF

- 50 -

Page 57: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

BHLHHF BHLHHF BLLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHLF BHLHHF BHLHHF BHLLLF BHLHHF BHLHHF BHLHHF

BHLHHF BLLHHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BLLHLF BHLHHF BHLHHF BHLHHF BHLLHF BHLHHF BHLHHF BHLHHF BHLHLF BHLHHF BHLHHF BHLHHF

BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF

BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHLF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BLLLHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHHF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BLLLLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BHLHLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF BLLLLF

NOMBRE ORIGINAL DEL ARCHIVO: FUSES.DAT RENOMBRARLO A: HEXDISP.BHL

- 51 -

Page 58: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SALIDA DEL PROGRAMA PALASM CoDlGO DE OPERACION P = PLOT

HEX DECODER/7SEG. DRIVER U/RIPPLE BLANKING, INTENSITY CON., & LAMP TEST

1 1 1 1 1 1 1 1 1 1 2222 2222 2233

Dl23 4567 8901 2345 6789 0123 4567 8901

"" /IC "" /RBO*/DO*/D2 "" /RBO*/DO*D3 "" /RBO*Dl*D2

"" /RBO*Dl*/D2*/D3 "" /RWDO*D2*/D3 "" /RBO*/Dl*/D2*D3 "" LT

32 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ - x - - _ _ _ _ _ _ _ _ _ _ _ _ /IC 33 -x" "" -x" "" "" "" "x- "" /RBO*/DO*/D2 34 "" "" x"- x"- "" "" "x- "" /RBO*DZ*D3 35 -x" x"- "" "" "" "" --X- - - - - /RBO*/DO*Dl

-56 "" x"- "" x"- "" "" "x- "" /RBO*D1*D3 37 "" "" "" "" "" x"- "" "" LT

38 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 39 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

- 52 -

Page 59: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

48 "" "" "" "" "" "" "" ""

49 -)(x- -x" -x" -x" "" "" "" "" /DO*/Dl*/DZ*/D3*/RBI

50 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 51 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 52 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 53 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 54 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 55 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

LEGEND: X : FUSE NOT BLOUN (L,N,O) - : FUSE BLOU ( H , P , l )

NOMBRE ORIGINAL DEL ARCHIVO: FUSES.DAT RENOMBRARLO A: HEXDISP.PLT

- 53 -

Page 60: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

3 . 4 . - LISTADO DEL PROGRAMA PALASM VERSION 1 EN

LENGUAJE FORTRAN 77

- 54 -

Page 61: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C*** *** C*** UNIVERSIDAD AUTONCUA METROPOLITANA IZTAPALAPA *** C*** *** C*** PROYECTO DE INGENIERIA ELECTRONICA *** C*** *** C*** PROGRAMA PALASM-FOR *** C*** *** C*** NAREZ MART I NE2 ARMANDO *** C*** *** C*** MATRICULA 84225276 *** C*** *** C*** 14/AGO/ 1990 *** C*** *** . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C C ESTE PROGRAMA FUE CREADO POR MONOLITHIC MEMORIES INC. Y ES DE C DOMINIO PUBLICO. LA VERSION ORIGINAL ESTA ESCRITA EN FORTRAN IV, C ESTA ES UNA ADAPTACION PARA FORTRAN 77. L

C PALASM

C C C

C

C C C C

C C C C C C

C C

- TRADUCE LAS ECUACIONES SIMBOLICAS A COOIGO PAL OBJETO. FORMATEADO PARA ENTRAR DIRECTAMENTE A PROGRAMADORES DE PROM.

ENTRADA: LAS ESPECIFICACIONES DE DISERO Y LAS FUNCIONES BOOLEANAS DEBERAN ESTAR

ALMACENADAS EN EL ARCHIVO: FUNC.DAT

SALIDA: EL PATROU DE FUSIBLES EN FORMATO BHLF,

O LA GRAFICA DE FUSIBLES QUEMADOS QUEDARA EN EL ARCHIVO: FUSES.DAT

NUMERO DE PARTE: EL NUMERO DE PARTE DEL PAL DEBE APARECER EN LA COLUMNA UNO DE LA LINEA UNO

LISTA DE PATAS: 20 NOMBRES SIMBOLICOS DE LAS PATAS DEBEN

APARECER COMENZANDO EN LA LINEA 5 L

C ECUACIONES: COMIENZAN EN LA PRIMERA LINEA DESPUES DE LA

C LISTA DE PATAS EN LAS SIGUIENTES FORMAS:

L

C C C C

C C C C C

C C

A = B*C + D

A := B*C + D

IF( A*B ) C = D + E

A2 := (Al:*:Bl) + /C

LOS ESPACIOS EN BLANCO SE IGNORAN, PERO LOS TABULADORES <HT> (ASCII O9 HEX) PROVOCAN ERRORES DIFICILES DE DETECTAR.

- 5 5 -

Page 62: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

C OPERADORES: = IGUALDAD

C := REEMPLAZADO POR (DESWES DEL RELOJ) C / COMPLEMENTO C * AND, PRODUCTO C + OR, SUMA C :+: OR EXCLUSIVA (XOR) C :*: NOR EXCLUSIVA (XNOR) C () TERCER ESTADO CONDICIONAL C (3-STATE OUTPUTS) O SIMBOLO FIJO C C SIMBOLOS FIJOS C PARA PAL 16x4

C Y PAL16A4 C UNICAMENTE: (AN+/BN) DONDE N = O , I , 2, 3 C (AN+BN) PARA PATAS DE SALIDA C (AN 1 17, 16, 15, 14, RESP C ( /AN+/BN ) A ES SALIDA C (/BN) B ES ENTRADA

C (AN:+:BN) C (AN*/BN) C (AN:*:BN) C (BN) C (AN*BN) C (/AN)

C (/AN*/BN) C (/AN*BN)

C

C SUBRUTINAS: INITLZ, GETSYM, INCR, MATCH, FIXSYM, C TUEEK, PLOT, HEX, BHLF, MAP, SLIP C C FUNCIONES: IXLATE C C REV LEVEL: J 1/16/80 JB,SK

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PROGRAMA PRINCIPAL

C- LBLANK,LLEFT,LAND,LOR,LSLASH,LEWAL,LRIGHT LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEPUAL,LRIGHT,LFIRST,LFlX

LOGICAL LFUSES(32,64).LPHASE(2O),LBUF(20)

INTEGER ICOLUM,lBLOU CHARACTER TITLE(80),ILINE(80),ISYM(8,20),IBUF(8,~O)~C,H,R,P~

C S,R,P,L,N,IOT DATA LFUSES/2048*.FALSE./,L/'L'/,H/'H'/,N/'N'/,P/'p'/,

C C/'C'/,R/'Rf/,M/'M'/,Q/'Q'I,S/1S1/lCOLUn/o/,IBLOU/O/

OPEN(1,FILE = 'FUNC.DAT') OPEN(6,FILE = IFUSES.DAT',STATUS = 'NEW)

LFIX = .FALSE. READ(1,lO) INOAI,IOT,INW,T1TLE,ILIWE

10 FORF(AT(3X,I2,A1,11,//,80A1,//,80A1) CALL INITLZ(INOAI,IOT,INW,ITYPE,LFUSES,ILINE,ICOLU~,LFIX) DO 20 J=1,20

20 CALL GETSYM(LPHASE,ISYM,J,ILINE,ICOLUn,LFIX)

- 56 -

Page 63: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

IF(.NOT.(LEPUAL.OR.LLEFT.OR.LAND.OR.LOR.OR.LRIGHT)) GOTO 25

bJRITE(*,23) 23 FORMAT( PIN LIST ERROR, LESS THAN 20 SYMBOLS') 25 CALL GETSYM(LBUF,IBUF,1,ILINE,ICOLUM,LFIX)

28 IF(.NOT.LEWAL) GOTO 25 CALL MATCH(IMATCH,IBUF,ISYM) IF( (IMATCH.LT.12) .OR. (IMATCH.GT.19) 1 GOTO 100

I88PRO=(l9-lMATCH)*8 + 1 IF( 1OT.EQ.C ) I88PRO=25

I COLuM=O 30 CALL INCR(ILINE,ICOLUM,LFIX)

IF( .NOT. ( LEQUAL.OR.LLEFT 1 1 GOTO 30 IF(.NOT.LLEFT) CALL SLIP(LFUSES,I88PRO,INOAI,IOT,1N00,IBLOU)

DO 70 I8PRO=1,16 IPROD = 188PRO + I8PRO - 1 LFIRST=.TRUE.

50 CALL CETSYM(LBUF,IBUF,1,ILINE,ICOLuM,LFIX) IF(LFIX) GOTO 59 CALL MATCH(IMATCH,IBUF,ISYM)

IF(IMATCH.EQ.0) GOTO 100 IF(lMATCH.EQ.99) COTO 64 IF(.NOT.LFIRST) GOTO 58

LFIRST=.FALSE. DO 56 I=1,32

IBLOU = IBLOU + 1 56 LFUSES(I,IPROD)=.TRUE. 58 I BUBL=O

IF((( LPHASE(IMATCH)).AND.(.NOT.LBUF(~))).OR. C ((.NOT.LPHASE(IMATCH)).AND.( LBUF(1)))) IBUBL=l

IINPUT=IXLATE(IMATCH,ITYPE)+IBUBL IF(IINPUT.LE.0) GOTO 60 IBLOU = IBLOU - 1 LFUSES(IINPUT,IPROD)=.FALSE. CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.FALSE.,ITYPE)

GOTO 60

59 CALL FIXSYM(LBUF,IBUF,ILINE,ICOLLJM,LFIRST,LFUSES,IPROD,

60 IF(LAND) GOTO 50 64 IF( .NOT.LRIGHT 1 GOTO 68 66 CALL INCR(ILINE,ICOLUM,LFIX)

68 IF(.NOT. (LOR.OR.LEQUAL) ) GOTO 74 70 CONTINUE 74 CALL GETSYM(LBUF,IBUF,1,ILINE,ICOLUM,LFIX)

C LFIX)

IF( .NOT.LEQUAL ) GOTO 66

IF(LLEFT.OR.LEQUAL) GOTO 28 100 IF((IBUF(l,l).EQ.C).AND.(IBUF(2,1).EP.R).AND.(IBUF(4,1).EQ.P)

C .AND.(IBUF(8,1).EQ.N)) GOTO 102 URITE(*,101) (IBUF(I,l),I=1,8),1LINE

101 FORMAT(' ERROR SYMBOL = 1,8A1,/,1X,80A1,/) 102 IF(ITYPE.LE.4) CALL TUEEK(ITYPE,IOT,LFUSES)

URITE(*,104) IBLOU 104 FORMAT(' NUMBER OF FUSES BLOUN = I , 14)

URITE(*,*) ' I

URITE(*,106)

- 57 -

Page 64: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1 0 6 FORMAT(' OPERATION CODES: I ,

c 'P=PLOT H=HEX S=SHORT L=BHLF N=BPNF M=MAP a=auIT') 1 0 8 URITE(*,llO) 110 FORMAT(' ENTER OPERATION CODE '1

READ(*,l20) I O P 120 FORMAT(lA1)

IF(1OP.EP.P) CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.TRUE.,ITYPE)

IF(1OP.EP.H) CALL HEX(LFUSES,H) IF(1OP.EQ.S) CALL HEX(LFUSES,S) IF(1OP.EP.L) CALL BHLF(LFUSES,H,L) IF(1OP.EP.N) CALL BHLF(LFUSES,P,N) IF(1OP.EQ.M) CALL MAPCLFUSES) IF(1OP.NE.P ) COTO 1 0 8 STOP END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C SUBROUTINE INITLZ(INOAI,IOT,INW,ITYPE,LFUSES,ILINE,ICOLUM,LFIX)

CHARACTER ILINE(80),IOT,L,R,X,A LOGICAL LFUSES(32,64),LFIX

DATA L/'L'/,R/'R'/,X/'X'/,A/'A'/

IF( INOAI .LT. 16 ) ITYPE = (INOAI/2) - 4 IF( (INOAI .Ea. 16 ) ) ITYPE = 4 IF( (INOAI .Ea. 16 ) .AND. (IN00 .Ea. 8) ) ITYPE = 5 IF( (101 .Ea. R) .OR. (IOT .Ea. A ) .OR. (IOT .Ea. X) 1 ITYPE =6 CALL INCR(ILINE,ICOLUM,LFIX) RETURN

END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C

10

15

20 25 30

40 C

SUBROUTINE GETSYM(LPHASE,ISYM,J,ILINE,ICOLUM,LFIX) COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEPUAL,LRIGHT

LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEPUALlLRICHT,LPHASE(2O),LFIX CHARACTER ILINE(80),ISYM(8,20),IBLANK DATA IBLANK/' '/ LFIX=.FALSE. IF( .NOT.(LLEFT.OR.LAND.OR.LOR.OR.LEPUAL.OR.LRIGHT) COTO 10 CALL INCR(ILINE,ICOLUM,LFIX) IF(LLEFT) COTO 60 LPHASE(J)=( .NOT. LSLASH

IF(LPHASE(J1) COTO 15 CALL INCR(ILINE,ICOLUM,LFIX)

DO 20 I=1,8

ISYM(I,J)=IBLANK DO 30 I=1,7

ISYM(I,J)=ISYM(l+l,J) ISYM(8,J)=ILINE(ICOLUM) CALL INCR(ILINE,ICOLUM,LFIX) IF( LLEFT.OR.LBLANK.OR.LAND.OR.LOR.OR.LR1GHT.OR.LEPUAL 1 GOTO 40 COTO 25 CON1 I NUE URITE(*,50) (ISYM(I,J), I=1,8)

- 5% -

Page 65: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

C 50 FORMAT(' ',8A1) RETURN

60 LFIX=.TRUE. RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C

SUBROUTINE INCR(ILINE,ICOLUM,LFIX) COMMON LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRlGHT LOGICAL LBLANK,LLEFT,LAND,LOR,LSLASH,LEQUAL,LRIGHT,LFIX CHARACTER ILINE(80),IBLANK,ILEFT,IAND,IOR,ISLASH,IEQUAL,IRIGHT,

C I COLON DATA IBLANK/' '/,lLEFT/'('/,IAND/'*'/,IOR/'+'/, C ISLASH/f/'/,IEWAL/f=f/,IRIGHT/f )'/,ICOLo)(/f :'/

10

20 30

C C 50

LBLANK=.FALSE. ICOLUM=ICOLUM+1 IF(ICOLUM.LE.79) GOTO 30 READ(1,20,ERR=70,END=70) ILINE ICOLUM=l FORMAT(80Al) IF( ILINE(1COLUM) .Ea. IBLANK 1 LBLANK=.TRUE. URITE(*,50) ILINE(IC0LUM) FORMAT( . I , ?Al) IF( ( ILINE(ICOLUM).EQ.IBLANK 1 .OR.

C ((ILINE(ICOLUM).EQ.ICOLON).AND.(.NOT.LFIX))) GOTO 10 LLEFT =( ILINE(IC0LUM) .Ea. ILEFT ) LAND =( ILINE(IC0LUM) .Ea. IAND )

LOR =( ILINE(IC0LUM) .Ea. IOR )

LSLASH=( ILINE(IC0LUM) .Ea. ISLASH) LEQUAL=( ILINE(1COLUM) .Ea. IEPUAL) LRIGHT=( ILINE(IC0LUM) .Ea. IRIGHT)

60 RETURN 70 LBLANK=.TRUE.

RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C

SUBROUTINE MATCH(IMATCH,IBUF,ISYM) CHARACTER IBUF(8,20),ISYM(8,20),C,A,R,Y LOGICAL LMATCH DATA C/'C'/,A/'A'/,R/'R'/,Y/'Y'/

IMATCH=O DO 20 J=1,20

LMATCH=.TRUE. DO 10 1=1,8

10 LMATCH=LMATCH.AND.(IBUF(I,1).EP.ISYM(I,J)) IF(LMATCH) IMATCH=J

20 CONT I NUE

- 59 -

Page 66: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

IF((IBUF(3,1).EQ.C).AND. C (IBUF(4,1).EQ.A).AND. C (IBUF(5,1).EQ.R).AND. C (IBUF(6,1).EQ.R).AND. C (IBUF(7,1).EQ.Y)) IHATCH=99

RETURN END

C .....................................................................

FUNCTION IXLATE(IMATCH,ITYPE)

INTEGER ITABLE(2016)

DATA ITABLE/ C 3 , 1 , 5, 9,13,17,21,25,29,-1,31,-1,-1,-1,-1,-1,-1,-1,-1,-1, C 3 , 1 , 5, 9113,17,21,25,29,-1,31,27,-1,-1,-11-11-11-1, 7, -1 ,

C 3 , 1 , 5, 9,13,17,21,25,29,-1,31,27,23,-1,-1,-11-1,11, 7,-1, C 3 , 1 , 5, 9,13,17,21,25,29,-1,31,27,23,19,-1,-1,15,11, 7,-1, C 3 , 1 , 5, 9,13117121,25,29,-1131,-1,27,23,19,15,11, 7,-1,-11 C -1, 1 , 5, 9113,17,21,25,291-1,-1131127123119,151111 7, 3,-1/

IXLATE=ITABLE(IMATCH,ITYPE)

RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C SUBROUTINE FIXSYM(LBUF,IBUF,ILINE,ICOLUn,LFIRST,LFUSES,IPROD,LFIX)

LOGICAL LBUF(2O),LFUSES(32,64),LFIRST,LMATCH,LFIX CHARACTER IBUF(8,20),ILlNE(80),FIXBUF(8),A,B,ISLASH,IOR,IAND,N,Q,

C N0,Nl ,N2,N3, IBLANK, IRIGHT,TABLE(5,14), ICOLON,K,TITLE(80)

C IAND/~*~/,N/~N1/,Q/1Q1/,NO/1O1/lNl/~l~/,N2/~2~/,N3/131/, C ICOLON/':'/, C TABLE / C C C

C

DATA A/'A1/lB/lB'/,ISLASH/l/~/,IOR/l+l/lIBLANK/l l/lIRIGHT/l)l/,

I I 1AI 1+1 1 / 1 IBI I I I I IAI 1+1 IBI

I I I I I I I I IAI l / I I A I 1 + 1 I I I I I I I I I I 1 / 1 l g l IAI 1 : 1 1 1 + 1 l:l l g l I I IAI I * I I / l l g l I I 1/1 I A I 1+1 IBI IAI l:l I * I I : I IBI I I I I I I I I IBI I I I I IAI I * / IBI

~ , , # 1 1 1 1 1 1 ~ 1 1 ~ 1

I I I I I I I I I I I I I I I * I 1 / 1 IBI I I 1 / 1 IAI I * I lB l/

1 1 , , , # 1 ~ 1 1

I I I I I I I I I I B , I I f I

, 1 1 # # # 1 1 1 # 1 # J #

, I , / , A , i , A , # I I , I , , I INPUT=O

DO 20 1=1,8 IBUF(I,l)=IBLANK

20 FIXBUF(I)=IBLANK

21 CALL INCR(ILINE,ICOLUn,LFIX)

K=ILINE(ICOLUM) IF(K.EQ.IRIGHT) GOTO 40 IF(K.EQ.NO) IINPUT=8 IF(K.EQ.Nl) IINPUT=12

IF(K.EQ.N2) IINPUT=16 IF(K.EQ.N3) IINPUT=20 DO 24 J=1,7

24 IBuF(J,l)=IBUF(J+l,l) IBUF(8,1)=K IF(.NOT. ( (K.EQ.A).OR.(K.EQ.B).OR.(K.EQ.ISLASH).OR.(K.EQ.IOR)

C .OR.(K.EQ.IAND).OR.(K.EQ.ICOLON) 1 ) GOTO 21

- 60 -

Page 67: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

30

40

50

60

80 85

90

DO 30 I=1,4 FIXBUF(I)=FIXBUF(I+l)

FIXBUF(5)=lLINE(ICOLUM) COTO 21 IMATCH=O

DO 60 J=1,14 LMATCH=.TRUE.

DO 50 I=1,5 LCUTCH=LMATCH .AND. ( FIXBUF(I).EQ.TABLE(I,J) )

IF(LMA1CH) IMATCH=J

IF(IMATCH.EP.0) COTO 100 IF(.NOT.LFIRST) GOTO 85

LFIRST=.FALSE. DO 80 I=1,32

LFUSES(I,IPROD)=.TRUE. DO 90 1=1,4 IF( (IMATCH-7).GT.O ) LFUSES(IINPUT+I,IPROD)=.FALSE. IF( (IMATCH-7).GT.O ) IMATCH=IMATCH-8 IMATCH=IMATCH+IMATCH

LBUF(l)=.TRUE. CALL PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,.FALSE.,ITYPE)

100 LFIX=.FALSE.

CALL INCR(ILINE,ICOLUM,LFIX) RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C SUBROUTINE PLOT(LBUF,IBUF,LFUSES,IPROD,TITLE,LDUMP,ITYPE)

LOGICAL LBUF(2O),LFUSES(32,64),LD~P CHARACTER IBUF(8,20),IOUT(64),IBLANK,IAND,IOR,ISLASH,IDASH,X,

C ISAVE(66,32),TITLE(80)

C IOR/'+'/, ISLASH/'/'/,X/'X'/, IDASH/'-'/

DATA IBLANK/' I / , lAND/'*'/, ISAVE/2048*' '/,

IFCLDUMP) GOTO 60 IF(ISAVE(IPROD,l).NE.IBLANK) RETURN

IF( LBUF(1) COTO 5

DO 30 J=1,31 30 ISAVE(IPROD,J)=ISAVE(IPROD,J+1)

ISAVE(IPROD,32)=ISLASH

5 DO 20 1=1,8 IF( lSAVE(IPROD,l).NE.lBLANK 1 RETURN

IF( IBUF(I,1) .EQ. IBLANK 1 GOTO 20 DO 10 J=1,31

10 ISAVE(IPROD,J)=ISAVE(IPROD,J+1) ISAVE(IPRODl32)=IBUF(I,1)

20 CON1 I NUE IF(ISAVE(IPROD,l).NE.IBLANK) RETURN

40 DO 50 J=1,31 50 1SAVE(IPRODlJ)=ISAVE(IPROD,J+1)

ISAVE(IPRODI32)=IAND RETURN

- 61 -

Page 68: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

65

70

60 URITE(6,62) TITLE

62 FORMAT(////,' ',80A1,//, C ' 1 1 1 1 1 1 1 1 1 1 2222 2222 2233',/, C 1 0123 4567 8901 2345 6789 0123 4567 8901',/)

DO 100 I88PRO=1,57,8 DO 94 IBPRO=1,8

IPRW=188PRO+I8PRO-1 ISAVE(IPROD,32)=IBLANK

DO 70 I=1,32 IF( ISAVE(IPROO,l) .NE. IBLANK 1 GOTO 70

DO 65 J=1,31 ISAVE(IPROD,J)=ISAVE(IPROD,J+l)

ISAVE(IPROD,32)=lBLANK

CONTINUE DO 80 I=1,32

IWT(I)=X IF( LFUSES(1,IPROD) 1 IWT(I)=IDASH

IWT(I+32)=ISAVE(IPROD,I) 80 CONTINUE

I F ( ITYPE .LE. 4 ) CALL FANTOM(ITYPE,IOUT,IPROD,~BPRO)

IPROD=IPROD-l

URITE(6,90) IPROD,IWT

90 FORMAT(' ' ,12,8(' ' ,4Al), ' ' ,32A1) 94 CONTINUE

URITE(6,96) 96 FORMAT(1X)

1 O0 CONTINUE

URITE(6,110) 110 FORMAT(/,

C' LEGEND: X : FUSE NOT BLOUN (L,N,O) - : FUSE BLOU ( H , P , l ) ' )

IF (ITYPE.LE.4) URITE(6,lll)

1 1 1 FORMAT(

C' O : PHANTOM FUSE (L,N,O) O : PHANTOM FUSE (H,P l l ) ' ) URITE(6,112)

112 FORMAT(////) RETURN

END C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C SUBRWTINE HEX(LFUSES,IOP)

LOGICAL LFUSES(32,64) CHARACTER lTEMP(64),S,H,IOP,NUMHEX DATA H/'H'/,S/'S'/ IF(1OP.EP.H) URITE(6,lO)

1 O FORMAT (// , ' DO 40 1=1,33,32 INC=I-l

DO 40 IPROD=1,7,2 DO 20 J=1,2

DO 20 IINPUT=1,32

I HEX=O

. I , / / )

- 62 -

Page 69: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

15 20 30

IF(LFUSES(IINPUT,IPROD + J-1 + O+INC)) IHEX=IHEX+l IF(LFUSES(IINWT,IPROD + J-1 + 8+INC)) IHEX=IHEX+2 IF(LFUSES(IINPUT,IPROD + J-1 +16+INC)) IHEX=IHEX+4 IF(LFUSES(IINPUT,IPROD + J-1 +24+INC)) IHEX=IHEX+8 IF(IHEX .Ea. O ) NUMHEX = '0' IF(1HEX .Ea. 1 ) NUNHEX = ' 1 ' IF(1HEX .Ea. 2) NWHEX = '2' IF(1HEX .Ea. 3) NUNHEX = '3'

IF(1HEX .Ea. 4) NUMHEX = '4' IF(IHEX .Ea. 5) NUWHEX = '5' IF(1HEX .Ea. 6) NUMHEX = '6' IF(1HEX .Ea. 7) NUMHEX = '7' IF(1HEX .Ea. 8) NUMHEX = '8' IF(IHEX .Ea. 9 ) NUMHEX = r9' IF(1HEX .Ea. 10) NWHEX = 'A' IF(1HEX .Ea. 1 1 ) NUWHEX = '6' IF(1HEX .Ea. 12) NUHHEX = 'Cf

IF(1HEX .Ea. 13) NUHHEX I D f

IF(1HEX .Ea. 14) NUMHEX = 'E f IFCIHEX .Ea. 15) NUHHEX = 'F'

20 ITEMP(I1NPUT + 32*(5-1) )=NUMHEX IF(1OP.EQ.H) URITE(6'60) ITEHP

40 IF(1OP.EP.S) URITE(6'61) ITEMP 60 FORHAT(' ' , 3 2 ( A l n f ' , 3 2 ( A l , ' ' I f ' . ' ) 61 FORMAT(' ',64A1)

IF(1OP.EQ.H) URITE(6'70)

70 FORMAT(' .',//I RETURN

END C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C

SUBRWTINE BHLF(LFUSES,H,L)

LOGICAL LFUSES(32.64) CHARACTER ITEHP(4,8),L,H

URITE(6,lO)

10 FORMAT(//,' DO 20 1=1,33,32 INC=I-l

DO 20 IPROD=1,8

DO 20 J=1,25,8 DO 15 K=1,8

IINPUT=J+K-1 ITEMP(l,K)=L ITEHP(Z,K)=L ITEMP(3,K)=L ITEMP(4,K)=L IF(LFUSES(IINPUT,IPROD+ O+INC)) ITEMP(4,K)=H IF(LFUSES(IINPUT,IPROD+ 8+INC)) ITEMP(3,K)=H IF(LFUSES(IINWT,IPROD+16+INC)) ITEMP(Z,K)=H IF(LFUSES(IINPUT,IPROD+24+INC)) ITEMP(l,K)=H CONTINUE

URITE(6,30) ITEMP FORMAT(' ' ,8( 'Bf ,4A1, 'F '1)

- 63 -

Page 70: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

URITE(6,lO) RETURN

END C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C

SUBROUTINE TUEEK(ITYPE,IOT,LFUSES) CHARACTER IOT,L,C

LOGICAL LFUSES(32,64)

DATA L/'L'/,C/'C'/ IF(ITYPE.CE.4) COTO 20 DO 10 IPROD=l,64

LFUSES(15,IPROD)=.TRUE. LFUSES(16,IPROD)=.TRUE. LFUSES(19,IPROD)=.TRUE. LFUSES(20,IPROD)=.TRUE. IF(ITYPE.CE.3) COTO 10 LFUSES(ll,IPROD)=.TRUE. LFUSES(12,IPROD)=.TRUE. LFUSES(23,IPROD)=.TRUE. LFUSES(24,IPROD)=.TRUE. IF(ITYPE.GE.2) COTO 10 LFUSES( 7,1PROD)=.TRUE. LFUSES( 8,1PROD)=.TRUE.

LFUSES(27,IPROD)=.TRUE. LFUSES(28,IPRDD)=.TRUE.

10 CONTINUE DO 18 IINWT=7,28

DO 12 IPROD=1,57,8 LFUSES(IIWPUTlIPROD+4)=.FALSE.

LFUSES(IINPUT,IPROD+5)=.FALSE.

LFUSES(IINPUT,IPROD+6)=.FALSE.

12 LFUSES(IINPUT,IPROD+7)=.FALSE. IF(ITYPE.GE.3) COTO 18 DO 14 IPROD=17,41,8

LFUSES(IINPUT,IPROD+2)=.FALSE. 14 LFUSES(IINPUTIIPROD+3)=.FALSE.

IF(ITYPE.CE.2) COTO 18 DO 16 IPR00=1,57,8

LFUSES(IINPUT,IPROD+2)=.FALSE. 16 LFUSES(IINPUT,IPROD+3)=.FALSE. 18 CONTINUE 20 IF( (ITYPE.EP.1) .OR. ((ITYPE.EP.4).AND.(IOT.EQ.L)) ) GOTO 100

DO 99 IINWT=1,32

DO 30 1PRW=1,8

LFUSES(IINPUT,IPROD+ O)= (1OT.NE.L) 30 IF(I0T.NE.C) LFUSES(IINPUT,IPROD+56)= (1OT.NE.L)

IF(ITYPE.LE.2) GOTO 99 DO 40 IPROD=1,8

LFUSES(IINPUT,IPROD+ 8)= (1OT.NE.L) 40 IF(I0T.NE.C) LFUSES(IINPUT,IPROD+18)= (1OT.NE.L)

IF(ITYPE.LE.3) COTO 99 DO 50 IPROD=1,8

LFUSES(IINPUT,IPROD+16)= (I0T.NE.L)

- 6 4 -

Page 71: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

50 IF(I0T.NE.C) LFUSES(IINPUT,IPR00+40)= (1OT.NE.L) 99 CONTINUE 100 RETURN

END C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C

SUBROUTINE SLIP(LFUSES,I88PRO,INOAI,IOT,INOO,IBLOU) LOGICAL LFUSES(32,64) CHARACTER IOT,R DATA R/'R1/ I F ( (INOAI.LT.16) .OR. (IN00.LT.4) .OR.

C ( (IOT.EP.R).AND.(INOO.EQ.8) ) .OR. C ( (188PRO.GE. 9).AND.(I88PRO.LE.49).AND.(INOO.EP.6) ) .OR. C ( (I88PRO.GE.17).AND.(I88PRO.LE.41).AND.(INOO.EP.4) ) ) RETURN DO 10 1=1,32 IBLOU = IBLOU + 1

10 LFUSES(I,I88PRO)=.TRUE. 188PRO I88PRO + 1 RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C

SUBROUTINE UAP(LFUSES) LOGICAL LFUSES(32.64) INTEGER ITABLE(32) CHARACTER X,D,ILINE(16) DATA X/'X'/,D/l-l/,

C ITABLE/17,16,19,18,21,20,23,22,25,24,27,26,29,28,31,30, C 13,12,15,14, 9, 8,11,10, 5, 4, 7, 6, 1, O, 3, 2/ WRITE(6,lO)

10 FORMAT( ' INPUT',//, C C C

I 11 11 22 22 22 22 22 33',/,

1 1 1 1 1 1 I # / #

I 76 98 10 32 54 76 98 lo1,//,

C ' PROOUCT 32 54 98 10 54 76 10 32',/ )

I

I PROO=7 IDELTA = - 1 DO 50 I=1,2

DO 40 J=1,4 DO

20

21

22

30 K=1,4 DO 20 L=1,16

ILINE(L)=X IF( LFUSES(ITABLE(L)+l ,IPROO+l ) ) ILINE(L)=D

URITE(6,21) IPROO,ILINE FORMAT(' I,12,l ',8(2A1,' )

DO 22 L=1,16 ILINE(L)=X IF( LFUSES(ITABLE(L+16)+1 ,IPROD+1 1 1 ILINE(L)=D

URITE(6,21) IPR00,ILINE lPROO = IPROO + IDELTA DO 23 L=1,16

ILINE(L)=X

- 65 -

Page 72: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

23 IF( LFUSES(ITABLE(L+16)+1 ,IPROD+l ) ) ILINE(L)=D

URITE(6,21) IPROD,ILINE DO 24 L=1,16

ILINE(L)=X 24 I F ( LFUSES(ITABLE(L)+l ,IPROD+l ) ) ILINE(L)=D

URITE(6,Zl) IPROD,ILINE 30 IPROD = IPROD + IDELTA

URITE(6,29) 29 FORMAT(' ')

40 IPROD IPROD + 8*(1-IDELTA)

IPROD 32 SO ]DELTA= +I

URITE(6'29)

URlTE(6,29) RETURN END

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C SUBROUTINE FANTOM(ITYPE,IOUT,IPROD,I8PRO) INTEGER ITYPE,IPROD,IlPRO CHARACTER IOUT(64) ,X,IDASH,FX,F lDASH DATA X/'X'/,IDASH/"'/,FX/'O'/,FIDASH/'O'/

DO 10 1.1'32

IF( IWT(I).EQ.X ) IWT(II=FX 10 IF( IOUT(I).EQ.IDASH ) IOUT(I)=FIDASH

IF((ITYPE.EQ.4).AND.((IPROD.LE.24).0R.(IPROD.GE.41))) GOTO 100 IF((ITYPE.EP.3).AND.((IPROO.LE.16).0R.(IPROD.GE.45))) COTO 100 IF((ITYPE.EQ.2).AND.((IPROD.LE. 8).OR.(IPROD.GE.53))) COTO 100 IF((lTYPE.LE.3).AND.(IBPRO.GE. 5)) GOTO 100 IF((ITYPE.LE.2).AND.(IPROD.GE.l9).AND.(IPROD.LE.48).AND.

C (18PRO.GE.3)) GOTO 100 IF((ITYPE.EP.l).AND.(IBPRO.GE. 3 ) ) GOTO 100

DO 50 1=1,32

IF(((I.EP.15).0R.(I.EQ.16).0R.(I.EP.19).OR.(I.EQ.20)).AND. C (ITYPE.LE.3)) COTO 50

IF(( (I .EP . l l ) .~ . (I .EQ.12) .0R. (I .EQ.23) .~ . (I .E~.24)) .AND. C (ITYPE.LE.2)) GOTO 50

IF(((I.EQ. 7).0R.(I.EP. 8).OR.(I.EP.27).OR.(I.EQ.28)).AND. C (ITYPE.LE.1)) GOTO 50

IF(IOUT(I).EP.FX 1 IWT(I)=X IF(IWT(I).EP.FIDASH) IOUT(I)=IDASH

50 CONTINUE

100 RETURN END

C C********************************************************************

C

- 66 -

Page 73: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

4 . - COMO USAR EL PROGRAMADOR DE PALS.

- 67 -

Page 74: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

4. - COMO USAR EL PROGRAMADOR DE PALS

1.- Conectar el Programador de Pals a la línea de alimentación

de 120 VCA.

2.- Conectar el cable de interfaz, del Programador de Pals, al

puerto paralelo LPTl de la computadora (Puerto para la

impresora) . 3. - Con el Programador de Pals apagado, inserte el PAL a

programar en la base que está colocada en la esquina, de la

tarjeta principal, más cercana al cable de interfaz. En esa

posición existe una etiqueta que le indica hacia donde debe

quedar la pata 1 del Pal.

4. - Encienda la computadora y corra el programa PROGPAL, éste

le indicará cuando encender el circuito Programador de Pals.

Siga cuidadosamente las instrucciones para el encendido y

apagado del Programador de Pals, de lo contrario el

dispositivo a programar puede dañarse irremediablemente.

ADVERTENCIAS

Verifique que el interruptor PROG. esté apagado antes de

encender o apagar el Programador de Pals para no dañar el

dispositivo a programar.

Nunca inserte o remueva el PAL cuando esté encendido el

Programador de Pals.

- 68 -

Page 75: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

4.1.- PARA PROGRAMAR UN PAL

i) Consultar el capitulo 1 para elaborar el diseño.

ii) Crear el archivo FUNC.DAT como se explica en el capítulo 3

iii) Correr el programa PALASM y seleccionar la operación BHLF

para generar el archivo NSES.DAT en formato BHLF.

iv) Seguir los pasos 1,2 , 3 y 4 descritos al principio de este

Capítulo.

v) Correr el programa PROGPAL

Por ejemplo para programar un PAL16L8 fabricado por

National Semiconductor, ejecutaremos los pasos siguientes:

A:\>PROGPAL

Aparecerá en la pantalla la portada del programa, oprimir

cualquier tecla para continuar.

Después se presentará lo siguiente:

OPCIONES DISPONIBLES:

1) Programar PAL

2) Copiar PAL

3 ) Salir del programa

SELECCIONE OPCION (1-3) : 1

FABRICANTE DEL PAL:

1) National Semiconductor

2) Texas Instruments

SELECCIONE OPCION (1-2) : 1

- 69 -

Page 76: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

NUMERO DE PARTE DEL PAL:

1) PALlOH8, PAL12H6, PAL14H4, PAL16H2 PAL16C1

2) PAL12L6, PAL14L4, PAL16L2, PAL16L8, PAL16R8

PAL16R6, PALl6R4, PALlX4 PALl6A4

SELECCIONE OPCION (1-2): 2

Después el programa solicitará el nombre del archivo, en

formato BHLF, generado por el programa PALASM. Para este

ejemplo responderemos FUSES.DAT

Deme el nombre del archivo: FUSES.DAT

A continuación el programa presentará el mensaje:

Verifique que el interruptor PROG esté apagado y

Encienda el programador de PALS

Pulse <control> <y> para continuar

Después, aparecerá:

Encienda el interruptor PROG

Pulse <control> <y> para continuar

Si todo va bien, aparece:

Espere por favor... Estoy quemando fusibles.

- 70 -

Page 77: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Si todo salió bien, aparece:

Apague el interruptor PROG y después

Apague el PROGRAMADOR DE PALs

Pulse <control> <y> para continuar

Finalmente, nos salimos del programa

OPCIONES DISPONIBLES :

1) Programar PAL

2) Copiar PAL

3) Salir del programa

SELECCIONE OPCION (1-3): 3

Ahora, el PAL16L8 ya está programado y listo para trabajar.

NOTA: El programa hace, automáticamente, hasta cinco intentos

para quemar un fusible. Si no lo logra informa al usuario que

no tuvo éxito, especifica la posición del fusible y pregunta

si se desea continuar. Si la respuesta es afirmativa intenta

quemar un nuevo fusible. Si la respuesta es negativa, solicita

al usuario apagar el Programador de PALs y se sale del

programa.

- 71 -

Page 78: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

4.2.- PARA COPIAR UN PAL

Correr el programa PROGPAL

Por ejemplo para copiar la configuración de un PALl6R4

fabricado por National Semiconductor, que funciona como

decodificador, ejecutaremos los pasos siguientes:

A:\>PROGPAL

Aparecerá en la pantalla la portada del programa, oprimir

cualquier tecla para continuar.

Después se presentará lo siguiente:

OPCIONES DISPONIBLES:

1) Programar PAL

2) Copiar PAL

3) Salir del programa

SELECCIONE OPCION (1-3): 2

FABRICANTE DEL PAL:

1) National Semiconductor

2) Texas Instruments

SELECCIONE OPCION (1-2): 1

NUMERO DE PARTE DEL PAL:

1) PALlOH8, PAL12H6, PAL14H4, PAL16H2 PALl6C1

2) PAL12L6, PAL14L4, PALl6L2, PAL16L8, PAL16R8

PAL16R6, PALl6R4, PALlX4 PAL16A4

SELECCIONE OPCION (1-2): 2

- 72 -

Page 79: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Después el programa solicitará un nombre para el archivo que

será generado en formato BHLF. En este archivo se almacenará

la configuración del PAL. Para este ejemplo responderemos

DECODER.BHL

Deme un nombre para el archivo: DECODER.BHL

A continuación el programa presentará el mensaje:

Verifique que el interruptor PROG esté apagado y

Encienda el programador de PALS

Pulse <control> <y> para continuar

Después, aparecerá:

Encienda el interruptor PROG

Pulse <control> <y> para continuar

Si todo va bien, aparece:

Espere por favor... Estoy probando fusibles.

Si todo salió bien, aparece:

Apague el interruptor PROG y después

Apague el PROGRAMADOR DE PALS

Pulse <control> <y> para continuar

- 73 -

Page 80: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Finalmente, nos salimos del programa

OPCIONES DISPONIBLES:

1) Programar PAL

2 ) Copiar PAL

3 ) Salir del programa

SELECCIONE OPCION (1-3) : 3

AVISO IMPORTANTE

Si se propone realizar más de una operación con un mismo

PAL, por ejemplo:

Primero copiarlo para comprobar que no esté programado,

después programarlo, y finalmente, copiarlo para asegurarse

que la programación es la correcta. (Aunque esta última

operación no es realmente necesaria, puesto que el Programador

de Pals hace automáticamente una revisión de los fusibles al

estar programando al PAL).

Entonces, para realizar todas estas operaciones, no es

necesario apagar y encender el Programador de Pals como lo

indica el programa, sino que basta con encenderlo al iniciar

la sesión y apagarlo al terminar.

- 74 -

Page 81: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

5.- DISEÑO DEL CIRCUITO PROGRAMADOR DE PALS.

- 75 -

Page 82: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

5.1.- DEFINICION DEL PROBLEMA

Se necesita un circuito programador de PALs controlado por

una computadora, Printafom o Digitel, a través del puerto

paralelo LPTl de la impresora. La entrada será un archivo,

generado por el programa PALASM, que contenga la lista de los

fusibles que deberán quemarse en el PAL, así como el número de

parte del dispositivo a programar y el nombre del fabricante.

El circuito deberá tener la capacidad para copiar la

configuración de un dispositivo que no tenga quemado el

fusible de seguridad y la información obtenida deberá

almacenarla en un archivo en formato BHLF. El circuito

programará los PALs fabricados por National Semiconductor y

Texas Instruments, pero no programará el fusible de seguridad.

Se deberá usar un lenguaje de programación estructurado, el

Turbo C.

5.2.- ANALISIS DEL PROBLEMA

En los PALs los niveles de voltaje en las patas determina

si se está en modo de operación normal o en modo de

programación; por ejemplo, durante la operación normal, un PAL

requiere de niveles TTL (11011 = O. O a O. 8 V y I I l V 1 = 2.4 a 5.0

V). Cuando un nivel de voltaje más alto, denominado voltaje de

programación, se aplica a las patas apropiadas (11.75 V para

PALs de National Semiconductor y Monolithic Memories, 10.5 V

para PALs de Texas Instruments), el PAL se coloca en modo de

programación. Entonces cada pata de salida puede ser pulsada

al voltaje de programación durante 20 microsegundos

- 76 -

Page 83: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

aproximadamente, con un Itslew rateff que no exceda a

lOV/microsegundo, y no menor que lV/microsegundo. EL fusible

abierto deberá ser verificado para tener la seguridad de

haberlo programado correctamente.

Un aspecto crítico de este proyecto son las condiciones del

ciclo de trabajo en las especificaciones del PAL. Básicamente

el Vcc, pata 20 , no debe estar en VIHH por más de 60

microsegundos y con menos de un 20 porciento de ciclo de

trabajo (duty cycle) . Además, el pulso de programación en las patas de salida debe ser menor de 50 microsegundos y

nominalmente de 20 microsegundos de duración, con un llslew

rate" que no exceda a 10 V/microsegundo y no menor a 1

V/microsegundo.

- 77 -

Page 84: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

En esta discusión los siguientes términos representan :

L = VIL = lógico 0 = O V

H = VIH = lógico 1 = +5 V

Z = Alta impedancia = resist. de 4.7k a 5.0 Volts

HH = VIHH = voltaje de programación = 11.75 V o 10.5 V

SELECCION DE LINEA DE ENTRADA

Número de Identificación de la pata Línea de Entrada 1 7 ~ 1 6 ~ 1 5 ~ 1 4 ~ 1 3 ~ 1 2 ~ 1 1 ~ 1 0 ~ L / R O HH HH HH HH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH L H L H

HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH L H L H HH HH HH HH

HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH L H L H HH HH HH HH HH HH HH HH

HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH L H L H HH HH HH HH HH HH HH HH HH HH HH HH

HH- HH HH HH HH HH HH HH HH HH HH HH L H L H HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH

HH HH HH HH HH HH HH HH L H L H HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH

HH HH HH HH L H L H HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH

L H L H HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH HH

Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH Z z HH HH Z z HH HH z Z HH HH Z Z HH HH

- 78 -

Page 85: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

SELECCION DE LINEA PRODUCTO

Número Identificación de la pata de línea Producto 0 3 ~ 0 2 ~ 0 1 ~ 0 0 ~ A 2 ~ A l ~ A O O, 32 Z Z n

1; 33 2, 34 3, 35

5, 37

7, 39 a, 40

4, 36

6, 38

9, 41 10, 42 11, 43 12, 44 13, 45 14, 46 15, 47 16, 48 17, 49

19, 51 20, 52 21, 53 22, 54 23, 55 24, 56 25, 57 26, 58 27, 59 28, 60 29, 61 30, 62 31, 63

18, 50

Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z HH HH HH HH HH HH HH HH

Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z HH HH HH HH HH HH HH HH Z Z Z Z Z Z Z Z

Z Z Z Z Z Z Z Z HH HH HH HH HH HH HH HH Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z

HH HH HH HH HH HH HH HH Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z

El número de fusible se calcula

Z Z Z Z HH HH HH HH Z Z Z Z HH HH HH HH Z Z Z Z HH HH HH HH Z Z Z Z HH HH HH HH

Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH Z Z HH HH

L

HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH Z HH

con la ecuación:

núm-fus = (líneagroducto * 32) + línea-entrada Analizando el número de fusible se puede calcular todas las

direcciones necesarias para programar ese fusible. Las líneas

de entrada están organizadas en grupos de cuatro, esto es:

IO = (0,1,2,3), I1 = (4,5,6,7), I2 = {8,9,10,11),

- 79 -

Page 86: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

I 3 = { 1 2 , 1 3 , 1 4 , 1 5 } I 4 = { 1 6 , 1 7 , 1 8 , 1 9 } , I5 = ( 2 0 , 2 1 , 2 2 , 2 3 ) ,

I 6 = ( 2 4 , 2 5 , 2 6 , 2 7 } , I 7 = ( 2 8 , 2 9 , 3 0 , 3 1 } .

Las dos líneas de entrada con los números más bajos de cada

grupo vienen del lado izquierdo del diagrama del PAL, mientras

que las dos líneas de entrada con los números más altos de

cada grupo vienen del lado derecho del diagrama.

La figura 5 . 1 muestra las diferentes configuraciones para la

programación de PALS de 2 0 patas. El PAL se divide en dos

mitades: Las líneas producto O a 3 1 están en la primera mitad,

y las líneas producto 32 a 63 están en la segunda mitad.

Dependiendo de la mitad que esté tratando de programar, el

significado de las patas OD y CLOCK se intercambia, OD está en

la pata 1 para la primera mitad del arreglo y CLOCK está en la

pata 1 para la segunda mitad. Las posiciones de las patas Ox,

L/R, Ax también cambia.

El 16L8 tiene 2048 fusibles, 32 líneas de entrada y 64

líneas producto. De mamera que, si (num-fus < 2048 /2 ) entonces

el fusible está en la primera mitad del PAL (líneas producto

0-31) : de otro modo está en la segunda mitad (líneas producto

3 2 - 6 3 ) . Se selecciona una línea de entrada colocando un valor

de L o H en la pata Ix apropiada donde ( I O <= Ix <= 17) . Un valor lógico L en la pata Ix selecciona un número de línea de

entrada par y un valor H en la pata Ix selecciona un número de

línea de entrada impar, un valor HH en una pata Ix indica que

ese grupo de cuatro líneas de entrada no está seleccionado. Un

valor lógico de Z en la pata L/R selecciona las líneas de

- 8 0 -

Page 87: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

P R O D U C T O S (3 Q 3 1 ”

P R O D U C T O S 32 EI 6 3 ”

OD VGC 1 1 L f l I

118 j 19 I 1 18 I I

IT5/ I3 -! 16

I

01/

- I I5 l-7 15 -1 14 1

I

I6

T;;i I7 -1

02

03

OD I I I

I-+ I7 1 2 i

d 2

I @ND

F I G U R F I 5 . 1 . - C O N F I G U R Q C I O N P F I R Q P R O G R O M F I C I O N

D E PFILs D E 2(3 P R T Q S .

- 8 1 -

Page 88: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

entradas con los números más bajos de un grupo Ix, mientras

que un valor de HH en la pata L/R selecciona las líneas de

entradas con los números más altos.

La polaridad de la señal de entrada se determinará por la

variable línea-entrada, si la variable línea-entrada es par,

la entrada es la no inversora, y se deberá colocar un valor de

L en la pata Ix apropiada. Si línea-entrada no es par, la

entrada es la inversora y se deberá colocar un valor de H en

la pata Ix apropiada. Los términos producto se agrupan en ocho

para cada salida.

Para encontrar la pata de salida Ox que corresponde a un

fusible, calcule: Ox = num-fus / (32 * 8 )

Para encontrar la dirección (AO,Al, o A2) del término producto

de esa salida, calcule: (air = num-fus MODULO 8 ) .

Cada bit O de la dirección de tres bits se coloca a Z. Cada

bit 1 de la dirección se coloca a HH.

ALGORITMO DE PROGRAMACION

El procedimiento para abrir un fusible es el siguiente:

Colocar el voltaje VIHH de acuerdo al fabricante del PAL,

10.75 V para Texas Instruments y 11.75 V para National

Semiconductor.

Colocar los valores apropiados en las entradas IO-I7,AO,Al,A2

y L/R; manteniendo a OD como antes.

Enviar un pulso de programación a la pata de salida

seleccionada. Se puede verificar el bit pulsando la pata CLOCK

de bajo a alto y luego hacia abajo de nuevo.

- 82 -

Page 89: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

Después de haber programado al fusible hay que colocar todas

las patas del PAL al valor Z excepto la pata OD a VIHH y la

pata CLOCK a VIL.

Finalmente habrá que seleccionar al siguiente fusible,

cargando una nueva línea de entrada y la dirección como antes,

o colocar a todas las patas del PAL al valor lógico Z para

salir del modo de programación/verificación.

Una operación de verificación se lleva a cabo ejecutando l o s

pasos anteriores excepto que no debe enviarse el pulso de

programación para abrir el fusible.

5.3.- ESPECIFICACION DE LA SOLUCION

De la definición del problema se sabe que el Programador de

Pals será controlado por una computadora, razón por la cual se

usa un circuito de interfaz programable para periféricos, el

8255, para controlar el flujo de los datos de la PC hacia el

PAL y viceversa. Como puede verse en la figura 5.2, para que

el 8255, U19, se vaya a un estado inicial conocido, se ha

colocado un circuito que genere un pulso de reset ya sea por

orden de la computadora o durante el encendido del Programador

de Pals, ver U24B, U22d, RlOl y C101.

Unicamente se usan cuatro líneas de entrada de datos hacia

la computadora y se utiliza al circuito U21 74LS157 para poder

leer los cuatro bits de salida de datos del PAL. El circuito

U21 seleccionará las patas 12, 13, 14, y 15 del PAL, para

verificar los fusibles con direcciones entre O y 1023, y

- 83 -

Page 90: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

seleccionará las patas 16, 17, 18 y 19, para verificar los

fusibles con direcciones entre 1024 y 2047. A las patas de

salida del PAL se les aplican 11 volts, aproximadamente,

durante la programación del dispositivo y para evitar que ese

voltaje dañe al circuito U21, se utilizan los diodos Dl, D2,

D3, D4, D5, D6, D7 y D8 como recortadores de voltaje.

Se usan cinco circuitos 74LS374 (latchs U8, U9, U10 y U11)

para retener la dirección del fusible que se va a programar o

verificar. El circuito U20 74LS138 se usa para aplicar el

pulso de reloj, que provocará la carga del dato, en uno de

esos cinco latchs. Como puede verse en las figuras 5.3 y 5.4,

a las salidas de los circuitos de retención, latchs, se han

colocado buffers 7407 de colector abierto para poder trabajar

con los 11 volts, aproximadamente, que se utilizan para

direccionar los fusibles del PAL. Los transistores PNP 2N2905,

desde Q1 hasta 418, se usan para poder suministrar las

corrientes y los voltajes que se requieren para la

programación y verificación del PAL

En cada transistor conectado a una pata de salida del PAL,

hay dos buffers 7407 cuyas salidas están conectadas en

paralelo que controlan su estado de corte y conducción, uno de

los buffers se usa para seleccionar un bit de la dirección de

un fusible, mientras que el otro se usa para aplicar un pulso

de programación a una pata de salida del PAL; sin embargo,

ambas funciones son mutuamente excluyentes, es decir, mientras

uno tenga su entrada en un nivel alto, el otro la tendrá en un

nivel bajo. Por otra parte, cada transistor tiene conectado en

- 84 -

Page 91: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

su colector la salida de un buffer 7407 y una resistencia de

4.7k a +5 volts, esto sirve para poder aplicar a cualquier

pata del PAL O, +5 o +11 volts.

Puede verse en la figura 5.4 que los circuitos NE555, U16,

U17 y U18 están configurados como multivibradores monostables.

U16 genera un pulso de 50 microsegundos que se utiliza para

colocar al PAL en modo de programación, U18 genera un pulso de

20 microsegundos que se aplicará a alguna de las patas de

salida del PAL a través del circuito U15 74LS138. El circuito

U17 genera un pulso de 15 microsegundos para centrar al pulso

de 20 microsegundos con respecto al de 50 microsegundos.

Para generar los voltajes de programación adecuados para

los PALS fabricados por National Semiconductor o Texas

instruments se usan los circuitos U25, U7E, U24A y U24B de la

figura 5.5. Cuando la salida del circuito U7E esté en un nivel

llbajoll, se tendrán 10.5 volts en la salida de U25 LM317, y

cuanto la salida de U7E esté en un nivel llaltoll, se tendrán

11.75 volts en la salida de U25. Este voltaje va al emisor de

los transistores Q1 hasta 418 y se le denomina VIHH.

Finalmente, para aplicar a la pata 20 del PAL el pulso de

programación de 11 volts, aproximadamente, o el voltaje normal

de alimentación de +5 volts se usan los circuitos U23, U14E,

U14F, U22C, U22D y U22C de la figura 5.2. Cuando en U22C pata

8 hay un rlO'l y se le aplica un pulso de 50 microsegundos al

circuito U22A pata 2, aparece en U23 un pulso de 11.75 volts

que dura 50 microsegundos, y cuando en U22C pata 8 hay un 11111

- 85 -

Page 92: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

y se le aplica el pulso a U22A, aparece en U23 un pulso de

10.5 volts con la misma duración que el anterior.

Como información adicional para entender el programa

PROGPAL.C, se listan a continuación las patas del puerto

paralelo LPTl que se usan en el Programador de PALS, además se

especifica si el bit pasa por un inversor colocado

internamente en la computadora (Ver figura 5.7).

DIRECCION OX3BE (BIDIRECCIONAL) USADO PARA CONTROL PIN BIT PROGRAMADOR PALS 1 DO INV."""""" m' "- 8255 14 Dl IW."""""" 8255 16 D2 NO Im."""""-- RESET - 8255 17 D3 IW."""""" 8255

A0 ---- Al ----

- 86 -

Page 93: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

DIRECTORIO DEL DISCO PROGPAL/PALASM

Volume in drive A has no label Directory of A:\

COMMAND COM 25276 MODE COM 15440 ATT BGI 6269 CGA BGI 6253 EGAVGA BGI 5363 HERC BGI 6125 IBM8514 BGI 6665 PC3270 BGI 6029 TURBO COM 39552 PRGPAL EXE 50416 PROGPAL BAT 85 TRIP CHR 7241 CONTBD FUN 1503 CONTBD PLT 5289 PALASM EXE 53264 HEXDISP FUN 2039 HEXDISP PLT 5289 HEXDISP BHL 3877 BASGATES FUN 263 BASGATES PLT 5353 BASGATES BHL 3877 CONTBD BHL 3877

22 File ( S )

1/01/88 O: O 0 1/01/88 O: O 0

11/05/89 2 : O 1 11/05/89 2: O 1 11/05/89 2: O1 11/05/89 2: O 1 11/05/89 2 : O 1 11/05/89 2: O1 20/01/80 4 : 22

1/09/90 18:58 11/05/89 2: O 1 8/09/90 20: 26 8/09/90 20:29 14/08/90 13 : 02 13/08/90 22 : 21 13/08/90 22:23 13/08/90 22: 31 13/04/90 22 : 37 14/08/90 14:07 14/08/90 14: 15 8/09/90 20:31

35840 bytes free

1/09/90 21:02

- 87 -

Page 94: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1 f

I 1

I I I I I J

l l l l l l l Y

I t

Page 95: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

I

I;

I

Page 96: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

I

r I c

r

L

.

Page 97: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

w wr 1 k

Page 98: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1

93 - N c X m

Page 99: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

5 . 4 . - LISTADO DEL PROGRAMA PROGPAL EN LENGUAJE TURBO C

- 9 4 -

Page 100: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

.................................................................... /*** ***/ /*** UNIVERSIDAD AUTONWA METROPOLITANA IZTAPALAPA ***/ /*** ***/ /*** PROYECTO DE INGENIERIA ELECTRONICA ***/ /*** ***/ /*** /*** /*** /*** /*** /*** /*** /***

PROGRAMA: PR0GPAL.C

NAME2 MARTINEZ ARMANDO

MATRICULA 84225276

18/AGO/90

***/ ***/ ***/ ***/ ***/ ***/ ***/ ***/

....................................................................

/* Este programa controla l a operaci6n del circuito programador de PALS, envihndole señales a traves del puerto paralelo LPTl de La PC. Para l a programacih de un PAL, lee un archivo en formato BHLF creado por e l programa PALASH-EXE (En base a funciones booleanas). El copiado de un PAL se l leva a cabo creando un

archivo en formato BHLF. */

.......................................................................

#include <string.h> #include *stdl ib.h>

#include *conio.h> #include *stdio.h* #include *dos.h>

#define #define

#define #define

#define #define #define

#define #define #define

BUS-DATOS Ox3BC

ENTRADA Ox3BD CONTROL Ox3BE

XOR

z 1 H 1 L 2 HH 3 SEGUIR 0x19 ARCHFIN '\032'

h

/* Bus de &tos de puerto LPTl */ /* Entrada de &tos desde puerto LPTl */ /* Salidas de control del puerto LPTl */ /* Func ih o r exc lus iva */ /* +5 vo l ts a traves de r e s i s t . 4.7k */ /* +5 vo l ts */ /* o vo l ts */ /* 11.75 volts para NSC, 10.5 volts para T I */ /* P u l s a r * c t r b *p para continuar */ /* Final del archivo */

.......................................................................

- 95 -

Page 101: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/*"""""""""""""- prgpall.c _""""""""""""" */

#include lldefn.hll char fusible120491; /* Los fusibles que van a abrirse estaren marcados

extern unsigned char pa; /* Contiene dato de fabricante del pal */ .......................................................................

con une H */

main0

c p o r t a d a 0 ; while(1) C

switch (menu-selec()) C case 1 : p r o g r a m a r p l 0 ; break; case 2: c o p i a r g a l 0 ; break; case 3: return ( O ) ;

1 >

> ..................................................................... /* Para seleccionar una o p e r a c i h de progremacidn o copiado */

i n t menu-selec(void)

c char ~1101; i n t c ;

c l r s c r 0 ; puts ( I1\n PROGRAMADOR DE PALS \nI1); puts ( ll\nOPCIONES DISPONIBLES: \n1I); puts ( II 1 ) Programar PAL"); puts ( II 2) Copiar PALn1); puts ( 11 3) S a l i r d e l programa lo);

d o c pr intf("\n SELECCIONE OPCION (1-3): "1; g e t s W ; c = a t o i ( s ) ;

> h i l e (c<l I I 0 3 ) ;

c l r s c r 0 ; return (c) ;

1

..................................................................... /* Presenta un menú para seleccionar el fabricante del PAL. */ /* La variable g lobal pa almacena e l contenido del 8255 puerto A */

selec-fabric(char *oper)

c char S 1103 ; i n t c ;

- 96 -

Page 102: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

c l r s c r o ; pr i n t f ("\n %s\n\n", oper); puts ( lo\nFABRICANTE DEL PAL: \n"); puts ( 1 ) National Semiconductor1a);

puts ( 2) Texas Instrunentslt);

d o c printf(*'\n SELECCIONE OPCION (1-2): ");

getscs); c = ato i(s1;

1 whi le (c*l I I CQ);

c l r s c t - 0 ; i f ( c == 1 )

pa = OxBF; /* Para PALs marca National Semiconductor */ e l s e pa = Ox7F; /* Para PALs marca Texas Instruments */

1 ..................................................................... /* Para se lecc ionar e l t ipo de sa l ida de l pa l . Cuando se quema un

f u s i b l e en un p a l con s a l i d a i n v e r t i d a , l a v e r i f i c a c i 6 n i n d i c a que l a sa l ida es t6 en un nive l bajo L . S i l a s a l i d a no t iene

inversor, La v e r i f i c a c i h i n d i c a que l a sa l ida es t6 en un n i v e l

a l t o H */

int tipo-salida(char *oper)

c char S 11 01 ; i n t c ;

c l r s c r o ; pr in t f ( "\n %s\n\n", oper); puts ( lo\nNUnERO DE PARTE DEL PAL: \not); puts ( 1 ) PALlOH8, PAL12H6, PAL14H4, PAL16H2, PAL16Cl\nt1);

puts ( It 2) PAL12L6, PAL14L4, PAL16L2, PALl6L8, PALl6R8 ");

puts ( PAL16R6, PAL16R4, PAL16X4, PALl6A4");

d o c pr in t f (*\n SELECCIONE OPClON (1-2): It);

gets(s) ; c = stoics);

1 h i l e (c* l I I 02);

c l r s c r o ; i f ( c == 2)

return(L); /* Salida con inversor */ else return(H); /* Sal ida s in inversor */

1 ..................................................................... /* Lee un archivo en formato BHLF y graba su contenido en un p a l ,

las loca l idades donde hay una H indican que e l f u s i b l e del pal debe quemarse */

p r o g r a m a r g a l 0 c

FILE *arch-fte, *fopen(); int sa l ida-t ipo; char arch-fusCl51;

- 97 -

Page 103: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

selec-fabric(Il PROCRAMACION DE PAL"); salida-tipo = tipo-salida(Il PROGRAMACIOU DE PAL");

puts("\n PROCRAMACION DE PAL la);

printf (I@\n\n Deme e l nombre d e l archivo: II);

gets(arch-fus); i f ((arch-fte = fopen(arch-fus, llrll)) == NULL) C

fpr int f (stderr ," \n ERROR, No puedo abrir archivo: %S \n *l,arch-fus); exit(1);

> lee-arch(arch-fte); i n i c ia l i za ( ) ; qwma-fusibles(salida-tipo); apegargrogpal( 1;

> ..................................................................... /* Guarda en un archivo en formato BHLF e l contenido de un pal */

c o p i a r g e l 0 c

FILE *fopen(), *archgel ; int salida-tipo; char copiat151; /* Contiene e l nombre del archivo

con e l estado de los fus ib les de l pal */

selec-fabric(oo COPIAR PAL");

salida-tipo = tipo-salida(88 COPIAR PAL"); puts(#*\n COPIAR PAL #I);

printf("\n Deme un nombre para e l archivo: );

gets(copia1; i f ( ( a r c h g e l = fopen(copia, W a ) ) == NULL) <:

fp r in t fcs tder r , "\n ERROR, No puedo a b r i r archivo: %S \n8O,copia); exit(1);

> in ic ia l i za( ) ; revisa-fusibles(sa1ida-tipo); formato-bhlf(archga1);

apagargrogpa 1 ( 1; > ......................................................................

/* Aquf se lee un archivo en formato BHLF y se indica con una H

e l n h r o de fus ib le que debertí abr i rse en un arreglo de 2049 caracteres denominado fusible[ ] */

lee-arch(F1LE *arch-fte) c

int n, /* Separa a l archivo en dos mitades, l a primera mitad corresponde a las lfneas producto 0-31, l a segunda m i t a d corresponde a l as lfneas producto 32-64 */

i, /* Sirve para contar 8 grupos de cuatro lfneas del archivo */ j , /* Sirve para contar hasta cuatro lfneas de archivo */ k, /* Sirve para contar hasta ocho palabras BHLF por cada

l ínea de archivo */

- 98 -

Page 104: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

m, /* Sirve para contar hasta 4 caracteres H o L por cada palabra */

l fneagroducto, /* Contiene minero de línea producto */ linea-entrada, /* Contiene minero de l fnea de entrada */ nun-fusible; /* Contiene núnero de fus ib le */

int c ta - l in = O; /* Cuenta las lfneas de archivo */ char buffert801; /* contiene a l a última lfnea de archivo lefda */

/* Se i n i c i a l i z a n todos los fusibles con una L para indicar que no deben abrirse, una H indica que e l f u s i b l e deber6 abr i rse */

fusibletnun-fusible1 = 'L'; for (nun-fusible = O ; nun-fusible < 2048; nun-fusible++)

fo r (n=O; ng2; n++) /* Separa a l archivo en dos mitades */ fo r (i=O; ig8; i++) /* Cuenta 8 grupos de 4 líneas de arch. */

fgets (buffer, 80, arch-fte); /* Lee l fnea de arch. */ cta-1 in++; fo r (k=O; k<8; k++) /* Cta. 8 palabras BHLF por l fnea */

fo r (11~1; m5; m++) /* Cta. 4 caracteres H o L */

f o r ( j=O; j<4; j++) C /* Cuenta 4 lfneas de arch. */

i f ((buffer17*k+l l == 'B') 8& (buffer[7*k + 61 == ' F f ) ) C

i f ( b u f f e r t p k + 1 + ml == 'H' ) C l ineagrcducto = (4-m)*8 + i + 32*n; linea-entrada = 8* j + k; nun-fusible = ( l ineagroducto * 32) + linea-entrada; fusibletnun-fusible] = 'tif;

1 else i f (bu f fe r1Fk + 1 + ml != 'L') C

printf(81\nError: se esperaba L o H en archivo.Il "Lfnea producto %d lfnea entrada xd \n", (4-m)*8 + i + 32*n, 8* j + k);

exit(1); 1

1 else C printf(I l\nError: Faltan o están mal colocados 1 0 s ~ ~

M caracteres B y F en la l fnea de archivo %d \n", cta-1 in);

exit(1); 1

1 close(arch-fte);

1 ....................................................................... /* Almacene e l contenido del pal que se quiera copiar en un archivo

con formato BHLF */

- 99 -

Page 105: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

formato-bhlf(F1LE *archga l ) C

/* char fusible[] ; global */ int i, j, k, m, n, inc, prod, input;

char tempt51 C91;

fprintf(archgal, la \n \n \n \nlI);

for (i=l; iq34; i+=32) C inc = i - 1; for (prod =O; prod <8; prod++) C

f o r ( j = l ; j<26; j += 8) C for (k=l ; k<9; k++) C

input = j+k-2; temp[ll [kl = 'L'; templ21 [k l = 'L ' ; temp131 [k l = 'L'; temp141 [k l = 'L ' ; if (fusible[ input + (prod+O+inc)*321 == ' H I )

tempL41 [k l = 'Ií,;

temp131 Ckl = 'H ' ;

tempC21 [k l = 'H';

temp[ll [kl = 'HI;

i f ( fusible[ input + (prod+8+inc)*321 == 'H')

if (fusiblet input + (prod+l6+inc)*321 == ' H I )

if (fusible[ input + (prod+24+inc)*321 == ' H I )

1 f o r (ml; w9; w+)

fpr int f (archgal I1 ' B%c%c%c%cF",tenpCll [m1 ,temp[ZI Iml, temp[31 [m1 ,temp141 Iml);

f p r i n t f ( a r c h p 1 , " \n"); 1

1 1 fpr int f (archga1," \n \n

fp r in t f (a rchga1, l%cxc", ARCHFIN);

fclose(archga1);

(I \n \n");

1 .......................................................................

. \no#

. \n"

- 100 -

Page 106: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/*"""""""""""""" prgpaL2.c """"""""""""" */

%include Iadefn.h" extern char fusible[];

. ...................................................................... /*

Esta funci6n regresa un núnero de entrada i x del PAL y e l v a l o r del v o l t a j e que debe aplicarse a esa entrada. i 1x1 agrupa a 4 líneas de entrada, donde: i o = C0,1,2,31; il = C4,5,6,7); i 2 = C8,9,10,111; i 3 = c12,13,14,15); i 4 = C16,17,18,191; i 5 = C20,21,22,231; i 6 = C24,25,26,271; i 7 = C28,29,30,311; Un va lor HH en i x indica que ese grupo de 4 líneas de entrada no está seleccionado. Un valor L indica que se t r a t a de una lfnea de entrada par. Un valor H indica que se t ra ta de una lfnea de entrada inpar. */

int selec-entradacint nun-fus, int *valor) c

int ix, linea-entrada;

1 i nee-entrada = nun-f us X 32; i x = linea-entrada / 4; /* Calcula e l ruin. de grupo */ /* Entrada i x <- L o H, las demgs <- HH */ i f ((linea-entrada X 2) == O)

else *valor = H; /* Lfnea de entrada impar */ return( ix);

*valor = L; /* Lfnea de entrada par */

1 ....................................................................... /* Regresa un valor 2 s i las l fneas de entrada seleccionadas tienen

rnjmeros bajos o regresa un valor HH s i t i enen rnjmeros a l tos */

int selec-lr( int nun-fus) c

int lr, linea-entrada;

1 inea-entrada = nun-fus X 32; i f ((linea-entrada X 4) < 2)

lr = 2; /* selecciona líneas de entrada con núneros bajos */ e lse l r = HH; /* selecciona lfneas de entrada con mineros a l tos */ returnclr);

1 ....................................................................... /* Regresa un minero de sa l ida ox del PAL. ox agrupa a 8

líneas producto, donde: 00 = (0, 1 , , , 7 ) o C32,33,, ,391; 01 = C8,9,, ,151 o C40,41,, ,47); 02 = C16,17,,,231 o C48,49,,,551; o3 = C24,25,,,311 o C56,57,,,63); Un va lor HH en ox indica que ese grupo de 8 sal idas est6 seleccionado, un valor Z indica que no l o est6 */

- 101 -

Page 107: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

int selec-salida(int nun-fus) c

int ox, l ineagroducto;

l ineagroducto = nun-fus / 32; /* La sa l ida ox <- HH, las demás salidas <- 2 */ i f ( l ineagroducto > 31)

else ox = l ineagroducto / 8; returncox);

ox = ( l ineagroducto - 32) / 8;

1 ....................................................................... /* Regresa un minero entre O y 8, este rximero deber6 ser convertido

a binario, donde aparezca un b i t O coloca un valor 2 y donde aparezca un b i t 1 coloca un valor HH */

int selec-dir(int Mm-fus) c

in t dir, l ineagroducto;

l ineagroducto = nun-fus / 32; d i r = l ineagroducto X 8; return(dir1;

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* En e l d a t o l se coloca a 1 e l b i t correspondiente a l a entrada ix,

los demás b i t s se ponen a O, esto provoca que l a entrada i x se vaya a un valor L o H (seleccionado 'con e l dato2). mientras que las entradas se van a HH.

En e l dato2 se coloca a O e l b i t correspondiente a l a entrada i x donde valor sea L. los demás b i t s se ponen a 1. */

envia-ix(int nun-fus) c

int ix, valor; unsigned char datol, dato2;

i x = selec-entrada(nun-fus, &valor); su i tch( ix ) C

case O : datol = 0x01; break; case 1 : datol = 0x02; break; case 2 : datol = 0x04; break; case 3 : datol = 0x08; break; case 4 : datol = 0x10; break; case 5 : datol = 0x20; break; case 6 : datol = 0x40; break; case 7 : dato l = 0x80; break;

1 /* Coloca e l d a t o l en e l puerto B del 8255 */ /* Envfa e l d a t o l a las patas 2-9 del PAL */ /* Esto pone a todas las entradas a HH excepto a i X */ enviar-datocdatol, O ) ;

- 102 -

Page 108: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

i f (valor != L) d a t d = OxOFF;

else switch(ix) C case O : d a t d = OxOFE; break; case 1 : dato2 = OxOFD; break; case 2 : d a t d = OxOFB; break; case 3 : dato2 = OxOF7; break; case 4 : dato2 = OxOEF; break; case 5 : dato2 = OxODF; break; case 6 : dato2 = OxOBF; break; case 7 : dato2 = OxO7F; break;

1 /* Coloca e l dato2 en e l puerto B del 8255 */ /* Envía e l dato2 a las patas 2-9 del PAL */ /* Esto pondr6 a l a entrada i x en L o H */ enviar-dato(dato2, 1);

> ....................................................................... /* Aplica los vo l ta jes apropiados para e l rwinero de fus ib le que se debe

abr i r . Dado que e l minero de f us ib le es menor que 1024 l a configura- c i6n de las patas del pal es l a siguiente: pata 19 = O0 bit7-dato pata 15 = A0 bit3-dato pata 18 = O1 bit6-dato pata 14 = A l bit2-dato pata 17 = 02 bit5-dato pata 13 = A2 b i t l -da to pata 16 = 03 bit4-dato pata 12 = L/R bit0-dato */

envia-ox-ax-lr-mitadl(int nun-fus)

C int ax, lr; unsigned char dato2;

ax = selec-dir(nm-fus); switch(ax) C

case O : dato2 = OxFF; break; case 1 : dato2 = OxF7; break; case 2 : dato2 = OxFB; break; case 3 : dato2 = OxF3; break; case 4 : dato2 = OxFD; break; case 5 : dato2 = OxF5; break; case 6 : dato2 = OxF9; break; case 7 : dato2 = OxF1; break;

1

/* Se forma e l b y t e que se enviar6 a l p a l mediante una operac ih AND entre Los datos obtenidos */

lr = selec-lr(nun-fus); i f ( 1 r == HH)

dato2 &= OxOFE; /* Envía valor HH a l a pata L/r del PAL */

/* Coloca e l dato2 en e l puerto B del 8255 */ /* Envía e l dato2 a las patas 12-19 del PAL */ enviar-dato(dato2, 3); activa-LS374sO;

- 1 0 3 -

Page 109: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

........................................................................ /* Aplica un pulso de 20 microseg. a l a pata ox del pa l con l a f i na l i dad

de a b r i r un fusible, d e d s envfa un pulso de 50 microseg. a l Vcc */

abrir-fus-mitadl(int nun-fus) c

int ox;

ox = selec-salida(nun-fus); pulso-2OMS(7 - ox); /* Aplica pulso de p r o g r m c i h en pata ox */

> .......................................................................... /* Aplica los vo l ta jes apropiados para e l rwinero de fus ib le que se debe

abr i r . Dado que e l núnero de fus ib le es mayor que 1023 l a con f igu rac ih de las patas del pal es l a siguiente: pata 19 = L/R bit7-dato pata 15 = O0 bit3-dato pata 18 = A0 bit6-dato pata 14 = O1 bit2-dato pata 17 = A l bit5-dato pata 13 = 02 bi t l -dato pata 16 = A2 bit4-dato pata 12 = 03 bit0-dato */

envia_ox_ax_lr_mitad2(int nun-fus) c

int ax, lr; unsigned char dat02;

ax selec-dir(nun-fus); suitch(ax) C

case O : dato2 = OxFF; break; case 1 : dato2 = OxBF; break; case 2 : dato2 = OxDF; break; case 3 : dato2 = Ox9F; break; case 4 : dato2 = OxEF; break; case 5 : dato2 = OxAF; break; case 6 : dato2 = OxCF; break; case 7 : dato2 = Ox8F; break;

>

/* Se forma e l b y t e que se enviar6 al pa l mediante una

l r = selec-lr(nun-fus); i f ( 1 r == H H )

o p e r a c i h AND entre los datos obtenidos */

dato2 &= Ox7F; /* Envfa valor HH a l a pata l/r del PAL */ /* Coloca e l dato2 en e l puerto 6 del 8255 */ /* Envfa e l dato2 a las patas 12-19 del PAL */ enviar-dato(dato2, 3); activa-LS374sO;

> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Aplica un pulso de 20 microseg. a l a pata ox del pal con l a f i na l i dad

de a b r i r un fusible, además envfa un pulso de 50 microseg. a l VCC */

- 104 -

Page 110: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

abrir_fus_mitad2(int nun-fus)

c int ox;

ox = selec-saLida(nun-fus); pulso-2OMS(3 - ox); /* Aplica pulso de programacih en pata ox */

1 .......................................................................... /* S i e l núnero de f us ib le que queremos ab r i r es menor que 1024 entonces

est6 en l a mitad1 y debe apl icarse a l a pata 1 (OD) un vo l ta je HH y a l a pata 11 (CLK) un vo l ta je L */

envia-od-clk-mitad10 c

enviar-dato(OxF6, 2); 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* S i e l núnero de f us ib le que queremos ab r i r es mayor que 1023 entonces

est6 en l a mitad2 y debe apl icarse a l a pata 11 (OD) un vo l ta je HH y a l a pata 1 (CLK) un vo l ta je L */

envia_od_cLk_mitad2() c

enviar-dato(OxF9, 2); 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Para v e r i f i c a r s i e l f u s i b l e se abri6 correctamente se aplica un

pulso en l a pata 11 (CLK) del pal. Esta funcih regresa e l estado L o H de l a s a l i d a ox */

int ver i f -mitadlc int nun-fus) c

int ox, edo; unsigned char dato;

enviar-dato(OxFE, 2); /* Envia un pulso de v e r i f i c a c i h a La */ enviar-dato(OxF6, 2); /* pata 11 (CLK) del pal */

switch (ox) C case O : i f ((0x80 8 dato) == 0x80)

edo = H;

break; case 1 : i f ((0x40 & dato) == 0x40)

edo = H;

break; case 2 : i f ((0x20 8 dato) == 0x20)

edo = H; break;

case 3 : i f ((Ox10 8 dato) == 0x10) edo = H;

break;

- 105 -

Page 111: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1 return C e d o ) ;

1 .......................................................................... /* Para v e r i f i c a r s i e l f u s i b l e se abr i6 correctamente se apl ica un

pulso en l a pata 1 (CLK) del pal, despds se l e e e l estado de l a sal ida ox. Esta f u n c i h regresa e l estado L o H de la sa l i da ox */

int verif-mit&(int nun-fusl c

int ox, e d o ; unsigned char dato;

enviar-dato(OxF6, 2); /* Envfa un pulso de v e r i f i c a c i h a l a */ enviar-dato(OxF9, 2); /* pata 1 (CLK) del pal */

edo = L; dato = leer-dato(); /* Lee las sal idas del pal */ ox = selec-salida(nun-fus);

suitch (ox) C case O : i f ((0x08 8 dato) == 0x08)

edo = H; break;

case 1 : i f ((0x04 8 dato) == 0x04) edo = H;

break; case 2 : i f ((0x02 8 dato) == 0x02)

edo = H; break;

case 3 : i f ((Ox01 8 dato) == 0x01) edo = H;

break; 1 return ( e d o ) ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Aquf se revisan todos los elementos del arreglo fusible, los fusibles

que deben abrirse esthn marcados con una H. Se hacen hasta 5 intentos para quemar un fusible, s i no hay (x i to se envfa un mensaje de er ro r y se cuestiona a l usua r io s i desea continuar. E l PAL se d iv ide en dos mitades, la configuración de las patas del PAL depende de cual mitad es l a que se quiere programar, por t a l motivo se tienen procedimientos d i s t i n tos para programar los fusibles 0-1023 (mitad11 y los fusibles 1024-2027 (mitad2) . */

quema-fusibles(int abierto) c

/* char fus ib le t l ; g lobal */ int nun-fus, intento, edo;

gotoxy(l6,ll); puts(@' Espere por favor ... Estoy quemando fusibles.\n@@);

- 106 -

Page 112: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

f o r (nun-fus -- O; nun fus < 2048; nun-fus++) i f (fusibletnun_fusl == 'Ií') C

- intento = O; d o c

intento++; i f ( nun-fus < 2048/2) C /* mitadl, lfneasgroducto 0-31 */

envia-od-clk-mitadl(); envia-ix(nun-fus); envia-ox-ax-lr-mitadl(nun-fus); abrir-fus-mitadl(nun-fus); edo = verif-mitadl(nun-fus);

1 else C /* mi tadZ, lfneas producto 32-63 */ envia-od-clk-mitad20; envia-ix(nun_fus); envia_ox_ax_lr_mitad2(nun_fus); abrir-fus_mitadZ(nun-fus); edo = verif-mit&(nun-fus);

1 edo = prueba-fus-qwmedo(nun-fus, edo, intento, abierto);

1 uh i l e (edo != abierto); 1

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Prueba s i e l f u s i b l e ya est6 quemado, s i e l resultado es correcto

regresa con e l parámetro edo = abierto. S i e l f u s i b l e no puede ser quemado en 5 intentos, pregunta a l usuario s i desea continuar, s i l a respuesta es negativa, abandona e l programa, s i l a respuesta es af i rmat iva intenta con un nuevo fus ib le */

int prueba-fus-quemado(int nun-fus, i n t edo, in t in tento, int abierto) c

i n t j;

char c;

/* Desactiva 74LS374s y coloca todas las sal idas del pal en 2 */

desactiva-LS374sO; for(j=O; j<5; j++)

enviar-dato(OxFF, j ) ;

printf(lo\nError, no se pudo quemar fus ib le colocado en:\nI*); printf(" Lfnea producto %d, Linea de entrada %d Io,

d o c

i f ( ( e & I = abierto) 88 ( intento == 5) ) C

nun-fus / 32, nun-fus X 32);

p r in t f ( " \n ¿ Desea continuar (s/n) ? lo);

switch(c = getcheo) C case Inr : case 'N' : apagargrogpa10; exit(1); break; case ' s f : case 'S f : edo = abierto; c = 'S'; break;

1 1 uh i l e (c != 'S');

1 return(edo1;

- 107 -

Page 113: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

1 .......................................................................... /* Revisa cada fus ib le de l pal y guarda en e l a r r e g l o f u s i b l e t l e l estado

de cada uno, s i e l f us ib le es t6 ab ie r to coloca una H de l o contrar io coloca m L. E l procedimiento de v e r i f i c a c i h es muy s imi la r a l de grabacih, pero durante l a v e r i f i c a c i h no se envta un pulso de progremecih a l a sa l i da ox. EL p a r h t r o a b i e r t o i n d i c a que e l f u s i b l e est6 ab ier to s i l a sal ida es baja (L), como es e l caso de los PALs PAL16L8, PAL16L2, etc.. En otros casos abierto = H para indicar que e l f us ib le es t6 ab ie r to s i l a sal ida es alta, como sucede con los PALs 12H6, 10H8, etc. */

revisa-fusibles(int abierto) c

/* char fus ib le t l ; global */ int nun-fus, j , edo;

gotoxy(l6.11); puts(" Espere por favor... Estoy probendo fusibles.\n"); for(nun-fus = O; nun-fus < 2048; nun-fus++) C

if (nun-fus < 2048/2) C /* mitad1 , ltneasgroducto 0-31 */ envia-od-clk-mitadlo; envia-ix(nun-fus); env i a-ox-ax- 1 r-mi t ad1 ( nun-f us 1 ; edo = verif-mitadl(nun-fus); i f (edo == abierto)

fusibletnun-fusl = 'HI; else fusibleCnun-fusI = 'Lr;

1 else c /* mitad2, ltneas producto 32-63 */ envia-od-cLk-mitad20; envia-ix(nun-fus); envia-ox-ax-lr_mitad2(nun-fus); edo = verif-mitad2(nun-fus); i f (edo == abierto)

fusibletnun_fusl = 'HI ; else fusibletnun-fusl = IL' ;

1 /* Desactiva 74LS374s y coloca todas Las sal idas del pal

en 2 */ desactiva_LS374s( ); for(j=O; j'5; j++)

enviar-dato(OxFF, j); 1

> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

- 108 -

Page 114: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/*""""""""""""""- prgpa13.c """""""""""""" */

#include Wefn.hI1 unsigned char pa; .......................................................................... /* Genera un pulso de 20 rnicrosegwrdos en una de Las sal idas

yO,yl,. .,y7 de u15 74LS138. C = PC6, B = PC5, A = PC4 se genera un pulso de 50 microsegundos */

pulso-20nS(int y) C

sui tch(y) C /* A , B , C */ case O: reset-PC(6); reset-PC(5); reset-PC(4); break; /* O, O, O */ case 1: reset-PC(6); reset-PC(5); set-PC(4); break; /* O, O, 1 */ case 2: reset-PC(6); set-PC(5); reset-PC(4); break; /* O, 1, O */ case 3: reset-PC(6); set-PC(5); set-PC(4); break; /* O, 1, 1 */ case 4: set-PC(6); reset-PC(5); reset-PC(4); break; /* 1, o , O */ case 5: set-PC(6); reset-PC(5); set-PC(4); break; /* 1, O, 1 */ case 6: set-PC(6); set-PC(5); reset-PC(4); break; /* 1, 1, O */ case 7: set-PC(6); set-PC(5); set-PC(4); break; /* 1, 1, 1 */

1 pukso-reloj(5); /*activa los pulsos de 50 y 20 microsegundos */

1 .......................................................................... /* Sirve para enviar un pulso en alguna de las sal idas yO,yl,y2,,,y7

de U20 74LS138 especificada por e l p a r h t r o y */

pulso-reloj( int y) C

suitch(y1 C /* A , B ,

case O: reset-PC(3); reset-PC(2); reset-PC(1); break; /* O, O, case 1: reset-PC(3); reset-PC(2); set-PC(1); break; /* O, O, case 2: reset-PC(3); set-PC(2); reset-PC(1); break; /* O, 1, case 3: reset-PC(3); set-PC(2); set-PC(1); break; /* O, 1, case 4: set-PC(3); reset-PC(2); reset-PC(1); break; /* 1, O,

case 5: set-PC(3); reset-PC(2); set-PC(1); break; /* 1, O, case 6: set-PC(3); set-PC(2); reset-PC(1); break; /* 1, 1, case 7: set-PC(3); set-PC(2); set-PC(1); break; /* 1, 1,

1 set-PC(0); /* C1 = 1 U20 sal ida y5 = O ,las demás estan en 1*/ reset-PC(0); /* G1 = O, todas las sal idas de U20 se van a 1 */

1

c */ o */ 1 */ o */ 1 */ o */ 1 */ o */ 1 */

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Enviar un dato a 74LS374 activado por pulso de reloj proveniente

de yO,yl,y2,y3,y4 de U20 , e l p6rametro clk-y especifica cual sal ida y de U20 enviar6 e l pulso de r e l o j */

- 109 -

Page 115: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

.......................................................................... /* pa = pa AND OxDF h a b i l i t a l as sa l idas de los 74LS374 colocando a O

l a s a l i d a PA5 del 8255 s i n a l t e r a r las demas sa l idas del puerto A */

activa_LS374s()

c pa &= OxDF;

bus-agtoA(pa); 1 .......................................................................... /* pa = pa OR 0x20 deshabi l i t a las sa l idas de los 74LS374 colocando a 1

l a s a l i d a PA5 del 8255 s i n a l t e r a r las demas sa l idas del puerto A */

desactiva_LS374s()

c pa I= 0x20;

bus-agtoA(pa); 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i n i c i a l i z a 0

c i n t j ;

encendergrogpal0;

reset( 1; /* d e f i n i r pto-a, pto-b, pto-c como ptos. de sa l ida */ bus-a-ctrl(Ox80); /* coloca todas l as sa l idas del puerto B en 1 */ /* envia pulsos de r e l o j a yO,yl ,y2,y3,y4 para que l as sa l idas

de los 74LS374 se vayan a 1 */ for (j = O; j < 5; j++)

enviar-dato(OxFF, j ) ;

> .......................................................................... /* Coloca a 1 e l b i t del puerto C especificado por n.

byte de control-8255 a c c i h O1 set pc0 03 set p c l 05 set pc2 07 set pc3 O9 set pc4 OB set pc5 OD set pc6 OF set pc7 */

set-PC(unsigned char n)

c bus_a_ctrl(2*n + 1 ) ;

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Coloca a O e l b i t del puerto C especificado por n.

byte de control-8255 a c c i h O0 reset pc0 02 reset pcl O4 reset pc2 O6 reset pc3 O8 reset pc4 OA reset pc5 OC reset pc6 O€ reset pc7 */

reset-PC(unsigned char n)

c krs-a-ctrl(2*n);

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

- 110 -

Page 116: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/* En los procedimientos:

Se envfan datos a las sal idas del puerto paralelo de l a conputadora, esas sa l idas se ut i l i zan para CONTROL del 8255. Se e jecuta l a operac ih (dato a enviar XOR OB hex) para invertir algunos bits del dato. Dado que OB(Hex) = O000 1 0 1 1 ( B i n ) l o s b i t s del dato qw se invierten coinciden con los b its que estOn en 1. E s t a i n v e r s i h s e hace debido a que el puerto paralelo t iene inversores para esos bits. Asf que l a i n v e r s i h por programa anula l a i n v e r s i h por hardware.

bus-a-ct r 1 b u s - a g t d b u s - a g t a

*/ .......................................................................... /* E l 8255 tiene internamente un puerto de contro l , as( que e l

procedimiento bus-a-control envfa un dato al puerto interno de contro l del 8255. */

bus-a-ctrl(unsigned char dato)

c /* E l dato que va a enviarse a l puerto de control del 8255 se coloca

en e l bus de datos */ outportb(BUS-DATOS, dato); /* sal idas para control del 8255 A l RESET’ A0 UR’ */

outportb(CONTROL, (OXOF XOR 0x06)); /* 3state 1 1 1 1 */ outportb(CONTROL, (OxOE XOR OxOB)); /* b u s - x t r l 1 1 1 O */ outportb(CONTROL, (OxOF XOR OxOB)); /* 3state 1 1 1 1 */

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . / * bus-agtoA envfa un dato al puerto A del 8255 */

bus-agtoA(unsigned char dato)

c /* EL dato que va a enviarse al puerto A del 8255 se coloca

en e l bus de datos */ outportb(BUS-DATOS, dato); /* sal idas para control del 8255 A l RESET’ A0 UR‘ */

outportb(CONTROL, (0x05 XOR 0x06)); /* 3state O 1 O 1 */ outportb(CONTRO1, (0x04 XOR OxOB)); /* bus->ptaA O 1 O O */ outportb(CONTROL, (0x05 XOR OxOB)); /* 3state O 1 O 1 */

> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* bus-agtoB envfa un dato al puerto B del 8255 */

bus-agtoB(unsigned char dato)

c /* et dato q w va a enviarse al puerto B del 8255 se coloca

en e l bus de datos */ wtportb(BUS-DATOS, dato); /* sal idas para control del 8255 A l RESET’ A0 UR’ */

outportb(CONTR0L. (0x07 XOR OxOB)); /* 3state O 1 1 1 */ outportb(CONTROL, (0x06 XOR OxOB)); /* b u s - p p t a o 1 1 o */ outportb(CONTROL, (0x07 XOR OxOB)); /* 3state O 1 1 1 */

> ..........................................................................

- 111 -

Page 117: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/* Envfa pulso de reset a 8255 */

reset( 1 c

/* salidas para control del 8255 A l RESET' A0 UR' */ outportb(CONTROL, (OxOF XOR OxOB)); /* 3state 1 1 1 1 */ outportb(CONTROL, (OxOB XOR OxOB)); /* reset 1 O 1 1 */ outportb(COWTROL, (OxOF XOR OxOB)); /* 3state 1 1 1 1 */

1 .......................................................................... /* Pide a l usuario que encienda e l programador de pals */

encedergrogpa 1 ( 1 c

c l r s c r o ; gotoxy( 1,111; puts(" Verif ique que e l in te r rup tor PROG est6 apagado y"); puts(" Encienda e l PROGRAMADOR DE PALs *);

puts("\n Pulse <control><p para continuar la);

whi le (getcho != SEGUIR); /* Espera por <control><y> */ c l r s c r o ; gotoxy(l , l l ) ; puts(" Encienda e l in te r rup tor PROG In);

puts(" Pulse *control>*y> para continuar *I);

uh i le (ge tch0 != SEGUIR); /* Espera por <cont ro l>*p */ clrsct-0;

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Pide a l usuario que apague e l programador de pals */

apagargrogpal( 1 c

c l r s c r o ; gotoxy(l , l l ) ; puts(" Apague e l in te r rup tor PROG y despds la);

puts(" Apague e l PROGRAMADOR DE PALs la);

puts("\n\n Pulse *control><p para continuar 18);

h i l e (ge tcho != SEGUIR); /* Espera por <control><y> */ clrscr() ;

1 .......................................................................... /* Debido a que solamente pueden leerse 4 b i t s a l a vez a traves del

puerto LPTl ( b i t s M,b5,b4,b3), primero se leen los 4 b i t s d s bajos y se almacenan en l a var iab le nibble-lou, &spuds se corren 3 b i t s a l a derecha para colocar e l dato en l o s b i t s b3,b2,bl,bO. A con t inuac ih se leen los 4 b i t s d s a l tos por e l p w r t o LPT1, y se almacenan en la var iab le dato-entrada, se corre a l a izquierda un b i t para que e l dato quede en los b i t s b7,M,b5,b4, para dejar los

8 b i t s en l a var iable dato-entrada se hace una operac ih OR entre nibble-low y dato-entrada y el resul tado se deja en dato-entrada */

unsigned char leer-dato0 c

unsigned char nibble-low, dato-ent;

- 112 -

Page 118: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/* Leer dato nibble L o u */ reset-PC(7); /* se1 A' 74157 */ nibble-Lou = inportb(ENTRADA); nibble-low >>=3; /* Corre a La derecha 3 bits */ nibble-low &= OxOF; /* Los 4 b i t s Rles a l tos se hacen O */ /* Leer dato nibble high */ set-PC(7); /* se1 6 74157 */ dato-ent = inportb(ENTRADA); dato-ent <*= 1; /* Corre a l a izquierda 1 b i t */ dato-ent &= OxOFO; /* Los 4 b i t s Rles bajos se hacen O */ /* Form u1 byte con los 4 b i t s bajos y los 4 b i t s a l t o s */ dato-ent I = nibble-low; return(dat0-ent);

1 ..........................................................................

- 113 -

Page 119: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/*"""""""""""""""- port&.c """"_"""""""" */

#include <dos.h> #include <conio.h> #include <stdio.h>

#include <stdLib.h>

#include <stdarg.h* #include *graphics.h>

int GraphDriver; /* E l manejador de grhf icas */ i n t GraphMode; /* E l va lor de l modo grhf ico */ double AspectRatio; /* P r q p o r c i h de e x p o s i c i h de un p i x e l */ i n t MaxX, MaxY; /* L a d x i m a r e s o l u c i h de La panta l la */ int MaxColors; /* E l h x i m o # de colores d isponibles */ int Errorcode; /* Reporta cualquier error de grhf icos */ struct palettetype palette; /* Para leer palette info */

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* Prototipos de funciones */

v o i d I n i t i a l i z e ( v o i d ) ; vo id caratu la(void) ; void Pause(void); void MainUindou(char *header);

void StatusLine(char *msg); void DrawBorder(void); void changetextstyle( int font, int d irect ion, int charsize); in t gpr int f ( in t *x loc , in t *yL~c , char * fmt , ... 1;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* PORTADA: Presenta l a portada del Programador de pa ls */

in t por tada0

c

I n i t i a l i z e O ; caratu la( 1; closegraph( ); return(0);

>

/* Se coloca en modo Grhfico */

/* Retorno a l modo de Texto */

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . /* INITIALIZE: In ic ia l i za e l s i s tema de grhf icas y reporta */ /* s i Ocurre algún error. */

v o i d I n i t i a l i z e ( v o i d )

c int xasp, yasp; /* Usado para leer l a p r o p o r c i h de e x p o s i c i h */

GraphDriver = DETECT; /* A u t o - d e t e c c i h de manejador de grhf icos */ initgraph( &GraphDriver, &GraphMode, 11'1 1; Errorcode = graphresul t() ; /* Lee el resultado de La i n i c i a i i z a c i h */ i f ( E r rorcode != grOk IC /* Error Occurr ido durante in it */

- 114 -

Page 120: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

pr int f(" Error en e l s is tema de grhf icas: %S\n", grapherrormsg( Errorcode 1; e x i t ( 1 );

>

getpalette( &palette 1; MaxColors = getmaxcolor0 + 1 ; /* Lee d x i m nún. de colores */

MaxX = getmaxxo;

MaxY = getmaxyo; /* Lee e l tamaño de l a panta l la */ getaspectratio( Bxasp, Byasp 1; /* Lee l a proporc. de e x p o s i c i h */ AspectRetio = (doub1e)xasp / (doub1e)yasp; /* factor de c o r r e c c i h */

1 .......................................................................... /* Carhtula: Presentac ih del programador de pals. */

void caratu la(void)

C i n t f o n t , s i z e ; i n t h , x , y , i; struct vieuporttype vp; char buffer t801;

font = 1 ; MainUindou(18 It); getvieusettings( &vp );

set text just i fy( CENTER-TEXT, CENTER-TEXT 1; x = (vp-r ight - v p . l e f t ) / 2; y = textheight( l1Hl1 1;

s i z e = 3; changetextstyle( font, HORIZ-DIR, s i z e 1; h = textheight( l I H l 4 1; y += h; s p r i n t f ( b u f f e r , WNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA ");

wttextxy( x , y , buf fer 1; s i z e = 2; changetextstyle( font, HORIZ-DIR, s i z e );

h = textheight( 11H88 ); y += 2*h; s p r i n t f ( b u f f e r , IIPROYECTO DE INGENIERIA ELECTRONICA 11, s i z e 1; outtextxy( x , y , buffer 1; y += 3*h; s p r i n t f ( b u f f e r , I#);

outtextxy( x , y , buffer );

i f ( font I= DEFAULT-FONT )C y += h / 2; /* Avanza hacia abajo */ set text just i fy( CENTER-TEXT, TOP-TEXT );

setusercharsize( 5 , 6 , 3 , 2 1; changetextstyle( font, HORIZ-DIR, USER-CHAR-SIZE );

outtextxy( (vp.r ight-vp. left)/2, y , O8Programador de PALS" 1;

- 115 -

Page 121: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

> s ize = 1; changetextstyle( font, HORIZ-DIR. s ize ); h = textheight( 11Hn4 1; y += 6*h; spr in t f ( buf fer , IIASESOR: ING. GONZALO DUCHEN S.") ;

outtextxy( x, y, bu f fe r 1; y += 2*h; spr in t f ( hu f fe r , 8mALUMNO: ARMANDO NANEZ MARTINEZ");

outtextxyc x, y, buffer 1;

Pause( ); >

.......................................................................... /* PAUSE: Espera hasta que e l usuario pulse una tecla. */

void Pause(void) c

StatusLine(IlPu1se cualquier teclaa1);

getch( 1; /* Lee un c a r k t e r del teclado */ cleardevice(); /* Borra l a pantal la */

.......................................................................... /* MAINUINDW: Coloca l a ventana pr incipal para la portada */

vo id Mainblindow( char *header )

c int height;

cleardeviceo; /* Borra l a pan ta l l a g rh f i ca */ setcolor( MaxColors - 1 1; /* Selec. color blanco */ setviewport( O , O , MaxX, MaxY, 1 ); /* Abre toda La pantalla*/

height = textheight( IhHl4 1; /* Altura besica del tex to */

changetextstyle( DEFAULT-FONT, HORIZ-DIR, 1 1; se t tex t j us t i f y ( CENTER-TEXT, TOP-TEXT 1; w t t e x t x y ( MaxX/2, 2, header 1; setviewport( O , height+4, MaxX, MaxY-(height+4), 1 1; DrauBorderO; setviewport( 1, height+5, MaxX-1, MaxY-(height+S), 1 );

> .......................................................................... /* STATUSLINE: Presenta un mensaje en l a par te i n fe r i o r de l a */ /* pantal la */

void StatusLine( char *msg )

c int height;

- 116 -

Page 122: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

setvieuport( O, O , MaxX, MaxY, 1 1; /* Selec. toda l a pantal la */ setcolor( MaxColors - 1 1; /* Selec. color blanco */

changetextstyle( DEFAULT-FONT, HORIZ-DIR, 1 1; se t tex t j us t i f y ( CENTER-TEXT, TOP-TEXT 1; set l ines ty le ( SOLID-LINE, O, NORM-UIDTH );

se t f i 1 l s t y le ( EMPTY-FILL, O 1;

height = textheight( W 1 1; /* Determina l a a l tu ra */ bar( O , MaxY-(height+4), MaxX, MaxY 1; rectangle( O, MaxY-(height+4), MaxX, MaxY 1; outtextxy( MaxX/2, MaxY-(height+2), lnsg 1; setvieuport( 1, height+5, MaxX-1, MaxY-(height+5), 1 );

.......................................................................... /* DRAUBORDER: Dibuja una Lfnea alrededor de La ventana */

void DrauBorder(void) c

struct vieuporttype vp;

setcolor( MaxColors - 1 1; /* Selecciona color blanco */

se t l ines ty le ( SOLID-LINE, O, NORM-UIDTH 1;

getvieusettingsc 8vp );

rectangle( O, O , vp.right-vp.left, vp.bottom-vp.top );

.......................................................................... /* CHANCETEXTSTYLE: s im i la r a settextstyle, pero revisa Los */ /* errores qw pudieran ocurrir mientras carga e l archivo de */ /* es t i l os de letras. */

void changetextstyle(int font, int direct ion, int charsize) c

int Errorcode;

graphresult(); /* Borra e l c6digo de error */ settextstyle(font, direct ion, charsire); Errorcode = graphresult(); /* Ver i f ica e l resul tado */ i f ( Errorcode != grOk IC /* S i se presenta un error */

closegraph0; printf(" Error en e l sistema de grbficas: %s\n8#, grapherrormsg( Errorcode ) );

e x i t ( 1 1; >

>

..........................................................................

- 117 -

Page 123: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

/* CPRINTF: usado como PRINTF excepto qw l a sal ida se envla a */ /* La pantat l a en rnodo grh f ico a una coordenada especificada */ /* por *xloc, *yloc */

int gp r in t f ( int *xloc, int *yloc, char * fmt , ... 1 c

va-list argptr; /* Apuntador a l i s t a de argunentos */ char s t r 11401 ; /* Buffer para una cadena */ int cnt; /* Resultedo de GPRINTF para retorno */

va-start( ergptr, format 1; /* I n i c i a l i z a va- functions */

cnt = vspr in t f ( s t r , fmt, argptr ); /* Inprime cadena a buf fe r */ outtextxy( *xloc, *yloc, s t r ); /* Envla l a cadena en modo grh f ico */ *yloc += textheight( mmHmm 1 + 2; /* Avanza a La siguiente lfnea */

va-end( argptr 1; /* Cierra va- functions */

return( cnt 1; /* Regresa La cuenta de conversi6n */

- 118 -

Page 124: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

CONCLUSIONES

El desarrollo de este proyecto ha sido muy ilustrativo para

mí, pues he tenido oportunidad de utilizar las enseñanzas que

he recibido en mis cursos anteriores, y es por esa razón que

me siento profundamente agradecido con los todos los

profesores y las personas que han contribuido a mi educación.

El proyecto abarca las dos facetas de mi carrera, el Hardware

y el software, y como toda obra humana puede mejorarse mucho

todavía; Sin embargo, como primera versión que es, cumple

satisfactoriamente con su cometido a un precio relativamente

bajo. Un complemento muy útil para este proyecto sería la

integración de un programa para la simplificación de funciones

booleanas usando, por ejemplo, el método de Quine-McKluskey.

Cuando recién recibí la asignación de este proyecto, no

tenía una idea muy clara del potencial de aplicaciones que

este tiene, pero ahora que lo conozco mejor, me he dado cuenta

de su gran utildad y espero que le proporcione un buen

servicio a usted estimado lector.

- 119 -

Page 125: UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA …148.206.53.84/tesiuami/UAM4258.pdf · OBJETIVOS El objetivo de este proyecto es el diseño y la construcción de un circuito programador

BIBLIOGRAFIA

Vincent J. Coli: IIIntroduction to Programmable Array Logice1,

BYTE, January 1987

Robert A. Freedman: !'Getting Started whith PALsII, BYTE,

January 1987

Trevor G. Marshall "PALS Simplify Complex Circuits1#, BYTE,

January 1987

Robert A. Freedman: "A PAL Programmer",BYTE, January 1987

V. Lakshminarayanan: IIProgramming p. 1. ds" , ELECTRONICS &

WIRELESS WORLD January 1 9 8 8 , February 1988

National Semiconductor: IIProgrammable Logic Devices Databook

and Design Guide", 1989

Texas Instruments: "Programmable Logic Databook", 1988

M. Morris Mano, "Lógica Digital y Diseño de Computadoresll,

Prentice- Hall Hispanoamericana, 1986

Frederick J.Hil1, Gerald R. Peterson: IITeoría de Conmutación y

Diseño Lógico11, Editorial Limusa, 1987

Jacob Millman: IIMicroelectronics, Digital and Analog Circuits

and Systems11, Mc-Graw Hill, 1984

Motorola: "Fast and LS TTL data", 1989

Texas Instruments: 'IThe linear control Circuits Data Book for

design Engineers", 1986

- 120 -