Hoy tuve ganas de salir un poco del mundo GNU/Linux y escribir este artículo "misceláneo", dedicado a una de mis pasiones (y profesión frustrada porque a último momento, antes de ingresar a la Universidad, me decidí por Ingeniería en Sistemas), la electrónica.

Durante este cuatrimestre, mi rol como ayudante de cátedra me ha volcado a la materia Arquitectura de Computadoras. Una de mis materias favoritas junto con Sistemas Operativos, Organización de Computadoras, Redes y Física II (mi favorita de todas las materias de la carrera de Ingeniería, y la que más me "abrió" la cabeza). "Arquitectura de Computadoras" cubre varios temas interesantes: desde circuitos lógicos y secuenciales; pasando por circuitos aritméticos binarios (sumadores/multiplicadores/divisores); pipeline, control y arquitectura de CPUs (incluyendo VLIW y superescalares); hasta jerarquía de memoria, caché y memoria virtual.

Tal como comentaba en el artículo Diseño y simulación de circuitos lógicos digitales con Logisim, los alumnos utilizan el software Logisim para simular circuitos lógicos digitales. En este artículo voy a demostrar cómo simular, utilizando Logisim, un flip-flop SR (set reset) construido con compuertas NAND.

WARNING: este artículo requiere conocimientos mínimos de electrónica y técnicas digitales.

¿Qué es un flip-flop?

Definición de Biestable de Wikipedia en español:

Un biestable (flip-flop o LATCH en inglés), es un multivibrador capaz de permanecer en uno de dos estados posibles durante un tiempo indefinido en ausencia de perturbaciones. Esta característica es ampliamente utilizada en electrónica digital para memorizar información. El paso de un estado a otro se realiza variando sus entradas. Dependiendo del tipo de dichas entradas los biestables se dividen en:

  • Asíncronos: sólo tienen entradas de control. El más empleado es el biestable RS.
  • Síncronos: además de las entradas de control posee una entrada de sincronismo o de reloj. Si las entradas de control dependen de la de sincronismo se denominan síncronas y en caso contrario asíncronas. Por lo general, las entradas de control asíncronas prevalecen sobre las síncronas.

La entrada de sincronismo puede ser activada por nivel (alto o bajo) o por flanco (de subida o de bajada). Dentro de los biestables síncronos activados por nivel están los tipos RS y D, y dentro de los activos por flancos los tipos JK, T y D.

Los biestables síncronos activos por flanco (flip-flop) se crearon para eliminar las deficiencias de los latches (biestables asíncronos o sincronizados por nivel).

En particular, el flip-flop SR es un dispositivo de almacenamiento temporal de 2 estados (alto y bajo), cuyas entradas principales (S: set, R: reset) permiten (al ser activadas):

  • S: el grabado (set en inglés), puesta a 1 ó nivel alto de la salida (trabajando en lógica positiva).
  • R: el borrado (reset en inglés), puesta a 0 ó nivel bajo de la salida (trabajando en lógica positiva).

Si no se activa ninguna de las entradas, permanece en el estado que poseía tras la última operación de borrado o grabado. No se considera el de activarse ambas entradas a la vez (don't care).

¿Qué es una compuerta NAND?

Definición de Puerta NAND de Wikipedia en español:

La puerta NAND o compuerta NAND es una puerta lógica digital que implementa la conjunción lógica negada. Cuando todas sus entradas están en 1 (uno) o en ALTA, su salida está en 0 o en BAJA, mientras que cuando una sola de sus entradas o ambas están en 0 o en BAJA, su SALIDA va a estar en 1 o en ALTA.

¿Qué es Logisim?

Logisim es una herramienta de distribución libre para diseño y simulación de circuitos lógicos digitales. Su interfaz intuitiva y su sencillo simulador permiten aprender con facilidad los conceptos básicos relacionados con la lógica de los circuitos digitales. Logisim tiene la capacidad de construir circuitos a partir de otros más simples, esto permite, por ejemplo, diseñar una CPU completa para propósitos didácticos.

Para más información ver el artículo Diseño y simulación de circuitos lógicos digitales con Logisim.

Resumiendo

En resumen, los flip-flops son elementos de memoria. Son capaces de almacenar información (mantener su estado hasta que se produzca una nueva excitación). Pueden funcionar excitados por pulsos o niveles electrónicos. El flip-flop SR pone a 1 su salida cuando se activa la entrada S (set), y pone a 0 su salida cuando se activa su entrada R (reset). Las compuertas lógicas son dispositivos (circuitos construidos con transistores) que implementan funciones booleanas (conjunción, unión, negación). Las compuertas NAND implementan la conjunción negada.

Manos a la obra

El plan consiste en construir un flip-flop "set reset", o SR, excitado por nivel e implementado con dos compuertas NAND. Simulado utilizando Logisim.

Lo primero que se debe hacer es construir la tabla de verdad de la función que implementa el flip-flop SR. Debido a que estos elementos de memoria poseen un estado, su próxima salida Q(n+1) depende del valor de las variables de entrada (S y R) y de su estado actual Q(n):

SRQ(n)Q(n+1)
0000
0011
0100
0110
1001
1011
110 (don't care
111 (don't care

El siguiente paso consiste en reducir la función lógica, con el objetivo de minimizar el circuito resultante. Utilizando un mapa de Karnaugh se obtiene la siguiente reducción:

Por lo tanto debemos implementar la función matemática Q(n+1) = S + R' Q(n) utilizando compuertas lógicas simuladas con Logisim. Tal como propuse al comienzo, la idea es utilizar sólo compuertas NAND (y lógica mixta), por lo tanto el circuito resultante es el siguiente:

Construir el circuito con sus entradas y salidas. Una vez terminado es posible cambiar las entradas utilizando el cursor con forma de mano. Así es posible comprobar que el flip-flop SR funcione como es de esperarse. Lógicamente no se deben poner ambas entradas en 1, ya que es una situación no contemplada por el flip-flop SR.

Para quienes deseen probar este circuito en Logisim, aquí les dejo el archivo disponible para descargar: SR.circ

¡Espero que les haya gustado!


Tal vez pueda interesarte


Compartí este artículo