Introducción al diseño de circuitos combinacionales.

Los circuitos combinacionales son aquellos que no tienen en cuenta la variable tiempo. Están formados por combinaciones de puertas lógicas. En este artículo aprenderemos a diseñar circuitos sencillos a partir de los requerimientos de funcionamiento que se quiere que tengan.

Empezando por el principio:

Lo esencial: saber perfectamente que se quiere que haga el circuito que se va a diseñar. No es posible diseñar nada si no se sabe que es lo que se tiene que diseñar. Esto que parece tan de perogrullo, créame, se suele olvidar con bastante frecuencia.
Así pues, habrá que empezar por definir de forma precisa el comportamiento de nuestro circuito, es decir, conocer como ha de comportarse cada una de sus salidas frente a cada posible combinación de estados de sus entradas. Y la mejor forma de hacer esto para un circuito combinacional es expresar el comportamiento del circuito en forma de tabla de la verdad:

Se quiere diseñar una alarma que se comporte de la siguiente forma:

  • Un sensor en la puerta indicará cuando ésta se abre. Si la puerta se abre el sensor entregará nivel alto. En caso contrario nivel bajo.
  • Una serie de sensores, todos conectados en paralelo, indicarán si se abre alguna de las ventanas. Al igual que en el caso del sensor de la puerta, un nivel alto indicará que se ha producido la activación del sensor.
  • Un sensor que detectará si se está intentando manipular la alarma una persona no autorizada. El comportamiento del sensor el mismo que los de puerta y ventanas.
  • La alarma tendrá tres LEDs. Uno rojo que indicará si la alarma está alimentada. Uno verde que se encenderá cuando se dispare la alarma por el sensor de la puerta. Por último, uno naranja que ha de encenderse si la alarma se dispara por los sensores de las ventanas.
  • La alarma tendrá un terminal de salida que si ésta no está disparada entregará nivel lógico bajo. En caso de disparo de la alarma, por el motivo que fuese, entregaría nivel lógico alto. En esta salida es donde se colocará la sirena que avisará acústicamente del disparo de la alarma.
  • Vistas las especificaciones de nuestra alarma, lo primero es desarrollar la tabla de la verdad que debe verificar. Para ello debemos identificar claramente lo que serán "entradas" y lo que serán "salidas". Pues bien, entradas serán donde se conecten los sensores y salidas serán donde se conecten los LEDs y la sirena. Por tanto, nuestra alarma deberá tener tres entradas y ,en principio, cuatro salidas.
    Pongamos nombres a cada entrada y a cada salida. La entrada del sensor de puerta la llamaremos p. La entrada de los sensores de las ventanas la llamaremos v. En cuanto a la entrada del sensor de manipulación de la alarma, la llamaremos m. Las salidas se llamarán así: la salida del LED rojo la nombraremos como LR, la del LED verde LV y la del LED naranja LN. La salida de la sirena se etiquetará como S.
    Una vez nombradas entradas y salidas de forma más eficiente, crearemos la tabla de la verdad de la alarma siguiendo en todo momento las especificaciones deseadas:

    p v m LR LV LN S
    0 0 0 1 0 0 0
    0 0 1 1 0 0 1
    0 1 0 1 0 1 1
    0 1 1 1 0 1 1
    1 0 0 1 1 0 1
    1 0 1 1 1 0 1
    1 1 0 1 1 1 1
    1 1 1 1 1 1 1

    La extracción de las funciones lógicas:

    El siguiente paso a dar para conseguir nuestro circuito es extraer, a partir de la tabla de la verdad, cada una de las funciones lógicas que el circuito deberá implementar o reproducir. Existen métodos bastante genéricos para ello (que quizás sean tema de otro artículo) pero el método que recomiendo para circuitos sencillos es simplemente inspeccionar la tabla de la verdad y ver si somos capaces de reconocer alguna función lógica en ella (es necesario conocer perfectamente todas las funciones básicas para ello). Veamos cómo:

    Extraer las funciones lógicas de la tabla de la verdad anterior, correspondiente a una alarma.

    Las funciones lógicas a extraer de esta tabla son cuatro, es decir, tantas como salidas deba tener nuestro circuito (cada salida es una función lógica y viceversa, cada función lógica corresponde a una salida). Empecemos por la función LR (donde se conectará el LED rojo). Se puede ver en la tabla de la verdad que siempre está a nivel lógico alto (representado por 1), sea cual sea los estados lógicos de las entradas. Por tanto, LR no es realmente una función o salida del circuito, más bien será una constante del circuito. ¿Qué punto de nuestro circuito estará siempre a nivel lógico alto independientemente de los niveles lógicos de las entradas? La respuesta es sencilla: positivo de alimentación. Ya podemos poner entonces que:

    Sigamos con la función LV (donde se conectará el LED verde). Mirando la tabla se puede ver rápidamente que:

    En cuanto a la función LN (LED naranja) tendremos que, de forma similar,

    Por último, la función S (sirena) es algo más complicada de extraer que las demás (pero no mucho más). Si se conocen las funciones básicas (lo cual, no me cansaré de repetirlo, es fundamental) no debería haber mucho problema para ver que:

    donde + es la suma lógica, por supuesto (ver el artículo sobre las puertas lógicas).

    La implementación de las funciones lógicas:

    Implementar una función lógica es diseñar ( y posteriormente montar) el circuito que se comportará tal como indica la función ante las combinaciones de estados lógicos de entrada. Aunque las funciones pueden ser varias, y por tanto también lo serán los circuitos que las implementen, lo normal es considerar un circuito único formado por la unión de varios subcircuitos, cada uno de ellos correspondiente a una función lógica.

    Implementar el circuito de alarma estudiado.

    Tendremos que el circuito podría ser el siguiente:


    Página principal del AULA ABIERTA