lunes, 15 de octubre de 2012

Solicitud de atención en clínica: Codificador de prioridad con Sonido.

Vamos a proceder como trabajo de Laboratorio a diseñar e implementar un codificador de prioridad que permita prestar atención a pacientes en un piso de una clínica que suponemos dispone de 5 habitaciones. Las habitaciones están numeradas del 1 al 5, y al oprimir un pulsador debe aparecer en un display el número de la habitación  y mediante el sintetizador de sonido ISD1964  se  debe escuchar a través de un parlante desde qué habitación se solicita la atención. La prioridad está en la habitación 1, luego le sigue en prioridad la 2, luego la 3, luego la 4, siendo la 5, la que menos prioridad tiene en ser atendida.

Veamos la tabla de verdad para el codificador de prioridad (priority encoder) requerido, donde disponemos de 5 entradas para los pulsadores,  y  de 10 salidas ( 3 salidas A2,A1,A0 para direccionar el chip de sonido, y las 7 salidas de los leds del Display Anodo Común).

P1    P2     P3     P4     P5         A2     A1    A0      a      b     c      d      e      f        g
 0      X       X       X       X           0       0       1      1       0      0     1      1      1       1    
 1      0       X       X       X           0       1        0      0       0     1      0      0      1       0
 1      1       0       X       X            0      1        1       0       0      0     0     1       1      0 
 1      1      1         0       X           1       0        0      1       0      0     1     1       0       0
 1      1      1        1        0           1       0        1       0       1     0     0      1      0       0
 1      1      1        1        1           0       0        0       1       1     1     1      1      1       1

Vamos a interpretar esta tabla de verdad. La primera fila nos dice que si P1 = 0, no importa si los otros pulsadores se están accionando o no, porque P1 tiene la prioridad, y en las salidas generamos en A2 A1 A0 el código 001 para direccionar el chip de sonido y poder grabar y luego reproducir el mensaje "Se solicita atención sala 1". Las otras salidas generan el caracter 1  en el display de 7 segmentos, ánodo común. La segunda fila nos dice que si P1 no está accionado, o sea P1 = 1, si P2 = 0 ( pulsador normalmente abierto oprimido para fijar la entrada a tierra o 0 voltios), entonces sin importar los demás pulsadores P3,P4,P5 si están oprimidos o no, se genera en las entradas de dirección A2 A1 A0 el código 010, y en el display de 7 segmentos los bits correspondientes para visualizar el 2.

Si quisieramos obtener las ecuaciones Booleanas para las salidas,necesitariamos Mapas de karnaugh de 5 variables, el cual se elabora con dos mapas de 4 variables tal como el mostrado a continuación:


Si, utilizando el programa LOGICAID, elaboramos un Mapa de Karnaugh similar al anterior para hallar la ecuación para la salida A2  encontramos:
A2  =  P1 P2 P3 P4' + P1 P2 P3 P5' .

Como es dispendioso (aunque no difícil) obtener las ecuaciones por Mapas de karnaugh, programamos la GAL22V10 manejando con el Isplever en la opción ABEL-HDL la tabla de verdad.

Equations

   Truth_Table   ( [P1,P2,P3,P4,P5] -> [ A2,A1,A0,a,b,c,d,e,f, g ])
                         [ 0, .X., .X., .X.,.X.] ->  [ 0,  0, 1,  1, 0, 0,1,1,1,1 ];
                         ...........................................................................
                          [ 1,  1,  1,    1,    1] ->  [0,  0, 0,  1, 1, 1,1,1,1,1 ];

Observe que en ABEL la condición de indiferencia se escribe .X. ( una X dentro de 2 puntos).

En la última fila de la tabla podemos observar que si ningun pulsador está oprimido se genera el código A2 A1 A0 = 000, donde no hay mensaje alguno grabado, y el display tendrá todos sus 7 leds apagados.

El bit de dirección A3 para el chip de sonido hay que fijarlo a tierra, para que solamente funcionen los 3 bits menos significativos. 

Al accionar cualquier pulsador debe activar el nivel bajo para el codificador de prioridad y a la vez activar el PLAYE del sintetizador de sonido.

Observe el diagrama para el pulsador P1, entendiéndose que para cada pulsador es un diagrama similar:
Si deseamos, en lugar de la GAL podemos utilizar un codificador de prioridad TTL como el integrado 74LS148 o su equivalente  9318:
Veamos su tabla de verdad:

El lector podrá observar que como sus salidas son activas en nivel bajo, y  si no queremos invertir A2,A1,A0, podemos entonces hacer P1 = 6 (pin 3), P2 = 5 (pin 2), P3 = 4 (pin 1), P4 = 3 (pin 13) y P5 = 2 (pin 12).

Desde luego que A2,A1,A0 debe ir al chip de sonido y a la vez a un decoficador BCD a 7 segmentos como el integrado TTL 74LS47 para la visualización en el display de ánodo común.




El diagrama completo se muestra a continuación:
No siempre tenemos a la mano el SuperproZ para programar la GAL.  Es entonces cuando se hace útil otras alternativas, como la mencionada de Lógica Cableada.










No hay comentarios:

Publicar un comentario