unidad iztapalapa 47 - 148.206.53.84148.206.53.84/tesiuami/uam7305.pdf · por esta razcin, la...

33
UNIDAD IZTAPALAPA 47 146491 Asesor: Alumna : Rene Mac Kinney Romero María de la Luz -1 Matricula: 833'145?5 / WAM, Ixtapalapa 1992

Upload: vanthuan

Post on 01-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

UNIDAD IZTAPALAPA 4 7

1 4 6 4 9 1

Asesor:

A l u m n a :

Rene Mac Kinney Romero

María de la Luz -1

Matricula: 833'145?5

/ WAM, Ixtapalapa 1992

/ Prefacio

L, 3

i-3 El fin del desarrollo de éste proyecto es que el sistema sea útil en la práctica y beneficie a las personas que lo empleen.

Los sistemas de diagn6stico pueden aplicarse en todos los campos del saber humano y por desgracia aqui en Mxico son muy pocas las industrias e instituciones que han escuchado el término @@ sitema de dzagnbsgzco" y mucho menos aún las que se benefician aplicándolos; es por ello que pretendo que este trabajo sirva de base a otras personas para desarrollar cada ve2 más sistersas de diagndstico.

El proyecto esta dirigido a todos aquellos que interactúan en la elaboracidn de circuitos 16gicos. pero sobre todo lo dirigo a mis compañeros de la licenciatura en electr6nica y de licenciaturas afines como ingenieria bioddica y licenciatura en computacih, porque son ellos los que pueden hacer mucho al respecto; espero lo encuentren ritil e interesante.

Por riltimo. quiero agradecer al Licenciado René Mac Kinney Romero, asesor de iste proyecto por su entusiasmo, apoyo, tiempo y dedicaci6n que le di6 a este trabajo.

Objetivos

l. Dar a conocer las herramientas y &todos de la Inteligencia Artificial qua son utiles para la construccidn de sistemas de diagndstico.

2. Aplicar estas herramientas y metodos en el desarrollo de sistema de depuracidn de circuitos l6gicos a partir de diagndstico por primeras causas.

3 . Demostrar practicamente los beneficios que se pueden obtener de aplicar un sistema de diagndstico a algh campo del saber humano, en este caso a los circuitos l6gicos.

4. Servir de base para consultas y desarrollos posteriores.

IHTRODUCCIOH /

Vivimos en un siglo de grandes cambios tecnol6gicos que han revolucionado la manera que vemos y vivimos el mundo. El afán del hombre a travds de los siglos ha sido el tratar de superarse constantemente, creando nuevas herramientas que faciliten su trabajo. Cuando el hombre invent6 la lanza, en realidad ere6 una extensi6n del brazo. cuando invent6 el telescopio, agudiz6 su vista, cuando invent6 el autcdvil, volvi6 más rripidos sus pies, al inventar la computadora, el hombre creo una extensi6n de la mente.Pero,¿ hasta que punto es verdadera esta última aseveracibn?. Uno de los primeros intentos del hombre despuGs de inventar la computadora fue dotarla de inteligencia. Desde hace cerca de 30 aiios, muchos investigadores de un canqm que ellos mismos llaman Inteligencia Artificial, se han preocupado por este propdsito.

Feigenbaum y Barr (Feigenbaum y Barr 1901) dicen que "La Inteligencia Artificial es la parte de las ciencias d de la computacibn que involucran el diseño de sistemas inteligentes de computadoras, esto es, sistemas que exhiban las caracteristicas que nosotros asociamos con la inteligencia en una conducta humana (entendimiento del lenguaje, aprendizaje, razonamiento, resolucidn de problemas, etc. . 1

Algunas veces nos encontrumos con la necesidad de probar una serie de factores como consecuencia 16gica de otros. La 1dgzca camputacional es el arte de programar una computadora para tomar tales de desiciones.

El desarrollo y uso de PROLOG ha aumentado la idea de la programaci6n 16gica.

PROLOG es un lenguaje en el cual los programas se

escriben a base de reglas para proporcionar las relacioes entre los objetos. Por esta razcin, la prograaracibn en PROLOG es llamada muchas veces prograraczcín Zdgica.

Cada relaci6n 0n en PROLOG está conpuesta por una serie de proposiciones con un valor de verdad. El interprete de PROLOG trata de probar la verdad de cada relacicin especificada. Usualmente contiene variables y parte del proceso de prueba involucra el encontrar la variable que haga la relacicin verdadera.

En la teoria y diseiio de sistemas de diagn6stico con programacibn 16gica se tienen dos enfoques diferentes. El primer enfoque, con frecuencia se ref iere a un diagnóstico a partir de primeras causas, comenzando con la descripcidn de algun sistema -un recurso físico o un medio ambiente de interes- junto con a observacicin de el f uncionamiento del sistema.

Si en esta observacibn se tienen conflictos el funcionamiento del sistema, uno se enfrenta con un problema de diagncistico, es decir, se debe asumir una anomalía en el funcionamiento de algun componente del sistema.para ello es necesario explicar la discrepancia entre lo observado y el funcionamiento correcto del sistema. Para resolver estos problemas de diagn6sticos a partir de sus primeras causas, la unica informacidn disponible es la descripcibn del sistemu, es decir,su concepcidn o estructura junto con las observaciones del funcionamiento del sistema. En particular informaci6n no heurística acerca de las fallas disponibles.

Intruducci 6n

Bajo el segundo enfoque de diagndsticos con pro- gramacibn lcigica, es posible aproximarse a una descripcibn experimental, la informaci6n heurística desempeña un papel muy importante. El sistema de diagnbstico con pro- gramacidn ldgica correspondiente esboza la codificacibn de un método practico,basado en la intuici6n estadistica, y experiencias pasadas de personas consideradas expertas en el dominio de alguna tarea o tema en particular.La estructura o diseño de un sistema correspondiente al mundo real comienza haciendo un diagndstico somero.En un fundamento tedrico inequivoco es importante la experiencia de un experto en estos diagn6sticos. teniendose como ingrediente necesario en cualquier teoria general de diagndsticos con programacidn 16gica.

Un sistema experto es un programa de computadora dotado de conocimiento y la capacidad que le permiten actuar a un nivel de especialista (persona con mucha experiencia que lleva a cabo tareas de ingeniería, cientificas o de direcci6n empresarial). El sistema expero (o especializado) es un apoyo intelectual de alto nivel para el experto humano, lo cual explica el otro nombre que se le da: asistente inteligente.

Los sistemas expertos act6an especialmente bien cuando la actividad mental involucradada se basa en razonar, no en calcular, la mayoria de los trabajos en el mundo son de este tipo.

Los expertos humanos consiguen su conocimiento no s61o del saber explicit0 de los libros de texto, sino que tambih de la experiencia, de este modo se construye un repertorio de reglas empíricas títiles, 6 heurísticos, put co@inados con 91 conocimiento sacado be l ibros

convierte a la persona en un especialista experto.

Introduccidn

Un sistema experto se basa extensamente en el conocimiento de un área de problema en especifico. Usulamente este conocimiento esta organizado en un conjunto de reglas ( las cuales se obtienen de los expertos humanos) que permiten al sistema derivar nuevas conclusiones de datos o premisas dadas.

El método de diseííos de sistemas basados en conoci- miento representa un cambio evolutivo con consecuencias revolucionarias; reemplaza el diseño tradicional de software de :Datos f Alporitnos = Programas con una nueva arquitectura centrada en el conocimiento y la inferencia, asi obtenemos: Conocimiento f Inferencia = Sistemas

Para definir el concepto de un sistema de componentes que interactuan;inicialmente elegimos en pri- mer orden 16gico un lenguaje para representar cada sistema (de acuerdo al escenario en el que se encuentre el sistema), pero, muchas diferencias 16gicas conducirán a diversas teorias de diagn6sticos. Cualquier cosa que se decida seleccionar debe de ser tener una representacih ldgica,la descripcibn del sistema sera especificado como el funcionamiento normal del sistema con la hipbtesis de que todos los componentes estan funcionando correctamente. Si nosotros disponemos de una observaci6n del comportamiento del sistema actual y ademas esta observaci6n tiene conflictos (es decir , es logicamente inconsistente), debemos suponer el comportamiento del sistema con programacibn 16gica. y de esta manera es posible tener un diagndstico del problema. El problema es determinado con cada uno de los componentes del sistema, cuando asumimos un comportamiento anormal, es posible explicar la discrepancias que existen entre lo observado y el funcionamiento correcto del sistema.

No necesariamente existe un s61o diagnhstico, es posible que existan varias explicaciones a un sitema defectuoso (imperfecto). El problema computacional, entonces, es determinar todos los posibles diagn6sticos para un determinado sistema defectuoso.

Se ha llegado a la creacibn de un algoritmo para diagndsticos computacionales para un sistema imperfecto; este algoritmo posee un gran número de virtudes, pero no cuando se tiene independencias relativas.

Buscando una teoría general de diagndstico, es posible encontrar aplicaciones en ramas como la medici- na, circuitos digitales y analdgicos, etc.. En todas las aplicaciones la descripci6n de los sistemas mencionaran un predicado cuyo significado es 'anormal'.Tipicamente, la descripcidn de un sistema describe como,los componentes del sistema funcionan normalmente para asi poder distiguir el significado del predicado 'anormal".

1 4 6 4 9 7 PLAHTLAnIEHTQ

I

El objetivo del presente proyecto es la realizaci6n de una interfase entre el paquete O r 0 y un programa elaborado en Prolog, iste ultimo va a dar un diagn6stico para detectar cual es la causa de un funcionamiento anor- mal en un circuito digital específico (elaborado con com- puertas).Generandose diferentes opciones de la compuerta en mal estado en base a su descripci6n de funcionamiento o fallo de las funciones ldgicas de las compuertas;lo que implica un ahorro de tiempo para la deteccidn del error, ya que si al cablear el circuito no se tiene cuidado de crear un c6digo de colores para entradas, salidas o rutas especificas 6 disponer los cables en forma ordenada, de tal manera que se facil encontrar el origen y destino de cada cable, la depuracibn se convierte en una tarea casi imposibJe. Las compuertas que se utilizan son las más usuales y de facil disponibilidad en el mercado actual, utilizando circuitos integrados TTL con 1 4 pines.

Se utiliz6 como herramienta el Software OrCAD de Systems Corporation debido a que es un paquete que per- mite el diseño de diagramas de circuitos electr6nicos. elictricos, digitales y componentes discretos (en nuestro caso particular solamente circuitos que contienen com- puertas lcigicas de TTL) generando 6stos en forma de es- quemas, el ejemplo de un circuito se presenta en el Ap6n- dice A. Ademas en este paquete se tiene una utilería que me permite codificar los esquemas en texto, los dife- rentes tipos de opciones textos se resumen en la si- guiente lista: AlteraADF, Calay, EDIF, Hilo, MultiWire, Sait, Telesis, ORcadPCB, VSTModel, Applicanbravo, Case, EEDesigner, IntelADF, PCAD, Scicards, Vectron, PLDNet- list, AppleanLeap, CBDS, Flatedif, Intergraph, PCADnit, Spice y Wirelist.

i Planteamiento

Se eligi6 la utilizaci6n de la opcibn de genera- cion PCAD, debido a que la forma en que se genera la in- formaci6n es una de las más claras y fáciles de compren- der.La generacibn de un listado de este tipo se muestra en el Apindice A. Además la informaci6n generada en este formato se utiliza en un 90%, lo cual reduce tiempo de depuración de información a el analizador lexicográfico.

El texto generado por O r 0 es la entrada a la interfase elaborada en PASCAL (El listado del programa se encuentra en el Anexo I) , la cual se va a encargar de leerla y procesarla para dar como resultado un archivo que se une un programa previamente elaborado en PROLOG el cual va a realizar la depuracicin del circuito 16gico.

El enfoque que se da para el desarrollo del sistema de diagncistico es el de un diagnbstico a partir de sus primeras causas, dado que la iinica informacibn que se tiene disponible es la de el funcionamiento del circuito (en particular se sabe en forma precisa el comportamiento de cada una d las compuertas, y en base a ellos se puede inferir el comportamiento de el conjunto de compuertas que forman el circuito). El segundo enfoque no fu4 posible tomarlo encuenta debido que no se contaba con un sistema experto.( En la introducci6n se da una somera explicacibn de un sistema experto)

. 1 ... .

Para el Gxito de este sistema es muy inmortante tomar encuenta los lineamientos que se dan en el Apindice E para la elaboracibn del diagrama en OrCAD; asi como las indicaciones para la gerrzracih del texto bel esquenaa.

HETODOLOGIA

La interfase se desarrollo por medio de un programa en lenguaje Pascal, el cual lee un texto que contiene la descripcibn de un circuito elaborado en el paquete Or-cad y como salida se genera un texto ( ORCAD.AR1 )

cuyo formato corresponde al elegido para su lectura y procesamiento en programa de diagnbstico con programacih liigica elaborado en Prol.og.

La informacidn que recibe este programa es la siguiente: el niurero del componente, nombre del componente, nhero del pin y alambre asignado a dste último.

La estructura de datos que se utiliz6 es una lista ligada en forma horizontal, en la cual cada uno de los nodos apunta a una segunda lista en forma vertical .El nodo de la lista vertical contiene la inforaacidn del número de pin y nombre del alambre conectado a dste liltimo; el nodo de la lista horizontal contiene la informacidn de el niimero y nombre del componente. La informacidn que se inserta en la lista se hace priemero buscando la posicibn siguiente del irltimo elemento de la lista.

Se utiliza un analizador lexicogrdfico para poder identificar cada uno de los componentes de las listas. Con el n h r o del corponente se va una tabla en donde se le asigna un número de acuerdo a la configuracih de sus pines; existiendo tres tipos de configuraciones (para compuertas AND, NAND. OR, NOR , INV y BUFFER).

1 4 6 4 9 7 Metodologia

Es de tipo I si .tiene 4 compuertas y además la conf iguraci6n interna en el CHIP es: entrada, entrada y salida para los primeros 6 pines; salida, entrada, entrada para los pines restantes (con nheraci6n sucesiva y ascendente), es de tipo 2 si tiene 4 compuertas y se encuentran configuradas: salida, entrada, entrada para los primeros 6 pines y entrada, entrada, salida para los pines restantes y es de tipo 3 si tiene 6 compuertas y su configuracidn es entrada, salida.

Los circuitos integrados que se tomaron encuenta dada la disponibilidad que se tiene son : 7400, 7403,

7408, 7409, 7426, 7432, 7401, 7402, 7428, 7433. 7437, 7438, 7404, 7405, 7406, 7407 y 7414. Es posible utilizar circuitos que sean LS,SN,SN-H,SN-LS,o su vesi6n con colector abierto.

A la salida se generan las funciones de funcionamiento o fallo de cada una de las diferentes compuertas que se utilizaron y un predicado que acepte el programa elaborado en Prolog.En el Apéndice C se muestra un listado de la generacidn de 0RCAD.ARI

Una vez determinado el problema que se deseaba atacar: creación de una herramienta útil que permita una depuración óptima de circuitos lógicos para los estudiantes que tienen que diseiiar este tipo de circuitos. El primer problema con el que me enfrente fud la selección del software con el cual se deberían de crear los circuitos, ya que este paquete me debía de permitir transcribir la :informacicin de los graf icos a una informacicin que se pudiera interpretar, aunque siempre con la idea de que se generara un archivo fppara poderlo procesar como tal, ademas no debería contener símbolos o caracteres muy estilizados, más bien se buscaban carac- teres que se utilizan en f o k cotidiana (alfanumhricos e inclusive algún símbolo) o que fuera "fácil" generar su valor en ASCII 6 en código hexadecimal. Despuds de revisar algunos paquetes y estudiar la manera de transformarlos, encontré en el software Orcad, una utilieria que realizaba la transformación,

Una vez resuelto mi primer problema, me encuentro con diferentes tipos de opciones de formatos para los textosy estos se resumen en la siguiente lista: AlteraADF, Calay, EDIF, Hilo, MultiWire, Sait, Telesis, ORcadPCB, VSI?lodel, Applicanbravo, Case, EEDesigner, IntelrnF, BaL Scicards , vectror; , P L I " t l i S t ,

AppleanLeap, CBDS, Flatedif, Intergraph, PCADnit, Spice y Wirelist. El siguiente paso fue elaborar un circuito y

convertirlo a texto para cada una de las 24 opciones que se me presentaron, que a su vez cada una de ellas tenia 7 parhtros adicionales que hacian que variará la salida de cada una de los opciones por lo que fui necesario hacer un analisis detallado y minucioso para darle la

. . "

"

4

Impfantaciún

interpretacidn adecuada a cada uno de los listados que se

obtuvieron y de esa manera poder formar un criterio de selecci6n que me llevara a el listado Bptimo, que en mi caso en particular fue el tipo ORCAI) y el parámetro /S.

Al estar realizando pruebas para el desplegado de listados e interpretacidn de estos detectee que era ne- cesario apegarse a ciertas reglas que se especifican el Apendice B,ya que de no hacerse asi el listado que se ge- nera no es posible interpretarlo correctamente. Una vez resueltos todos los detalles con respecto a los diagramas de los circuitos pase a la elaboracidn ,de la interfase, la cual se deberia unir con un programa previamente ela- borado, de ahí que era necesario apegarse a las necesidades de &te último.

En esta segunda etapa un gran problema al que me enfrente fui a la eleccidn de una estructura de datos adecuada que me permitiera tener toda mi inf ormacidn, y me decidi por la utilizacidn de listas en forma hori- zontal y en forma vertical, adehs este tipo de estruc- tura permite un número finito de circuitos electrhicos, pero tal vez un número ilimitados de compuertas; todas las deds anomalías fueron aquellas inherentes a la elaboracidn y depuracidn de un programa.

Su alcance se limita a compuertas 16gicas que se en- cuentren en circuitos integrados TTL, sin embargo es po- sible extender una gama de circuitos integrados que me permita realizar circuitos 6 s sofisticados y sea una he- rramienta útil no s610 para las personas que se estan in- troduciendo en esta materia, sino a aquellas personas que utilicen circuitos m a s complicados por que asi lo requieran sus necesidades,siendo necesaria tambien la -.-.~i ~i...-.-.i X., d.. -1 -.. nnntnn

A P E N D I C E S

A P E N . D I C E

A

1

U m

APEIDICE B

. C racion del dlaara#

- Al conectar un pin de una compuerta con otra, se debe tener cuidado en ~p dibujar ningún alambre sobre el dibujo de la compuerta.

- Editar cada compuerta, indicando nombre y número de compuerta que se est6 utilizando.

- La salida nombrarla como X0 - Guardar el diagrama con extensiiin SCH. - No se debe de utilizar bus para la uniiin de los pines.

- Una vez guardado el diagrama. se debe uno salir de del paquete.

- Hacer uso de la utileria Netlist, con la siguiente sintdxis:

NETLIST <Norbre.SC1(> <Destino.!lEI> PCAD/S

A P E N D I C E

E

A P E N D I C E

C

Maria de l a Luz Arcinieqa Delgado

Este programa lee un texto que contiene la deecr-ipcibn de un c i rcu i to d ig i ta l e laborado en e l paquete Or-Cad y genera un ,teKto cuyo formato cort-esponde al e legido para su lectu- r a y procesamiento en e l PI r i dn l dg ica esc r i ta en PI-0109.

La informacidn que t-ec. l u e _.. nQmet-o del componente, nombre del L~,.., y alambre asignado a este C ~ ~ % L I ~ , L , -

Al elaborar- e l c i r c u i t o en Ot--Cad se debe de tmla, cuenta lo s iqu ien te :

- Al coneckat- un p i n de una compuerta con otra, se de- be de tener cuidado en no dibujat- ningun alambre so- br-e e l d i b u j o de la compuerta.

- Indicar- nombre y ndmero de compuerta que se esta ut i - zando.

- La sa l ida nombr-at-la como XO.

F'FIOORAM or--cad:

USES CRT;

.[ Estructura de datos : l i s ta l iqada en Sot-ma hor i zonta l , en l a cua l cada uno de sus nodo apunta a o t r a l i s t a li- qada en farma ver-tical 3

TYPE

.I] Nodo de l a l i s t a v e r t i c a l que contiene informacibn del nrimet-o de p i n y nombre del alambt-e conectado a ste u 1 t imo >

ape 1 em = ""e 1 am to : elemto = RECORD

? i n : s t r i n g :

alambre : strinq: elemsig : apelem:

E N D :

.C Nodo de la lista horizontal que contiene la in+ormacian de el nfimero y el nombre del componente 3

apti'ponodo = '".tiponodo: t iponodo = RECORD

NumComp e strinlq: NombComp : st t- i ng : elemtos : apelem: nodosig : aptiponodo:

END:

.C Lista que contiene la informacibn del alambre y pin 1

1 ieta =RECORD cabeza,: apt iponodo

END:

listal =RECORD cabezalnapelemo

END;

.C. Posiciones en que 5e va a insertar informacibn

posicion=aptiponodo.g poslcionl=apelemt

1 1 1 P " Pl va 1 or 1

valorl , palabra , valor2 I:

cant 9

contlin , n Ok * ciet-to : i 'I

car 1

opcion 8

Arch temp Archivo : NomAt-ch :

L I STA: LISTA1; FOSICION; PQSICIQNl;

STRING;

INTEGER;

BOOLEAN:

CHAR;

TEXT: sTRINGC123#

C Archivo de salida (URCAD.AR1) 3 C Archivo fuente 3

.: F I N devuelve la posicicin siguiente del Qltimo elemento

de la lista L 3

FUNCTION fin (1oLISTA):POSICION~ VAR

BEG I N q : POSICION:

q := l.c=abeza; WHILE (q'"..nodosPig a < > NIL) DO

fin := q q : = 9."'. nodosi9 1

END : If in)

.: FINPIN devuelve la poricibn siquionte del tiltimo ele- mento de la lista L 3

FUNCTION finpin (1l:LIST~1~xFOSICIONl~ VAR

BEE3 I N q : POSICIONl:

q := ll.cabeza1: WHILE (q'".. elemsig<:>NIL) DO

finpin := q q I= q"..elemeeilrit

. END; (finpin)

.: INSFIN pone a x en la posicibn p en la lista L 3

PROCEDURE inrerpin~pin:atring~alambre~st~~in~~p1:PO~ICIONl~: VfiR

BEGIN temp : PQSICIONl;

temp x = pl..'... elemsigg NEW(pl".elemsig) 1 pl"".elemsiq^.pin := pin: pl'". elemsig'". alambre D = alambre; pl".elemsig~'"~.elemsig := tempt

END 5 . € inser-p in>

.I INSERTA el nhmer-o ( x ) y nombre ( y ) del cit-cuita en la filtima posicibn a la lista horizontal 3

FROCEDURE inserta(~:strinqgy:stt~inq;p:PClSICION~a VAR

e:<ito : BOOLEUNa

indice I IN'TEGEH: temp : PQSICION; pin 9

alambre : 8THINC3; 1 1 8 LISTAle Pi I POSICIONlg

j 1

BEGIN

exi to : = FALSE: temp I = p"'. nodosig: NEW(p'".nodo%iq) 4 p"". nodoaig'". NumComp : xq p''.nodoriiig.''..NornbComp := y: 1l.caberal := NIL; NEW ( 1 1. cabezal : pl := 1l.csbezale p."'. nodos i 5". e lemkos I = p X ; READLN(archiv0) ; palabra := ' ' 4 WHILE (contlin .< 15) DO

e x i t o I = FALSE: WHILE (cont .:: 16) DO

READ(archivo, i) r; CASE i OF

BEGIN

BEG I N

I ,

'Y', ' Z '

' X '

: BEGIN IF cont = 6 THEN BEG I N pin I= palabra4 palabra := ' " :

END 1 END:

8 BEBIN palabt-a ? = palabra + i; alambre o = palabra: cont p = 161 FOR j o m 1 TO 4 DO READ(archiv0. i ) I

END 5 I BEGIN

palabra := palabra + i s REFEhT READ(&rchivo, i); cont := succ(cont)r

UNTIL (i IN C'l'm.'9'l)e I F cont .:: 14 THEN

WEPEFIT palabra 8 5 palabra + i: KEAD(Archivo, i ) 1 cant : = succ (cone) :

UNTIL (cont = 14) p alambre I = palabrat

END: 'O' . . '9' P palabra u = palabr-a + i s

' 7 " 2 BEBIN RE&D(Archivo, i): READ (At-chivo, i) : READ (Archivo, i : cont := 16; exito := TRUE:

END: ' 3 ' : BEGIN

cont S = 168

exito : = TRUE: contlin :- 156

END : END; .:: fin de caso 3 con t : = 5ucc (con t ) :

END; .:: whilecont .c. 16 3

BEEIN IF' NOT (exito) THEN

pi := Sinpin(l1): inserpin(pin,alambre,pI)~ exi to := FALSEq

END: contlin := succ(cont1in); cont := 1: palabra := ' ' ;

END: .C while contlin <: 13 3 pi'.. nodorig"'.. nodosig c = temp:

END: .C inserta 3

.C TIFCI-CI t-acibe el ndmoro del componente y devuelve el tipo de circuito de acuerdo a la configuracibn de sus pines. Ea de tipo 1 si tiene dos entradas y una salida y en chip 5e encuentran configuradas: entrada, entrada salida par-a 105 primeros 6 pine88 salida, entrada, en- tt-add para los pines r-estantes: es de tipo 2 5 i tiene dos entradas y una salida y en chip se encuentran con+ igut-adasin sa1 ida, entt-ada, entrada para los prime- r-05 6 pines; entrada. entrada, salida pat-d los pines restantes y es de tipo 3 si tiene una entrada y una sa- l ida. 3

FUNCTION tipo-ci (num II rtt-inq): INTEGER8 VAR

k , v 'I

numero : INTEOER: BEG I N

Val cnum.v, k ) : numero := vg CASE numero QF 7400 : t ipo-ci e = I : n u . 4 7403 : t ipo-ci := 1; J 7408 : tipo-cl = 15 Qud '7409 : tipo-ci := 1 8 J 7426 : tipo-ci := 1; 7432 : tipo-ci := 1; 7401 i tipo-ci a = 2( -k 7402 : tipo-ci c = 2q.- 7428 : tipo-ci : = 20 J. 7433 : t ipo-ci : 2; / '7437 : t ipo-ci := 25 74.38 : tipo-ci := 2; J

7404 : t ipo-ci I= 3; 7405 : t ipo-c i : = 3: /- 7406 : t ipo-ci : = 3; L/ 7407 I: tipo-ci := 3 : a+ '7414 : tipa-ci := 31 4 r V J

7416 : tiPO-ci := 3 ; 7417 : t i p o - c i := 3;

END; .f caso 3 END; .: t i p o - c i 3 I

.I DESPLIEGA l a s a l i d a d e l pr-ogr-ama

PROCEDURE despliega: VAR

cuenta 9

n ume t-o 9

V , k , C , Z : INTEQER; c i t-cui t o : ARRAYC1..51 OF STRING; cadtemp 9

cad temp 1 7

nomcad : STRING; p t- i mera -vez : BOOLEAN ; P : POSICION;

primera-vez := TRUE:

c : = 1;

*BEG I N

' p := 1.cabeza;

.:: En un at-re910 tempor-al se va a quat-dar l a s a l i d a d e l pt-ogt'ama

FOR z ( = 1 TO S DO c i rcu i toCz3 := . ' 4 c i r c u i t o t c l I= ' c i rc:" ;

REG I N WHILE (p''.. nodosiq(.:pNIL) DO

cuenta : = Q ; .:: enumera en fot-ma progres iva lana compuertas S numero := t i p o - c i (p".nodorig".NumComp); pl := p."..nod~sii~'~..elorntos~ WHILE (pl".elemeig (::> N I L ) DO

BEGIN I F (pl".rlemli,ig'.'..pin < > ' 7 * $ AND

p 1 *.'. . e 1 ems i &' . p i n < :> ' 14 ' ) THEN .: descaarta 108 p ines de Vcc y (3ND 3

.: Dependiendo del t i p o de c i r c u i t o integrado desplielga la s a l i d a 3

BEBIN cuenta := oucc (cuenta) : STR(cuenta,nomcad) 1 I F primera-vez THEN .: primera compuerta 3

ELSE

I F LENGTH(circuitoCc1) >= 55 THEN

c i rcu i toCc3 := c i rcu i toCc3 + p'"~.nodosig~"~.NombComp + ' ( ' :

primera-vez : = FALSE

cit-cuitoCc3 := c i rcu i toCc3 + ', .:

c := aaucc(c)s

CASE numero OF 1 : BEGIN

.C Despl iega lar descr ipc iones de funcionamiento (3 fallo 3

Y ' ' .

9 q *

p 1 : = p l..'... elemsig; ( 4

circuitoCc3 := circuitoKc3 + p1".elemssi~"'.alambre ; f * I

pl x = pl"'.elemriq; ! circuitoCc3 := circuitoCc3 + p l " "~ ,e lem~ iqq~" . . a lambr~e

, i. I

' , '+nomcad+' ' I END:

END: .:%I 3 I BEGIN

C Despliega las descripciones de funcianamianto o fallo 3

WRITELN(At-chtemp,p".nodosig'"~.NombComp , nomcad, ' ( X , Y ) - not (ab ' , p"'". nodosig"'. NombComp,

' j :

- ab ( ' , pc'. nodoaig". NombComp,

nomcad, ' ( X, Y ) i , ' , p.". nodos ig-.". NombComp, . ( X , Y ) . WRITELN(At-chtsmp,p".nodossiq"~.NombComp , nomcad, ' (X, Y )

nomcad, ' (X, Y ) 1 , ' 7 'no-fun(~~,p~"~~.nodosiq"'.NombComp ' ( X , Y , ) ) . ' ) :

I F ipl"~~.elemsiq".pinClI IN C 'l', 'Z', ' 5 ' 1 ) AND (LENC3TH(pl"~~.elemsig".pin) = 1)

THEN BEQIN

circuitoCc3 := circuitotcl + p1"'..elgmsiq'".alambre+'

pl x - pl".alemsiq~ circuitoCc1 := circuitoCcl + pl".elemsi~".alambre+'

" :

,-, ' +nomcad+ ' ' 0 END

IF (pl".elchrnsiq"'.pinKl3 .<:> '7' )

ELSE

ELSE

THEN pl I= pl'"..eleme,ig

BEG I N cadtemp I= pl'". elemrig'".. alambre?; pl := pl"*.elcemsig~ circuitoCc3 := circuitoCc3 + pl"~~.elemsiq".alambre

- ' '+cadtamp+', '+nomcad+ ) ' 4 END C else 3

END ; .:33 END a C: caso 3

END 8 pl 8 = pl"".elemsig;

END ; < mientt-am; erten ocupados lor pinos de un c . i . 3 pr=p"".nodosig~

END; .I mientt-as existan nuevos c . i . 3 WRXTELN(Archtrmp) (WRITELN(Archtemp): FOR ~ 1 a 1 TO C-l DO WRITELN(Archtemp,circuitoCzl~;

WRTTE~At~chtemp,circuitoCcJ. ' . ' ) ; END ; .Z deapl iega 3

FROCEDURE imprime(1:LISTA); VAR

tipo, j, es INTEGER; p:POSICION;

p: =X. cabeza: WHILE p..'. nodosigc2.NIL DO BEG I N

BEGIN

pl:-p~~"~.nodo~i~l".elemto~; p: =p."". nodoslg; e: - 1 : WHILE pl.'"..elemsig .<:::. NIL DO

p 1 : =p 1 ..'.. I e 1 ems i 9 ; END

END: I imprime >

PROCEDURE minusculas(item : STRING):

BEG I N x := tENGTH(item)-l: valor-2 := ' ' ; FOR z := I TO K DO BEG I N

y := ORD(itemCz1)g w := y + 32; valor2 I= valor-2 + CHAR(w):

END; END: .C minuoculas 3

.: Lexicoqrafico que analiza e1 texto y 10 envia a e1 procedimiento adecuado para su manipulacion. 3

PROCEDURE analiza-texto; BEG I N 1.cabeza :=o NIL:

NEW ( l. cabeza) 5 p := 1.cabeza; READLN (Arch i va) q contlin := 18 WHILE ( NOT(EOF(6wchivo)) ) DO BEGIN cont :* 1: WHILE NOT(EOLN(Ar-chivo)) DO BEG I N READ(Ar-chivo. i) I cont := succ(cont)q CASE i OF

* , : BEGIN IF (cont .;: ' 7 ) AND (contlin = 1) THEN palabra: m' :

END; : BEGIN , I

valar := palabraIj palabra r = ' ' : REPEAT

HEAD(Archivo, i}; cont := succ (cont) :

UNTIL i = ' ': REPEAT

RE&D(Archivo, i) S palabra : = palabra+i: cant := succ(cont) ;

UNTIL i = ' ' i minusculas (palabra) ; palabra x = '. ' :

END; ' # h ' . . ' Z ' : BEGIN

I F ( i - € > ' L ' ) OH (i*<>'!3') THEN pa labra l~pa labra+ i ;

END; 'O'. . ' 9 ' : palabra := palabra+iq

END q .: caso 3 ' > ' t c i e r t o := TRUE?

END q C mientras no f i n de l i n e a 3.

BEG I N IF NOT(cierto) THEN

p I= f in (1 ) ; cont := 14 in~er.tn(valor,valor2,p); READLN(Archivo) 8 c a n t l i n := 1 ;

END 5 READ(Archivo, i);

END I mientras no + i n de archivo 3 END: Canal i za tex to 3

.: Abre e l a r c x h i v o que se va anal i z a r 3

( FROCEDURE abre-arch ivo; BEG I N

CLRSCR; WRITE( ' Nombre del Archivo que demea anal izar :... READLN(NomArch1 ; ASSIGN(archivo, NomFlrch) ; .:!&1-3 RESET(archiv0) ; €SI+>

END; .C abre-archivo 3

C Envia un mensaje de e r r o r cuando no se encuentra e l a r c h i v o a anal izar 3

FROCEDURE er ror ; BEG I N

SOUND (220 : DELeY (2(3(3) ; NOSOCJND; WRITELNgWRITELNg WRII"ELN( '*++Y++** Archivo No Encontrado *Y******' } i

WRITELN('Por favor, pulse una t e c l a y escr iba nuevamente e l nombt-e. ' ) i

.:: Abre los at-chivos fuente y destino, y envia a analizar e l texto 3

PROCEDURE inicializa: VAF: bandera : BOOLEFIN: ch : CHAR;

valor2 := ' 'i cierto t = FALSEq REFEAT

abre-archivo: ak :- (IOresult = O ) :

I F NOT ok

BEG I N

THEN BEG I N error; bandera o = FALSE1 READLN(ch1 g

END

BEGIN ELSE

bandera := TRUE; anal iza-textoq

1 END: .C cuando el archivo a analizar exinste 3 UNTIL bandera; ASSIGN(Archtemp, 'ORCAD.AR1') 5 REWRITE(Archtemp) 8

END: .: inicializa 3

1

P BEGIN I inicializa?

imprimet'l) ; desplie,ga; CLOSE (Archivo) ; CLOSE(Archtemp) ;

END.

I

i

i

3

i